1 /* $NetBSD: complex.h,v 1.3 2010/09/15 16:11:30 christos Exp $ */
2 
3 /*
4  * Copyright (c) 2010 Matthias Drochner.
5  * Public domain.
6  */
7 
8 #ifndef	_COMPLEX_H
9 #define	_COMPLEX_H
10 
11 #define complex _Complex
12 #define _Complex_I 1.0fi
13 #define I _Complex_I
14 
15 #include <sys/cdefs.h>
16 #include <ieeefp.h>
17 
18 __BEGIN_DECLS
19 
20 /* 7.3.5 Trigonometric functions */
21 /* 7.3.5.1 The cacos functions */
22 double complex cacos(double complex);
23 float complex cacosf(float complex);
24 
25 /* 7.3.5.2 The casin functions */
26 double complex casin(double complex);
27 float complex casinf(float complex);
28 
29 /* 7.3.5.1 The catan functions */
30 double complex catan(double complex);
31 float complex catanf(float complex);
32 
33 /* 7.3.5.1 The ccos functions */
34 double complex ccos(double complex);
35 float complex ccosf(float complex);
36 
37 /* 7.3.5.1 The csin functions */
38 double complex csin(double complex);
39 float complex csinf(float complex);
40 
41 /* 7.3.5.1 The ctan functions */
42 double complex ctan(double complex);
43 float complex ctanf(float complex);
44 
45 /* 7.3.6 Hyperbolic functions */
46 /* 7.3.6.1 The cacosh functions */
47 double complex cacosh(double complex);
48 float complex cacoshf(float complex);
49 
50 /* 7.3.6.2 The casinh functions */
51 double complex casinh(double complex);
52 float complex casinhf(float complex);
53 
54 /* 7.3.6.3 The catanh functions */
55 double complex catanh(double complex);
56 float complex catanhf(float complex);
57 
58 /* 7.3.6.4 The ccosh functions */
59 double complex ccosh(double complex);
60 float complex ccoshf(float complex);
61 
62 /* 7.3.6.5 The csinh functions */
63 double complex csinh(double complex);
64 float complex csinhf(float complex);
65 
66 /* 7.3.6.6 The ctanh functions */
67 double complex ctanh(double complex);
68 float complex ctanhf(float complex);
69 
70 /* 7.3.7 Exponential and logarithmic functions */
71 /* 7.3.7.1 The cexp functions */
72 double complex cexp(double complex);
73 float complex cexpf(float complex);
74 
75 /* 7.3.7.2 The clog functions */
76 double complex clog(double complex);
77 float complex clogf(float complex);
78 
79 /* 7.3.8 Power and absolute-value functions */
80 /* 7.3.8.1 The cabs functions */
81 double cabs(double complex);
82 float cabsf(float complex);
83 
84 /* 7.3.8.2 The cpow functions */
85 double complex cpow(double complex, double complex);
86 float complex cpowf(float complex, float complex);
87 
88 /* 7.3.8.3 The csqrt functions */
89 double complex csqrt(double complex);
90 float complex csqrtf(float complex);
91 
92 /* 7.3.9 Manipulation functions */
93 /* 7.3.9.1 The carg functions */
94 double carg(double complex);
95 float cargf(float complex);
96 
97 /* 7.3.9.2 The cimag functions */
98 double cimag(double complex);
99 float cimagf(float complex);
100 
101 /* 7.3.9.3 The conj functions */
102 double complex conj(double complex);
103 float complex conjf(float complex);
104 
105 /* 7.3.9.4 The cproj functions */
106 double complex cproj(double complex);
107 float complex cprojf(float complex);
108 
109 /* 7.3.9.5 The creal functions */
110 double creal(double complex);
111 float crealf(float complex);
112 
113 #if __ISO_C_VISIBLE >= 2011
114 #ifdef _HAVE_BUILTIN_COMPLEX
115 #define CMPLX(r,i) __builtin_complex(r,i)
116 #define CMPLXF(r,i) __builtin_complex(r,i)
117 #define CMPLXL(r,i) __builtin_complex(r,i)
118 #else
119 #define CMPLX(r,i) ((double complex) ((double) (r) + (double complex) I * (double) (i)))
120 #define CMPLXF(r,i) ((float complex) ((float) (r) + (float complex) I * (float) (i)))
121 #define CMPLXL(r,i) ((long double complex) ((long double) (r) + (long double complex) I * (long double) (i)))
122 #endif
123 #endif
124 
125 #if __GNU_VISIBLE
126 double complex clog10(double complex);
127 float complex clog10f(float complex);
128 #endif
129 
130 #ifdef _HAVE_LONG_DOUBLE
131 long double complex csqrtl(long double complex);
132 long double cabsl(long double complex) ;
133 long double complex cprojl(long double complex);
134 long double creall(long double complex);
135 long double complex conjl(long double complex);
136 long double cimagl(long double complex);
137 
138 #ifdef _HAVE_LONG_DOUBLE_MATH
139 long double cargl(long double complex);
140 long double complex casinl(long double complex);
141 long double complex cacosl(long double complex);
142 long double complex catanl(long double complex);
143 long double complex ccosl(long double complex);
144 long double complex csinl(long double complex);
145 long double complex ctanl(long double complex);
146 long double complex cacoshl(long double complex);
147 long double complex casinhl(long double complex);
148 long double complex catanhl(long double complex);
149 long double complex ccoshl(long double complex);
150 long double complex csinhl(long double complex);
151 long double complex ctanhl(long double complex);
152 long double complex cexpl(long double complex);
153 long double complex clogl(long double complex);
154 long double complex cpowl(long double complex, long double complex);
155 #if __GNU_VISIBLE
156 long double complex clog10l(long double complex);
157 #endif
158 #endif /* _HAVE_LONG_DOUBLE_MATH */
159 
160 #endif /* _HAVE_LONG_DOUBLE */
161 
162 __END_DECLS
163 
164 #endif	/* ! _COMPLEX_H */
165