xref: /openbsd-src/gnu/usr.bin/perl/cpan/bignum/t/bigfloat.t (revision 256a93a44f36679bee503f12e49566c2183f6181)
1*256a93a4Safresh1# -*- mode: perl; -*-
2*256a93a4Safresh1
3*256a93a4Safresh1###############################################################################
4*256a93a4Safresh1
5*256a93a4Safresh1use strict;
6*256a93a4Safresh1use warnings;
7*256a93a4Safresh1
8*256a93a4Safresh1use Test::More tests => 17;
9*256a93a4Safresh1
10*256a93a4Safresh1use bigfloat;
11*256a93a4Safresh1
12*256a93a4Safresh1###############################################################################
13*256a93a4Safresh1# general tests
14*256a93a4Safresh1
15*256a93a4Safresh1my $x = 5;
16*256a93a4Safresh1is(ref($x), 'Math::BigFloat', '$x = 5 makes $x a Math::BigFloat');
17*256a93a4Safresh1
18*256a93a4Safresh1$x = 2 + 3.5;
19*256a93a4Safresh1is($x, 5.5, '2 + 3.5 = 5.5');
20*256a93a4Safresh1is(ref($x), 'Math::BigFloat', '$x = 2 + 3.5 makes $x a Math::BigFloat');
21*256a93a4Safresh1
22*256a93a4Safresh1$x = 2 ** 255;
23*256a93a4Safresh1is(ref($x), 'Math::BigFloat', '$x = 2 ** 255 makes $x a Math::BigFloat');
24*256a93a4Safresh1
25*256a93a4Safresh1is(sqrt(12), '3.464101615137754587054892683011744733886',
26*256a93a4Safresh1   'sqrt(12)');
27*256a93a4Safresh1
28*256a93a4Safresh1is(2/3, "0.6666666666666666666666666666666666666667", '2/3');
29*256a93a4Safresh1
30*256a93a4Safresh1#is(2 ** 0.5, 'NaN');   # should be sqrt(2);
31*256a93a4Safresh1
32*256a93a4Safresh1is(12->bfac(), 479001600, '12->bfac() = 479001600');
33*256a93a4Safresh1
34*256a93a4Safresh1# see if Math::BigFloat constant works
35*256a93a4Safresh1
36*256a93a4Safresh1#                     0123456789          0123456789    <- default 40
37*256a93a4Safresh1#           0123456789          0123456789
38*256a93a4Safresh1is(1/3, '0.3333333333333333333333333333333333333333', '1/3');
39*256a93a4Safresh1
40*256a93a4Safresh1###############################################################################
41*256a93a4Safresh1# accuracy and precision
42*256a93a4Safresh1
43*256a93a4Safresh1is(bigfloat->accuracy(), undef, 'get accuracy');
44*256a93a4Safresh1bigfloat->accuracy(12);
45*256a93a4Safresh1is(bigfloat->accuracy(), 12, 'get accuracy again');
46*256a93a4Safresh1bigfloat->accuracy(undef);
47*256a93a4Safresh1is(bigfloat->accuracy(), undef, 'get accuracy again');
48*256a93a4Safresh1
49*256a93a4Safresh1is(bigfloat->precision(), undef, 'get precision');
50*256a93a4Safresh1bigfloat->precision(12);
51*256a93a4Safresh1is(bigfloat->precision(), 12, 'get precision again');
52*256a93a4Safresh1bigfloat->precision(undef);
53*256a93a4Safresh1is(bigfloat->precision(), undef, 'get precision again');
54*256a93a4Safresh1
55*256a93a4Safresh1is(bigfloat->round_mode(), 'even', 'get round mode');
56*256a93a4Safresh1bigfloat->round_mode('odd');
57*256a93a4Safresh1is(bigfloat->round_mode(), 'odd', 'get round mode again');
58*256a93a4Safresh1bigfloat->round_mode('even');
59*256a93a4Safresh1is(bigfloat->round_mode(), 'even', 'get round mode again');
60