1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 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); }