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
commit cfbaba79a2
47 changed files with 152 additions and 156 deletions

View file

@ -43,12 +43,12 @@ float complex csqrtf(float complex z)
/* Handle special cases. */
if (z == 0)
return cpackf(0, b);
return CMPLXF(0, b);
if (isinf(b))
return cpackf(INFINITY, b);
return CMPLXF(INFINITY, b);
if (isnan(a)) {
t = (b - b) / (b - b); /* raise invalid if b is not a NaN */
return cpackf(a, t); /* return NaN + NaN i */
return CMPLXF(a, t); /* return NaN + NaN i */
}
if (isinf(a)) {
/*
@ -58,9 +58,9 @@ float complex csqrtf(float complex z)
* csqrtf(-inf + y i) = 0 + inf i
*/
if (signbit(a))
return cpackf(fabsf(b - b), copysignf(a, b));
return CMPLXF(fabsf(b - b), copysignf(a, b));
else
return cpackf(a, copysignf(b - b, b));
return CMPLXF(a, copysignf(b - b, b));
}
/*
* The remaining special case (b is NaN) is handled just fine by
@ -74,9 +74,9 @@ float complex csqrtf(float complex z)
*/
if (a >= 0) {
t = sqrt((a + hypot(a, b)) * 0.5);
return cpackf(t, b / (2.0 * t));
return CMPLXF(t, b / (2.0 * t));
} else {
t = sqrt((-a + hypot(a, b)) * 0.5);
return cpackf(fabsf(b) / (2.0 * t), copysignf(t, b));
return CMPLXF(fabsf(b) / (2.0 * t), copysignf(t, b));
}
}