Files
perl-Math-Prime-Util-GMP/perl-Math-Prime-Util-GMP.changes

459 lines
14 KiB
Plaintext

-------------------------------------------------------------------
Thu Mar 7 23:45:01 UTC 2024 - Tina Müller <tina.mueller@suse.com>
- Use %autosetup instead of deprecated %patchN
-------------------------------------------------------------------
Tue Jun 23 03:12:04 UTC 2020 - Tina Müller <timueller+perl@suse.de>
- updated to 0.52
see /usr/share/doc/packages/perl-Math-Prime-Util-GMP/Changes
-------------------------------------------------------------------
Fri Aug 30 18:28:28 UTC 2019 - Tina Mueller <tina.mueller@suse.com>
- Add fix-shebang.patch to satisfy rpmlint
-------------------------------------------------------------------
Fri Aug 30 18:17:30 UTC 2019 - Tina Mueller <tina.mueller@suse.com>
- Add BuildRequires: gmp-devel
-------------------------------------------------------------------
Wed Apr 3 07:13:27 UTC 2019 - Stephan Kulow <coolo@suse.com>
- updated to 0.51
see /usr/share/doc/packages/perl-Math-Prime-Util-GMP/Changes
0.51 2018-02-27
[ADDED]
- rootreal(x,n[,digits]) nth root of x: x^(1/n)
- addreal(x,y[,digits]) x+y
- subreal(x,y[,digits]) x-y
- mulreal(x,y[,digits]) x*y
- divreal(x,y[,digits]) x/y
- subfactorial(n) !n (derangements)
- factorial_sum(n) !n (sum of factorials)
- multifactorial(x,n) x!, x!!, x!!!, etc.
[FIXES]
- Some memory leaks squashed.
- Trizen reported a factor bug. Fixed with patch to tinyqs.c init code.
[OTHER]
- Work around a bug in NetBSD.
- Standalone ecpp creation fixed.
- Allow Ramanujan polynomials (D = 11 mod 24) for ECPP, reducing sizes.
- Some new code for ei().
- is_primitive_root quite a bit faster.
0.50 2017-11-28
[FIXES]
- real.h mismatched types on machines where unsigned long != UV.
0.49 2017-11-27
[ADDED]
- Euler([digits]) Euler's constant with this many digits
- li(x[,digits]) Logarithmic Integral of x (x floating point)
- ei(x[,digits]) Exponential Integral of x (x floating point)
- logreal(x[,digits]) Natural logarithm of x
- expreal(x[,digits]) e^x
- powreal(x,n[,digits]) x^n
- agmreal(a,b[,digits]) AGM(a,b) - arithmetic-geometric mean
- prime_count_lower(n) lower bounds for prime count
- prime_count_upper(n) upper bounds for prime count
[FIXES]
- When real functions rounded 0.999... to 1.0 and were given too few
digits, they could return .0 instead of 1.0.
[OTHER]
- moebius handles negative inputs
- Added Jason P's cofactorize-tinyqs, which handles up to 126 bit.
This gives us faster and more consistent timing when factoring
20 to 38 digit inputs.
- Rewrite internal log and exp functions. Among other things, this
speeds up LambertW and non-integer Zeta by 10x.
- Use Ramanujan/Chudnovsky Pi algorithm. 2x faster with many digits.
- Constants Euler, Pi, and Log2 are cached, just like Pari/GP, MPFR, etc.
All three are used quite a bit internally.
- Calling Pi or Euler in void context just calculates (and caches) the
value. This saves the expensive string conversion.
0.48 2017-10-05
[FIXES]
- Issues with 32-bit GMP on 64-bit platforms.
- Use log instead of logl.
0.47 2017-10-04
[ADDED]
- is_square(n) Returns 1 if n is a perfect square
- is_carmichael(n) Returns 1 if n is a Carmichael number
- is_fundamental(n) Returns 1 if n is a fundamental discriminant
- is_totient(n) Returns 1 if euler_phi(x) == n for some x
- is_polygonal(n,k) Returns 1 if n is a k-gonal number
- polygonal_nth(n,k) Returns N if n is the Nth k-gonal number
- logint(n,base) Integer log: largest e s.t. b^e <= n
- factorialmod(n,m) Returns n! mod m
- permtonum([...]) Returns rank of permutation array ref
- numtoperm(n,k) Returns kth permutation of n elems
- hammingweight(n) Returns bitwise population count of n
[FIXES]
- Random stream is identical on big-endian machines. RT 122718
[PERFORMANCE]
- Use new sieve marking for prime_iterator. Should give a very small
speedup to many functions.
- Remove unnecessary variable copy in AKS (is_primitive_root_uiprime).
- Slightly faster twin prime sieve by splitting BPSW test.
- Factoring is faster with new SQUFOF and native pbrent.
[OTHER]
- is_primitive_root internal func doesn't modify inputs.
- non-exported factor methods (e.g. squfof_factor, ecm_factor, etc.)
now always return smallest factor first.
- old native SQUFOF and GMP SQUFOF removed.
- On x86-64 use a very fast Pollard Rho Brent for 63-bit.
- On 64-bit platforms (long = 64-bit), use new SQUFOF126 which can
handle up to 126-bit inputs using only native math in the core.
This is about 10x faster than our old SQUFOF.
0.46 2017-04-17
[FIXES]
- Allow single argument to miller_rabin_random (implies one test).
- AKS on small inputs wasn't correctly calculating primitive roots.
0.45 2017-04-16
[FIXES]
- Remove use of exp2 which is C99 only.
- Trap negative bases sent to miller_rabin_random
0.44 2017-04-13
[ADDED]
- irand() Returns uniform random 32-bit integer
- irand64() Returns uniform random 64-bit integer
- drand([fmax]) Returns uniform random NV (floating point)
- urandomm(n) Returns uniform random integer in [0, hi-1]
- random_bytes(nbytes) Return a string of CSPRNG bytes
[FIXES]
- miller_rabin_random wasn't initializing a variable. Fixed and test
added. Thanks to Alexandr Ciornii for timely reporting.
- Fixed is_primitive_root behavior with negative values.
[PERFORMANCE]
- sieve_prime_cluster up to 2x faster.
[OTHER]
- prime_count(), random_prime(), urandomr() can be used with one arg.
0.43 2017-03-12
[ADDED]
- random_strong_prime(nbits) random strong prob prime of nbits bits
- random_maurer_prime(nbits) random nbits-bits proven prime
- random_shawe_taylor_prime(nbits) random nbits-bits proven prime
- random_maurer_prime_with_cert(nbits)
- random_shawe_taylor_prime_with_cert(nbits)
- urandomb(n) random number between 0 and 2^n-1
- urandomr(lo,hi) random number in [lo,hi], inclusive.
[PERFORMANCE]
- sieve_primes with small widths should perform much better.
0.42 2017-02-27
[ADDED]
- lambertw(x[,digits]) Lambert W function
- random_prime(a,b) random prob prime in range [a,b]
- random_nbit_prime(nbits) random prob prime of exactly nbits bits
- random_ndigit_prime(ndigs) random prob prime of exactly ndigs digits
- seed_csprng(bytes,data) supply a seed to the internal CSPRNG
- is_csprng_well_seeded() returns 1 if the CSPRNG has a proper seed
- is_semiprime(n) does n have exactly two prime factors
[FIXES]
- is_power behaviour for 1 and -1.
- is_nminus1_prime could assert on some inputs. Fix.
- chinese([3,0],[2,3]) made GMP go belly up. Found by Trizen.
- divisors(1) in list context would segfault. Found by Trizen.
[PERFORMANCE]
- Adjust zeta algorithm crossover for large precision. Makes a huge
difference for bern{frac/real} with values > 53000.
Thanks to Trizen for pointing this out.
- zeta works for all real values, returns undef for 1. It has issues
below -10 or so that need to be dealt with in a later release.
- is_primitive_root a bit faster with large inputs.
- stirling about 40% faster. Thanks to Karim Belabas.
[OTHER]
- The ISAAC CSPRNG has been added internally and all functions call it.
While it is quite fast it is slower than GMP's Mersenne Twister.
- On startup, we attempt to seed ISAAC with 256 bytes from /dev/urandom.
Callers can call is_csprng_well_seeded() to check if this succeeded,
and call as needed seed_csprng() to seed or reseed.
0.41 2016-10-09
[API CHANGES]
- bernreal and harmreal will use the second argument to mean the digits
of precision to use, rather than the number of digits past the decimal
place.
- is_pseudoprime and is_strong_pseudoprime act like Math::Prime::Util.
[ADDED]
- todigits(n[,base[,len]]) Convert number to digit array
- zeta(s[,digits]) Riemann Zeta of integer or FP s
- riemannr(s[,digits]) Riemann R function of integer or FP s
- divisors(n) Returns list of divisors
- is_euler_pseudoprime(n,@a) Euler-Jacobi primality test
[OTHER]
- With verbose >= 3, prints factors found in partial sieve.
- factor(1) returns empty list, just like non-GMP code.
- factor() went through a Perl layer for obsolete reasons. Removed.
- bernreal and bernfrac will use the Zeta/Pi method for large values,
making it orders of magnitude faster for large sizes.
- Added internal FP log, exp, pow functions, which are not in GMP.
- is_prime will do one extra M-R test for probable primes, down from 1-5.
Also, if is_provable_prime adds two Frobenius tests if returning a 1.
- Removed Perl layer from is_strong_pseudoprime.
- is_pseudoprime and is_strong_pseudoprime take a list of bases, and
there is no default base.
- sieve_primes with small n and large range (e.g. 10^20 to 10^20+8e9) is
much faster. This tunes the full vs. partial sieve crossover.
0.40 2016-08-01
[ADDED]
- sqrtint(n) Integer square root of n
- rootint(n,k) Integer k-th root of n
- is_prime_power(n) Returns k if n=p^k for p a prime.
[OTHER]
- is_perrin_pseudoprime 2x faster. Takes optional
second argument for additional restrictions.
0.39 2016-07-24
[ADDED]
- bernreal returns float value of Bernoulli number
- is_euler_plumb_pseudoprime Colin Plumb's Euler Criterion test
- surround_primes returns offsets of prev and next primes
[PERFORMANCE]
- prev/next/surround prime sieve is slightly deeper
- Add very simple composite filter for is_perrin_pseudoprime.
- Internal refactor of Miller-Rabin code to remove one mpz variable.
[OTHER]
- Add option for restricted Perrin pseudoprimes.
0.38 2016-06-18
[FIXES]
- Minor updates for Kwalitee.
- Rewrite of BLS75 internals, rewrite BLS75 hybrid.
- Remove two small memory leaks.
[PERFORMANCE]
- Less effort to prove primality in is_prime().
0.37 2016-06-06
[ADDED]
- is_nplus1_prime(n) BLS75 N+1 deterministic primality test
- is_bls75_prime(n) BLS75 N-1, N+1, combined primality tests
[FIXES]
- Fixed primorial on systems with not-new GMP, 8-byte UV, and 4-byte long.
- sieve_range should work with >32-bit depths on 64-bit Perl + 32-bit GMP.
0.36 2016-05-21
[ADDED]
- addmod (a + b) % n
- mulmod (a * b) % n
- divmod (a / b) % n
- powmod (a ^ b) % n
- invmod (1 / b) % n
- sqrtmod square root modulo a prime
- is_primitive_root(a,n) return 1 if 'a' is a primitive root mod n
- sieve_range(n,width,depth) sieve from n, returning candidate offsets
[FIXES]
- Allow a leading '+' in inputs.
[PERFORMANCE]
- znprimroot is much faster with large inputs.
- Speedup partial sieve with large input.
- next_prime and prev_prime sieve deeper. ~5% faster with large inputs.
- AKS using Bernstein (2003) theorem 4.1. 10-20x faster.
- Speedup for large pn_primorial and primorial. Much faster for very
large values, though it will all get swamped by the overhead in
returning the large value. This is a great reason to return mpz objects.
[OTHER]
- Split out factor, primality, and AKS code into separate source files.
0.35 2015-12-13
[FIXES]
- gcdext done manually for old GMP.
- fix memory leak in chinese
0.34 2015-10-14
[ADDED]
- sieve_prime_cluster(low,high,...) sieve clusters/constellations
[PERFORMANCE]
- Speedup partial sieve with large range.
[OTHER]
- Remove _GMP_trial_primes(), which was never exported.
- Internal restructuring of sieve_primes and sieve_twin_primes.
- is_frobenius_pseudoprime with arguments doesn't check for perfect
square, and works for small primes plus large params.
0.33 2015-09-04
[ADDED]
- sieve_twin_primes(low,high) sieve for twin primes
- is_miller_prime(n[,assumeGRH]) deterministic Miller test
[PERFORMANCE]
- New results from Sorenson and Webster let us give faster deterministic
results for 65-82 bits. is_prime always returns {0,2} for this range.
-------------------------------------------------------------------
Fri Jan 15 15:28:29 UTC 2016 - bwiedemann@suse.com
- buildrequire gmp-devel to fix build
-------------------------------------------------------------------
Sun Sep 20 17:02:13 UTC 2015 - coolo@suse.com
- initial package 0.32
* created by cpanspec 1.78.08