Changes for version 0.59 - 2016-08-03
- ADDED
- is_prime_power Returns k if n=p^k for p a prime.
- logint(n,b) Integer logarithm. Largest e s.t. b^e <= n.
- rootint(n,k) Integer k-th root.
- ramanujan_sum(k,n) Ramanujan's sum
- FUNCTIONALITY AND PERFORMANCE
- Fixes for quadmath:
- Fix "infinity" in t/11-primes.t.
- Fix native Pi to use quads.
- Trim some threading tests.
- Fix fromdigits memory error with large string.
- Remove 3 threading tests that were causing issues with Perl -DDEBUGGING.
- foroddcomposites with some odd start values could index incorrectly.
- is_primitive_root(1,0) returns 0 instead of fp exception.
- mertens() uses a little less memory.
- 2x speedup for znlog with bigint values.
- is_pseudoprime() and is_euler_pseudoprime() use Montgomery math so are much faster. They seem to be ~5% faster than Miller-Rabin now.
- is_catalan_pseudoprime 1.1x to 1.4x faster.
- is_perrin_pseudoprime over 10x faster. Uses Adams/Shanks doubling and Montgomery math. Single core, odd composites: ~8M range/s.
- Add restricted Perrin pseudoprimes using an optional argument.
- Add bloom filters to reject non-perfect cubes, fifths, and sevenths. is_power about 2-3x faster for native inputs.
- forcomposites / foroddcomposites about 1.2x faster past 64-bit.
- exp_mangoldt rewritten to use is_prime_power.
- Integer root code rewritten and now exported.
- We've been hacking around the problem of older Perls autovivifying functions at compile time. This makes functions that don't exist return true when asked if they're defined, which causes us distress.
- Store the available GMP functions before loading the PP code.
- XS code knows MPU::GMP version and calls as appropriate. This works around the auto-vivication, and lets us choose to call the GMP function based on version instead of just existence. E.g. GMP's is_power was added in 0.19, but didn't support negative powers until 0.28.
- Fixes for quadmath:
Modules
Utilities related to prime numbers, including fast sieves and factoring
Elliptic curve operations for affine points
Elliptic curve operations for projective points
An auto-free object for Math::Prime::Util
Pure Perl version of Math::Prime::Util
PP front end for Math::Prime::Util
Primality proofs and certificates
A tied array for primes
An object iterator for primes
Generate random primes
Perl Big Float versions of Riemann Zeta and R functions
Number theory utilities
Examples
- examples/README
- examples/abundant.pl
- examples/csrand-gmp.pl
- examples/csrand.pl
- examples/fibprime-mce.pl
- examples/fibprime-serial.pl
- examples/fibprime-threads.pl
- examples/find_mr_bases.pl
- examples/inverse_totient.pl
- examples/ktuplet-threads.pl
- examples/ktuplet.pl
- examples/numseqs.pl
- examples/porter.pl
- examples/project_euler_010.pl
- examples/project_euler_021.pl
- examples/project_euler_037.pl
- examples/project_euler_047.pl
- examples/project_euler_049.pl
- examples/project_euler_069.pl
- examples/project_euler_070.pl
- examples/project_euler_072.pl
- examples/project_euler_095.pl
- examples/project_euler_131.pl
- examples/project_euler_142.pl
- examples/project_euler_193.pl
- examples/project_euler_211.pl
- examples/project_euler_214.pl
- examples/project_euler_342.pl
- examples/project_euler_357.pl
- examples/sophie_germain.pl
- examples/twin_primes.pl
- examples/verify-cert.pl
- examples/verify-gmp-ecpp-cert.pl
- examples/verify-primegaps.pl
- examples/verify-sage-ecpp-cert.pl