18 lines
511 B
Plaintext
18 lines
511 B
Plaintext
let approx_eq v1 v2 epsilon =
|
|
Float.abs (v1 -. v2) < epsilon
|
|
|
|
let test a b =
|
|
let epsilon = 1e-18 in
|
|
Printf.printf "%g, %g => %b\n" a b (approx_eq a b epsilon)
|
|
|
|
let () =
|
|
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.0) *. (sqrt 2.0)) 2.0;
|
|
test (-. (sqrt 2.0) *. (sqrt 2.0)) (-2.0);
|
|
test 3.14159265358979323846 3.14159265358979324;
|
|
;;
|