print
"1..7\n"
;
my
$ok
= 1;
my
$check
= Math::Decimal64::_testvalD64(1);
$check
-= Math::Decimal64->new(
'40993'
, -15);
my
$init
=
'93071992547'
;
my
$suff
=
'00000'
;
my
$addon
= Exp10(-15);
if
(
$check
== Math::Decimal64->new(
$init
.
$suff
, -15)) {
print
"ok 1\n"
}
else
{
warn
"\n\$check: $check\n\$init: $init\n\$suff: $suff\n"
;
print
"not ok 1\n"
;
}
for
(1..99999) {
$suff
++;
$suff
=
'0'
.
$suff
while
length
(
$suff
) < 5;
$check
+=
$addon
;
my
$new
= Math::Decimal64->new(
$init
.
$suff
, -15);
unless
(
$check
==
$new
) {
warn
"\n\$check: $check \$new: $new\n"
;
$ok
= 0;
}
}
if
(
$ok
) {
print
"ok 2\n"
}
else
{
print
"not ok 2\n"
}
if
(
$check
== Math::Decimal64->new(
'9307199254799999'
, -15)) {
print
"ok 3\n"
}
else
{
warn
"\n\$check: $check\n"
;
print
"not ok 3\n"
;
}
$check
+= Math::Decimal64->new(
'600000000000001'
, -15);
if
(
$check
== Math::Decimal64->new(
'99071992548'
, -10)) {
print
"ok 4\n"
}
else
{
warn
"\$check: $check\n"
;
print
"not ok 4\n"
;
}
$init
=
'99071992548'
;
$suff
=
'00000'
;
if
(
$check
== Math::Decimal64->new(
$init
.
$suff
, -15)) {
print
"ok 5\n"
}
else
{
warn
"\n\$check: $check\n\$init: $init\n\$suff: $suff\n"
;
print
"not ok 5\n"
;
}
$ok
= 1;
for
(1..99999) {
$suff
++;
$suff
=
'0'
.
$suff
while
length
(
$suff
) < 5;
$check
+=
$addon
;
my
$new
= Math::Decimal64->new(
$init
.
$suff
, -15);
unless
(
$check
==
$new
) {
warn
"\n\$check: $check \$new: $new\n"
;
$ok
= 0;
}
}
if
(
$ok
) {
print
"ok 6\n"
}
else
{
print
"not ok 6\n"
}
if
(
$check
== Math::Decimal64->new(
'9907199254899999'
, -15)) {
print
"ok 7\n"
}
else
{
warn
"\n\$check: $check\n"
;
print
"not ok 7\n"
;
}