| Ilya Zakharevich on Fri, 26 May 2006 05:25:15 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| 2.2.10 four times slower than 2.2.8 |
I'm testing the following code, and it is 4.5x slower with current
version than with an ancient. The difference happened between 2.2.8
and 2.2.10. I thought that new numeric integration code was quickier
than the old one...
\r J:\test-programs\pari\bruijn.gp
\p15
5
#
bruijn_rho(5)
\q
Here the file contains
\\ u rho'(u) = -rho(u-1), continuous for u>=0, 0 for u<0, u(0)=1
bruijn_rho(u) =
{
local(n);
if(u<0, return(0));
if(u<=1, return(1));
if(u<=2, return(1 - log(u)));
if(u<=3, return(1 - log(u) + real(AA2(u))));
\\ rho(sqrt(e)) = 1/2; thus half the numbers have prime divisors
below
\\ n^(1/sqrt(e))
n=ceil(u)-1;
return(bruijn_rho(n) - intnum(X=n,u, bruijn_rho(X-1)/X));
\\ if(u<=3, );
error("not implemented yet")
}
\\ Calculation needs An(U)=INT{0 <= t1 <= t2 <= ... <= tn <= U} PROD dtK/(tK+K)
\\ n = ceil(u) - 1; U = u - n
\\ A2=INT{2,u} log(u-1)/u du = const(log(u)-log(2)) - dilog(u) + dilog(2).
\\ dilog(z) = - INT{0,z} log(1-z)/z dz
AA2(u)=-Pi*I*(log(u)-log(2))-dilog(u)+dilog(2)
Yours,
Ilya