OSDN Git Service

* c99_protos.h: Add prototypes for C99 complex functions.
[pf3gnuchains/gcc-fork.git] / libgfortran / c99_protos.h
1 /* Declarations of various C99 functions 
2    Copyright (C) 2004 Free Software Foundation, Inc.
3
4 This file is part of the GNU Fortran 95 runtime library (libgfortran).
5
6 Libgfortran is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 Libgfortran is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with libgfortran; see the file COPYING.LIB.  If not,
18 write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA.  */
20
21 /* As a special exception, if you link this library with other files,
22    some of which are compiled with GCC, to produce an executable,
23    this library does not by itself cause the resulting executable
24    to be covered by the GNU General Public License.
25    This exception does not however invalidate any other reasons why
26    the executable file might be covered by the GNU General Public License.  */
27
28
29 #ifndef C99_PROTOS_H
30 #define C99_PROTOS_H
31
32 /* float variants of libm functions */
33 #ifndef HAVE_ACOSF
34 extern float acosf(float);
35 #endif
36
37 #ifndef HAVE_ACOSHF
38 extern float acoshf(float);
39 #endif
40
41 #ifndef HAVE_ASINF
42 extern float asinf(float);
43 #endif
44
45 #ifndef HAVE_ASINHF
46 extern float asinhf(float);
47 #endif
48
49 #ifndef HAVE_ATAN2F
50 extern float atan2f(float, float);
51 #endif
52
53 #ifndef HAVE_ATANF
54 extern float atanf(float);
55 #endif
56
57 #ifndef HAVE_ATANHF
58 extern float atanhf(float);
59 #endif
60
61 #ifndef HAVE_CEILF
62 extern float ceilf(float);
63 #endif
64
65 #ifndef HAVE_COPYSIGNF
66 extern float copysignf(float, float);
67 #endif
68
69 #ifndef HAVE_COSF
70 extern float cosf(float);
71 #endif
72
73 #ifndef HAVE_COSHF
74 extern float coshf(float);
75 #endif
76
77 #ifndef HAVE_EXPF
78 extern float expf(float);
79 #endif
80
81 #ifndef HAVE_FABSF
82 extern float fabsf(float);
83 #endif
84
85 #ifndef HAVE_FLOORF
86 extern float floorf(float);
87 #endif
88
89 #ifndef HAVE_FREXPF
90 extern float frexpf(float, int *);
91 #endif
92
93 #ifndef HAVE_HYPOTF
94 extern float hypotf(float, float);
95 #endif
96
97 #ifndef HAVE_LOGF
98 extern float logf(float);
99 #endif
100
101 #ifndef HAVE_LOG10F
102 extern float log10f(float);
103 #endif
104
105 #ifndef HAVE_SCALBN
106 extern double scalbn(double, int);
107 #endif
108
109 #ifndef HAVE_SCALBNF
110 extern float scalbnf(float, int);
111 #endif
112
113 #ifndef HAVE_SINF
114 extern float sinf(float);
115 #endif
116
117 #ifndef HAVE_SINHF
118 extern float sinhf(float);
119 #endif
120
121 #ifndef HAVE_SQRTF
122 extern float sqrtf(float);
123 #endif
124
125 #ifndef HAVE_TANF
126 extern float tanf(float);
127 #endif
128
129 #ifndef HAVE_TANHF
130 extern float tanhf(float);
131 #endif
132
133 #ifndef HAVE_TRUNC
134 extern double trunc(double);
135 #endif
136
137 #ifndef HAVE_TRUNCF
138 extern float truncf(float);
139 #endif
140
141 #ifndef HAVE_NEXTAFTERF
142 extern float nextafterf(float, float);
143 #endif
144
145 #ifndef HAVE_POWF
146 extern float powf(float, float);
147 #endif
148
149 #ifndef HAVE_ROUND
150 extern double round(double);
151 #endif
152
153 #ifndef HAVE_ROUNDF
154 extern float roundf(float);
155 #endif
156
157
158 /* log10l is needed on all platforms for decimal I/O */
159 #ifndef HAVE_LOG10L
160 #define HAVE_LOG10L
161 extern long double log10l(long double);
162 #endif
163
164
165 /* complex math functions */
166
167 #if !defined(HAVE_CABSF)
168 #define HAVE_CABSF
169 extern float cabsf (float complex);
170 #endif
171
172 #if !defined(HAVE_CABS)
173 #define HAVE_CABS
174 extern double cabs (double complex);
175 #endif
176
177 #if !defined(HAVE_CABSL) && defined(HAVE_HYPOTL)
178 #define HAVE_CABSL
179 extern long double cabsl (long double complex);
180 #endif
181
182
183 #if !defined(HAVE_CARGF)
184 #define HAVE_CARGF
185 extern float cargf (float complex);
186 #endif
187
188 #if !defined(HAVE_CARG)
189 #define HAVE_CARG
190 extern double carg (double complex);
191 #endif
192
193 #if !defined(HAVE_CARGL) && defined(HAVE_ATAN2L)
194 #define HAVE_CARGL
195 extern long double cargl (long double complex);
196 #endif
197
198
199 #if !defined(HAVE_CEXPF)
200 #define HAVE_CEXPF
201 extern float complex cexpf (float complex);
202 #endif
203
204 #if !defined(HAVE_CEXP)
205 #define HAVE_CEXP
206 extern double complex cexp (double complex);
207 #endif
208
209 #if !defined(HAVE_CEXPL) && defined(HAVE_COSL) && defined(HAVE_SINL) && defined(EXPL)
210 #define HAVE_CEXPL
211 extern long double complex cexpl (long double complex);
212 #endif
213
214
215 #if !defined(HAVE_CLOGF)
216 #define HAVE_CLOGF
217 extern float complex clogf (float complex);
218 #endif
219
220 #if !defined(HAVE_CLOG)
221 #define HAVE_CLOG
222 extern double complex clog (double complex);
223 #endif
224
225 #if !defined(HAVE_CLOGL) && defined(HAVE_LOGL) && defined(HAVE_CABSL) && defined(HAVE_CARGL)
226 #define HAVE_CLOGL
227 extern long double complex clogl (long double complex);
228 #endif
229
230
231 #if !defined(HAVE_CLOG10F)
232 #define HAVE_CLOG10F
233 extern float complex clog10f (float complex);
234 #endif
235
236 #if !defined(HAVE_CLOG10)
237 #define HAVE_CLOG10
238 extern double complex clog10 (double complex);
239 #endif
240
241 #if !defined(HAVE_CLOG10L) && defined(HAVE_LOG10L) && defined(HAVE_CABSL) && defined(HAVE_CARGL)
242 #define HAVE_CLOG10L
243 extern long double complex clog10l (long double complex);
244 #endif
245
246
247 #if !defined(HAVE_CPOWF)
248 #define HAVE_CPOWF
249 extern float complex cpowf (float complex, float complex);
250 #endif
251
252 #if !defined(HAVE_CPOW)
253 #define HAVE_CPOW
254 extern double complex cpow (double complex, double complex);
255 #endif
256
257 #if !defined(HAVE_CPOWL) && defined(HAVE_CEXPL) && defined(HAVE_CLOGL)
258 #define HAVE_CPOWL
259 extern long double complex cpowl (long double complex, long double complex);
260 #endif
261
262
263 #if !defined(HAVE_CSQRTF)
264 #define HAVE_CSQRTF
265 extern float complex csqrtf (float complex);
266 #endif
267
268 #if !defined(HAVE_CSQRT)
269 #define HAVE_CSQRT
270 extern double complex csqrt (double complex);
271 #endif
272
273 #if !defined(HAVE_CSQRTL) && defined(HAVE_COPYSIGNL) && defined(HAVE_SQRTL) && defined(HAVE_FABSL) && defined(HAVE_HYPOTL)
274 #define HAVE_CSQRTL
275 extern long double complex csqrtl (long double complex);
276 #endif
277
278
279 #if !defined(HAVE_CSINHF)
280 #define HAVE_CSINHF
281 extern float complex csinhf (float complex);
282 #endif
283
284 #if !defined(HAVE_CSINH)
285 #define HAVE_CSINH
286 extern double complex csinh (double complex);
287 #endif
288
289 #if !defined(HAVE_CSINHL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
290 #define HAVE_CSINHL
291 extern long double complex csinhl (long double complex);
292 #endif
293
294
295 #if !defined(HAVE_CCOSHF)
296 #define HAVE_CCOSHF
297 extern float complex ccoshf (float complex);
298 #endif
299
300 #if !defined(HAVE_CCOSH)
301 #define HAVE_CCOSH
302 extern double complex ccosh (double complex);
303 #endif
304
305 #if !defined(HAVE_CCOSHL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
306 #define HAVE_CCOSHL
307 extern long double complex ccoshl (long double complex);
308 #endif
309
310
311 #if !defined(HAVE_CTANHF)
312 #define HAVE_CTANHF
313 extern float complex ctanhf (float complex);
314 #endif
315
316 #if !defined(HAVE_CTANH)
317 #define HAVE_CTANH
318 extern double complex ctanh (double complex);
319 #endif
320
321 #if !defined(HAVE_CTANHL) && defined(HAVE_TANL) && defined(HAVE_TANHL)
322 #define HAVE_CTANHL
323 extern long double complex ctanhl (long double complex);
324 #endif
325
326
327 #if !defined(HAVE_CSINF)
328 #define HAVE_CSINF
329 extern float complex csinf (float complex);
330 #endif
331
332 #if !defined(HAVE_CSIN)
333 #define HAVE_CSIN
334 extern double complex csin (double complex);
335 #endif
336
337 #if !defined(HAVE_CSINL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
338 #define HAVE_CSINL
339 extern long double complex csinl (long double complex);
340 #endif
341
342
343 #if !defined(HAVE_CCOSF)
344 #define HAVE_CCOSF
345 extern float complex ccosf (float complex);
346 #endif
347
348 #if !defined(HAVE_CCOS)
349 #define HAVE_CCOS
350 extern double complex ccos (double complex);
351 #endif
352
353 #if !defined(HAVE_CCOSL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
354 #define HAVE_CCOSL
355 extern long double complex ccosl (long double complex);
356 #endif
357
358
359 #if !defined(HAVE_CTANF)
360 #define HAVE_CTANF
361 extern float complex ctanf (float complex);
362 #endif
363
364 #if !defined(HAVE_CTAN)
365 #define HAVE_CTAN
366 extern double complex ctan (double complex);
367 #endif
368
369 #if !defined(HAVE_CTANL) && defined(HAVE_TANL) && defined(HAVE_TANHL)
370 #define HAVE_CTANL
371 extern long double complex ctanl (long double complex);
372 #endif
373
374
375 #endif  /* C99_PROTOS_H  */
376