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