TVdivide.3.TEXT   [plain text]


! Medium size numbers.
! <scp> 12/04/01 corrected typo in some flags: xv -> ux
3/	   ALL	   1p15	   1p5	    OK	  1p10
3/	   ALL	   1p63	   1p23	    OK	  1p40
3/	   ALL	   32760   10	    OK	  3276
3/	   ALL	   -1p15   1p5	    OK	  -1p10
3/	   ALL	   1p15	   -1p5	    OK	  -1p10
3/	   ALL	   1p120   1p20	    OK	  1p100
3/	   ALL	   -1p120  1p20	    OK	  -1p100
3/	   ALL	   1p120   -1p20    OK	  -1p100
3/	   ALL	   1p47	   1p13	    OK	  1p34
3/	   ALL	   10000   10	    OK	  1000
3/	   ALL	   10000   100	    OK	  100
3/	   ALL	   10000   1000	    OK	  10
! First the consistency checks.
3/	 ALL   1   1   OK   1
3/	 ALL   2   1   OK   2
3/	 ALL   9   3   OK   3
3/	 ALL   5   5   OK   1
3/	 ALL   8   2   OK   4
! Check out sign manipulation.
3/	 ALL   -1   1   OK	 -1
3/	 ALL   -2   1   OK	 -2
3/	 ALL   2   -1   OK	 -2
3/	 ALL   -8   2   OK	 -4
3/	 ALL   3   -3   OK	 -1
3/	 ALL   -7   7   OK	 -1
3/	 ALL   -1   -1	 OK	  1
3/	 ALL   -2   -1	 OK	  2
3/	 ALL   -6   -3	 OK	  2
3/	 ALL   -9   -3	 OK	  3
! Some zero tests, round mode is irrelevant.
3/	 ALL   0   0   i   Q
! <scp> 3/	 ALL   -0   0   i   -Q
3/	 ALL   -0   0   i   Q
! <scp> 3/	 ALL   0   -0   i   -Q
3/	 ALL   0   -0   i   Q
3/	 ALL   -0   -0	 i	 Q
! Infinity tests, round modes irrelevant.
3/	 ALL   H   H   i   Q
! <scp> 3/	 ALL   -H   H   i   -Q
3/	 ALL   -H   H   i   Q
! <scp> 3/	 ALL   H   -H   i   -Q
3/	 ALL   H   -H   i   Q
3/	 ALL   -H   -H	 i	 Q
! Inf / 0 --> Inf with no problem.
3/	 ALL   H   0   OK   H
3/	 ALL   -H   0   OK	 -H
3/	 ALL   H   -0   OK	 -H
3/	 ALL   -H   -0	 OK	  H
! 0 / Inf --> 0 with no problem.
3/	 ALL   0   H   OK   0
3/	 ALL   -0   H   OK	 -0
3/	 ALL   0   -H   OK	 -0
3/	 ALL   -0   -H	 OK	  0
! Inf / small_integer -> Inf.
3/	 ALL   H   1   OK   H
3/	 ALL   -H   2   OK	 -H
3/	 ALL   H   -3   OK	 -H
3/	 ALL   -H   -4	 OK	  H
3/	 ALL   H   5   OK   H
3/	 ALL   -H   6   OK	 -H
3/	 ALL   H   -7   OK	 -H
3/	 ALL   -H   -8	 OK	  H
! Small_int / Inf -> 0.
3/	 ALL   1   H   OK   0
3/	 ALL   -2   H   OK	 -0
3/	 ALL   3   -H   OK	 -0
3/	 ALL   -4   -H	 OK	  0
3/	 ALL   5   H   OK   0
3/	 ALL   -6   H   OK	 -0
3/	 ALL   7   -H   OK	 -0
3/	 ALL   -8   -H	 OK	  0
! Huge / Inf -> 0.
3/	 ALL   Hm1	 H	 OK	  0
3/	 ALL   -Hm2	  H	  OK   -0
3/	 ALL   Hm1	 -H	  OK   -0
3/	 ALL   -Hm2	  -H   OK   0
3/	 ALL   Hm1d1   H   OK   0
3/	 ALL   -Hm2d1   H   OK	 -0
3/	 ALL   Hd1	 -H	  OK   -0
3/	 ALL   -Hd1	  -H   OK   0
! Inf / huge -> Inf.
3/	 ALL   H   Hm1	 OK	  H
3/	 ALL   -H   Hm2	  OK   -H
3/	 ALL   H   -Hm1	  OK   -H
3/	 ALL   -H   -Hm2   OK   H
3/	 ALL   H   Hm1d1   OK   H
3/	 ALL   H   -Hm2d1   OK	 -H
3/	 ALL   H   -Hd1	  OK   -H
3/	 ALL   -H   -Hd1   OK   H
! Inf / tiny -> Inf.
3/	 ALL   H   E   OK   H
3/	 ALL   -H   Ep1	  OK   -H
3/	 ALL   H   -Ep1	  OK   -H
3/	 ALL   -H   -E	 OK	  H
3/	 ALL   H   Ep1d1   OK   H
3/	 ALL   -H   Ei1	  OK   -H
3/	 ALL   H   -Ei1	  OK   -H
3/	 ALL   -H   -Ep1d1	 OK	  H
! Tiny / Inf -> 0.
3/	 ALL   E   H   OK   0
3/	 ALL   -Ep1	  H	  OK   -0
3/	 ALL   Ep1	 -H	  OK   -0
3/	 ALL   -E   -H	 OK	  0
3/	 ALL   Ep1d1   H   OK   0
3/	 ALL   -Ei1	  H	  OK   -0
3/	 ALL   Ei1	 -H	  OK   -0
3/	 ALL   -Ep1d1   -H	 OK	  0
! Inf / denormalized -> Inf.
3/	 ALL   H   0i1	 OK	  H
3/	 ALL   -H   0i3	  OK   -H
3/	 ALL   H   -0i2	  OK   -H
3/	 ALL   -H   -0i4   OK   H
3/	 ALL   H   Ed1	 OK	  H
3/	 ALL   -H   Ed1	  OK   -H
3/	 ALL   H   -Ed1	  OK   -H
3/	 ALL   -H   -Ed1   OK   H
! Denorm / Inf -> 0.
3/	 ALL   0i1	 H	 OK	  0
3/	 ALL   -0i3	  H	  OK   -0
3/	 ALL   0i2	 -H	  OK   -0
3/	 ALL   -0i4	  -H   OK   0
3/	 ALL   Ed1	 H	 OK	  0
3/	 ALL   -Ed1	  H	  OK   -0
3/	 ALL   Ed1	 -H	  OK   -0
3/	 ALL   -Ed1	  -H   OK   0
! 0 / small_integer -> 0.
3/	 ALL   0   1   OK   0
3/	 ALL   -0   2   OK	 -0
3/	 ALL   0   -3   OK	 -0
3/	 ALL   -0   -4	 OK	  0
3/	 ALL   0   5   OK   0
3/	 ALL   -0   6   OK	 -0
3/	 ALL   0   -7   OK	 -0
3/	 ALL   -0   -8	 OK	  0
! Small_int / 0 -> Inf with DivBy0.
3/	 ALL   1   0   z   H
3/	 ALL   -2   0   z   -H
3/	 ALL   3   -0   z   -H
3/	 ALL   -4   -0	 z	 H
3/	 ALL   5   0   z   H
3/	 ALL   -6   0   z   -H
3/	 ALL   7   -0   z   -H
3/	 ALL   -8   -0	 z	 H
! 0 / huge -> 0.
3/	 ALL   0   Hm1	 OK	  0
3/	 ALL   -0   Hm2	  OK   -0
3/	 ALL   0   -Hm1	  OK   -0
3/	 ALL   -0   -Hm2   OK   0
3/	 ALL   0   Hm1d1   OK   0
3/	 ALL   -0   Hm2d1   OK	 -0
3/	 ALL   0   -Hm2d1   OK	 -0
3/	 ALL   -0   -Hm1d1	 OK	  0
! Huge / 0 -> Inf with DivBy0.
3/	 ALL   Hm1	 0	 z	 H
3/	 ALL   -Hm2	  0	  z	  -H
3/	 ALL   Hm1	 -0	  z	  -H
3/	 ALL   -Hm2	  -0   z   H
3/	 ALL   Hm1d1   0   z   H
3/	 ALL   -Hm2d1   0   z   -H
3/	 ALL   Hm2d1   -0   z   -H
3/	 ALL   -Hm1d1   -0	 z	 H
! 0 / tiny -> 0.
3/	 ALL   0   E   OK   0
3/	 ALL   -0   Ep1	  OK   -0
3/	 ALL   0   -Ep1	  OK   -0
3/	 ALL   -0   -E	 OK	  0
3/	 ALL   0   Ep1d1   OK   0
3/	 ALL   -0   Ei1	  OK   -0
3/	 ALL   0   -Ei1	  OK   -0
3/	 ALL   -0   -Ep1d1	 OK	  0
! Tiny / 0 -> Inf with DivBy0.
3/	 ALL   E   0   z   H
3/	 ALL   -Ep1	  0	  z	  -H
3/	 ALL   Ep1	 -0	  z	  -H
3/	 ALL   -E   -0	 z	 H
3/	 ALL   Ep1d1   0   z   H
3/	 ALL   -Ei1	  0	  z	  -H
3/	 ALL   Ei1	 -0	  z	  -H
3/	 ALL   -Ep1d1   -0	 z	 H
! 0 / denormalized -> 0.
3/	 ALL   0   0i1	 OK	  0
3/	 ALL   -0   0i3	  OK   -0
3/	 ALL   0   -0i2	  OK   -0
3/	 ALL   -0   -0i4   OK   0
3/	 ALL   0   Ed1	 OK	  0
3/	 ALL   -0   Ed1	  OK   -0
3/	 ALL   0   -Ed1	  OK   -0
3/	 ALL   -0   -Ed1   OK   0
! Denormalized * 0 -> Inf, DivBy0.
3/	 ALL   0i1	 0	 z	 H
3/	 ALL   -0i3	  0	  z	  -H
3/	 ALL   0i2	 -0	  z	  -H
3/	 ALL   -0i4	  -0   z   H
3/	 ALL   Ed1	 0	 z	 H
3/	 ALL   -Ed1	  0	  z	  -H
3/	 ALL   Ed1	 -0	  z	  -H
3/	 ALL   -Ed1	  -0   z   H
! Exact cases huge and 2.
3/	 ALL   Hm1	 2	 OK	  Hm2
3/	 ALL   Hm1	 -2	  OK   -Hm2
3/	 ALL   -Hm1d1   2   OK	 -Hm2d1
3/	 ALL   Hm1d3   -2   OK	 -Hm2d3
3/	 ALL   Hm1	 2	 OK	  Hm2
3/	 ALL   Hm1	 -2	  OK   -Hm2
3/	 ALL   -Hm1d1   2   OK	 -Hm2d1
3/	 ALL   Hm1d3   -2   OK	 -Hm2d3
3/	 ALL   Hd1	 Hm1d1	 OK	  2
3/	 ALL   Hd1	 -2	  OK   -Hm1d1
3/	 ALL   -Hm1i1   Hm2i1   OK	 -2
3/	 ALL   Hm1i3   -Hm2i3   OK	 -2
3/	 ALL   Hd1	 Hm1d1	 OK	  2
3/	 ALL   Hd1	 -2	  OK   -Hm1d1
3/	 ALL   -Hm1i1   Hm2i1   OK	 -2
3/	 ALL   Hm1i3   -Hm2i3   OK	 -2
! Exact cases huge and 4.
3/	 ALL   Hd1	 Hm2d1	 OK	  4
3/	 ALL   -Hd1	  Hm2d1	  OK   -4
3/	 ALL   Hd1	 -Hm2d1	  OK   -4
3/	 ALL   -Hd1	  -Hm2d1   OK   4
3/	 ALL   Hd1	 Hm2d1	 OK	  4
3/	 ALL   -Hd1	  Hm2d1	  OK   -4
3/	 ALL   Hd1	 -Hm2d1	  OK   -4
3/	 ALL   -Hd1	  -Hm2d1   OK   4
3/	 ALL   Hd3	 4	 OK	  Hm2d3
3/	 ALL   Hd3	 -4	  OK   -Hm2d3
3/	 ALL   -Hd3	  4	  OK   -Hm2d3
3/	 ALL   -Hd3	  -4   OK   Hm2d3
3/	 ALL   Hd3	 4	 OK	  Hm2d3
3/	 ALL   Hd3	 -4	  OK   -Hm2d3
3/	 ALL   -Hd3	  4	  OK   -Hm2d3
3/	 ALL   -Hd3	  -4   OK   Hm2d3
! Exact cases tiny and 2.
3/	 ALL   Ep1	 E	 OK	  2
3/	 ALL   Ep1	 -2	  OK   -E
3/	 ALL   -Ep1i1   Ei1	  OK   -2
3/	 ALL   Ep1i3   -2   OK	 -Ei3
3/	 ALL   Ep1	 E	 OK	  2
3/	 ALL   Ep1	 -2	  OK   -E
3/	 ALL   -Ep1i1   Ei1	  OK   -2
3/	 ALL   Ep1i3   -2   OK	 -Ei3
3/	 ALL   Ep1i1   Ei1	 OK	  2
3/	 ALL   Ep1i1   -2   OK	 -Ei1
3/	 ALL   -Ep1i5   Ei5	  OK   -2
3/	 ALL   Ep1i3   -Ei3	  OK   -2
3/	 ALL   Ep1i1   Ei1	 OK	  2
3/	 ALL   Ep1i1   -2   OK	 -Ei1
3/	 ALL   -Ep1i5   Ei5	  OK   -2
3/	 ALL   Ep1i3   -Ei3	  OK   -2
3/	    ALL	    Ed1	  1m1  OK	 Ep1d2
3/	    ALL	    Ed1	  1m9   OK	   Ep9d2
! Huge / tiny -> overflow.
3/	    =>	    Hm1		 1m1   ox	   H
3/	    0<	    Hm1		 1m1   ox	   Hd1
3/	    =>	    -Hm1	 -1m1  ox	   H
3/	    0<	    -Hm1	 -1m1  ox	   Hd1
3/	    =<	    Hm1		 -1m1  ox	   -H
3/	    =<	    -Hm1	 1m1   ox	   -H
3/	    0>	    Hm1		 -1m1  ox	   -Hd1
3/	    0>	    -Hm1	 1m1   ox	   -Hd1
3/	    =>	    Hm9		 Ep9	  ox	  H
3/	    0<	    Hm9		 Ep9	  ox	  Hd1
3/	    =>	    Hd1	 0i1   ox	   H
3/	    0<	    Hd1	 0i1   ox	   Hd1
3/	    =>	    Hm1		 Ed1  ox	  H
3/	    0<	    Hm1		 Ed1  ox	  Hd1
3/	    =>	    Hd1	 1d1   ox	   H
3/	    0<	    Hd1	 1d1   ox	   Hd1
! Will underflow unless loss of accuracy is detected as a 
! denormalization loss.
3/	    =0<	    E	   1i1	 ux		 Ed1
3/	    =0>	    -E	    1i1	    ux	    -Ed1
3/	    >=	    Ed2	    1d2	    ux	    Ed1
3/	    >=	    Ed9	    1d2	    ux	    Ed8
3/	    <=	    -Ed8    1d2	    ux	    -Ed7
3/	    <=0	    Ei1	    1i2	    ux	    Ed1
3/	    <=0	    Ed1	    1i2	    ux	    Ed3
3/	    <=0	    Ei2	    1i6	    ux	    Ed4
3/	    0<	    Ed1	    1i1	    ux	    Ed2
! Tiny / huge -> underflow.
3/	    =<0	    0i1	  Hd1  xu	   0
3/	    >	    0i1	  Hd1  xu	   0i1
3/	    =<0	    -0i1  -Hd1  xu	    0
3/	    >	    -0i1  -Hd1  xu	    0i1
3/	    =0>	    0i1	  -Hd1 xu	   -0
3/	    <	    0i1	  -Hd1 xu	   -0i1
3/	    =0>	    -0i1   Hd1 xu	   -0
3/	    <	    -0i1   Hd1 xu	   -0i1
! Tiny / 2.
3/	    >	    0i1	  2		  xu	  0i1
3/	    =0<	    0i1	  2		  xu	  0
3/	    >	    -0i1   -2	    xu	    0i1
3/	    =0<	    -0i1   -2	    xu	    0
3/	    <	    0i1	  -2	   xu	  -0i1
3/	    =0>	    0i1	  -2	   xu	   -0
3/	    <	    -0i1   2	   xu	   -0i1
3/	    =0>	    -0i1   2	   xu	   -0
! Barely underflow.
3/	    0<	    Ep1d1  2	   xu	   Ed1  
3/	    0>	    Ep1d1   -2	    xu	    -Ed1
3/	    >=	    Ep1d1   2	    xu	    E
3/	    >	    E	    1i1	    xu	    E
3/	    <	    -E	    1i1	    xu	    -E
3/	    >	    Ei1	    1i2	    xu	    E
3/	    >	    Ed1	    1i2	    xu	    Ed2
! Denorm result but will not underflow.
3/	    ALL	    Ep1d2  2	  OK	   Ed1
3/	    ALL	    Ed1	 1		 OK		  Ed1
3/	    ALL	    0i1	  1m1   OK		 0i2
3/	    ALL	    0i1	  1m3   OK		 0i8
3/	    ALL	    0i9	  9		  OK	   0i1
3/	    ALL	    0i9	 -9		  OK	  -0i1
3/	    ALL	    Ed1	 -1		  OK	  -Ed1
3/	    ALL	    -0i1   1m1	 OK		  -0i2
! Tricky divides based on power series expansions
! 1 / (1 + Nulp+) --> 1 - (2Nulp-) + tiny.
3/	 =	 1	 1i1   x   1d2
3/	 0	 1	 1i1   x   1d2
3/	 <	 1	 1i1   x   1d2
3/	 >	 1	 1i1   x   1d1
3/	 =	 1	 1i2   x   1d4
3/	 0	 1	 1i2   x   1d4
3/	 <	 1	 1i2   x   1d4
3/	 >	 1	 1i2   x   1d3
3/	 =	 1	 1i3   x   1d6
3/	 0	 1	 1i3   x   1d6
3/	 <	 1	 1i3   x   1d6
3/	 >	 1	 1i3   x   1d5
3/	 =	 1	 1i4   x   1d8
3/	 0	 1	 1i4   x   1d8
3/	 <	 1	 1i4   x   1d8
3/	 >	 1	 1i4   x   1d7
! 1 / (1 - Nu-) --> 1 + (Q/2 u+) + tiny.
3/	 =	 1	 1d1   x   1i1
3/	 0	 1	 1d1   x   1
3/	 <	 1	 1d1   x   1
3/	 >	 1	 1d1   x   1i1
3/	 =	 1	 1d2   x   1i1
3/	 0	 1	 1d2   x   1i1
3/	 <	 1	 1d2   x   1i1
3/	 >	 1	 1d2   x   1i2
3/	 =	 1	 1d3   x   1i2
3/	 0	 1	 1d3   x   1i1
3/	 <	 1	 1d3   x   1i1
3/	 >	 1	 1d3   x   1i2
3/	 =	 1	 1d4   x   1i2
3/	 0	 1	 1d4   x   1i2
3/	 <	 1	 1d4   x   1i2
3/	 >	 1	 1d4   x   1i3
3/	 =	 1	 1d5   x   1i3
3/	 0	 1	 1d5   x   1i2
3/	 <	 1	 1d5   x   1i2
3/	 >	 1	 1d5   x   1i3
3/	 =	 1	 1d8   x   1i4
3/	 0	 1	 1d8   x   1i4
3/	 <	 1	 1d8   x   1i4
3/	 >	 1	 1d8   x   1i5
3/	 =	 1	 1d9   x   1i5
3/	 0	 1	 1d9   x   1i4
3/	 <	 1	 1d9   x   1i4
3/	 >	 1	 1d9   x   1i5
! (1 + Mu+) / (1 + Nu+) -->
! Case M > Q: (1 + Mu+) * (1 - Nu+ + (Nu+)^2 - tiny) -->
! 1 + (M-Q)u+ - (MN-NN)(u+)^2 + tiny -->
! 1 + (M-Q)u+ - tiny.
! M + Q = 3.
3/	 =	 1i2   1i1	 x	 1i1
3/	 0	 1i2   1i1	 x	 1
3/	 <	 1i2   1i1	 x	 1
3/	 >	 1i2   1i1	 x	 1i1
! M + Q = 4.
3/	 =	 1i3   1i1	 x	 1i2
3/	 0	 1i3   1i1	 x	 1i1
3/	 <	 1i3   1i1	 x	 1i1
3/	 >	 1i3   1i1	 x	 1i2
! M + Q = 5.
3/	 =	 1i4   1i1	 x	 1i3
3/	 0	 1i4   1i1	 x	 1i2
3/	 <	 1i4   1i1	 x	 1i2
3/	 >	 1i4   1i1	 x	 1i3
! M + Q = 9.
3/	 =	 1i7   1i2	 x	 1i5
3/	 0	 1i7   1i2	 x	 1i4
3/	 <	 1i7   1i2	 x	 1i4
3/	 >	 1i7   1i2	 x	 1i5
! Q = 17.
3/	 =	 1i9   1i8	 x	 1i1
3/	 0	 1i9   1i8	 x	 1
3/	 <	 1i9   1i8	 x	 1
3/	 >	 1i9   1i8	 x	 1i1
! (1 + Mulp+) / (1 + Nulp+) -->
! Case M < Q: (1 + 2Mulp-) * (1 - 2Nulp- + (2Nulp-)^2 - tiny) -->
! 1 - 2(Q-M)ulp- + 4(NN-MN)(ulp-)^2 + tiny -->
! 1 - 2(Q-M)ulp- + tiny.
! M + Q = 3.
3/	 =	 1i1   1i2	 x	 1d2
3/	 0	 1i1   1i2	 x	 1d2
3/	 <	 1i1   1i2	 x	 1d2
3/	 >	 1i1   1i2	 x	 1d1
! M + Q = 4.
3/	 =	 1i1   1i3	 x	 1d4
3/	 0	 1i1   1i3	 x	 1d4
3/	 <	 1i1   1i3	 x	 1d4
3/	 >	 1i1   1i3	 x	 1d3
! M + Q = 5.
3/	 =	 1i2   1i3	 x	 1d2
3/	 0	 1i2   1i3	 x	 1d2
3/	 <	 1i2   1i3	 x	 1d2
3/	 >	 1i2   1i3	 x	 1d1
! M + Q = 11.
3/	 =	 1i4   1i7	 x	 1d6
3/	 0	 1i4   1i7	 x	 1d6
3/	 <	 1i4   1i7	 x	 1d6
3/	 >	 1i4   1i7	 x	 1d5
! M + Q = 14.
3/	 =	 1i6   1i8	 x	 1d4
3/	 0	 1i6   1i8	 x	 1d4
3/	 <	 1i6   1i8	 x	 1d4
3/	 >	 1i6   1i8	 x	 1d3
! (1 - Mulp-) / (1 - Nulp-) -->
! Case M > Q: (1 - Mulp-) * (1 + Nulp- + (Nulp-)^2 + tiny) -->
! 1 - (M-Q)ulp- - (MN-NN)(ulp-)^2 + tiny -->
! 1 - (M-Q)ulp- - tiny.
! M + Q = 3.
3/	 =	 1d2   1d1	 x	 1d1
3/	 0	 1d2   1d1	 x	 1d2
3/	 <	 1d2   1d1	 x	 1d2
3/	 >	 1d2   1d1	 x	 1d1
! M + Q = 4.
3/	 =	 1d3   1d1	 x	 1d2
3/	 0	 1d3   1d1	 x	 1d3
3/	 <	 1d3   1d1	 x	 1d3
3/	 >	 1d3   1d1	 x	 1d2
! M + Q = 5.
3/	 =	 1d3   1d2	 x	 1d1
3/	 0	 1d3   1d2	 x	 1d2
3/	 <	 1d3   1d2	 x	 1d2
3/	 >	 1d3   1d2	 x	 1d1
3/	 =	 1d4   1d1	 x	 1d3
3/	 0	 1d4   1d1	 x	 1d4
3/	 <	 1d4   1d1	 x	 1d4
3/	 >	 1d4   1d1	 x	 1d3
! M + Q = 6.
3/	 =	 1d4   1d2	 x	 1d2
3/	 0	 1d4   1d2	 x	 1d3
3/	 <	 1d4   1d2	 x	 1d3
3/	 >	 1d4   1d2	 x	 1d2
! M + Q = 7.
3/	 =	 1d4   1d3	 x	 1d1
3/	 0	 1d4   1d3	 x	 1d2
3/	 <	 1d4   1d3	 x	 1d2
3/	 >	 1d4   1d3	 x	 1d1
! M + Q = 11.
3/	 =	 1d8   1d3	 x	 1d5
3/	 0	 1d8   1d3	 x	 1d6
3/	 <	 1d8   1d3	 x	 1d6
3/	 >	 1d8   1d3	 x	 1d5
3/	 =	 1d9   1d2	 x	 1d7
3/	 0	 1d9   1d2	 x	 1d8
3/	 <	 1d9   1d2	 x	 1d8
3/	 >	 1d9   1d2	 x	 1d7
! M + Q = 12.
3/	 =	 1d8   1d4	 x	 1d4
3/	 0	 1d8   1d4	 x	 1d5
3/	 <	 1d8   1d4	 x	 1d5
3/	 >	 1d8   1d4	 x	 1d4
! M + Q = 14.
3/	 =	 1d9   1d5	 x	 1d4
3/	 0	 1d9   1d5	 x	 1d5
3/	 <	 1d9   1d5	 x	 1d5
3/	 >	 1d9   1d5	 x	 1d4
! (1 - Mulp-) / (1 - Nulp-) -->
! Case M < Q: (1 - (M/2)ulp+) * (1 + (Q/2)ulp+ + ((Q/2)ulp+)^2 + tiny) -->
! 1 + ((Q-M)/2)ulp+ + (NN-MN)/4(ulp+)^2 + tiny -->
! 1 + (Q-M)/2ulp+ + tiny.
! M + Q = 3.
3/	 =	 1d1   1d2	 x	 1i1
3/	 0	 1d1   1d2	 x	 1
3/	 <	 1d1   1d2	 x	 1
3/	 >	 1d1   1d2	 x	 1i1
! M + Q = 4.
3/	 =	 1d1   1d3	 x	 1i1
3/	 0	 1d1   1d3	 x	 1i1
3/	 <	 1d1   1d3	 x	 1i1
3/	 >	 1d1   1d3	 x	 1i2
! M + Q = 5.
3/	 =	 1d2   1d3	 x	 1i1
3/	 0	 1d2   1d3	 x	 1
3/	 <	 1d2   1d3	 x	 1
3/	 >	 1d2   1d3	 x	 1i1
3/	 =	 1d1   1d4	 x	 1i2
3/	 0	 1d1   1d4	 x	 1i1
3/	 <	 1d1   1d4	 x	 1i1
3/	 >	 1d1   1d4	 x	 1i2
! M + Q = 6.
3/	 =	 1d2   1d4	 x	 1i1
3/	 0	 1d2   1d4	 x	 1i1
3/	 <	 1d2   1d4	 x	 1i1
3/	 >	 1d2   1d4	 x	 1i2
! M + Q = 7.
3/	 =	 1d3   1d4	 x	 1i1
3/	 0	 1d3   1d4	 x	 1
3/	 <	 1d3   1d4	 x	 1
3/	 >	 1d3   1d4	 x	 1i1
! M + Q = 8.
3/	 =	 1d1   1d7	 x	 1i3
3/	 0	 1d1   1d7	 x	 1i3
3/	 <	 1d1   1d7	 x	 1i3
3/	 >	 1d1   1d7	 x	 1i4
! M + Q = 9.
3/	 =	 1d2   1d7	 x	 1i3
3/	 0	 1d2   1d7	 x	 1i2
3/	 <	 1d2   1d7	 x	 1i2
3/	 >	 1d2   1d7	 x	 1i3
! M + Q = 10.
3/	 =	 1d3   1d7	 x	 1i2
3/	 0	 1d3   1d7	 x	 1i2
3/	 <	 1d3   1d7	 x	 1i2
3/	 >	 1d3   1d7	 x	 1i3
! M + Q = 11.
3/	 =	 1d4   1d7	 x	 1i2
3/	 0	 1d4   1d7	 x	 1i1
3/	 <	 1d4   1d7	 x	 1i1
3/	 >	 1d4   1d7	 x	 1i2
! M + Q = 12.
3/	 =	 1d5   1d7	 x	 1i1
3/	 0	 1d5   1d7	 x	 1i1
3/	 <	 1d5   1d7	 x	 1i1
3/	 >	 1d5   1d7	 x	 1i2
! M + Q = 13.
3/	 =	 1d6   1d7	 x	 1i1
3/	 0	 1d6   1d7	 x	 1
3/	 <	 1d6   1d7	 x	 1
3/	 >	 1d6   1d7	 x	 1i1
! (1 + Mulp+) / (1 - Nulp-) -->
! (1 + Mulp+) * (1 + (Q/2)ulp+ + ((Q/2)ulp+)^2 + tiny) -->
! 1 + (M + Q/2)ulp+ + tiny.
! M + Q = 2.
3/	 =	 1i1   1d1	 x	 1i2
3/	 0	 1i1   1d1	 x	 1i1
3/	 <	 1i1   1d1	 x	 1i1
3/	 >	 1i1   1d1	 x	 1i2
! M + Q = 3.
3/	 =	 1i1   1d2	 x	 1i2
3/	 0	 1i1   1d2	 x	 1i2
3/	 <	 1i1   1d2	 x	 1i2
3/	 >	 1i1   1d2	 x	 1i3
3/	 =	 1i2   1d1	 x	 1i3
3/	 0	 1i2   1d1	 x	 1i2
3/	 <	 1i2   1d1	 x	 1i2
3/	 >	 1i2   1d1	 x	 1i3
! M + Q = 4.
3/	 =	 1i1   1d3	 x	 1i3
3/	 0	 1i1   1d3	 x	 1i2
3/	 <	 1i1   1d3	 x	 1i2
3/	 >	 1i1   1d3	 x	 1i3
3/	 =	 1i3   1d1	 x	 1i4
3/	 0	 1i3   1d1	 x	 1i3
3/	 <	 1i3   1d1	 x	 1i3
3/	 >	 1i3   1d1	 x	 1i4
3/	 =	 1i2   1d2	 x	 1i3
3/	 0	 1i2   1d2	 x	 1i3
3/	 <	 1i2   1d2	 x	 1i3
3/	 >	 1i2   1d2	 x	 1i4
! M + Q = 5.
3/	 =	 1i3   1d2	 x	 1i4
3/	 0	 1i3   1d2	 x	 1i4
3/	 <	 1i3   1d2	 x	 1i4
3/	 >	 1i3   1d2	 x	 1i5
3/	 =	 1i2   1d3	 x	 1i4
3/	 0	 1i2   1d3	 x	 1i3
3/	 <	 1i2   1d3	 x	 1i3
3/	 >	 1i2   1d3	 x	 1i4
! M + Q = 6.
3/	 =	 1i3   1d3	 x	 1i5
3/	 0	 1i3   1d3	 x	 1i4
3/	 <	 1i3   1d3	 x	 1i4
3/	 >	 1i3   1d3	 x	 1i5
3/	 =	 1i1   1d5	 x	 1i4
3/	 0	 1i1   1d5	 x	 1i3
3/	 <	 1i1   1d5	 x	 1i3
3/	 >	 1i1   1d5	 x	 1i4
3/	 =	 1i5   1d1	 x	 1i6
3/	 0	 1i5   1d1	 x	 1i5
3/	 <	 1i5   1d1	 x	 1i5
3/	 >	 1i5   1d1	 x	 1i6
3/	 =	 1i2   1d4	 x	 1i4
3/	 0	 1i2   1d4	 x	 1i4
3/	 <	 1i2   1d4	 x	 1i4
3/	 >	 1i2   1d4	 x	 1i5
3/	 =	 1i4   1d2	 x	 1i5
3/	 0	 1i4   1d2	 x	 1i5
3/	 <	 1i4   1d2	 x	 1i5
3/	 >	 1i4   1d2	 x	 1i6
! (1 - Mulp-) / (1 + Nulp+) -->
! (1 - Mulp-) * (1 - 2Nulp- + (2Nulp-)^2 - tiny) -->
! 1 - (M + 2N)ulp- + tiny.
! M + Q = 2.
3/	 =	 1d1   1i1	 x	 1d3
3/	 0	 1d1   1i1	 x	 1d3
3/	 <	 1d1   1i1	 x	 1d3
3/	 >	 1d1   1i1	 x	 1d2
! M + Q = 3.
3/	 =	 1d2   1i1	 x	 1d4
3/	 0	 1d2   1i1	 x	 1d4
3/	 <	 1d2   1i1	 x	 1d4
3/	 >	 1d2   1i1	 x	 1d3
3/	 =	 1d1   1i2	 x	 1d5
3/	 0	 1d1   1i2	 x	 1d5
3/	 <	 1d1   1i2	 x	 1d5
3/	 >	 1d1   1i2	 x	 1d4
! M + Q = 4.
3/	 =	 1d3   1i1	 x	 1d5
3/	 0	 1d3   1i1	 x	 1d5
3/	 <	 1d3   1i1	 x	 1d5
3/	 >	 1d3   1i1	 x	 1d4
3/	 =	 1d1   1i3	 x	 1d7
3/	 0	 1d1   1i3	 x	 1d7
3/	 <	 1d1   1i3	 x	 1d7
3/	 >	 1d1   1i3	 x	 1d6
3/	 =	 1d2   1i2	 x	 1d6
3/	 0	 1d2   1i2	 x	 1d6
3/	 <	 1d2   1i2	 x	 1d6
3/	 >	 1d2   1i2	 x	 1d5
! M + Q = 5.
3/	 =	 1d4   1i1	 x	 1d6
3/	 0	 1d4   1i1	 x	 1d6
3/	 <	 1d4   1i1	 x	 1d6
3/	 >	 1d4   1i1	 x	 1d5
3/	 =	 1d1   1i4	 x	 1d9
3/	 0	 1d1   1i4	 x	 1d9
3/	 <	 1d1   1i4	 x	 1d9
3/	 >	 1d1   1i4	 x	 1d8
3/	 =	 1d3   1i2	 x	 1d7
3/	 0	 1d3   1i2	 x	 1d7
3/	 <	 1d3   1i2	 x	 1d7
3/	 >	 1d3   1i2	 x	 1d6
3/	 =	 1d2   1i3	 x	 1d8
3/	 0	 1d2   1i3	 x	 1d8
3/	 <	 1d2   1i3	 x	 1d8
3/	 >	 1d2   1i3	 x	 1d7
! Nan operands.  Signaling NaN cases commented out <JPO, 4/30/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