Hello,

I’m testing about floating point accuracy, and I have found that 9 functions in 
specfunc have potential bugs of inaccuracy.

I’m using gsl-1.1.6 in Ubuntu 64bit.

Below is the inputs. To make the inputs precise, I encode them in hexadecimal.

double i2d(unsigned long int x) {
    double d = *(double*)(&x);
    return d;
}

gsl_sf_hyperg_0F1(i2d(0x13675FCCC1DE0AE1), i2d(0xDD0DD58CDBC5592)) with 
estimate of the absolute error(result->err, the same below) is 6.501089E+185, 
but actual absolute error is 1.149822E+198.

gsl_sf_hyperg_0F1(i2d(0x19A2961396A4C4D0), i2d(0x19A2961396A4C4D0)) with 
estimate of the absolute error is 5.877511E+155, but actual absolute error is 
1.140714E+168.

gsl_sf_hyperg_0F1(i2d(0x1BDB9BF0824AECEA), i2d(0x22F7C93FACA8FCBB)) with 
estimate of the absolute error is 9.611187E+144, but actual absolute error is 
2.234939E+157.

gsl_sf_clausen(i2d(0xC2D4C8E2EBF0F5E0)) with estimate of the absolute error is 
1.808299E-16, but actual absolute error is 1.153174E-02.

gsl_sf_clausen(i2d(0x42AC3A936C2D0F3E)) with estimate of the absolute error is 
2.047340E-16, but actual absolute error is 7.243544E-04.

gsl_sf_exprel_2(i2d(0xBF9C62E5D62AD9D9)) with estimate of the absolute error is 
4.400140E-16, but actual absolute error is 9.869315E-04.

gsl_sf_psi_1(i2d(0xDFBE8E425E52DE59)) with estimate of the absolute error is 
1.448389E-13, but actual absolute error is 1.125952E+01.

gsl_sf_psi_1(i2d(0xC74262F4CCE814C6)) with estimate of the absolute error is 
7.427255E-14, but actual absolute error is 4.347871E+00.

gsl_sf_zeta(i2d(0xBFD85EC3692520C1)) with estimate of the absolute error is 
3.307754E-15, but actual absolute error is 1.283687E-03.

gsl_sf_eta(i2d(0xBFD12087E34CCC81)) with estimate of the absolute error is 
1.042941E-14, but actual absolute error is 1.141164E-03.

gsl_sf_gamma_inc_Q(i2d(0x3D6015265DC415D9), i2d(0x336A62C7B4081920)) with 
estimate of the absolute error is 8.881784E-16, but actual absolute error is 
6.319112E-11.

gsl_sf_pochrel(i2d(0xD272424D4D731852), i2d(0x1EC8DCEFA40C71DF)) with estimate 
of the absolute error is 9.072393E-14, but actual absolute error is 
1.113754E+02.

gsl_sf_pochrel(i2d(0xCD88BA943FE1B3E9), i2d(0x3E47245280744497)) with estimate 
of the absolute error is 1.051328E-13, but actual absolute error is 
2.373726E+23.

gsl_sf_pochrel(i2d(0xCC1F1549401470B0), i2d(0x9547D22A7AE65BEC)) with estimate 
of the absolute error is 5.949131E-14, but actual absolute error is 
1.690742E+02.

gsl_sf_ellint_P(i2d(0x275AC794A3F9C13C), i2d(0x235BA8619CF10FD8), 
i2d(0x741226BBB54FE9F9)) with estimate of the absolute error is 1.842198E-134, 
but actual absolute error is 4.148260E-119.

We can see that in most cases the actual errors are many orders of magnitudes 
larger than the estimated ones, indicating potentially serious problems in 
practice.

Thanks,
Daming



Reply via email to