X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fbignum.pm;h=2e075c8b5a72741a5eb7deb1e2ed8c6d73f4a813;hb=47a7661deb880b9c5c3ea4517c4908096fdff41f;hp=5ebb904480557c7c1ed5aa2a39029774174e4d46;hpb=075d4edd61a9648945541c8a76d8c03d4588400b;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/bignum.pm b/lib/bignum.pm index 5ebb904..2e075c8 100644 --- a/lib/bignum.pm +++ b/lib/bignum.pm @@ -1,10 +1,10 @@ package bignum; -use 5.006002; +use 5.006; -$VERSION = '0.22'; +$VERSION = '0.23'; use Exporter; @ISA = qw( bigint ); -@EXPORT_OK = qw( ); +@EXPORT_OK = qw( PI e bexp bpi ); @EXPORT = qw( inf NaN ); use strict; @@ -166,7 +166,10 @@ sub import splice @a, $j, 1; $j --; $oct = \&bigint::_oct_global; } - else { die "unknown option $_[$i]"; } + elsif ($_[$i] !~ /^(PI|e|bexp|bpi)\z/) + { + die ("unknown option $_[$i]"); + } } my $class; $_lite = 0; # using M::BI::L ? @@ -237,6 +240,11 @@ sub import } } +sub PI () { Math::BigFloat->new('3.141592653589793238462643383279502884197'); } +sub e () { Math::BigFloat->new('2.718281828459045235360287471352662497757'); } +sub bpi ($) { Math::BigFloat::bpi(@_); } +sub bexp ($$) { my $x = Math::BigFloat->new($_[0]); $x->bexp($_[1]); } + 1; __END__ @@ -411,13 +419,13 @@ This will be hopefully fixed soon ;) =item hex -Override the build-in hex() method with a version that can handle big +Override the built-in hex() method with a version that can handle big integers. Note that under Perl older than v5.9.4, this will be global and cannot be disabled with "no bigint;". =item oct -Override the build-in oct() method with a version that can handle big +Override the built-in oct() method with a version that can handle big integers. Note that under Perl older than v5.9.4, this will be global and cannot be disabled with "no bigint;". @@ -488,6 +496,39 @@ handle bareword C properly. A shortcut to return Math::BigInt->bnan(). Useful because Perl does not always handle bareword C properly. +=item e + + # perl -Mbignum=e -wle 'print e' + +Returns Euler's number C, aka exp(1). + +=item PI() + + # perl -Mbignum=PI -wle 'print PI' + +Returns PI. + +=item bexp() + + bexp($power,$accuracy); + +Returns Euler's number C raised to the appropriate power, to +the wanted accuracy. + +Example: + + # perl -Mbignum=bexp -wle 'print bexp(1,80)' + +=item bpi() + + bpi($accuracy); + +Returns PI to the wanted accuracy. + +Example: + + # perl -Mbignum=bpi -wle 'print bpi(80)' + =item upgrade() Return the class that numbers are upgraded to, is in fact returning