complex: add C11 CMPLX macros and replace cpack with them
This commit is contained in:
parent
e2fe959fe2
commit
cfbaba79a2
47 changed files with 152 additions and 156 deletions
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue