[PATCH] Fix cexp when both real and imaginary parts of x are non-finite

Joseph S. Myers joseph@codesourcery.com
Tue Jul 31 22:07:00 GMT 2012


On Tue, 31 Jul 2012, Mark H Weaver wrote:

> The default implementations of cexp, cexpf, and cexpl are broken when
> the real part of x is infinite and the imaginary part is non-finite
> (infinite or NaN).
> 
> In these cases, the complex phase of the result is indeterminate, and
> thus the only two sensible results are 0.0 + i*0.0 (when the real part
> of x is negative infinity) or NaN + i*NaN in all other cases.

I believe the present results are in accordance with what C99 and C11 
(Annex G) specify (which includes that certain signs in the result are 
unspecified), and that the testcases in libm-test.inc properly verify the 
C99 specifications (hence for example using IGNORE_ZERO_INF_SIGN in 
certain cases).  I'd have expected your patch to fail testing.

-- 
Joseph S. Myers
joseph@codesourcery.com



More information about the Libc-alpha mailing list