1#!/usr/bin/perl -w 2 3############################################################################### 4 5use Test; 6use strict; 7 8BEGIN 9 { 10 $| = 1; 11 chdir 't' if -d 't'; 12 unshift @INC, '../lib'; 13 plan tests => 20; 14 } 15 16use bignum; 17 18############################################################################### 19# general tests 20 21my $x = 5; ok (ref($x) =~ /^Math::BigInt/); # :constant 22 23ok (2 + 2.5,4.5); 24$x = 2 + 3.5; ok (ref($x),'Math::BigFloat'); 25ok (2 * 2.1,4.2); 26$x = 2 + 2.1; ok (ref($x),'Math::BigFloat'); 27 28$x = 2 ** 255; ok (ref($x) =~ /^Math::BigInt/); 29 30# see if Math::BigInt constant and upgrading works 31ok (Math::BigInt::bsqrt('12'),'3.464101615137754587054892683011744733886'); 32ok (sqrt(12),'3.464101615137754587054892683011744733886'); 33 34ok (2/3,"0.6666666666666666666666666666666666666667"); 35 36#ok (2 ** 0.5, 'NaN'); # should be sqrt(2); 37 38ok (12->bfac(),479001600); 39 40# see if Math::BigFloat constant works 41 42# 0123456789 0123456789 <- default 40 43# 0123456789 0123456789 44ok (1/3, '0.3333333333333333333333333333333333333333'); 45 46############################################################################### 47# accurarcy and precision 48 49ok_undef (bignum->accuracy()); 50ok (bignum->accuracy(12),12); 51ok (bignum->accuracy(),12); 52 53ok_undef (bignum->precision()); 54ok (bignum->precision(12),12); 55ok (bignum->precision(),12); 56 57ok (bignum->round_mode(),'even'); 58ok (bignum->round_mode('odd'),'odd'); 59ok (bignum->round_mode(),'odd'); 60 61############################################################################### 62############################################################################### 63# Perl 5.005 does not like ok ($x,undef) 64 65sub ok_undef 66 { 67 my $x = shift; 68 69 ok (1,1) and return if !defined $x; 70 ok ($x,'undef'); 71 } 72