Hi Piotr, Thank you very much for pointing out the problems. And about float CDECL MSVCRT__copysignf( float num, float sign )
{ - /* FIXME: Behaviour for Nan/Inf? */ - if (sign < 0.0) - return num < 0.0 ? num : -num; - return num < 0.0 ? -num : num; + /* FIXME: Behaviour for signbit(NAN) is different in Linux and + * Windows, where Windows gives a zero for -NAN + */ + if (signbit(sign)) + return signbit(num) ? num : -num; + return signbit(num) ? -num : num;
It doesn't make sense to add this comment and remove it in next patch. I would also prefer if signbit fallback implementation is changed in this patch.
I removed the comments now because I thought this is already fixed... I've combined the changes and sent two patches. Thanks again :) Regards, Zheng