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