Binomial improvements
bodrato at mail.dm.unipi.it
bodrato at mail.dm.unipi.it
Sun Dec 11 18:03:51 CET 2011
Ciao,
Il Dom, 11 Dicembre 2011 3:46 am, Torbjorn Granlund ha scritto:
> Now the code beats the repo code everywhere on my test machines. I
> suspect that your improved basecase code might still be somewhat better
> in some area, but perhaps the difference is negligible?
Great!
On shell, for binomial(1234,k) the faster algorithm is:
- with k < 14, the current GMP 5.0.1 basecase;
- with 14 < k < 540, your_bdiv_uiui code;
- with 540 < k (<620), the code using prime sieving.
> I suspect that one remaining optimisation for the smallest operands is
> to get rid of the final lshift. By being cleverer with 2 removal from
You can get rid of the final lshift (and all i2cnt and j2cnt update code)
by pre-computing the exponent of 2 in advance:
cnt = popcount(k) + popcount(n - k) - popcount(n)
Regards,
m
--
http://bodrato.it/software/
More information about the gmp-devel
mailing list