26 lines
926 B
Plaintext
26 lines
926 B
Plaintext
func ApproxEqual(A, B); \Return 'true' if approximately equal
|
|
real A, B;
|
|
real Epsilon;
|
|
[Epsilon:= abs(A) * 1E-15;
|
|
return abs(A-B) < Epsilon;
|
|
];
|
|
|
|
real Data;
|
|
int I;
|
|
[Format(0, 16);
|
|
Data:=[ [100000000000000.01, 100000000000000.011], \should return true
|
|
[100.01, 100.011], \should return false
|
|
[10000000000000.001 / 10000.0, 1000000000.0000001000],
|
|
[0.001, 0.0010000001],
|
|
[0.000000000000000000000101, 0.0], \is undefined
|
|
[sqrt(2.0) * sqrt(2.0), 2.0],
|
|
[-1.0 * sqrt(2.0) * sqrt(2.0), -2.0], \-sqrt doesn't compile!
|
|
[3.14159265358979323846, 3.14159265358979324] ];
|
|
for I:= 0 to 7 do
|
|
[IntOut(0, I+1); Text(0, ". ");
|
|
RlOut(0, Data(I,0)); ChOut(0, ^ ); RlOut(0, Data(I,1));
|
|
Text(0, if ApproxEqual(Data(I,0), Data(I,1)) then " true" else " false");
|
|
CrLf(0);
|
|
];
|
|
]
|