[fpc-pascal] Nan values SIGFPE exception on 64 bit
Jonas Maebe
jonas.maebe at elis.ugent.be
Fri Nov 26 10:32:52 CET 2010
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
More information about the fpc-pascal
mailing list