BEGIN { print "1..4\n"; }
END { print "not ok\n" unless $loaded }
use Math::NoCarry;
$loaded = 1;
print "ok\n";
my @triads = (
[qw( 123 456 43878)],
[qw(-123 -456 43878)],
[qw(-123 456 -43878)],
[qw( 123 -456 -43878)],
[qw(456 123 43878)],
[qw(456 879 28974)],
[qw(879 456 28974)],
[qw( 890 135 83750)],
[qw( 135 890 83750)],
[qw(-135 890 -83750)],
[qw( 135 -890 -83750)],
[qw(-135 -890 83750)],
[qw(500 321 50500)],
[qw(321 500 50500)],
);
eval {
foreach my $triad ( @triads )
{
my( $n, $m, $expected ) = @$triad;
my $product = Math::NoCarry::multiply( $n, $m );
die "[$n x $m] gave [$product], but I expected [$expected]\n"
unless $product == $expected;
}
};
print STDERR $@ if $@;
print $@ ? 'not ' : '', "ok\n";
eval {
foreach my $triad ( @triads )
{
foreach my $n ( @$triad )
{
my $product = Math::NoCarry::multiply( $n );
die "[$n] gave [$product], but I expected [$n]\n"
unless $product == $n;
}
}
};
print STDERR $@ if $@;
print $@ ? 'not ' : '', "ok\n";
eval {
my $product = Math::NoCarry::multiply();
die "[NULL] gave [$product], but I expected [FALSE]\n"
if $product;
};
print STDERR $@ if $@;
print $@ ? 'not ' : '', "ok\n";