summaryrefslogtreecommitdiff
path: root/lib/libm/casinl.c
blob: 07061cc45ab6d748f3b9f0d2c21c68d850a8e19d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <complex.h> // for I, cimagl, creall, complex, casinl, clogl, csqrtl

long double complex casinl(long double complex z)
{
	long double complex ca, ct, zz, z2;
	long double x, y;

	x = creall(z);
	y = cimagl(z);
	ca = x + y * I;
	ct = ca * I;
	zz = (x - y) * (x + y) + (2.0L * x * y) * I;

	zz = 1.0L - creall(zz) - cimagl(zz) * I;
	z2 = csqrtl(zz);

	zz = ct + z2;
	zz = clogl(zz);

	return zz * (-1.0L * I);
}