diff options
Diffstat (limited to 'lib/libm/casinl.c')
| -rw-r--r-- | lib/libm/casinl.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/libm/casinl.c b/lib/libm/casinl.c new file mode 100644 index 00000000..45c19582 --- /dev/null +++ b/lib/libm/casinl.c @@ -0,0 +1,21 @@ +#include <complex.h> + +long double complex casinl(long double complex z) +{ + long double complex ca, ct, zz, z2; + long double x, y; + + x = creall(z); + y = cimagl(z); + ca = x + y * I; + ct = ca * I; + zz = (x - y) * (x + y) + (2.0L * x * y) * I; + + zz = 1.0L - creall(zz) - cimagl(zz) * I; + z2 = csqrtl(zz); + + zz = ct + z2; + zz = clogl(zz); + + return zz * (-1.0L * I); +} |
