xref: /openbsd-src/gnu/usr.bin/perl/cpan/Math-BigInt/t/big_ap.t (revision 5486feefcc8cb79b19e014ab332cc5dfd05b3b33)
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