summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/perl/t/op/arith.t
blob: 5b04f9365fd11be9c05973cd5130ef5de7cc738b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!./perl

print "1..12\n";

sub try ($$) {
   print +($_[1] ? "ok" : "not ok"), " $_[0]\n";
}

try 1,  13 %  4 ==  1;
try 2, -13 %  4 ==  3;
try 3,  13 % -4 == -3;
try 4, -13 % -4 == -1;

my $limit = 1e6;

# Division (and modulo) of floating point numbers
# seem to be rather sloppy in Cray.
$limit = 1e8 if $^O eq 'unicos';

try 5, abs( 13e21 %  4e21 -  1e21) < $limit;
try 6, abs(-13e21 %  4e21 -  3e21) < $limit;
try 7, abs( 13e21 % -4e21 - -3e21) < $limit;
try 8, abs(-13e21 % -4e21 - -1e21) < $limit;

# UVs should behave properly

try 9, 4063328477 % 65535 == 27407;
try 10, 4063328477 % 4063328476 == 1;
try 11, 4063328477 % 2031664238 == 1;
try 12, 2031664238 % 4063328477 == 2031664238;