This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Move Math::BigRat from ext/ to cpan/
[perl5.git] / cpan / Math-BigRat / t / big_ap.t
CommitLineData
7d341013
T
1#!/usr/bin/perl -w
2
12fc2493
AMS
3# Test that accuracy() and precision() in BigInt/BigFloat do not disturb
4# the rounding force in BigRat.
5
7d341013
T
6use Test;
7use strict;
8
9BEGIN
10 {
11 $| = 1;
12 chdir 't' if -d 't';
13 unshift @INC, '../lib';
14 plan tests => 17;
15 }
16
17use Math::BigInt;
18use Math::BigFloat;
19use Math::BigRat;
20
21my $r = 'Math::BigRat';
22my $proper = $r->new('12345678901234567890/2');
23my $proper_inc = $r->new('12345678901234567890/2')->binc();
24my $proper_dec = $r->new('12345678901234567890/2')->bdec();
25my $proper_int = Math::BigInt->new('12345678901234567890');
26my $proper_float = Math::BigFloat->new('12345678901234567890');
27my $proper2 = $r->new('12345678901234567890');
28
29print "# Start\n";
30
31Math::BigInt->accuracy(3);
32Math::BigFloat->accuracy(5);
33
34my ($x,$y,$z);
35
36##############################################################################
37# new()
38
39$z = $r->new('12345678901234567890/2');
40ok ($z,$proper);
41
42$z = $r->new('1234567890123456789E1');
43ok ($z,$proper2);
44
45$z = $r->new('12345678901234567890/1E0');
46ok ($z,$proper2);
47$z = $r->new('1234567890123456789e1/1');
48ok ($z,$proper2);
49$z = $r->new('1234567890123456789e1/1E0');
50ok ($z,$proper2);
51
52$z = $r->new($proper_int);
53ok ($z,$proper2);
54
55$z = $r->new($proper_float);
56ok ($z,$proper2);
57
58##############################################################################
59# bdiv
60
61$x = $r->new('12345678901234567890'); $y = Math::BigRat->new('2');
62$z = $x->copy->bdiv($y);
63ok ($z,$proper);
64
65##############################################################################
66# bmul
67
68$x = $r->new("$proper"); $y = Math::BigRat->new('1');
69$z = $x->copy->bmul($y);
70ok ($z,$proper);
71$z = $r->new('12345678901234567890/1E0');
72ok ($z,$proper2);
73
74$z = $r->new($proper_int);
75ok ($z,$proper2);
76
77$z = $r->new($proper_float);
78ok ($z,$proper2);
79
80##############################################################################
81# bdiv
82
83$x = $r->new('12345678901234567890'); $y = Math::BigRat->new('2');
84$z = $x->copy->bdiv($y);
85ok ($z,$proper);
86
87##############################################################################
88# bmul
89
90$x = $r->new("$proper"); $y = Math::BigRat->new('1');
91$z = $x->copy->bmul($y);
92ok ($z,$proper);
93
94$x = $r->new("$proper"); $y = Math::BigRat->new('2');
95$z = $x->copy->bmul($y);
96ok ($z,$proper2);
97
98##############################################################################
12fc2493 99# binc/bdec
7d341013
T
100
101$x = $proper->copy()->binc(); ok ($x,$proper_inc);
102$x = $proper->copy()->bdec(); ok ($x,$proper_dec);
103