summaryrefslogtreecommitdiff
path: root/lib/libm/casinf.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libm/casinf.c')
-rw-r--r--lib/libm/casinf.c21
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);
+}