Autor: Arndt Lindner (---.dip0.t-ipconnect.de)
Datum: 30.09.19 19:24
Hallo Roland,
die Funktion Nearly(N1, N2, N3) funktioniert nicht in allen Fällen. Wenn es große Differenzen bei N1 und N2 gibt und N3 ebenfalls groß ist stürtzt das Programm ab (Ungültige Gleitkommaoperation).
Behelfsmäßig nutze ich die selbstgeschriebene Funktion Nearly1() (siehe Beispielcode). Das sollte bei einem zukünftigen Patch behoben werden.
proc nearly1
parameters double a,b,n
return abs(a-b) < 10^-n
endproc
declare double x,y
cls
x = 1e-11
y = 0
print format$("%e",x),format$("%e",y),format$("%e",x-y)
print nearly1(x,y,10)
print nearly(x,y,10)
y = 1e+10
print format$("%e",x),format$("%e",y),format$("%e",x-y)
print nearly1(x,y,10)
print nearly(x,y,10)
waitinput
end
Viele Grüße,
Arndt
|
|