! 01/08/02 reworked cases depending on Extended80 format. ! TEST VECTORS FOR Exp2X ! ---------------------- ! ! Some easy cases: 3R d 0 0 OK 1 3R d 1 0 OK 1p1 3R d 2 0 OK 1p2 3R d 3 0 OK 1p3 3R d 4 0 OK 1p4 3R d 9 0 OK 1p9 3R d -1 0 OK 1m1 3R d -2 0 OK 1m2 3R d -3 0 OK 1m3 3R d -4 0 OK 1m4 3R d 31 0 OK 1p31 3R d 78 0 OK 1p78 3R d -9 0 OK 1m9 3R d -15 0 OK 1m7m8 ! Infinities: 3R d -H 0 OK 0 3R d H 0 OK H ! NaNs: ! Commented out signaling NaN cases 3R d Q 0 OK Q 3R d -Q 0 OK -Q !3R e S 0 i Q !3R e -S 0 i -Q ! Very large, but finite: 3R d Hd1 0 ox H 3R d Hd2 0 ox H 3R d Hd3 0 ox H 3R d Hd4 0 ox H 3R d Hd9 0 ox H 3R d Hm1 0 ox H 3R d Hm2 0 ox H 3R d Hm3 0 ox H 3R d Hm9 0 ox H 3R d 1p9p5 0 ox H 3R d 1p9p9 0 ox H ! Huge negative exponents: 3R d -Hd1 0 ux 0 3R d -Hd2 0 ux 0 3R d -Hd3 0 ux 0 3R d -Hd4 0 ux 0 3R d -Hd9 0 ux 0 3R d -Hm1 0 ux 0 3R d -Hm2 0 ux 0 3R d -Hm3 0 ux 0 3R d -Hm4 0 ux 0 3R d -Hm9 0 ux 0 3R d -1p5p5 0 u Em2 3R d -1p9p9 0 ux 0 ! Very large but not too large: 3R d 1023 0 OK Hm1 3R d 1022 0 OK Hm2 3R d 1021 0 OK Hm3 3R d 5p2 0 OK 4p9p9 ! Very large negatives, but not too large: 3R d -1022 0 OK E 3R d -1074 0 u 0i1 3R d -1074i1 0 ux 0i1 3R d -1074d1 0 ux 0i1 3R d -1073 0 u 0i2 3R d -1073i1 0 ux 0i2 3R d -1073d1 0 ux 0i2 3R d -59 0 OK 1m7u1 3R d -54 0 OK 1m2u1 3R d -53 0 OK 1m1u1 3R d -52 0 OK 1u1 3R d -51 0 OK 1u2 3R d -50 0 OK 1u4 3R d -1021 0 OK Ep1 3R d -1020 0 OK Ep2 3R d -1017 0 OK Ep5 3R d -1023 0 u Em1 3R d -1024 0 u Em2 3R d -1029 0 u Em7 3R d -1p4 0 OK 1m8m8 3R d -1p5 0 OK 1m32 3R d -1p6 0 OK 1m64 ! ! End of Exp2X tests. ! ! ! TEST VECTORS FOR Exp1X ! ---------------------- ! ! The easy case: 3U d 0 0 OK 0 ! Infinities: 3U d -H 0 OK -1 3U d H 0 OK H ! NaNs: ! Commented out signaling NaN cases 3U d Q 0 OK Q 3U d -Q 0 OK -Q !3U e S 0 i Q !3U e -S 0 i -Q ! Very large, but finite: 3U d Hd1 0 ox H 3U d Hd2 0 ox H 3U d Hd3 0 ox H 3U d Hd4 0 ox H 3U d Hd9 0 ox H 3U d Hm1 0 ox H 3U d Hm2 0 ox H 3U d Hm3 0 ox H 3U d Hm9 0 ox H 3U d 1p14 0 ox H 3U d 1p18 0 ox H ! Huge negative exponents: 3U d -Hd1 0 x -1 3U d -Hd2 0 x -1 3U d -Hd3 0 x -1 3U d -Hd4 0 x -1 3U d -Hd9 0 x -1 3U d -Hm1 0 x -1 3U d -Hm2 0 x -1 3U d -Hm3 0 x -1 3U d -Hm4 0 x -1 3U d -Hm9 0 x -1 3U d -1p18 0 x -1 ! Numbers close to 0. e^x - 1 = x + x^2/2! + x^3/3! + x^4/4! + ... ! ! For values of x near zero, the first two terms of the ! expansion show up in the result. The remaining terms ! are 'tiny' and affect only rounding. 3U d 1m54 0 x 1m54 3U d -1m54 0 x -1m54 3U d 1m53 0 x 1m53 3U d 2m53 0 x 2m53 3U d 3m53 0 x 3i1m53 3U d 4m53 0 x 1i1m51 3U d 5m53 0 x 5i2m53 3U d -1m53 0 x -1m53 3U d -2m53 0 x -1d1m52 3U d -3m53 0 x -3d1m53 3U d -4m53 0 x -1d2m51 3U d -5m53 0 x -5d2m53 ! Numbers so close to zero that only the leading term shows up: 3U d 1m55 0 x 1m55 3U d -1m55 0 x -1m55 3U d 1m62 0 x 1m62 3U d -1m62 0 x -1m62 3U <0=d E 0 x E+1 ! 3U >e E 0 x Ei1 3U d E 0 x E ! Disabled <0e and >0e variants, since function is computed round-nearest always. 3U d -E 0 x -E+1 3U d 0i1 0 ux 0i1 3U d -0i1 0 ux -0i1 3U d 0i3 0 ux 0i3 3U d -0i3 0 ux -0i3 ! ! Test Vectors for ExpX ! ! The easy case: 3T d 0 0 OK 1 ! Infinities: 3T d -H 0 OK 0 3T d H 0 OK H ! NaNs: ! Commented out signaling NaN cases 3T d Q 0 OK Q 3T d -Q 0 OK -Q !3T e S 0 i S !3T e -S 0 i -S ! Very large, but finite: 3T d Hd1 0 ox H 3T d Hd2 0 ox H 3T d Hd3 0 ox H 3T d Hd4 0 ox H 3T d Hd9 0 ox H 3T d Hm1 0 ox H 3T d Hm2 0 ox H 3T d Hm3 0 ox H 3T d Hm9 0 ox H 3T d 1p14 0 ox H 3T d 1p18 0 ox H ! Huge negative exponents: 3T d -Hd1 0 ux 0 3T d -Hd2 0 ux 0 3T d -Hd3 0 ux 0 3T d -Hd4 0 ux 0 3T d -Hd9 0 ux 0 3T d -Hm1 0 ux 0 3T d -Hm2 0 ux 0 3T d -Hm3 0 ux 0 3T d -Hm4 0 ux 0 3T d -Hm5 0 ux 0 3T d -1p18 0 ux 0 ! Numbers close to 0. e^x = 1 + x + x^2/2! + x^3/3! + x^4/4! + ... ! ! For values of x slightly larger than zero, all N significant bits of the ! argument are to the right of the binary point. The result, however, has ! a leading '1' and therefore only N-1 bits to the right of the binary point. ! The last bit of the argument is significant only in rounding. In general, ! k * 2^(-N) ------> 1i[k/2] + tiny. When k is even, the seriestail is less ! than 1/2 ulp. When k is odd, the series tail is greater than 1/2 ulp. ! ! For values of x slightly smaller than zero, both the argument and the ! result have N bits to the right of the binary point, so: ! -k * 2^(-N) --------> 1dk + tiny. ! 3T d 1m54 0 x 1 3T d 1m53 0 x 1 3T d 1m52 0 x 1i1 3T d 1m51 0 x 1i2 3T d 3m53 0 x 1i2 3T d 5m53 0 x 1i3 3T d 6m53 0 x 1i3 3T d 7m53 0 x 1i4 3T d 8m53 0 x 1i4 3T d -1m53 0 x 1d1 3T d -1m52 0 x 1d2 3T d -3m53 0 x 1d3 ! ! Numbers too close to zero to affect the leading '1' of the series: ! 3T d 1m55 0 x 1 3T d -1m55 0 x 1 3T d 1m62 0 x 1 3T d -1m62 0 x 1 3T d E 0 x 1 3T d -E 0 x 1 3T d 0i1 0 x 1 3T d 0d1 0 x 1 3T d 0i3 0 x 1 3T d 0d3 0 x 1