I need to find min and max values in an array (not taking into for possible NaN values in this array).
This would be easy only working with double
, but these FindMin and FindMax functions have to work with generics types.
I have tried to test for generic NaNs in this way:
bool isNaN<T>(T value) where T : IEquatable<T>
{
return !value.Equals(value);
}
but Equals
is returning true
for double.NaN
??!!
I have a workaround like this for now:
bool isNaN<T>(T value) where T : IEquatable<T>
{
var d = value as double?;
if (d.HasValue) { return double.IsNaN(d.Value); }
return !value.Equals(value);
}
My question is more about understanding why first solution did not work, is this a bug ?
You can find small test code here