my
$mbf
=
'Math::BigFloat'
;
my
$x
=
$mbf
->new(
'123456.123456'
);
_do_a(
$x
,
'round'
, 3,
'123000'
);
_do_a(
$x
,
'bfround'
, 3,
'123500'
);
_do_a(
$x
,
'bfround'
, 2,
'123460'
);
_do_a(
$x
,
'bfround'
, -2,
'123456.12'
);
_do_a(
$x
,
'bfround'
, -3,
'123456.123'
);
_do_a(
$x
,
'bround'
, 4,
'123500'
);
_do_a(
$x
,
'bround'
, 3,
'123000'
);
_do_a(
$x
,
'bround'
, 2,
'120000'
);
_do_a(
$x
,
'bsqrt'
, 4,
'351.4'
);
_do_a(
$x
,
'bsqrt'
, 3,
'351'
);
_do_a(
$x
,
'bsqrt'
, 2,
'350'
);
_do_p(
$x
,
'bsqrt'
, 2,
'350'
);
_do_p(
$x
,
'bsqrt'
, -2,
'351.36'
);
_do_2_a(
$x
,
'bdiv'
, 2, 6,
'61728.1'
);
_do_2_a(
$x
,
'bdiv'
, 2, 4,
'61730'
);
_do_2_a(
$x
,
'bdiv'
, 2, 3,
'61700'
);
_do_2_p(
$x
,
'bdiv'
, 2, -6,
'61728.061728'
);
_do_2_p(
$x
,
'bdiv'
, 2, -4,
'61728.0617'
);
_do_2_p(
$x
,
'bdiv'
, 2, -3,
'61728.062'
);
sub
_do_a {
my
(
$x
,
$method
,
$A
,
$result
) =
@_
;
is(
$x
->copy->
$method
(
$A
),
$result
,
"$method($A)"
);
is(
$x
->copy->
$method
(
$A
.
'.1'
),
$result
,
"$method(${A}.1)"
);
is(
$x
->copy->
$method
(
$A
.
'.5'
),
$result
,
"$method(${A}.5)"
);
is(
$x
->copy->
$method
(
$A
.
'.6'
),
$result
,
"$method(${A}.6)"
);
is(
$x
->copy->
$method
(
$A
.
'.9'
),
$result
,
"$method(${A}.9)"
);
}
sub
_do_p {
my
(
$x
,
$method
,
$P
,
$result
) =
@_
;
is(
$x
->copy->
$method
(
undef
,
$P
),
$result
,
"$method(undef, $P)"
);
is(
$x
->copy->
$method
(
undef
,
$P
.
'.1'
),
$result
,
"$method(undef, ${P}.1)"
);
is(
$x
->copy->
$method
(
undef
,
$P
.
'.5'
),
$result
,
"$method(undef.${P}.5)"
);
is(
$x
->copy->
$method
(
undef
,
$P
.
'.6'
),
$result
,
"$method(undef, ${P}.6)"
);
is(
$x
->copy->
$method
(
undef
,
$P
.
'.9'
),
$result
,
"$method(undef, ${P}.9)"
);
}
sub
_do_2_a {
my
(
$x
,
$method
,
$y
,
$A
,
$result
) =
@_
;
my
$cy
=
$mbf
->new(
$y
);
is(
$x
->copy->
$method
(
$cy
,
$A
),
$result
,
"$method($cy, $A)"
);
is(
$x
->copy->
$method
(
$cy
,
$A
.
'.1'
),
$result
,
"$method($cy, ${A}.1)"
);
is(
$x
->copy->
$method
(
$cy
,
$A
.
'.5'
),
$result
,
"$method($cy, ${A}.5)"
);
is(
$x
->copy->
$method
(
$cy
,
$A
.
'.6'
),
$result
,
"$method($cy, ${A}.6)"
);
is(
$x
->copy->
$method
(
$cy
,
$A
.
'.9'
),
$result
,
"$method($cy, ${A}.9)"
);
}
sub
_do_2_p {
my
(
$x
,
$method
,
$y
,
$P
,
$result
) =
@_
;
my
$cy
=
$mbf
->new(
$y
);
is(
$x
->copy->
$method
(
$cy
,
undef
,
$P
),
$result
,
"$method(undef, $P)"
);
is(
$x
->copy->
$method
(
$cy
,
undef
,
$P
.
'.1'
),
$result
,
"$method($cy, undef, ${P}.1)"
);
is(
$x
->copy->
$method
(
$cy
,
undef
,
$P
.
'.5'
),
$result
,
"$method($cy, undef, ${P}.5)"
);
is(
$x
->copy->
$method
(
$cy
,
undef
,
$P
.
'.6'
),
$result
,
"$method($cy, undef, ${P}.6)"
);
is(
$x
->copy->
$method
(
$cy
,
undef
,
$P
.
'.9'
),
$result
,
"$method($cy, undef, ${P}.9)"
);
}