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