On 20/06/18 21:58, Florian Klämpfl wrote:
Am 19.06.2018 um 23:50 schrieb James Richters:
I’ve been updating my old programs to use the MATH unit in freepascal
and while testing things I came across a runtime error 217 Invalid
floating point operation. Here is my test program
Uses math;
var
variable1:double;
variable2:double;
Begin
variable1:= Infinity;
variable2:= -1*Infinity;
Writeln(variable1,' ',Variable2,' ',Variable1+Variable2);
End.
My output is:
Running "i:\programming\test\testmath.exe "
An unhandled exception occurred at $004015F6:
EInvalidOp: Invalid floating point operation
$004015F6 main, line 8 of i:/programming/test/testmath.pas
+Inf -Inf
According to the link here: https://en.wikipedia.org/wiki/NaN
NaN should be produced:
No. The invalid operation is not masked by default. If you do so, FPC
just write Nan.
My initial testing indicates that, even with exceptions masked, the
exception was raised: (or am I using the wrong routine?)
Uses math;
var
variable1:double;
variable2:double;
Begin
SetExceptionMask([exDenormalized,exZeroDivide,exOverflow,exUnderflow,exPrecision]);
variable1:= Infinity;
variable2:= -1*Infinity;
Writeln(variable1,' ',Variable2,' ',Variable1+Variable2);
end.
./t
An unhandled exception occurred at $00000000004002A1:
EDivByZero: Division by zero
$00000000004002A1 main, line 9 of t.pas
+Inf -Inf
Colin
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal