/* 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)) {
/*
* 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
*/
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));
}
}