Blame t/bigroot.t

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
}