| 1 | #include "complex_impl.h" |
| 2 | |
| 3 | // FIXME |
| 4 | |
| 5 | /* asin(z) = -i log(i z + sqrt(1 - z*z)) */ |
| 6 | |
| 7 | double complex casin(double complex z) |
| 8 | { |
| 9 | 	double complex w; |
| 10 | 	double x, y; |
| 11 | |
| 12 | 	x = creal(z); |
| 13 | 	y = cimag(z); |
| 14 | 	w = CMPLX(1.0 - (x - y)*(x + y), -2.0*x*y); |
| 15 | 	double complex r = clog(CMPLX(-y, x) + csqrt(w)); |
| 16 | 	return CMPLX(cimag(r), -creal(r)); |
| 17 | } |