7 open (EXPECTED, '<', $ARGV[0]) or die "$ARGV[0]: open: $!\n";
8 open (ACTUAL, '<', $ARGV[1]) or die "$ARGV[1]: open: $!\n";
15 last if !defined $a && !defined $b;
16 die "$ARGV[0]:$.: unexpected end of file\n" if !defined $a;
17 die "$ARGV[1]:$.: unexpected end of file\n" if !defined $b;
19 my (@a) = split (' ', $a);
20 my (@b) = split (' ', $b);
21 die "$ARGV[1]:$.: contains ". scalar (@b) . " fields but should "
22 . "contain " . scalar (@a) . "\n"
24 foreach my $i (0...$#a) {
25 die "$ARGV[1]:$.: unexpected number of decimals\n"
26 if count_decimals ($a[$i]) != count_decimals ($b[$i]);
28 my ($an) = to_int ($a[$i]);
29 my ($bn) = to_int ($b[$i]);
30 if ($an ne $bn && ($bn < $an - $epsilon || $bn > $an + $epsilon)) {
33 print "$ARGV[1]: Additional differences suppressed.\n";
36 print "$ARGV[1]:$.: Values differ from $ARGV[0]:$.\n";
37 print "Expected:\n", $a;
38 print "Calculated:\n", $b;
46 return length (substr ($s, index ($s, '.')));