diff options
author | Florian Ragwitz <rafl@debian.org> | 2010-10-23 17:18:25 -0700 |
---|---|---|
committer | Florian Ragwitz <rafl@debian.org> | 2010-10-24 10:52:46 -0700 |
commit | ccbfef1989966a87df0683fb781de40d0fad1f84 (patch) | |
tree | b7b1c31cb6a8b7cb1b8962fbea11a2c509b6e783 /dist/Math-BigRat/t/biglog.t | |
parent | dbe2fffcb043e3f633e8c31acbe8a158c7083248 (diff) | |
download | perl-ccbfef1989966a87df0683fb781de40d0fad1f84.tar.gz |
Math::BigRat has blead as its upstream
Diffstat (limited to 'dist/Math-BigRat/t/biglog.t')
-rw-r--r-- | dist/Math-BigRat/t/biglog.t | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/dist/Math-BigRat/t/biglog.t b/dist/Math-BigRat/t/biglog.t new file mode 100644 index 0000000000..42e9ac8d64 --- /dev/null +++ b/dist/Math-BigRat/t/biglog.t @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w + +# Test blog function (and bpow, since it uses blog), as well as bexp(). + +use strict; +use Test::More tests => 17; + +use Math::BigRat; + +my $cl = "Math::BigRat"; + +############################################################################# +# test log($n) + +# does not work yet +#is ($cl->new(2)->blog(), '0', "blog(2)"); +#is ($cl->new(288)->blog(), '5',"blog(288)"); +#is ($cl->new(2000)->blog(), '7', "blog(2000)"); + +############################################################################# +# test exp($n) + +is ($cl->new(1)->bexp()->as_int(), '2', "bexp(1)"); +is ($cl->new(2)->bexp()->as_int(), '7',"bexp(2)"); +is ($cl->new(3)->bexp()->as_int(), '20', "bexp(3)"); + +# rounding not implemented yet +#is ($cl->new(3)->bexp(10), '20', "bexp(3,10)"); + +# $x < 0 => NaN +ok ($cl->new(-2)->blog(), 'NaN'); +ok ($cl->new(-1)->blog(), 'NaN'); +ok ($cl->new(-10)->blog(), 'NaN'); +ok ($cl->new(-2,2)->blog(), 'NaN'); + +############################################################################# +# test bexp() with cached results + +is ($cl->new(1)->bexp(), + '90933395208605785401971970164779391644753259799242' . '/' . + '33452526613163807108170062053440751665152000000000', + 'bexp(1)'); +is ($cl->new(2)->bexp(1,40), $cl->new(1)->bexp(1,45)->bpow(2,40), 'bexp(2)'); + +is ($cl->new("12.5")->bexp(1,61), $cl->new(1)->bexp(1,65)->bpow(12.5,61), 'bexp(12.5)'); + +############################################################################# +# test bexp() with big values (non-cached) + +is ($cl->new(1)->bexp(1,100)->as_float(100), + '2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427', + 'bexp(100)'); + +is ($cl->new("12.5")->bexp(1,91), $cl->new(1)->bexp(1,95)->bpow(12.5,91), + 'bexp(12.5) to 91 digits'); + +############################################################################# +# some integer results +is ($cl->new(2)->bpow(32)->blog(2), '32', "2 ** 32"); +is ($cl->new(3)->bpow(32)->blog(3), '32', "3 ** 32"); +is ($cl->new(2)->bpow(65)->blog(2), '65', "2 ** 65"); + +my $x = Math::BigInt->new( '777' ) ** 256; +my $base = Math::BigInt->new( '12345678901234' ); +is ($x->copy()->blog($base), 56, 'blog(777**256, 12345678901234)'); + +$x = Math::BigInt->new( '777' ) ** 777; +$base = Math::BigInt->new( '777' ); +is ($x->copy()->blog($base), 777, 'blog(777**777, 777)'); + +# all done +1; |