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.

