diff options
Diffstat (limited to 'lib/libm/casin.c')
| -rw-r--r-- | lib/libm/casin.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/libm/casin.c b/lib/libm/casin.c new file mode 100644 index 00000000..e23cdd15 --- /dev/null +++ b/lib/libm/casin.c @@ -0,0 +1,23 @@ +#include <complex.h> + +double complex casin(double complex z) +{ + double complex ca, ct, zz, z2; + double x, y; + + x = creal(z); + y = cimag(z); + + ca = x + y * I; + ct = ca * I; + + zz = (x - y) * (x + y) + (2.0 * x * y) * I; + + zz = 1.0 - creal(zz) - cimag(zz) * I; + z2 = csqrt(zz); + + zz = ct + z2; + zz = clog(zz); + + return zz * (-1.0 * I); +} |
