sub TOLERANCE () { 1e-13 }
sub compare {
my ($a, $b, $tol) = @_;
$tol = TOLERANCE unless (defined($tol));
my $diff = ($a - $b);
if ($diff > +$tol) { return +1; }
if ($diff < -$tol) { return -1; }
return 0;
}
sub format_cmp {
my ($cmp) = @_;
if ($cmp < 0) {return "<"; }
if ($cmp == 0) {return "="; }
if ($cmp > 0) {return ">"; }
}
print('35 <=> 36 = ', format_cmp(35 <=> 36 ), ' ', f
+ormat_cmp(compare(35, 36 )), ' = compare(35, 36 )', "\
+n");
print('35 <=> 35 = ', format_cmp(35 <=> 35 ), ' ', f
+ormat_cmp(compare(35, 35 )), ' = compare(35, 35 )', "\
+n");
print('36 <=> 35 = ', format_cmp(36 <=> 35 ), ' ', f
+ormat_cmp(compare(36, 35 )), ' = compare(36, 35 )', "\
+n");
print('36.8 <=> 36.6+0.2 = ', format_cmp(36.8 <=> 36.6+0.2), ' ', f
+ormat_cmp(compare(36.8, 36.6+0.2)), ' = compare(36.8, 36.6+0.2)', "\
+n");
__END__
output
======
35 <=> 36 = < < = compare(35, 36 )
35 <=> 35 = = = = compare(35, 35 )
36 <=> 35 = > > = compare(36, 35 )
36.8 <=> 36.6+0.2 = < = = compare(36.8, 36.6+0.2)
|