my
$mbf
=
"Math::BigFloat"
;
my
$mbi
=
"Math::BigInt"
;
test_broot(
'2'
,
'240'
, 8,
undef
,
'1073741824'
);
test_broot(
'2'
,
'240'
, 9,
undef
,
'106528681.3099908308759836475139583940127'
);
test_broot(
'2'
,
'120'
, 9,
undef
,
'10321.27324073880096577298929482324664787'
);
test_broot(
'2'
,
'120'
, 17,
undef
,
'133.3268493632747279600707813049418888729'
);
test_broot(
'2'
,
'120'
, 8,
undef
,
'32768'
);
test_broot(
'2'
,
'60'
, 8,
undef
,
'181.0193359837561662466161566988413540569'
);
test_broot(
'2'
,
'60'
, 9,
undef
,
'101.5936673259647663841091609134277286651'
);
test_broot(
'2'
,
'60'
, 17,
undef
,
'11.54672461623965153271017217302844672562'
);
sub
test_broot {
my
(
$x
,
$n
,
$y
,
$scale
,
$expected
) =
@_
;
my
$s
=
$scale
||
'undef'
;
is(
$mbf
->new(
$x
)->bpow(
$n
)->broot(
$y
,
$scale
),
$expected
,
"Try: $mbf->new($x)->bpow($n)->broot($y, $s) == $expected"
);
$expected
=~ s/\..*//;
is(
$mbi
->new(
$x
)->bpow(
$n
)->broot(
$y
,
$scale
),
$expected
,
"Try: $mbi->new($x)->bpow($n)->broot($y, $s) == $expected"
);
}