1*eac174f2Safresh1# -*- mode: perl; -*- 2b8851fccSafresh1 3b8851fccSafresh1use strict; 4b8851fccSafresh1use warnings; 5b8851fccSafresh1 6*eac174f2Safresh1use Test::More tests => 3070 # tests in require'd file 79f11ffb7Safresh1 + 19; # tests in this file 8b8851fccSafresh1 99f11ffb7Safresh1use Math::BigInt only => 'Calc'; 10b8851fccSafresh1use Math::BigFloat; 11b8851fccSafresh1 12b46d8ef2Safresh1our ($CLASS, $LIB); 139f11ffb7Safresh1$CLASS = "Math::BigFloat"; 14b46d8ef2Safresh1$LIB = Math::BigInt -> config('lib'); # backend library 15b8851fccSafresh1 16b46d8ef2Safresh1is($CLASS->config("class"), $CLASS, qq|$CLASS->config("class")|); 17b46d8ef2Safresh1is($CLASS->config("with"), $LIB, qq|$CLASS->config("with")|); 18b8851fccSafresh1 19b8851fccSafresh1# bug #17447: Can't call method Math::BigFloat->bsub, not a valid method 20b8851fccSafresh1my $c = Math::BigFloat->new('123.3'); 21b8851fccSafresh1is($c->bsub(123), '0.3', 22b8851fccSafresh1 qq|\$c = Math::BigFloat -> new("123.3"); \$y = \$c -> bsub("123")|); 23b8851fccSafresh1 24b8851fccSafresh1# Bug until Math::BigInt v1.86, the scale wasn't treated as a scalar: 25b8851fccSafresh1$c = Math::BigFloat->new('0.008'); 26b8851fccSafresh1my $d = Math::BigFloat->new(3); 27b8851fccSafresh1my $e = $c->bdiv(Math::BigFloat->new(3), $d); 28b8851fccSafresh1 29b8851fccSafresh1is($e, '0.00267', '0.008 / 3 = 0.0027'); 30b8851fccSafresh1 319f11ffb7Safresh1my $x; 329f11ffb7Safresh1 339f11ffb7Safresh1############################################################################# 349f11ffb7Safresh1# bgcd() as function, class method and instance method. 359f11ffb7Safresh1 369f11ffb7Safresh1my $gcd0 = Math::BigFloat::bgcd(-12, 18, 27); 379f11ffb7Safresh1isa_ok($gcd0, "Math::BigFloat", "bgcd() as function"); 389f11ffb7Safresh1is($gcd0, 3, "bgcd() as function"); 399f11ffb7Safresh1 409f11ffb7Safresh1my $gcd1 = Math::BigFloat->bgcd(-12, 18, 27); 419f11ffb7Safresh1isa_ok($gcd1, "Math::BigFloat", "bgcd() as class method"); 429f11ffb7Safresh1is($gcd1, 3, "bgcd() as class method"); 439f11ffb7Safresh1 449f11ffb7Safresh1$x = Math::BigFloat -> new(-12); 459f11ffb7Safresh1my $gcd2 = $x -> bgcd(18, 27); 469f11ffb7Safresh1isa_ok($gcd2, "Math::BigFloat", "bgcd() as instance method"); 479f11ffb7Safresh1is($gcd2, 3, "bgcd() as instance method"); 489f11ffb7Safresh1is($x, -12, "bgcd() does not modify invocand"); 499f11ffb7Safresh1 509f11ffb7Safresh1############################################################################# 519f11ffb7Safresh1# blcm() as function, class method and instance method. 529f11ffb7Safresh1 539f11ffb7Safresh1my $lcm0 = Math::BigFloat::blcm(-12, 18, 27); 549f11ffb7Safresh1isa_ok($lcm0, "Math::BigFloat", "blcm() as function"); 559f11ffb7Safresh1is($lcm0, 108, "blcm() as function"); 569f11ffb7Safresh1 579f11ffb7Safresh1my $lcm1 = Math::BigFloat->blcm(-12, 18, 27); 589f11ffb7Safresh1isa_ok($lcm1, "Math::BigFloat", "blcm() as class method"); 599f11ffb7Safresh1is($lcm1, 108, "blcm() as class method"); 609f11ffb7Safresh1 619f11ffb7Safresh1$x = Math::BigFloat -> new(-12); 629f11ffb7Safresh1my $lcm2 = $x -> blcm(18, 27); 639f11ffb7Safresh1isa_ok($lcm2, "Math::BigFloat", "blcm() as instance method"); 649f11ffb7Safresh1is($lcm2, 108, "blcm() as instance method"); 659f11ffb7Safresh1is($x, -12, "blcm() does not modify invocand"); 669f11ffb7Safresh1 679f11ffb7Safresh1############################################################################# 689f11ffb7Safresh1 69b8851fccSafresh1SKIP: { 70b8851fccSafresh1 skip("skipping test which is not for this backend", 1) 71b46d8ef2Safresh1 unless $LIB eq 'Math::BigInt::Calc'; 72b8851fccSafresh1 is(ref($e->{_e}->[0]), '', '$e->{_e}->[0] is a scalar'); 73b8851fccSafresh1} 74b8851fccSafresh1 75b46d8ef2Safresh1require './t/bigfltpm.inc'; # all tests here for sharing 76