diff options
Diffstat (limited to 'lib/libm/casinf.c')
| -rw-r--r-- | lib/libm/casinf.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/libm/casinf.c b/lib/libm/casinf.c new file mode 100644 index 00000000..b0887029 --- /dev/null +++ b/lib/libm/casinf.c @@ -0,0 +1,21 @@ +#include <complex.h> + +float complex casinf(float complex z) +{ + float complex ca, ct, zz, z2; + float x, y; + + x = crealf(z); + y = cimagf(z); + ca = x + y * I; + ct = ca * I; + zz = (x - y) * (x + y) + (2.0f * x * y) * I; + + zz = 1.0f - crealf(zz) - cimagf(zz) * I; + z2 = csqrtf(zz); + + zz = ct + z2; + zz = clogf(zz); + + return zz * (-1.0f * I); +} |
