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

Reply via email to