use strict;
use warnings;
use Test::More tests => 3;
use bignum;
sub xe{
$_[0]*log($_[0])+log(atan2(1,1)*8*$_[0])/2
+ 1/(12*$_[0]) - 1/(360*($_[0]**3)) + 1/(1260*($_[0]**5));
}
my ($m, $n, $r) = ( 2**96, 3*(10**6), 1*(10**6) );
my $e=exp(xe($m-$n)+xe($m-$r)-xe($m)-xe($m-$n-$r));
is( $e , 1, '$e should equal 1' );
is( 1-$e , 0, '1-$e should equal 0' );
is( 1-"$e" , 0, '1-"$e" should equal 0' );
Gives:
1..3
ok 1 - $e should equal 1
not ok 2 - 1-$e should equal 0
# Failed test (bigtest.pl at line 17)
# got: '1'
# expected: '0'
ok 3 - 1-"$e" should equal 0
# Looks like you failed 1 test of 3.
That's even easier for a module author to work with.
-xdg
Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.
|