develooper Front page | perl.perl5.porters | Postings from April 2007

New Math::Big* modules released

April 18, 2007 03:49
New Math::Big* modules released
Message ID:

I am proud to announce the release of the following to CPAN:

	Math::BigInt v1.83
	Math::BigInt::FastCalc v0.14
	bignum 0.21
	Math::BigRat v0.19

In addition, the following non-core modules have been updated to:

	Math::BigInt::GMP 1.21
	Math::BigInt::Pari 1.12
	Math::Big 1.12

The following module has been erased[0]:


I have run out of time to prepare patches for blead and won't have time over 
the next week. Would be glad if somebody could pull the modules from CPAN 
and update them into blead.

Here is a very terse summary of the changes:

* fix [perl #41205] Pari backend doesn't work with Math::BigRat
* add "try" and "only" support to BigFloat, bignum, bigint and bigrat (oops)
* make $n->bfac() about twice as fast when under Calc/FastCalc and $n is
  15..5000 (smaller or bigger don't see no or very small improvement)
* make bexp() much faster, especially when under GMP/Pari. Anything less
  than 70 digits precision is returned almost instantly, anything over that
  is calculated much more efficient (details follow later)
  TODO: implement bexp() in BigRat, returning A/B (instead of calculating
  e=A/B like in BigFloat)
* raise the api_version() in Calc/FastCalc/GMP/Pari to 2 and add the
  following methods:

  _1ex()   implement 1Ex faster than constructing the number from a string,
           especially important for very large X (1million and up) under a
	   binary library like GMP/Pari, since the resulting decimal to
	   hex conversion is O(N*N) (quadratic) and takes already 16 seconds
	   for X=10000000
  _alen()  calculate approximate length of number in base 10 (always >=
	   _len(). Same reason, calculating the exact length is very costly
	   for large numbers (O(N*N), while the approx. length is O(1)..O(N)
  Note: Math::BigInt does still only require api-version 1, so it happily
	loads older libs, too. After the libs have propagated a bit, we can
	then raise the requirement.

* Math::BigInt::Pari was updated to fully work again (_as_oct(),
  _from_oct(), etc) and _root() and _sqrt() use now native methods so they
  are much faster (and actually work for things like sqrt(123) :)

All the best,


0: If anybody want's to resurect it, please contact the uncroak hotline at 
nospam-abuse at blood gate dot com.

 Signed on Tue Apr 17 16:21:17 2007 with key 0x93B84C15.
 Get one of my photo posters:
 PGP key on or per email.

 "When you don't know what to do, walk fast and look worried."

  -- Unknown Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About