|
Packit |
dcde0c |
#!perl
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
# Test broot function (and bsqrt() function, since it is used by broot()).
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
# It is too slow to be simple included in bigfltpm.inc, where it would get
|
|
Packit |
dcde0c |
# executed 3 times.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
# But it is better to test the numerical functionality, instead of not testing
|
|
Packit |
dcde0c |
# it at all.
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
use strict; # restrict unsafe constructs
|
|
Packit |
dcde0c |
use warnings; # enable optional warnings
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
use Test::More tests => 4 * 2;
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
use Math::BigFloat only => 'FastCalc';
|
|
Packit |
dcde0c |
use Math::BigInt;
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
my $mbf = "Math::BigFloat";
|
|
Packit |
dcde0c |
my $mbi = "Math::BigInt";
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
# 2 ** 240 =
|
|
Packit |
dcde0c |
# 1766847064778384329583297500742918515827483896875618958121606201292619776
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
# takes way too long
|
|
Packit |
dcde0c |
#test_broot('2', '240', 8, undef,
|
|
Packit |
dcde0c |
# '1073741824');
|
|
Packit |
dcde0c |
#test_broot('2', '240', 9, undef,
|
|
Packit |
dcde0c |
# '106528681.3099908308759836475139583940127');
|
|
Packit |
dcde0c |
#test_broot('2', '120', 9, undef,
|
|
Packit |
dcde0c |
# '10321.27324073880096577298929482324664787');
|
|
Packit |
dcde0c |
#test_broot('2', '120', 17, undef,
|
|
Packit |
dcde0c |
# '133.3268493632747279600707813049418888729');
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
test_broot('2', '120', 8, undef,
|
|
Packit |
dcde0c |
'32768');
|
|
Packit |
dcde0c |
test_broot('2', '60', 8, undef,
|
|
Packit |
dcde0c |
'181.0193359837561662466161566988413540569');
|
|
Packit |
dcde0c |
test_broot('2', '60', 9, undef,
|
|
Packit |
dcde0c |
'101.5936673259647663841091609134277286651');
|
|
Packit |
dcde0c |
test_broot('2', '60', 17, undef,
|
|
Packit |
dcde0c |
'11.54672461623965153271017217302844672562');
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
sub test_broot {
|
|
Packit |
dcde0c |
my ($x, $n, $y, $scale, $expected) = @_;
|
|
Packit |
dcde0c |
|
|
Packit |
dcde0c |
my $s = $scale || 'undef';
|
|
Packit |
dcde0c |
is($mbf->new($x)->bpow($n)->broot($y, $scale), $expected,
|
|
Packit |
dcde0c |
"Try: $mbf->new($x)->bpow($n)->broot($y, $s) == $expected");
|
|
Packit |
dcde0c |
$expected =~ s/\..*//;
|
|
Packit |
dcde0c |
is($mbi->new($x)->bpow($n)->broot($y, $scale), $expected,
|
|
Packit |
dcde0c |
"Try: $mbi->new($x)->bpow($n)->broot($y, $s) == $expected");
|
|
Packit |
dcde0c |
}
|