Approximate equality: Difference between revisions

Added Algol 68
(Added Algol 68)
Line 92:
-2.0000000000000000 -2.0000000000000000 FALSE
3.1415926535897932 3.1415926535897932 TRUE
</pre>
 
=={{header|ALGOL 68}}==
{{Trans|Kotlin}}
<lang algol68>BEGIN # test REAL values for approximate equality #
# returns TRUE if value is approximately equal to other, FALSE otherwide #
PROC approx equals = ( REAL value, REAL other, REAL epsilon )BOOL: ABS ( value - other ) < epsilon;
# shows the result of testing a for approximate equality with b #
PROC test = ( REAL a, b )VOID:
BEGIN
REAL epsilon = 1e-18;
print( ( a, ", ", b, " => ", IF approx equals( a, b, epsilon ) THEN "true" ELSE "false" FI, newline ) )
END # test # ;
# task test cases #
test( 100000000000000.01, 100000000000000.011 );
test( 100.01, 100.011 );
test( 10000000000000.001 / 10000.0, 1000000000.0000001000);
test( 0.001, 0.0010000001 );
test( 0.000000000000000000000101, 0.0 );
test( sqrt( 2 ) * sqrt( 2 ), 2.0 );
test( - sqrt( 2 ) * sqrt( 2 ), -2.0 );
test( 3.14159265358979323846, 3.14159265358979324 )
END</lang>
{{out}}
<pre>
+1.00000000000000e +14, +1.00000000000000e +14 => true
+1.00010000000000e +2, +1.00011000000000e +2 => false
+1.00000000000000e +9, +1.00000000000000e +9 => false
+1.00000000000000e -3, +1.00000010000000e -3 => false
+1.01000000000000e -22, +0.00000000000000e +0 => true
+2.00000000000000e +0, +2.00000000000000e +0 => false
-2.00000000000000e +0, -2.00000000000000e +0 => false
+3.14159265358979e +0, +3.14159265358979e +0 => true
</pre>
 
3,028

edits