Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Add pippenger_wnaf for multi-multiplication #486
This PR is based on #473 and adds a variant of "Pippengers algorithm" (see Bernstein et al., Faster batch forgery identification, page 15 and scipr-lab/libff#10) for point multi-multiplication that performs better with a large number of points than Strauss' algorithm.
Thanks to @sipa for providing
The PR also makes
As soon as this PR has received some feedback I'll repeat the benchmarks to determine the optimal
Edit Oh, I was looking at old code. I see that Strauss does the ge->gej conversion but Pippenger does not (and Pippenger derives a speed benefit from using ge). And our two main applications, aggsig and bulletproofs, don't need to do a gej->ge conversion anyway, at least during verification. Never mind.
added a commit
this pull request
Dec 6, 2017
Squashed fixes and updated bucket windows. Previous bucket windows did not not include peterdettman's optimization, did not use bench_ecmult and had a bug where the number of points for a bucket window were twice of what they should have been. The result is that the performance without endomorphism is very similar, with endomorphism it's up to 8% faster for some number of points. The performance graph looks very similar to the one above.