| Karim Belabas on Fri, 30 Jan 2004 21:23:25 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: bernfrac() faster than bernreal() |
* Bill Allombert [2004-01-30 21:04]:
> It seems that bernfrac() is much faster than bernreal() when
> a high accuracy is required:
Yes, this is rather recent :-)
> parisize = 4000000, primelimit = 500000
> ? \p2000
> realprecision = 2003 significant digits (2000 digits displayed)
> ? #
> timer = 1 (on)
> ? bernfrac(1000)*1.;
> time = 10 ms.
> ? bernreal(1000);
> time = 1,990 ms.
bernreal is an initialization function, not a 1-shot routine:
? \p2000
realprecision = 2003 significant digits (2000 digits displayed)
? bernreal(2000);
time = 10,070 ms.
? bernreal(2000);
time = 0 ms.
? bernreal(1000);
time = 0 ms.
etc. See
http://pari.math.u-bordeaux.fr/archives/pari-users-0311/msg00009.html
for what _should_ be done. Basically, cache individual floating point
approximations to the best accuracy known so far _and_ exact values when they
can be determined.
The current monolithic cache is very inefficient.
Karim.
--
Karim Belabas Tel: (+33) (0)1 69 15 57 48
Dep. de Mathematiques, Bat. 425 Fax: (+33) (0)1 69 15 60 19
Universite Paris-Sud http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]