Hi,
On 03/22/15 12:28, 陈正 wrote:
- Fixed the problem of atan(INF)/tanh(INF)/exp(INF) causing errno EDOM
- Fixed the error of _copysign(1., -0.) returning 1
Please don't send unrelated changes in one patch, please split it into 2 patches.
The changes that remove errno setting from atan, tanh and exp looks good for me.
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; }
Why don't you add an isnan() check? Is there any reason for returning "signbit(num) ? -num : num" instead of returning num?
It would be nice to also change signbit definition on systems that doesn't support it, so it at least works for normal numbers.
Thanks, Piotr