On 26 Nov 2010, at 09:48, Birger Jansen wrote:
I encounter a strange difference in the behaviour of NaN values
between windows 32 and 64 bit. Have a look at the following program:
-----------------------
program NanExample;
uses
math;
var
a, b, c: Double;
begin
a := 0.0/0.0;
b := 0.0/0.0;
c := max(a,b);
if IsNan(c) then
WriteLn('NaN');
end.
-----------------------
On 32 bit this writes 'NaN' as expected. On 64 bit I get an SIGFPE
exception on the max-function. Is there some specific compiler
setting that I should be aware of to make this work on 64 bit?
It should cause an exception everywhere by default (it does on PowerPC
32 bit). You have to use math.setexceptionmask if you want to mask
exceptions for invalid floating point operations: http://www.freepascal.org/docs-html/rtl/math/setexceptionmask.html
Jonas
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal