Karim Belabas on Sat, 09 Nov 2013 23:37:12 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Large errors for eint()


* Jeroen Demeyer [2013-11-09 16:19]:
> It seems that the eint() function can have quite large errors in its
> approximation.
> 
> Just one example with a relative error of over 28 bits:
> gp> \p 481
>    realprecision = 481 significant digits
> gp> x = eint1(15);
> gp> \p 500
>    realprecision = 500 significant digits
> gp> y = eint1(15);
> gp> (x-y)/x * 2^1600
> %19 = 418655076.1440077999
> 
> With the vector version of eint1, errors can be even larger.
> 
> Do you consider this a bug?

Yes. Thanks for your report !

1) For eint1, it was an oversight (1-word cancellation just before
returning the result, plus a few other places where we computed with one
word less than intended). This one is now fixed in commit f0ed0cd2

2) For veceint1, a documentation problem: the function is implemented to
ensure a bound on the *absolute* error. This is inconsistent with (most)
other transcendental functions, but corresponds to the main application
for us: computing L-functions via approximate functional equation. I
have just fixed the documentation.

Cheers,

    K.B.
--
Karim Belabas, IMB (UMR 5251)  Tel: (+33) (0)5 40 00 26 17
Universite Bordeaux 1          Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation    http://www.math.u-bordeaux1.fr/~kbelabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux1.fr/  [PARI/GP]
`