re PR libfortran/24432 (Missing symbols)
[gcc.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 #define HAVE_ACOSF
35 extern float acosf(float);
36 #endif
37
38 #ifndef HAVE_ACOSHF
39 #define HAVE_ACOSHF
40 extern float acoshf(float);
41 #endif
42
43 #ifndef HAVE_ASINF
44 #define HAVE_ASINF
45 extern float asinf(float);
46 #endif
47
48 #ifndef HAVE_ASINHF
49 #define HAVE_ASINHF
50 extern float asinhf(float);
51 #endif
52
53 #ifndef HAVE_ATAN2F
54 #define HAVE_ATAN2F
55 extern float atan2f(float, float);
56 #endif
57
58 #ifndef HAVE_ATANF
59 #define HAVE_ATANF
60 extern float atanf(float);
61 #endif
62
63 #ifndef HAVE_ATANHF
64 #define HAVE_ATANHF
65 extern float atanhf(float);
66 #endif
67
68 #ifndef HAVE_CEILF
69 #define HAVE_CEILF
70 extern float ceilf(float);
71 #endif
72
73 #ifndef HAVE_COPYSIGNF
74 #define HAVE_COPYSIGNF
75 extern float copysignf(float, float);
76 #endif
77
78 #ifndef HAVE_COSF
79 #define HAVE_COSF
80 extern float cosf(float);
81 #endif
82
83 #ifndef HAVE_COSHF
84 #define HAVE_COSHF
85 extern float coshf(float);
86 #endif
87
88 #ifndef HAVE_EXPF
89 #define HAVE_EXPF
90 extern float expf(float);
91 #endif
92
93 #ifndef HAVE_FABSF
94 #define HAVE_FABSF
95 extern float fabsf(float);
96 #endif
97
98 #ifndef HAVE_FLOORF
99 #define HAVE_FLOORF
100 extern float floorf(float);
101 #endif
102
103 #ifndef HAVE_FREXPF
104 #define HAVE_FREXPF
105 extern float frexpf(float, int *);
106 #endif
107
108 #ifndef HAVE_HYPOTF
109 #define HAVE_HYPOTF
110 extern float hypotf(float, float);
111 #endif
112
113 #ifndef HAVE_LOGF
114 #define HAVE_LOGF
115 extern float logf(float);
116 #endif
117
118 #ifndef HAVE_LOG10F
119 #define HAVE_LOG10F
120 extern float log10f(float);
121 #endif
122
123 #ifndef HAVE_SCALBN
124 #define HAVE_SCALBN
125 extern double scalbn(double, int);
126 #endif
127
128 #ifndef HAVE_SCALBNF
129 #define HAVE_SCALBNF
130 extern float scalbnf(float, int);
131 #endif
132
133 #ifndef HAVE_SINF
134 #define HAVE_SINF
135 extern float sinf(float);
136 #endif
137
138 #ifndef HAVE_SINHF
139 #define HAVE_SINHF
140 extern float sinhf(float);
141 #endif
142
143 #ifndef HAVE_SQRTF
144 #define HAVE_SQRTF
145 extern float sqrtf(float);
146 #endif
147
148 #ifndef HAVE_TANF
149 #define HAVE_TANF
150 extern float tanf(float);
151 #endif
152
153 #ifndef HAVE_TANHF
154 #define HAVE_TANHF
155 extern float tanhf(float);
156 #endif
157
158 #ifndef HAVE_TRUNC
159 #define HAVE_TRUNC
160 extern double trunc(double);
161 #endif
162
163 #ifndef HAVE_TRUNCF
164 #define HAVE_TRUNCF
165 extern float truncf(float);
166 #endif
167
168 #ifndef HAVE_NEXTAFTERF
169 #define HAVE_NEXTAFTERF
170 extern float nextafterf(float, float);
171 #endif
172
173 #ifndef HAVE_POWF
174 #define HAVE_POWF
175 extern float powf(float, float);
176 #endif
177
178 #ifndef HAVE_ROUND
179 #define HAVE_ROUND
180 extern double round(double);
181 #endif
182
183 #ifndef HAVE_ROUNDF
184 #define HAVE_ROUNDF
185 extern float roundf(float);
186 #endif
187
188
189 /* log10l is needed on all platforms for decimal I/O */
190 #ifndef HAVE_LOG10L
191 #define HAVE_LOG10L
192 extern long double log10l(long double);
193 #endif
194
195
196 /* complex math functions */
197
198 #if !defined(HAVE_CABSF)
199 #define HAVE_CABSF
200 extern float cabsf (float complex);
201 #endif
202
203 #if !defined(HAVE_CABS)
204 #define HAVE_CABS
205 extern double cabs (double complex);
206 #endif
207
208 #if !defined(HAVE_CABSL) && defined(HAVE_HYPOTL)
209 #define HAVE_CABSL
210 extern long double cabsl (long double complex);
211 #endif
212
213
214 #if !defined(HAVE_CARGF)
215 #define HAVE_CARGF
216 extern float cargf (float complex);
217 #endif
218
219 #if !defined(HAVE_CARG)
220 #define HAVE_CARG
221 extern double carg (double complex);
222 #endif
223
224 #if !defined(HAVE_CARGL) && defined(HAVE_ATAN2L)
225 #define HAVE_CARGL
226 extern long double cargl (long double complex);
227 #endif
228
229
230 #if !defined(HAVE_CEXPF)
231 #define HAVE_CEXPF
232 extern float complex cexpf (float complex);
233 #endif
234
235 #if !defined(HAVE_CEXP)
236 #define HAVE_CEXP
237 extern double complex cexp (double complex);
238 #endif
239
240 #if !defined(HAVE_CEXPL) && defined(HAVE_COSL) && defined(HAVE_SINL) && defined(EXPL)
241 #define HAVE_CEXPL
242 extern long double complex cexpl (long double complex);
243 #endif
244
245
246 #if !defined(HAVE_CLOGF)
247 #define HAVE_CLOGF
248 extern float complex clogf (float complex);
249 #endif
250
251 #if !defined(HAVE_CLOG)
252 #define HAVE_CLOG
253 extern double complex clog (double complex);
254 #endif
255
256 #if !defined(HAVE_CLOGL) && defined(HAVE_LOGL) && defined(HAVE_CABSL) && defined(HAVE_CARGL)
257 #define HAVE_CLOGL
258 extern long double complex clogl (long double complex);
259 #endif
260
261
262 #if !defined(HAVE_CLOG10F)
263 #define HAVE_CLOG10F
264 extern float complex clog10f (float complex);
265 #endif
266
267 #if !defined(HAVE_CLOG10)
268 #define HAVE_CLOG10
269 extern double complex clog10 (double complex);
270 #endif
271
272 #if !defined(HAVE_CLOG10L) && defined(HAVE_LOG10L) && defined(HAVE_CABSL) && defined(HAVE_CARGL)
273 #define HAVE_CLOG10L
274 extern long double complex clog10l (long double complex);
275 #endif
276
277
278 #if !defined(HAVE_CPOWF)
279 #define HAVE_CPOWF
280 extern float complex cpowf (float complex, float complex);
281 #endif
282
283 #if !defined(HAVE_CPOW)
284 #define HAVE_CPOW
285 extern double complex cpow (double complex, double complex);
286 #endif
287
288 #if !defined(HAVE_CPOWL) && defined(HAVE_CEXPL) && defined(HAVE_CLOGL)
289 #define HAVE_CPOWL
290 extern long double complex cpowl (long double complex, long double complex);
291 #endif
292
293
294 #if !defined(HAVE_CSQRTF)
295 #define HAVE_CSQRTF
296 extern float complex csqrtf (float complex);
297 #endif
298
299 #if !defined(HAVE_CSQRT)
300 #define HAVE_CSQRT
301 extern double complex csqrt (double complex);
302 #endif
303
304 #if !defined(HAVE_CSQRTL) && defined(HAVE_COPYSIGNL) && defined(HAVE_SQRTL) && defined(HAVE_FABSL) && defined(HAVE_HYPOTL)
305 #define HAVE_CSQRTL
306 extern long double complex csqrtl (long double complex);
307 #endif
308
309
310 #if !defined(HAVE_CSINHF)
311 #define HAVE_CSINHF
312 extern float complex csinhf (float complex);
313 #endif
314
315 #if !defined(HAVE_CSINH)
316 #define HAVE_CSINH
317 extern double complex csinh (double complex);
318 #endif
319
320 #if !defined(HAVE_CSINHL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
321 #define HAVE_CSINHL
322 extern long double complex csinhl (long double complex);
323 #endif
324
325
326 #if !defined(HAVE_CCOSHF)
327 #define HAVE_CCOSHF
328 extern float complex ccoshf (float complex);
329 #endif
330
331 #if !defined(HAVE_CCOSH)
332 #define HAVE_CCOSH
333 extern double complex ccosh (double complex);
334 #endif
335
336 #if !defined(HAVE_CCOSHL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
337 #define HAVE_CCOSHL
338 extern long double complex ccoshl (long double complex);
339 #endif
340
341
342 #if !defined(HAVE_CTANHF)
343 #define HAVE_CTANHF
344 extern float complex ctanhf (float complex);
345 #endif
346
347 #if !defined(HAVE_CTANH)
348 #define HAVE_CTANH
349 extern double complex ctanh (double complex);
350 #endif
351
352 #if !defined(HAVE_CTANHL) && defined(HAVE_TANL) && defined(HAVE_TANHL)
353 #define HAVE_CTANHL
354 extern long double complex ctanhl (long double complex);
355 #endif
356
357
358 #if !defined(HAVE_CSINF)
359 #define HAVE_CSINF
360 extern float complex csinf (float complex);
361 #endif
362
363 #if !defined(HAVE_CSIN)
364 #define HAVE_CSIN
365 extern double complex csin (double complex);
366 #endif
367
368 #if !defined(HAVE_CSINL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
369 #define HAVE_CSINL
370 extern long double complex csinl (long double complex);
371 #endif
372
373
374 #if !defined(HAVE_CCOSF)
375 #define HAVE_CCOSF
376 extern float complex ccosf (float complex);
377 #endif
378
379 #if !defined(HAVE_CCOS)
380 #define HAVE_CCOS
381 extern double complex ccos (double complex);
382 #endif
383
384 #if !defined(HAVE_CCOSL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
385 #define HAVE_CCOSL
386 extern long double complex ccosl (long double complex);
387 #endif
388
389
390 #if !defined(HAVE_CTANF)
391 #define HAVE_CTANF
392 extern float complex ctanf (float complex);
393 #endif
394
395 #if !defined(HAVE_CTAN)
396 #define HAVE_CTAN
397 extern double complex ctan (double complex);
398 #endif
399
400 #if !defined(HAVE_CTANL) && defined(HAVE_TANL) && defined(HAVE_TANHL)
401 #define HAVE_CTANL
402 extern long double complex ctanl (long double complex);
403 #endif
404
405
406 #endif /* C99_PROTOS_H */
407