TVsubtract.3.TEXT   [plain text]


! First some easy integer cases.
3-	 ALL   1   -1   OK	 2
3-	 ALL   1   -2   OK	 3
3-	 ALL   2   -1   OK	 3
3-	 ALL   2   -2   OK	 4
3-	 =0>   2   2   OK   0
3-	 <	 2	 2	 OK	  -0
3-	 =0>   5   5   OK   0
3-	 <	 5	 5	 OK	  -0
3-	 ALL   1   -7   OK	 8
3-	 ALL   5   1   OK   4
3-	 ALL   2   5   OK   -3
3-	 ALL   5   0   OK   5
3-	 ALL   5   -0   OK	 5
! Infinity vs Infinity.
3-	 ALL   H   -H   OK	 H	 ok - affine sum
3-	 ALL   -H   H   OK	 -H
3-	 ALL   -H   -H	 i	 Q	 different signs
3-	 ALL   H   H   i   Q
! Infinity vs huge.
3-	 ALL   H   -Hm1	  OK   H
3-	 ALL   H   Hm1	 OK	  H
3-	 ALL   -H   -Hm1   OK   -H
3-	 ALL   -H   Hm1	  OK   -H
3-	 ALL   Hm1	 -H	  OK   H
3-	 ALL   Hm1	 H	 OK	  -H
3-	 ALL   -Hm1	  -H   OK   H
3-	 ALL   -Hm1	  H	  OK   -H
! Infinity vs 0.
3-	 ALL   H   -0   OK	 H
3-	 ALL   H   0   OK   H
3-	 ALL   -H   -0	 OK	  -H
3-	 ALL   -H   0   OK	 -H
3-	 ALL   0   -H   OK	 H
3-	 ALL   -0   -H	 OK	  H
3-	 ALL   0   H   OK   -H
3-	 ALL   -0   H   OK	 -H
! Infinity vs denormalized.
3-	 ALL   H   -Ed1	  OK   H
3-	 ALL   -H   -Ed1   OK   -H
3-	 ALL   H   Ed1	 OK	  H
3-	 ALL   -H   Ed1	  OK   -H
3-	 ALL   0i3	 -H	  OK   H
3-	 ALL   0i3	 H	 OK	  -H
3-	 ALL   -0i3	  -H   OK   H
3-	 ALL   -0i3	  H	  OK   -H
! Zero vs finite -- watch that sign of 0 is meaningless.
3-	 ALL   0   -Hm1	  OK   Hm1
3-	 ALL   -0   -Hm1   OK   Hm1
3-	 ALL   -Hm1	  -0   OK   -Hm1
3-	 ALL   -Hm1	  0	  OK   -Hm1
3-	 ALL   1   0   OK   1
3-	 ALL   -1   0   OK	 -1
3-	 ALL   0   -1   OK	 1
3-	 ALL   -0   1   OK	 -1
! Zero vs denormalized -- underflows.
3-	 ALL   0   -Ed1	  OK   Ed1
3-	 ALL   -0   -Ed1   OK   Ed1
3-	 ALL   0   Ed1	 OK	  -Ed1
3-	 ALL   -0   Ed1	  OK   -Ed1
3-	 ALL   0i3	 -0	  OK   0i3
3-	 ALL   0i3	 0	 OK	  0i3
3-	 ALL   -0i3	  -0   OK   -0i3
3-	 ALL   -0i3	  0	  OK   -0i3
! Zero vs tiny -- just in case.
3-	 ALL   -0   E   OK	 -E
3-	 ALL   E   -0   OK	 E
3-	 ALL   0   E   OK   -E
3-	 ALL   -E   -0	 OK	  -E
! Zero vs Zero -- watch signs and rounding modes.
3-	 =0>   0   0   OK   0
3-	 =0>   -0   -0	 OK	  0
3-	 <	 0	 0	 OK	  -0
3-	 <	 -0	  -0   OK   -0
3-	 ALL   0   -0   OK	 0
3-	 ALL   -0   0   OK	 -0
! Double a number -- may overflow so watch rounding mode.
3-	 =>	  Hm1   -Hm1   xo   H
3-	 0<	  Hm1   -Hm1   xo   Hd1
3-	 =<	  -Hm1	 Hm1   xo   -H
3-	 0>	  -Hm1	 Hm1   xo   -Hd1
3-	 ALL   Hm1d2   -Hm1d2   OK	 Hd2
3-	 ALL   -Hm1d2   Hm1d2   OK	 -Hd2
3-	 =>	  Hd2   -Hd2   xo   H
3-	 0<	  Hd2   -Hd2   xo   Hd1
3-	 =<	  -Hd2	 Hd2   xo   -H
3-	 0>	  -Hd2	 Hd2   xo   -Hd1
! Double an innocent number.
3-	 ALL   1   -1   OK	 2
3-	 ALL   3   -3   OK	 6
3-	 ALL   E   -E   OK	 Ep1
3-	 ALL   Hm2	 -Hm2   OK	 Hm1
! Double a tiny number -- may underflow.
3-	 ALL   Ed1	 -Ed1   OK	 Ep1d2
3-	 ALL   -Ed1	  Ed1   OK	 -Ep1d2
3-	 ALL   0i4	 -0i4   OK	 0i8
3-	 ALL   -0i4	  0i4   OK	 -0i8
3-	 ALL   0i1	 -0i1   OK	 0i2
3-	 ALL   -0i1	  0i1   OK	 -0i2
! Cancellation to 0 -- to plus 0.
3-	 =0>   Hm1	 Hm1   OK   0
3-	 =0>   -Hm1d2   -Hm1d2	 OK	  0
3-	 =0>   1   1   OK   0
3-	 =0>   -3   -3	 OK	  0
3-	 =0>   E   E   OK   0
3-	 =0>   -E   -E	 OK	  0
3-	 =0>   Ed4	 Ed4   OK   0
3-	 =0>   -Ed1	  -Ed1	 OK	  0	  no underflow
3-	 =0>   0i1	 0i1   OK   0
3-	 =0>   -0i1	  -0i1	 OK	  0
3-	    =0>	    Hd1	 Hd1 OK		 0
! Cancellation to 0 -- to minus 0.
3-	 <	 Hm1   Hm1	 OK	  -0
3-	 <	 -Hm1d2	  -Hm1d2   OK   -0
3-	 <	 1	 1	 OK	  -0
3-	 <	 -3	  -3   OK   -0
3-	 <	 E	 E	 OK	  -0
3-	 <	 -E	  -E   OK   -0
3-	 <	 Ed4   Ed4	 OK	  -0
3-	 <	 -Ed1   -Ed1   OK   -0	 no underflow
3-	 <	 0i1   0i1	 OK	  -0
3-	 <	 -0i1   -0i1   OK   -0
3-	    <	    Hd1	 Hd1 OK	 -0
! Cancel forcing normalization of LSB (no rounding errors).
! Difference is in last place of larger number.
! Medium numbers...
3-	 ALL   1i1	 1	 OK	  1u1
3-	 ALL   -1i1	  -1   OK   -1u1
3-	 ALL   1i1	 1i2   OK   -1u1
3-	 ALL   -1i1	  -1i2	 OK	  1u1
3-	 ALL   2   2i1	 OK	  -2u1
3-	 ALL   -2   -2i1   OK   2u1
3-	 ALL   2i4	 2i3   OK   2u1
3-	 ALL   -2i4	  -2i3	 OK	  -2u1
3-	 ALL   4d1	 4d2   OK   3u1
3-	 ALL   -4d1	  -4d2	 OK	  -3u1
3-	 ALL   2d4	 2d3   OK   -1u1
3-	 ALL   -2d4	  -2d3	 OK	  1u1
! Huge numbers...
3-	 ALL   Hm1i1   Hm1	 OK	  Hm1u1
3-	 ALL   -Hm1i1   -Hm1   OK   -Hm1u1
3-	 ALL   Hm1i1   Hm1i2   OK   -Hm1u1
3-	 ALL   -Hm1i1   -Hm1i2	 OK	  Hm1u1
3-	 ALL   Hm2	 Hm2i1	 OK	  -Hm2u1
3-	 ALL   -Hm2	  -Hm2i1   OK   Hm2u1
3-	 ALL   Hm2i4   Hm2i3   OK   Hm2u1
3-	 ALL   -Hm2i4   -Hm2i3	 OK	  -Hm2u1
3-	 ALL   Hm2d1   Hm2d2   OK   Hm3u1
3-	 ALL   -Hm2d1   -Hm2d2	 OK	  -Hm3u1
3-	 ALL   -Hd2	  -Hd1	 OK	  Hd1u1
3-	 ALL   Hd2	 Hd1   OK   -Hd1u1
! Tiny numbers...
3-	 ALL   -Ei1	  -E   OK   -Eu1
3-	 ALL   Ei1	 E	 OK	  Eu1
3-	 ALL   -Ed1	  -E   OK   Eu1
3-	 ALL   Ed1	 E	 OK	  -Eu1
3-	 ALL   Ei1	 Ei2   OK   -Eu1
3-	 ALL   -Ei1	  -Ei2	 OK	  Eu1
3-	 ALL   Ed1	 Ed2   OK   Eu1
3-	 ALL   -Ed1	  -Ed2	 OK	  -Eu1
3-	 ALL   Ed3	 Ed2   OK   -Eu1
3-	 ALL   -Ed3	  -Ed2	 OK	  Eu1
3-	 ALL   0i2	 0i1   OK   Eu1
3-	 ALL   -0i2	  -0i1	 OK	  -Eu1
3-	 ALL   0i3	 0i2   OK   Eu1
3-	 ALL   -0i3	  -0i2	 OK	  -Eu1
! Normalize from round bit -- set up tests so that operands have
! exponents differing by 1 unit.
! Medium numbers...
3-	 ALL   2   2d1	 OK	  1u1
3-	 ALL   -2   -2d1   OK   -1u1
3-	 ALL   -2d1	  -2   OK   1u1
3-	 ALL   2d1	 2	 OK	  -1u1
3-	 ALL   4i1	 4d1   OK   3u3
3-	 ALL   -4i1	  -4d1	 OK	  -3u3
3-	 ALL   4d1	 4i2   OK   -3u5
3-	 ALL   -4d1	  -4i2	 OK	  3u5
3-	 ALL   2i1	 1i1   OK   1i1
3-	 ALL   -2i1	  -1i1	 OK	  -1i1
3-	 ALL   2i2	 1i1   OK   1i3
3-	 ALL   -2i2	  -1i1	 OK	  -1i3
3-	 ALL   2i2	 1i3   OK   1i1
3-	 ALL   -2i2	  -1i3	 OK	  -1i1
! Huge numbers...
3-	 ALL   Hm2	 Hm2d1	 OK	  Hm3u1
3-	 ALL   -Hm2	  -Hm2d1   OK   -Hm3u1
3-	 ALL   -Hm1d1   -Hm1   OK   Hm2u1
3-	 ALL   Hm1d1   Hm1	 OK	  -Hm2u1
3-	 ALL   Hm4i1   Hm4d1   OK   Hm5u3
3-	 ALL   -Hm4i1   -Hm4d1	 OK	  -Hm5u3
3-	 ALL   Hm2d1   Hm2i2   OK   -Hm3u5
3-	 ALL   -Hm2d1   -Hm2i2	 OK	  Hm3u5
3-	 ALL   Hm2i1   Hm1i1   OK   -Hm2i1
3-	 ALL   -Hm2i1   -Hm1i1	 OK	  Hm2i1
3-	 ALL   Hm1i2   Hm2i1   OK   Hm2i3
3-	 ALL   -Hm1i2   -Hm2i1	 OK	  -Hm2i3
3-	 ALL   Hm2i2   Hm3i3   OK   Hm3i1
3-	 ALL   -Hm2i2   -Hm3i3	 OK	  -Hm3i1
! Tiny numbers...
3-	 ALL   Ep1	 Ep1d1	 OK	  Eu1
3-	 ALL   -Ep1	  -Ep1d1   OK   -Eu1
3-	 ALL   -Ep1d1   -Ep1   OK   Eu1
3-	 ALL   Ep1d1   Ep1	 OK	  -Eu1
3-	 ALL   Ep1i1   Ep1d1   OK   Eu3
3-	 ALL   -Ep1i1   -Ep1d1	 OK	  -Eu3
3-	 ALL   Ep2	 Ep2d1	 OK	  Eu2
3-	 ALL   -Ep2	  -Ep2d1   OK   -Eu2
3-	 ALL   -Ep2d1   -Ep2   OK   Eu2
3-	 ALL   Ep2d1   Ep2	 OK	  -Eu2
3-	 ALL   Ep2i1   Ep2d1   OK   Eu6
3-	 ALL   -Ep2i1   -Ep2d1	 OK	  -Eu6
3-	 ALL   Ep1d1   Ep1i2   OK   -Eu5
3-	 ALL   -Ep1d1   -Ep1i2	 OK	  Eu5
3-	 ALL   Ep1d1   Ep1i4   OK   -Eu9
3-	 ALL   -Ep1d1   -Ep1i4	 OK	  Eu9
3-	 ALL   Ep1i1   Ei1	 OK	  Ei1
3-	 ALL   -Ep1i1   -Ei1   OK   -Ei1
3-	 ALL   Ep1i2   Ei1	 OK	  Ei3
3-	 ALL   -Ep1i2   -Ei1   OK   -Ei3
3-	 ALL   Ep2i2   Ep1i3   OK   Ep1i1
3-	 ALL   -Ep2i2   -Ep1i3	 OK	  -Ep1i1
! Add magnitude:
! cases where one operand is off in sticky -- rounding
! perhaps to an overflow.
! Huge vs medium.
3-	 =0<   Hm1	 -1	  x	  Hm1
3-	 >	 Hm1   -1   x   Hm1i1
3-	 =0>   -Hm1	  1	  x	  -Hm1
3-	 <	 -Hm1   1   x   -Hm1i1
3-	 =0<   Hm1d1   -1   x   Hm1d1
3-	 >	 Hm1d1	 -1	  x	  Hm1
3-	 =0>   -Hm1d1   1   x   -Hm1d1
3-	 <	 -Hm1d1	  1	  x	  -Hm1
3-	 =0<   Hd1	 -1	  x	  Hd1
3-	 >	 Hd1   -1   xo	 H	 nowadays signal overflow
3-	 =0>   -Hd1	  1	  x	  -Hd1
3-	 <	 -Hd1   1   xo	 -H
3-	 =0<   Hd2	 -1	  x	  Hd2
3-	 >	 Hd2   -1   x   Hd1
3-	 =0>   -Hd2	  1	  x	  -Hd2
3-	 <	 -Hd2   1   x   -Hd1
! Huge vs denormal.
3-	 =0<   0i1	 -Hm1   x   Hm1
3-	 >	 0i1   -Hm1	  x	  Hm1i1
3-	 =0>   -0i1	  Hm1   x   -Hm1
3-	 <	 -0i1   Hm1	  x	  -Hm1i1
3-	 =0<   0i1	 -Hm1d1	  x	  Hm1d1
3-	 >	 0i1   -Hm1d1   x   Hm1
3-	 =0>   -0i1	  Hm1d1	  x	  -Hm1d1
3-	 <	 -0i1   Hm1d1   x   -Hm1
3-	 =0<   0i1	 -Hd1   x   Hd1
3-	 >	 0i1   -Hd1	  xo   H   nowadays signal overflow
3-	 =0>   -0i1	  Hd1   x   -Hd1
3-	 <	 -0i1   Hd1	  xo   -H
3-	 =0<   0i1	 -Hd2   x   Hd2
3-	 >	 0i1   -Hd2	  x	  Hd1
3-	 =0>   -0i1	  Hd2   x   -Hd2
3-	 <	 -0i1   Hd2	  x	  -Hd1
! Medium vs denormal.
3-	 =0<   0i1	 -1	  x	  1
3-	 >	 0i1   -1   x   1i1
3-	 =0>   -0i1	  1	  x	  -1
3-	 <	 -0i1   1   x   -1i1
3-	 =0<   0i1	 -1d1   x   1d1
3-	 >	 0i1   -1d1	  x	  1
3-	 =0>   -0i1	  1d1   x   -1d1
3-	 <	 -0i1   1d1	  x	  -1
3-	 =0<   0i1	 -2d1   x   2d1
3-	 >	 0i1   -2d1	  x	  2
3-	 =0>   -0i1	  2d1   x   -2d1
3-	 <	 -0i1   2d1	  x	  -2
3-	 =0<   0i1	 -2d2   x   2d2
3-	 >	 0i1   -2d2	  x	  2d1
3-	 =0>   -0i1	  2d2   x   -2d2
3-	 <	 -0i1   2d2	  x	  -2d1
!
! Magnitude subtract when an operand is in the sticky bit.
! The interesting cases will arise when directed rounding
! forces a nonzero cancellation.
! Huge and medium.
3-	 =>	  Hm1   1   x   Hm1
3-	 0<	  Hm1   1   x   Hm1d1
3-	 =<	  -Hm1	 -1	  x	  -Hm1
3-	 0>	  -Hm1	 -1	  x	  -Hm1d1
3-	 =>	  Hm1d1	  1	  x	  Hm1d1
3-	 0<	  Hm1d1	  1	  x	  Hm1d2
3-	 =<	  -Hm1d1   -1   x   -Hm1d1
3-	 0>	  -Hm1d1   -1   x   -Hm1d2
3-	 =>	  Hd1   1   x   Hd1
3-	 0<	  Hd1   1   x   Hd2
3-	 =<	  -Hd1	 -1	  x	  -Hd1
3-	 0>	  -Hd1	 -1	  x	  -Hd2
3-	 =>	  Hd2   1   x   Hd2
3-	 0<	  Hd2   1   x   Hd3
3-	 =<	  -Hd2	 -1	  x	  -Hd2
3-	 0>	  -Hd2	 -1	  x	  -Hd3
! Huge and tiny.
3-	 =>	  Hd1   0i1	  x	  Hd1
3-	 0<	  Hd1   0i1	  x	  Hd2
3-	 =<	  -Hd1	 -0i1   x   -Hd1
3-	 0>	  -Hd1	 -0i1   x   -Hd2
3-	 =>	  -0i3	 -Hm1   x   Hm1
3-	 0<	  -0i3	 -Hm1   x   Hm1d1
3-	 =<	  0i3   Hm1	  x	  -Hm1
3-	 0>	  0i3   Hm1	  x	  -Hm1d1
! Medium and tiny.
3-	 =>	  1d1  0i1	 x	 1d1
3-	 0<	  1d1  0i1	 x	 1d2
3-	 =<	  -2d1	 -0i1   x   -2d1
3-	 0>	  -2d1	 -0i1   x   -2d2
3-	 =>	  -0i3	 -3	  x	  3
3-	 0<	  -0i3	 -3	  x	  3d1
3-	 =<	  0i3   5   x   -5
3-	 0>	  0i3   5   x   -5d1
! Add magnitude with difference in LSB so, except for denorms,
! round bit is crucial.	 Half-way cases arise.
! Medium cases.
3-	 =0<   1i1	 -1	  x	  2
3-	 >	 1i1   -1   x   2i1
3-	 =0>   -1i1	  1	  x	  -2
3-	 <	 -1i1   1   x   -2i1
3-	 =0>   -2   2i1	  x	  -4
3-	 <	 -2	  2i1   x   -4i1
3-	 =0<   2   -2i1	  x	  4
3-	 >	 2	 -2i1   x   4i1
3-	 =>	  1	  -1i3	 x	 2i2
3-	 0<	  1	  -1i3	 x	 2i1
3-	 =<	  -1   1i3	 x	 -2i2
3-	 0>	  -1   1i3	 x	 -2i1
3-	 =<	  -2i1	 2i2   x   -4i2
3-	 0>	  -2i1	 2i2   x   -4i1
3-	 =>	  2i1   -2i2   x   4i2
3-	 0<	  2i1   -2i2   x   4i1
! Huge cases.
3-	 =>	  Hd2   -Hd1   xo   H
3-	 0<	  Hd2   -Hd1   xo   Hd1
3-	 =<	  -Hd2	 Hd1   xo   -H
3-	 0>	  -Hd2	 Hd1   xo   -Hd1
3-	 =>	  Hm1d1	  -Hm1	 xo	  H
3-	 0<	  Hm1d1	  -Hm1	 x	 Hd1
3-	 =<	  -Hm1d1   Hm1	 xo	  -H
3-	 0>	  -Hm1d1   Hm1	 x	 -Hd1
3-	 =>	  Hm1i1	  -Hm1	 xo	  H
3-	 0<	  Hm1i1	  -Hm1	 xo	  Hd1
3-	 =<	  -Hm1i1   Hm1	 xo	  -H
3-	 0>	  -Hm1i1   Hm1	 xo	  -Hd1
3-	 =0<   Hm2i1   -Hm2	  x	  Hm1
3-	 >	 Hm2i1	 -Hm2   x   Hm1i1
3-	 =0>   -Hm2i1   Hm2	  x	  -Hm1
3-	 <	 -Hm2i1	  Hm2   x   -Hm1i1
3-	 =0<   Hm1d2   -Hm1d1   x   Hd2
3-	 >	 Hm1d2	 -Hm1d1	  x	  Hd1
3-	 =0>   -Hm1d2   Hm1d1   x   -Hd2
3-	 <	 -Hm1d2	  Hm1d1	  x	  -Hd1
! Check rounding.
3-	    >	    2	    -1u1   x	   2i1
3-	    =0<	    2	    -1u1   x	   2
3-	    =>	    2i1	  -1u1	 x		 2i2
3-	    0<	    2i1	  -1u1	 x		 2i1
3-	    =>	    4d1	  -1u1	 x		 4
3-	    0<	    4d1	  -1u1	 x		 4d1
3-	    >	    4d1	  -1u1d1 x	   4
3-	    0=<	    4d1	  -1u1d1 x	   4d1
3-	    =<	    -4d1  1u1   x	   -4
3-	    0>	    -4d1  1u1   x	   -4d1
3-	    <	    -4d1  1u1d1 x	 -4
3-	    0=>	    -4d1  1u1d1 x	 -4d1
! NaN operands.  Signaling NaN cases commented out <JPO, 4/29/93>
3-	    ALL	    Q	    0	    OK	    Q
3-	    ALL	    Q	    -0	    OK	    Q
3-	    ALL	    0	    Q	    OK	    Q
3-	    ALL	    -0	    Q	    OK	    Q
3-	    ALL	    Q	    1	    OK	    Q
3-	    ALL	    Q	    -1	    OK	    Q
3-	    ALL	    1	    Q	    OK	    Q
3-	    ALL	    -1	    Q	    OK	    Q
3-	    ALL	    Ed1	 Q		 OK		 Q
3-	    ALL	    -Ed1 Q		 OK		 Q
3-	    ALL	    Q	    Ed1	 OK		 Q
3-	    ALL	    Q	    -Ed1 OK		 Q
3-	    ALL	    Q	    0i1	  OK	  Q
3-	    ALL	    Q	    -0i1  OK	  Q
3-	    ALL	    0i1	  Q		  OK	  Q
3-	    ALL	    -0i1  Q		  OK	  Q
3-	    ALL	    Q	    Hd1	 OK		 Q
3-	    ALL	    Q	    -Hd1 OK		 Q
3-	    ALL	    Hd1	 Q		 OK		 Q
3-	    ALL	    -Hd1 Q		 OK		 Q
3-	    ALL	    Q	    H	   OK	   Q
3-	    ALL	    Q	    -H	   OK	   Q
3-	    ALL	    H	   Q	   OK	   Q
3-	    ALL	    -H	   Q	   OK	   Q
3-	    ALL	    Q	    Q	    OK	    Q
!3-	    ALL	    S	    0	    i	    Q
!3-	    ALL	    S	    -0	    i	    Q
!3-	    ALL	    0	    S	    i	    Q
!3-	    ALL	    -0	    S	    i	    Q
!3-	    ALL	    S	    1	    i	    Q
!3-	    ALL	    S	    -1	    i	    Q
!3-	    ALL	    1	    S	    i	    Q
!3-	    ALL	    -1	    S	    i	    Q
!3-	    ALL	    Ed1	 S		 i		 Q
!3-	    ALL	    -Ed1 S		 i		 Q
!3-	    ALL	    S	    Ed1	 i		 Q
!3-	    ALL	    S	    -Ed1 i		 Q
!3-	    ALL	    S	    0i1	  i		  Q
!3-	    ALL	    S	    -0i1  i		  Q
!3-	    ALL	    0i1	  S		  i		  Q
!3-	    ALL	    -0i1  S		  i		  Q
!3-	    ALL	    S	    Hd1	 i		 Q
!3-	    ALL	    S	    -Hd1 i		 Q
!3-	    ALL	    Hd1	 S		 i		 Q
!3-	    ALL	    -Hd1 S		 i		 Q
!3-	    ALL	    S	    H	   i	   Q
!3-	    ALL	    S	    -H	   i	   Q
!3-	    ALL	    H	   S	   i	   Q
!3-	    ALL	    -H	   S	   i	   Q
!3-	    ALL	    Q	    S	    i	    Q
!3-	    ALL	    S	    Q	    i	    Q
!3-	    ALL	    S	    S	    i	    Q