! Medium size numbers. ! 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 ! 3/ ALL -0 0 i -Q 3/ ALL -0 0 i Q ! 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 ! 3/ ALL -H H i -Q 3/ ALL -H H i Q ! 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 . 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