1N/A chdir 't' if -d 't'; 1N/A# testing of Math::BigInt::Calc 1N/Amy $C =
'Math::BigInt::Calc';
# pass classname to sub's 1N/A############################################################################### 1N/A# _add, _sub, _mul, _div 1N/A############################################################################### 1N/A# and returns the same reference, not something new 1N/A############################################################################### 1N/A# is_zero, _is_one, _one, _zero 1N/Afor (my $i = 1; $i < 9; $i++) 1N/A my $a = "$i" . '0' x ($i-1); 1N/Aforeach (qw/ 1 12 123 1234 12345 123456 1234567 12345678 123456789/) 1N/A ok ($C->_str($x),"$_"); # did _copy destroy original x? 1N/A$x = $C->
_new("6411906467305339182857313397200584952398");
1N/A$x = $C->
_new("1234567890123456789");
1N/A$y = $C->
_new("987654321012345678");
1N/A$y = $C->
_new("987654321012345678");
1N/Aforeach (qw/1 12 123 1234 12345 1234567 12345678 123456789 1234567890/) 1N/A$x = $C->
_new("81");
my $n = $C->
_new("3");
# 4*4*4 = 64, 5*5*5 = 125 1N/A$x = $C->
_new("81"); $n = $C->
_new("4");
# 3*3*3*3 == 81 1N/A$x = $C->
_new("81"); $n = $C->
_new("3");
# 81 ** 3 == 531441 1N/Aok ($C->_str($C->_pow($x,$n)),'150094635296999121');
# 531441 ** 3 == 1N/A$x = $C->
_new("523347633027360537213511520");
1N/A$x = $C->
_new("523347633027360537213511522");
1N/A# 99 ** 2 = 9801, 999 ** 2 = 998001 etc 1N/A my $rc = '9' x ($i-1). '8' . '0' x ($i-1) . '1'; 1N/A print "# _root( ", '9' x $i, ", ", 9 x $i, ") \n" unless 1N/A print "# _root( ", '9' x $i, ", ", 9 x $i, ") \n" unless 1N/A############################################################################## 1N/A# test that _fac modifes $x in place for small arguments 1N/A############################################################################## 1N/Aforeach (qw/1 11 121 1231 12341 1234561 12345671 123456781 1234567891/) 1N/Aforeach (qw/19 119 1219 12319 1234519 12345619 123456719 1234567819/) 1N/Aforeach (qw/999 9999 99999 9999999 99999999 999999999 9999999999 99999999999/) 1N/A $BL = &{"$C"."::_base_len"}(); 1N/A$z =
'1' .
'0' x
($BL-1); $z .=
'1';
1N/A# $x = $C->_new("-2"); $y = $C->_new("4"); ok ($C->_acmp($x,$y),-1); 1N/A############################################################################### 1N/A# _from_hex, _from_bin 1N/A############################################################################### 1N/A # correct empty arrays 1N/A $x = &{$C."::__strip_zeros"}([]); ok (@$x,1); ok ($x->[0],0); 1N/A # don't strip single elements 1N/A $x = &{$C."::__strip_zeros"}([0]); ok (@$x,1); ok ($x->[0],0); 1N/A $x = &{$C."::__strip_zeros"}([1]); ok (@$x,1); ok ($x->[0],1); 1N/A # don't strip non-zero elements 1N/A $x = &{$C."::__strip_zeros"}([0,1]); 1N/A $x = &{$C."::__strip_zeros"}([0,1,2]); 1N/A ok (@$x,3); ok ($x->[0],0); ok ($x->[1],1); ok ($x->[2],2); 1N/A # but strip leading zeros 1N/A $x = &{$C."::__strip_zeros"}([0,1,2,0]); 1N/A ok (@$x,3); ok ($x->[0],0); ok ($x->[1],1); ok ($x->[2],2); 1N/A $x = &{$C."::__strip_zeros"}([0,1,2,0,0]); 1N/A ok (@$x,3); ok ($x->[0],0); ok ($x->[1],1); ok ($x->[2],2); 1N/A $x = &{$C."::__strip_zeros"}([0,1,2,0,0,0]); 1N/A ok (@$x,3); ok ($x->[0],0); ok ($x->[1],1); ok ($x->[2],2); 1N/A # collapse multiple zeros 1N/A $x = &{$C."::__strip_zeros"}([0,0,0,0]);