[fpc-pascal] default parameter single = NaN

Jonas Maebe jonas.maebe at elis.ugent.be
Mon Jun 20 23:43:41 CEST 2016


On 20/06/16 22:59, David Emerson wrote:
> Error: function header doesn't match the previous declaration
>
> for a (non-method) function that does exactly match its previous
> declaration:
>
> function make_scale_matrix (zx:single; zy:single=NaN):t_2d_affine;
>
> I use "NaN" extensively to indicate a null / not specified value, so it
> would really be a drag to lose this feature. Although the header exactly
> matches the previous declaration, it now objects to these NaN default
> parameters.

It's probably due to a peciularity of the "NaN" value itself: if you ask 
a floating point unit to compare NaN with NaN, the returned result must 
always be "not equal" even though the bit patterns match exactly. To fix 
this, the compiler will have to compare the bit patterns of floating 
point default parameters rather than their values as floating point numbers.

Please file a bug report.


Jonas



More information about the fpc-pascal mailing list