27 lines
1014 B
Plaintext
27 lines
1014 B
Plaintext
local fn DoublesAreApproxEqual( val1 as double, val2 as double, epsilon as double ) as CFStringRef
|
|
CFStringRef result = @"false"
|
|
if ( fn fabs( val1 - val2 ) < epsilon ) then result = @"true"
|
|
end fn = result
|
|
|
|
void local fn DoIt
|
|
long i
|
|
double epsilon = 1e-18, values(15)
|
|
|
|
values(0) = 100000000000000.01 : values(1) = 100000000000000.011
|
|
values(2) = 100.01 : values(3) = 100.011
|
|
values(4) = 10000000000000.001 / 10000.0 : values(5) = 1000000000.0000001000
|
|
values(6) = 0.001 : values(7) = 0.0010000001
|
|
values(8) = 0.000000000000000000000101 : values(9) = 0.0
|
|
values(10) = fn sqrt(2) * fn sqrt(2) : values(11) = 2.0
|
|
values(12) = -fn sqrt(2) * fn sqrt(2) : values(13) = -2.0
|
|
values(14) = 3.14159265358979323846 : values(15) = 3.14159265358979324
|
|
|
|
for i = 0 to 14 step 2
|
|
print values(i)@", "values(i+1)@" "fn DoublesAreApproxEqual( values(i), values(i+1), epsilon )
|
|
next
|
|
end fn
|
|
|
|
fn DoIt
|
|
|
|
HandleEvents
|