mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
Fix exp missing underflows (bug 15268, bug 15425).
This commit is contained in:
parent
17dea1887f
commit
749008ff03
10
ChangeLog
10
ChangeLog
@ -1,5 +1,15 @@
|
||||
2013-12-03 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #15268]
|
||||
[BZ #15425]
|
||||
* sysdeps/ieee754/dbl-64/e_exp.c: Include <float.h>.
|
||||
(__ieee754_exp): For possibly underflowing results, check size of
|
||||
result and force underflow exception if required.
|
||||
* math/auto-libm-test-in: Add more tests of exp.
|
||||
* math/auto-libm-test-out: Regenerated.
|
||||
* sysdeps/i386/fpu/libm-test-ulps: Update.
|
||||
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
|
||||
|
||||
[BZ #16283]
|
||||
* math/w_exp2.c (__exp2): Handle a zero result as underflow.
|
||||
* math/w_exp2f.c (__exp2f): Likewise.
|
||||
|
20
NEWS
20
NEWS
@ -11,16 +11,16 @@ Version 2.19
|
||||
|
||||
156, 387, 431, 832, 2801, 6786, 6787, 7003, 9954, 10253, 10278, 11087,
|
||||
11157, 11214, 13028, 13982, 13985, 14029, 14032, 14143, 14155, 14547,
|
||||
14699, 14752, 14876, 14910, 15004, 15048, 15218, 15277, 15308, 15362,
|
||||
15374, 15400, 15427, 15483, 15522, 15531, 15532, 15601, 15608, 15609,
|
||||
15610, 15632, 15640, 15670, 15672, 15680, 15681, 15723, 15734, 15735,
|
||||
15736, 15748, 15749, 15754, 15760, 15763, 15764, 15797, 15799, 15825,
|
||||
15844, 15847, 15849, 15855, 15856, 15857, 15859, 15867, 15886, 15887,
|
||||
15890, 15892, 15893, 15895, 15897, 15905, 15909, 15917, 15919, 15921,
|
||||
15923, 15939, 15948, 15963, 15966, 15985, 15988, 15997, 16032, 16034,
|
||||
16036, 16037, 16041, 16055, 16071, 16072, 16074, 16077, 16078, 16103,
|
||||
16112, 16143, 16144, 16146, 16150, 16151, 16153, 16167, 16172, 16195,
|
||||
16214, 16245, 16271, 16283, 16289.
|
||||
14699, 14752, 14876, 14910, 15004, 15048, 15218, 15268, 15277, 15308,
|
||||
15362, 15374, 15400, 15425, 15427, 15483, 15522, 15531, 15532, 15601,
|
||||
15608, 15609, 15610, 15632, 15640, 15670, 15672, 15680, 15681, 15723,
|
||||
15734, 15735, 15736, 15748, 15749, 15754, 15760, 15763, 15764, 15797,
|
||||
15799, 15825, 15844, 15847, 15849, 15855, 15856, 15857, 15859, 15867,
|
||||
15886, 15887, 15890, 15892, 15893, 15895, 15897, 15905, 15909, 15917,
|
||||
15919, 15921, 15923, 15939, 15948, 15963, 15966, 15985, 15988, 15997,
|
||||
16032, 16034, 16036, 16037, 16041, 16055, 16071, 16072, 16074, 16077,
|
||||
16078, 16103, 16112, 16143, 16144, 16146, 16150, 16151, 16153, 16167,
|
||||
16172, 16195, 16214, 16245, 16271, 16283, 16289.
|
||||
|
||||
* The public headers no longer use __unused nor __block. This change is to
|
||||
support compiling programs that are derived from BSD sources and use
|
||||
|
@ -178,6 +178,8 @@ exp -1234
|
||||
# Bug 16284: results on directed rounding may be incorrect.
|
||||
exp 1e5 xfail-rounding:dbl-64
|
||||
exp max xfail-rounding:dbl-64
|
||||
exp -7.4444006192138124e+02
|
||||
exp -0x1.75f113c30b1c8p+9
|
||||
exp -max
|
||||
|
||||
exp10 0
|
||||
|
@ -6018,6 +6018,220 @@ exp max xfail-rounding:dbl-64
|
||||
= exp tonearest ldbl-128ibm 0xf.ffffffffffffbffffffffffffcp+1020L : plus_infty : inexact-ok overflow errno-erange
|
||||
= exp towardzero ldbl-128ibm 0xf.ffffffffffffbffffffffffffcp+1020L : 0xf.ffffffffffffbffffffffffffcp+1020L : xfail:dbl-64 inexact-ok overflow errno-erange-ok
|
||||
= exp upward ldbl-128ibm 0xf.ffffffffffffbffffffffffffcp+1020L : plus_infty : xfail:dbl-64 inexact-ok overflow errno-erange
|
||||
exp -7.4444006192138124e+02
|
||||
= exp downward flt-32 -0x2.e870a4p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp tonearest flt-32 -0x2.e870a4p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp towardzero flt-32 -0x2.e870a4p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp upward flt-32 -0x2.e870a4p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
|
||||
= exp downward dbl-64 -0x2.e870a4p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest dbl-64 -0x2.e870a4p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero dbl-64 -0x2.e870a4p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp upward dbl-64 -0x2.e870a4p+8 : 0x8p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-96-intel -0x2.e870a4p+8L : 0x4.001236e259a703f8p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-intel -0x2.e870a4p+8L : 0x4.001236e259a704p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-intel -0x2.e870a4p+8L : 0x4.001236e259a703f8p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-intel -0x2.e870a4p+8L : 0x4.001236e259a704p-1076L : inexact-ok
|
||||
= exp downward ldbl-96-m68k -0x2.e870a4p+8L : 0x4.001236e259a703f8p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-m68k -0x2.e870a4p+8L : 0x4.001236e259a704p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-m68k -0x2.e870a4p+8L : 0x4.001236e259a703f8p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-m68k -0x2.e870a4p+8L : 0x4.001236e259a704p-1076L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.e870a4p+8L : 0x4.001236e259a703fe35e4572c21b4p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.e870a4p+8L : 0x4.001236e259a703fe35e4572c21b8p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.e870a4p+8L : 0x4.001236e259a703fe35e4572c21b4p-1076L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.e870a4p+8L : 0x4.001236e259a703fe35e4572c21b8p-1076L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.e870a4p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest ldbl-128ibm -0x2.e870a4p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero ldbl-128ibm -0x2.e870a4p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp upward ldbl-128ibm -0x2.e870a4p+8L : 0x8p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp downward flt-32 -0x2.e870a8p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp tonearest flt-32 -0x2.e870a8p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp towardzero flt-32 -0x2.e870a8p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp upward flt-32 -0x2.e870a8p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
|
||||
= exp downward dbl-64 -0x2.e870a8p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest dbl-64 -0x2.e870a8p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero dbl-64 -0x2.e870a8p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp upward dbl-64 -0x2.e870a8p+8 : 0x8p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-96-intel -0x2.e870a8p+8L : 0x4.000236b97e84a93p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-intel -0x2.e870a8p+8L : 0x4.000236b97e84a93p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-intel -0x2.e870a8p+8L : 0x4.000236b97e84a93p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-intel -0x2.e870a8p+8L : 0x4.000236b97e84a938p-1076L : inexact-ok
|
||||
= exp downward ldbl-96-m68k -0x2.e870a8p+8L : 0x4.000236b97e84a93p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-m68k -0x2.e870a8p+8L : 0x4.000236b97e84a93p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-m68k -0x2.e870a8p+8L : 0x4.000236b97e84a93p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-m68k -0x2.e870a8p+8L : 0x4.000236b97e84a938p-1076L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.e870a8p+8L : 0x4.000236b97e84a932aa555f5e8ce4p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.e870a8p+8L : 0x4.000236b97e84a932aa555f5e8ce4p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.e870a8p+8L : 0x4.000236b97e84a932aa555f5e8ce4p-1076L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.e870a8p+8L : 0x4.000236b97e84a932aa555f5e8ce8p-1076L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.e870a8p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest ldbl-128ibm -0x2.e870a8p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero ldbl-128ibm -0x2.e870a8p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp upward ldbl-128ibm -0x2.e870a8p+8L : 0x8p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp downward dbl-64 -0x2.e870a7e5e88cp+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest dbl-64 -0x2.e870a7e5e88cp+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero dbl-64 -0x2.e870a7e5e88cp+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp upward dbl-64 -0x2.e870a7e5e88cp+8 : 0x8p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-96-intel -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa08p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-intel -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa1p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-intel -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa08p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-intel -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa1p-1076L : inexact-ok
|
||||
= exp downward ldbl-96-m68k -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa08p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-m68k -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa1p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-m68k -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa08p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-m68k -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa1p-1076L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa0e72d456f74c24p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa0e72d456f74c28p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa0e72d456f74c24p-1076L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.e870a7e5e88cp+8L : 0x4.00029f178d98fa0e72d456f74c28p-1076L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.e870a7e5e88cp+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest ldbl-128ibm -0x2.e870a7e5e88cp+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero ldbl-128ibm -0x2.e870a7e5e88cp+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp upward ldbl-128ibm -0x2.e870a7e5e88cp+8L : 0x8p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp downward dbl-64 -0x2.e870a7e5e88c2p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest dbl-64 -0x2.e870a7e5e88c2p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero dbl-64 -0x2.e870a7e5e88c2p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp upward dbl-64 -0x2.e870a7e5e88c2p+8 : 0x8p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-96-intel -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9b8p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-intel -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9b8p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-intel -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9b8p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-intel -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9cp-1076L : inexact-ok
|
||||
= exp downward ldbl-96-m68k -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9b8p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-m68k -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9b8p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-m68k -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9b8p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-m68k -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9cp-1076L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9ba8fe2abd80f94p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9ba8fe2abd80f98p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9ba8fe2abd80f94p-1076L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.e870a7e5e88c2p+8L : 0x4.00029f178d18f9ba8fe2abd80f98p-1076L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.e870a7e5e88c2p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest ldbl-128ibm -0x2.e870a7e5e88c2p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero ldbl-128ibm -0x2.e870a7e5e88c2p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp upward ldbl-128ibm -0x2.e870a7e5e88c2p+8L : 0x8p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-96-intel -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9b8p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-intel -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9cp-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-intel -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9b8p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-intel -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9cp-1076L : inexact-ok
|
||||
= exp downward ldbl-96-m68k -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9b8p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-m68k -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9cp-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-m68k -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9b8p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-m68k -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9cp-1076L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9bd0f851e55aebcp-1076L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9bd0f851e55aecp-1076L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9bd0f851e55aebcp-1076L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.e870a7e5e88c1f0cp+8L : 0x4.00029f178d1cc9bd0f851e55aecp-1076L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.e870a7e5e88c1f0cp+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest ldbl-128ibm -0x2.e870a7e5e88c1f0cp+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero ldbl-128ibm -0x2.e870a7e5e88c1f0cp+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp upward ldbl-128ibm -0x2.e870a7e5e88c1f0cp+8L : 0x8p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-96-intel -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9b8p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-intel -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9cp-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-intel -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9b8p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-intel -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9cp-1076L : inexact-ok
|
||||
= exp downward ldbl-96-m68k -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9b8p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-96-m68k -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9cp-1076L : inexact-ok
|
||||
= exp towardzero ldbl-96-m68k -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9b8p-1076L : inexact-ok
|
||||
= exp upward ldbl-96-m68k -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9cp-1076L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9bd0508c0213bb4p-1076L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9bd0508c0213bb8p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9bd0508c0213bb4p-1076L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.e870a7e5e88c1f1p+8L : 0x4.00029f178d1cb9bd0508c0213bb8p-1076L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.e870a7e5e88c1f1p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest ldbl-128ibm -0x2.e870a7e5e88c1f1p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero ldbl-128ibm -0x2.e870a7e5e88c1f1p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp upward ldbl-128ibm -0x2.e870a7e5e88c1f1p+8L : 0x8p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cef2p+8L : 0x4.00029f178d1cbba1a34fc1f1ad4cp-1076L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cef2p+8L : 0x4.00029f178d1cbba1a34fc1f1ad4cp-1076L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cef2p+8L : 0x4.00029f178d1cbba1a34fc1f1ad4cp-1076L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cef2p+8L : 0x4.00029f178d1cbba1a34fc1f1ad5p-1076L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cef4p+8L : 0x4.00029f178d1cbba1a34fc1f1a54cp-1076L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cef4p+8L : 0x4.00029f178d1cbba1a34fc1f1a54cp-1076L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cef4p+8L : 0x4.00029f178d1cbba1a34fc1f1a54cp-1076L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cef4p+8L : 0x4.00029f178d1cbba1a34fc1f1a55p-1076L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cep+8L : 0x4.00029f178d1cbba1a34fc1f5754cp-1076L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cep+8L : 0x4.00029f178d1cbba1a34fc1f5755p-1076L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cep+8L : 0x4.00029f178d1cbba1a34fc1f5754cp-1076L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cep+8L : 0x4.00029f178d1cbba1a34fc1f5755p-1076L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.e870a7e5e88c1f0f86d8bda5cep+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest ldbl-128ibm -0x2.e870a7e5e88c1f0f86d8bda5cep+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero ldbl-128ibm -0x2.e870a7e5e88c1f0f86d8bda5cep+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp upward ldbl-128ibm -0x2.e870a7e5e88c1f0f86d8bda5cep+8L : 0x8p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cfp+8L : 0x4.00029f178d1cbba1a34fc1f1754cp-1076L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cfp+8L : 0x4.00029f178d1cbba1a34fc1f1754cp-1076L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cfp+8L : 0x4.00029f178d1cbba1a34fc1f1754cp-1076L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.e870a7e5e88c1f0f86d8bda5cfp+8L : 0x4.00029f178d1cbba1a34fc1f1755p-1076L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.e870a7e5e88c1f0f86d8bda5cfp+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp tonearest ldbl-128ibm -0x2.e870a7e5e88c1f0f86d8bda5cfp+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp towardzero ldbl-128ibm -0x2.e870a7e5e88c1f0f86d8bda5cfp+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp upward ldbl-128ibm -0x2.e870a7e5e88c1f0f86d8bda5cfp+8L : 0x8p-1076L : inexact-ok underflow errno-erange-ok
|
||||
exp -0x1.75f113c30b1c8p+9
|
||||
= exp downward flt-32 -0x2.ebe224p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp tonearest flt-32 -0x2.ebe224p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp towardzero flt-32 -0x2.ebe224p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp upward flt-32 -0x2.ebe224p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
|
||||
= exp downward dbl-64 -0x2.ebe224p+8 : 0x0p+0 : inexact-ok underflow errno-erange
|
||||
= exp tonearest dbl-64 -0x2.ebe224p+8 : 0x0p+0 : inexact-ok underflow errno-erange
|
||||
= exp towardzero dbl-64 -0x2.ebe224p+8 : 0x0p+0 : inexact-ok underflow errno-erange
|
||||
= exp upward dbl-64 -0x2.ebe224p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-96-intel -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b4p-1080L : inexact-ok
|
||||
= exp tonearest ldbl-96-intel -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b8p-1080L : inexact-ok
|
||||
= exp towardzero ldbl-96-intel -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b4p-1080L : inexact-ok
|
||||
= exp upward ldbl-96-intel -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b8p-1080L : inexact-ok
|
||||
= exp downward ldbl-96-m68k -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b4p-1080L : inexact-ok
|
||||
= exp tonearest ldbl-96-m68k -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b8p-1080L : inexact-ok
|
||||
= exp towardzero ldbl-96-m68k -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b4p-1080L : inexact-ok
|
||||
= exp upward ldbl-96-m68k -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b8p-1080L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b7b1e41fe97b6ep-1080L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b7b1e41fe97b6ep-1080L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b7b1e41fe97b6ep-1080L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.ebe224p+8L : 0x2.0b9f4f64aed595b7b1e41fe97b7p-1080L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.ebe224p+8L : 0x0p+0L : inexact-ok underflow errno-erange
|
||||
= exp tonearest ldbl-128ibm -0x2.ebe224p+8L : 0x0p+0L : inexact-ok underflow errno-erange
|
||||
= exp towardzero ldbl-128ibm -0x2.ebe224p+8L : 0x0p+0L : inexact-ok underflow errno-erange
|
||||
= exp upward ldbl-128ibm -0x2.ebe224p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp downward flt-32 -0x2.ebe228p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp tonearest flt-32 -0x2.ebe228p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp towardzero flt-32 -0x2.ebe228p+8f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp upward flt-32 -0x2.ebe228p+8f : 0x8p-152f : inexact-ok underflow errno-erange-ok
|
||||
= exp downward dbl-64 -0x2.ebe228p+8 : 0x0p+0 : inexact-ok underflow errno-erange
|
||||
= exp tonearest dbl-64 -0x2.ebe228p+8 : 0x0p+0 : inexact-ok underflow errno-erange
|
||||
= exp towardzero dbl-64 -0x2.ebe228p+8 : 0x0p+0 : inexact-ok underflow errno-erange
|
||||
= exp upward dbl-64 -0x2.ebe228p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-96-intel -0x2.ebe228p+8L : 0x2.0b9720f7ce27844cp-1080L : inexact-ok
|
||||
= exp tonearest ldbl-96-intel -0x2.ebe228p+8L : 0x2.0b9720f7ce27845p-1080L : inexact-ok
|
||||
= exp towardzero ldbl-96-intel -0x2.ebe228p+8L : 0x2.0b9720f7ce27844cp-1080L : inexact-ok
|
||||
= exp upward ldbl-96-intel -0x2.ebe228p+8L : 0x2.0b9720f7ce27845p-1080L : inexact-ok
|
||||
= exp downward ldbl-96-m68k -0x2.ebe228p+8L : 0x2.0b9720f7ce27844cp-1080L : inexact-ok
|
||||
= exp tonearest ldbl-96-m68k -0x2.ebe228p+8L : 0x2.0b9720f7ce27845p-1080L : inexact-ok
|
||||
= exp towardzero ldbl-96-m68k -0x2.ebe228p+8L : 0x2.0b9720f7ce27844cp-1080L : inexact-ok
|
||||
= exp upward ldbl-96-m68k -0x2.ebe228p+8L : 0x2.0b9720f7ce27845p-1080L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.ebe228p+8L : 0x2.0b9720f7ce27844ea9674284d866p-1080L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.ebe228p+8L : 0x2.0b9720f7ce27844ea9674284d868p-1080L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.ebe228p+8L : 0x2.0b9720f7ce27844ea9674284d866p-1080L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.ebe228p+8L : 0x2.0b9720f7ce27844ea9674284d868p-1080L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.ebe228p+8L : 0x0p+0L : inexact-ok underflow errno-erange
|
||||
= exp tonearest ldbl-128ibm -0x2.ebe228p+8L : 0x0p+0L : inexact-ok underflow errno-erange
|
||||
= exp towardzero ldbl-128ibm -0x2.ebe228p+8L : 0x0p+0L : inexact-ok underflow errno-erange
|
||||
= exp upward ldbl-128ibm -0x2.ebe228p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
= exp downward dbl-64 -0x2.ebe227861639p+8 : 0x0p+0 : inexact-ok underflow errno-erange
|
||||
= exp tonearest dbl-64 -0x2.ebe227861639p+8 : 0x0p+0 : inexact-ok underflow errno-erange
|
||||
= exp towardzero dbl-64 -0x2.ebe227861639p+8 : 0x0p+0 : inexact-ok underflow errno-erange
|
||||
= exp upward dbl-64 -0x2.ebe227861639p+8 : 0x4p-1076 : inexact-ok underflow errno-erange-ok
|
||||
= exp downward ldbl-96-intel -0x2.ebe227861639p+8L : 0x2.0b981a509bab7298p-1080L : inexact-ok
|
||||
= exp tonearest ldbl-96-intel -0x2.ebe227861639p+8L : 0x2.0b981a509bab7298p-1080L : inexact-ok
|
||||
= exp towardzero ldbl-96-intel -0x2.ebe227861639p+8L : 0x2.0b981a509bab7298p-1080L : inexact-ok
|
||||
= exp upward ldbl-96-intel -0x2.ebe227861639p+8L : 0x2.0b981a509bab729cp-1080L : inexact-ok
|
||||
= exp downward ldbl-96-m68k -0x2.ebe227861639p+8L : 0x2.0b981a509bab7298p-1080L : inexact-ok
|
||||
= exp tonearest ldbl-96-m68k -0x2.ebe227861639p+8L : 0x2.0b981a509bab7298p-1080L : inexact-ok
|
||||
= exp towardzero ldbl-96-m68k -0x2.ebe227861639p+8L : 0x2.0b981a509bab7298p-1080L : inexact-ok
|
||||
= exp upward ldbl-96-m68k -0x2.ebe227861639p+8L : 0x2.0b981a509bab729cp-1080L : inexact-ok
|
||||
= exp downward ldbl-128 -0x2.ebe227861639p+8L : 0x2.0b981a509bab72997118df69cd7ep-1080L : inexact-ok
|
||||
= exp tonearest ldbl-128 -0x2.ebe227861639p+8L : 0x2.0b981a509bab72997118df69cd8p-1080L : inexact-ok
|
||||
= exp towardzero ldbl-128 -0x2.ebe227861639p+8L : 0x2.0b981a509bab72997118df69cd7ep-1080L : inexact-ok
|
||||
= exp upward ldbl-128 -0x2.ebe227861639p+8L : 0x2.0b981a509bab72997118df69cd8p-1080L : inexact-ok
|
||||
= exp downward ldbl-128ibm -0x2.ebe227861639p+8L : 0x0p+0L : inexact-ok underflow errno-erange
|
||||
= exp tonearest ldbl-128ibm -0x2.ebe227861639p+8L : 0x0p+0L : inexact-ok underflow errno-erange
|
||||
= exp towardzero ldbl-128ibm -0x2.ebe227861639p+8L : 0x0p+0L : inexact-ok underflow errno-erange
|
||||
= exp upward ldbl-128ibm -0x2.ebe227861639p+8L : 0x4p-1076L : inexact-ok underflow errno-erange-ok
|
||||
exp -max
|
||||
= exp downward flt-32 -0xf.fffffp+124f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
= exp tonearest flt-32 -0xf.fffffp+124f : 0x0p+0f : inexact-ok underflow errno-erange
|
||||
|
@ -6017,6 +6017,30 @@ ildouble: 1
|
||||
ldouble: 1
|
||||
|
||||
# exp_towardzero
|
||||
Test "exp_towardzero (-0x2.e870a4p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.e870a7e5e88c1f0cp+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.e870a7e5e88c1f1p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.e870a7e5e88c2p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.e870a7e5e88cp+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.e870a8p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.ebe224p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.ebe228p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (0x2.c5cp+8)":
|
||||
double: 1
|
||||
idouble: 1
|
||||
@ -6047,6 +6071,12 @@ ildouble: 1
|
||||
ldouble: 1
|
||||
|
||||
# exp_upward
|
||||
Test "exp_upward (-0x2.e870a7e5e88c1f0cp+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_upward (-0x2.e870a7e5e88cp+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_upward (1)":
|
||||
double: 1
|
||||
float: 1
|
||||
@ -8112,6 +8142,8 @@ double: 1
|
||||
float: 1
|
||||
idouble: 1
|
||||
ifloat: 1
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
|
||||
Function: "expm1":
|
||||
ildouble: 1
|
||||
|
@ -39,6 +39,7 @@
|
||||
#include "uexp.tbl"
|
||||
#include <math_private.h>
|
||||
#include <fenv.h>
|
||||
#include <float.h>
|
||||
|
||||
#ifndef SECTION
|
||||
# define SECTION
|
||||
@ -169,7 +170,7 @@ __ieee754_exp (double x)
|
||||
else
|
||||
{
|
||||
retval = __slowexp (x);
|
||||
goto ret;
|
||||
goto check_uflow_ret;
|
||||
} /*if error is over bound */
|
||||
}
|
||||
ex = -(1022 + ex);
|
||||
@ -185,13 +186,23 @@ __ieee754_exp (double x)
|
||||
{
|
||||
binexp.i[HIGH_HALF] = 0x00100000;
|
||||
retval = (res - 1.0) * binexp.x;
|
||||
goto ret;
|
||||
goto check_uflow_ret;
|
||||
}
|
||||
else
|
||||
{
|
||||
retval = __slowexp (x);
|
||||
goto ret;
|
||||
goto check_uflow_ret;
|
||||
} /* if error is over bound */
|
||||
check_uflow_ret:
|
||||
if (retval < DBL_MIN)
|
||||
{
|
||||
#if FLT_EVAL_METHOD != 0
|
||||
volatile
|
||||
#endif
|
||||
double force_underflow = tiny * tiny;
|
||||
math_force_eval (force_underflow);
|
||||
}
|
||||
goto ret;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -6882,6 +6882,30 @@ ildouble: 1
|
||||
ldouble: 1
|
||||
|
||||
# exp_towardzero
|
||||
Test "exp_towardzero (-0x2.e870a4p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.e870a7e5e88c1f0cp+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.e870a7e5e88c1f1p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.e870a7e5e88c2p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.e870a7e5e88cp+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.e870a8p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.ebe224p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (-0x2.ebe228p+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_towardzero (0x2.c5cp+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
@ -6917,6 +6941,32 @@ ildouble: 1
|
||||
ldouble: 1
|
||||
|
||||
# exp_upward
|
||||
Test "exp_upward (-0x2.e870a4p+8)":
|
||||
double: 1
|
||||
idouble: 1
|
||||
Test "exp_upward (-0x2.e870a7e5e88c1f0cp+8)":
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_upward (-0x2.e870a7e5e88c2p+8)":
|
||||
double: 1
|
||||
idouble: 1
|
||||
Test "exp_upward (-0x2.e870a7e5e88cp+8)":
|
||||
double: 1
|
||||
idouble: 1
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
Test "exp_upward (-0x2.e870a8p+8)":
|
||||
double: 1
|
||||
idouble: 1
|
||||
Test "exp_upward (-0x2.ebe224p+8)":
|
||||
double: 1
|
||||
idouble: 1
|
||||
Test "exp_upward (-0x2.ebe227861639p+8)":
|
||||
double: 1
|
||||
idouble: 1
|
||||
Test "exp_upward (-0x2.ebe228p+8)":
|
||||
double: 1
|
||||
idouble: 1
|
||||
Test "exp_upward (-0x4.d2p+8)":
|
||||
double: 1
|
||||
idouble: 1
|
||||
@ -9208,6 +9258,8 @@ double: 1
|
||||
float: 1
|
||||
idouble: 1
|
||||
ifloat: 1
|
||||
ildouble: 1
|
||||
ldouble: 1
|
||||
|
||||
Function: "expm1":
|
||||
double: 1
|
||||
|
Loading…
Reference in New Issue
Block a user