[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