1*5486feefSafresh1# -*- mode: perl; -*- 2*5486feefSafresh1 3*5486feefSafresh1# Test that accuracy() and precision() in BigInt/BigFloat do not disturb 4*5486feefSafresh1# the rounding force in BigRat. 5*5486feefSafresh1 6*5486feefSafresh1use strict; 7*5486feefSafresh1use warnings; 8*5486feefSafresh1 9*5486feefSafresh1use Test::More tests => 17; 10*5486feefSafresh1 11*5486feefSafresh1use Math::BigInt; 12*5486feefSafresh1use Math::BigFloat; 13*5486feefSafresh1use Math::BigRat; 14*5486feefSafresh1 15*5486feefSafresh1my $proper = Math::BigRat -> new('12345678901234567890/2'); 16*5486feefSafresh1my $proper_inc = Math::BigRat -> new('12345678901234567890/2') -> binc(); 17*5486feefSafresh1my $proper_dec = Math::BigRat -> new('12345678901234567890/2') -> bdec(); 18*5486feefSafresh1my $proper_int = Math::BigInt -> new('12345678901234567890'); 19*5486feefSafresh1my $proper_float = Math::BigFloat -> new('12345678901234567890'); 20*5486feefSafresh1my $proper2 = Math::BigRat -> new('12345678901234567890'); 21*5486feefSafresh1 22*5486feefSafresh1Math::BigInt -> accuracy(3); 23*5486feefSafresh1Math::BigFloat -> accuracy(5); 24*5486feefSafresh1 25*5486feefSafresh1my ($x, $y, $z); 26*5486feefSafresh1 27*5486feefSafresh1############################################################################## 28*5486feefSafresh1# new() 29*5486feefSafresh1 30*5486feefSafresh1note "Test new()"; 31*5486feefSafresh1 32*5486feefSafresh1$z = Math::BigRat->new("12345678901234567890/2"); 33*5486feefSafresh1is($z, $proper, q|Math::BigRat->new("12345678901234567890/2")|); 34*5486feefSafresh1 35*5486feefSafresh1$z = Math::BigRat->new("1234567890123456789E1"); 36*5486feefSafresh1is($z, $proper2, q|Math::BigRat->new("1234567890123456789E1")|); 37*5486feefSafresh1 38*5486feefSafresh1$z = Math::BigRat->new("12345678901234567890/1E0"); 39*5486feefSafresh1is($z, $proper2, q|Math::BigRat->new("12345678901234567890/1E0")|); 40*5486feefSafresh1 41*5486feefSafresh1$z = Math::BigRat->new("1234567890123456789e1/1"); 42*5486feefSafresh1is($z, $proper2, q|Math::BigRat->new("1234567890123456789e1/1")|); 43*5486feefSafresh1 44*5486feefSafresh1$z = Math::BigRat->new("1234567890123456789e1/1E0"); 45*5486feefSafresh1is($z, $proper2, q|Math::BigRat->new("1234567890123456789e1/1E0")|); 46*5486feefSafresh1 47*5486feefSafresh1$z = Math::BigRat->new($proper_int); 48*5486feefSafresh1is($z, $proper2, qq|Math::BigRat->new("$proper_int")|); 49*5486feefSafresh1 50*5486feefSafresh1$z = Math::BigRat->new($proper_float); 51*5486feefSafresh1is($z, $proper2, qq|Math::BigRat->new("$proper_float")|); 52*5486feefSafresh1 53*5486feefSafresh1############################################################################## 54*5486feefSafresh1# bdiv 55*5486feefSafresh1 56*5486feefSafresh1note "Test bdiv()"; 57*5486feefSafresh1 58*5486feefSafresh1$x = Math::BigRat->new("12345678901234567890"); 59*5486feefSafresh1$y = Math::BigRat->new("2"); 60*5486feefSafresh1$z = $x->copy->bdiv($y); 61*5486feefSafresh1is($z, $proper); 62*5486feefSafresh1 63*5486feefSafresh1############################################################################## 64*5486feefSafresh1# bmul 65*5486feefSafresh1 66*5486feefSafresh1note "Test bmul()"; 67*5486feefSafresh1 68*5486feefSafresh1$x = Math::BigRat->new("$proper"); 69*5486feefSafresh1$y = Math::BigRat->new("1"); 70*5486feefSafresh1$z = $x->copy->bmul($y); 71*5486feefSafresh1is($z, $proper); 72*5486feefSafresh1 73*5486feefSafresh1$z = Math::BigRat->new("12345678901234567890/1E0"); 74*5486feefSafresh1is($z, $proper2); 75*5486feefSafresh1 76*5486feefSafresh1$z = Math::BigRat->new($proper_int); 77*5486feefSafresh1is($z, $proper2); 78*5486feefSafresh1 79*5486feefSafresh1$z = Math::BigRat->new($proper_float); 80*5486feefSafresh1is($z, $proper2); 81*5486feefSafresh1 82*5486feefSafresh1############################################################################## 83*5486feefSafresh1# bdiv 84*5486feefSafresh1 85*5486feefSafresh1note "Test bdiv()"; 86*5486feefSafresh1 87*5486feefSafresh1$x = Math::BigRat->new("12345678901234567890"); 88*5486feefSafresh1$y = Math::BigRat->new("2"); 89*5486feefSafresh1$z = $x->copy->bdiv($y); 90*5486feefSafresh1is($z, $proper); 91*5486feefSafresh1 92*5486feefSafresh1############################################################################## 93*5486feefSafresh1# bmul 94*5486feefSafresh1 95*5486feefSafresh1note "Test bmul()"; 96*5486feefSafresh1 97*5486feefSafresh1$x = Math::BigRat->new("$proper"); 98*5486feefSafresh1$y = Math::BigRat->new("1"); 99*5486feefSafresh1$z = $x->copy->bmul($y); 100*5486feefSafresh1is($z, $proper); 101*5486feefSafresh1 102*5486feefSafresh1$x = Math::BigRat->new("$proper"); 103*5486feefSafresh1$y = Math::BigRat->new("2"); 104*5486feefSafresh1$z = $x->copy->bmul($y); 105*5486feefSafresh1is($z, $proper2); 106*5486feefSafresh1 107*5486feefSafresh1############################################################################## 108*5486feefSafresh1# binc 109*5486feefSafresh1 110*5486feefSafresh1note "Test binc()"; 111*5486feefSafresh1 112*5486feefSafresh1$x = $proper->copy()->binc(); 113*5486feefSafresh1is($x, $proper_inc); 114*5486feefSafresh1 115*5486feefSafresh1############################################################################## 116*5486feefSafresh1# binc 117*5486feefSafresh1 118*5486feefSafresh1note "Test bdec()"; 119*5486feefSafresh1 120*5486feefSafresh1$x = $proper->copy()->bdec(); 121*5486feefSafresh1is($x, $proper_dec); 122