xref: /aosp_15_r20/external/musl/src/complex/casinl.c (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #include "complex_impl.h"
2*c9945492SAndroid Build Coastguard Worker 
3*c9945492SAndroid Build Coastguard Worker #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
casinl(long double complex z)4*c9945492SAndroid Build Coastguard Worker long double complex casinl(long double complex z)
5*c9945492SAndroid Build Coastguard Worker {
6*c9945492SAndroid Build Coastguard Worker 	return casin(z);
7*c9945492SAndroid Build Coastguard Worker }
8*c9945492SAndroid Build Coastguard Worker #else
9*c9945492SAndroid Build Coastguard Worker // FIXME
casinl(long double complex z)10*c9945492SAndroid Build Coastguard Worker long double complex casinl(long double complex z)
11*c9945492SAndroid Build Coastguard Worker {
12*c9945492SAndroid Build Coastguard Worker 	long double complex w;
13*c9945492SAndroid Build Coastguard Worker 	long double x, y;
14*c9945492SAndroid Build Coastguard Worker 
15*c9945492SAndroid Build Coastguard Worker 	x = creall(z);
16*c9945492SAndroid Build Coastguard Worker 	y = cimagl(z);
17*c9945492SAndroid Build Coastguard Worker 	w = CMPLXL(1.0 - (x - y)*(x + y), -2.0*x*y);
18*c9945492SAndroid Build Coastguard Worker 	long double complex r = clogl(CMPLXL(-y, x) + csqrtl(w));
19*c9945492SAndroid Build Coastguard Worker 	return CMPLXL(cimagl(r), -creall(r));
20*c9945492SAndroid Build Coastguard Worker }
21*c9945492SAndroid Build Coastguard Worker #endif
22