1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21: #include <complex.h>
22: #include <math.h>
23:
24:
25: __complex__ double
26: __casin (__complex__ double x)
27: {
28: __complex__ double res;
29:
30: if (isnan (__real__ x) || isnan (__imag__ x))
31: {
32: if (__real__ x == 0.0)
33: {
34: res = x;
35: }
36: else if (__isinf (__real__ x) || __isinf (__imag__ x))
37: {
38: __real__ res = __nan ("");
39: __imag__ res = __copysign (HUGE_VAL, __imag__ x);
40: }
41: else
42: {
43: __real__ res = __nan ("");
44: __imag__ res = __nan ("");
45: }
46: }
47: else
48: {
49: __complex__ double y;
50:
51: __real__ y = -__imag__ x;
52: __imag__ y = __real__ x;
53:
54: y = __casinh (y);
55:
56: __real__ res = __imag__ y;
57: __imag__ res = -__real__ y;
58: }
59:
60: return res;
61: }
62: weak_alias (__casin, casin)
63: #ifdef NO_LONG_DOUBLE
64: strong_alias (__casin, __casinl)
65: weak_alias (__casin, casinl)
66: #endif