GNU Scientific Library - Bugs: bug #43259, accuracy problems in specfunc
You are not allowed to post comments on this tracker with your current authentication level.
bug #43259: accuracy problems in specfunc
Submitter: | Patrick Alken <psa> | ||
Submitted: | Fri 19 Sep 2014 04:20:37 PM UTC | ||
Category: | None | Severity: | 3 - Normal |
Operating System: | Status: | None | |
Assigned to: | None | Open/Closed: | Open |
Release: |
No files currently attached
Depends on the following items: None found
Items that depend on this one: None found
Carbon-Copy List
No changes have been made to this item
From zoudm =at= pku =dot= edu =dot= cn
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