diff options
Diffstat (limited to 'changes')
-rw-r--r-- | changes | 77 |
1 files changed, 77 insertions, 0 deletions
@@ -0,0 +1,77 @@ +21 Oct 2002 +bug fix in e_pow.c from "David G Hough at validlab.com" <validlab@validlab.com>. +credit for bug report goes to andrew_johnson@uk.ibm.com +test example: +----------------------------- +static int fail=0; + +trypow(x,y,z) +double x,y,z; +{ +extern double ieee_pow(); +double p ; + +p = ieee_pow(x,y); +if (p != z) { + printf(" pow failure x %e y %e computed %e correct %e \n",x,y,p,z); + fail++; + return; +} +if (1/p != 1/z) { + printf(" pow failure x %e y %e computed %e correct %e \n",x,y,p,z); + fail++; + return; +} +} + +main() +{ + +trypow( 1.0000000001, 1.0000000001E10, 2.7182820535066154); +trypow(-1.0000000001, 1.0000000001E10, -2.7182820535066154); +trypow(-0.001, 1.0000000001E10, -0.0); +trypow(-1000.0, 1.0000000001E10, -1.0/0.0); + +if (fail == 0) { + printf(" fdlibm e_pow.c seems to be current \n"); + exit(0); +} +else { + printf(" fdlibm e_pow.c seems to be out of date \n"); + exit(1); +} + +} +----------------------------- + + + +What's new in FDLIBM 5.3? + +CONFIGURE + To build FDLIBM, edit the supplied Makefile or create + a local Makefile by running "sh configure" + using the supplied configure script contributed by Nelson Beebe + +BUGS FIXED + + 1. e_pow.c incorrect results when + x is very close to -1.0 and y is very large, e.g. + ieee_pow(-1.0000000000000002e+00,4.5035996273704970e+15) = 0 + ieee_pow(-9.9999999999999978e-01,4.5035996273704970e+15) = 0 + Correct results are close to -e and -1/e. + + 2. k_tan.c error was > 1 ulp target for FDLIBM + 5.2: Worst error at least 1.45 ulp at + ieee_tan(1.7765241907548024E+269) = 1.7733884462610958E+16 + 5.3: Worst error 0.96 ulp + +NOT FIXED YET + + 3. Compiler failure on non-standard code + Statements like + *(1+(int*)&t1) = 0; + are not standard C and cause some optimizing compilers (e.g. GCC) + to generate bad code under optimization. These cases + are to be addressed in the next release. + |