complex: add C11 CMPLX macros and replace cpack with them

This commit is contained in:
Szabolcs Nagy
2012-11-13 01:31:49 +01:00
parent e2fe959fe2
commit cfbaba79a2
47 changed files with 152 additions and 156 deletions

View File

@ -44,22 +44,22 @@ double complex cexp(double complex z)
/* cexp(x + I 0) = exp(x) + I 0 */
if ((hy | ly) == 0)
return cpack(exp(x), y);
return CMPLX(exp(x), y);
EXTRACT_WORDS(hx, lx, x);
/* cexp(0 + I y) = cos(y) + I sin(y) */
if (((hx & 0x7fffffff) | lx) == 0)
return cpack(cos(y), sin(y));
return CMPLX(cos(y), sin(y));
if (hy >= 0x7ff00000) {
if (lx != 0 || (hx & 0x7fffffff) != 0x7ff00000) {
/* cexp(finite|NaN +- I Inf|NaN) = NaN + I NaN */
return cpack(y - y, y - y);
return CMPLX(y - y, y - y);
} else if (hx & 0x80000000) {
/* cexp(-Inf +- I Inf|NaN) = 0 + I 0 */
return cpack(0.0, 0.0);
return CMPLX(0.0, 0.0);
} else {
/* cexp(+Inf +- I Inf|NaN) = Inf + I NaN */
return cpack(x, y - y);
return CMPLX(x, y - y);
}
}
@ -78,6 +78,6 @@ double complex cexp(double complex z)
* - x = NaN (spurious inexact exception from y)
*/
exp_x = exp(x);
return cpack(exp_x * cos(y), exp_x * sin(y));
return CMPLX(exp_x * cos(y), exp_x * sin(y));
}
}