1 /* Declarations of various C99 functions
2 Copyright (C) 2004 Free Software Foundation, Inc.
4 This file is part of the GNU Fortran 95 runtime library (libgfortran).
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.
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.
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. */
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. */
32 /* float variants of libm functions */
34 extern float acosf(float);
38 extern float acoshf(float);
42 extern float asinf(float);
46 extern float asinhf(float);
50 extern float atan2f(float, float);
54 extern float atanf(float);
58 extern float atanhf(float);
62 extern float ceilf(float);
65 #ifndef HAVE_COPYSIGNF
66 extern float copysignf(float, float);
70 extern float cosf(float);
74 extern float coshf(float);
78 extern float expf(float);
82 extern float fabsf(float);
86 extern float floorf(float);
90 extern float frexpf(float, int *);
94 extern float hypotf(float, float);
98 extern float logf(float);
102 extern float log10f(float);
106 extern double scalbn(double, int);
110 extern float scalbnf(float, int);
114 extern float sinf(float);
118 extern float sinhf(float);
122 extern float sqrtf(float);
126 extern float tanf(float);
130 extern float tanhf(float);
134 extern double trunc(double);
138 extern float truncf(float);
141 #ifndef HAVE_NEXTAFTERF
142 extern float nextafterf(float, float);
146 extern float powf(float, float);
150 extern double round(double);
154 extern float roundf(float);
158 /* log10l is needed on all platforms for decimal I/O */
161 extern long double log10l(long double);
165 /* complex math functions */
167 #if !defined(HAVE_CABSF)
169 extern float cabsf (float complex);
172 #if !defined(HAVE_CABS)
174 extern double cabs (double complex);
177 #if !defined(HAVE_CABSL) && defined(HAVE_HYPOTL)
179 extern long double cabsl (long double complex);
183 #if !defined(HAVE_CARGF)
185 extern float cargf (float complex);
188 #if !defined(HAVE_CARG)
190 extern double carg (double complex);
193 #if !defined(HAVE_CARGL) && defined(HAVE_ATAN2L)
195 extern long double cargl (long double complex);
199 #if !defined(HAVE_CEXPF)
201 extern float complex cexpf (float complex);
204 #if !defined(HAVE_CEXP)
206 extern double complex cexp (double complex);
209 #if !defined(HAVE_CEXPL) && defined(HAVE_COSL) && defined(HAVE_SINL) && defined(EXPL)
211 extern long double complex cexpl (long double complex);
215 #if !defined(HAVE_CLOGF)
217 extern float complex clogf (float complex);
220 #if !defined(HAVE_CLOG)
222 extern double complex clog (double complex);
225 #if !defined(HAVE_CLOGL) && defined(HAVE_LOGL) && defined(HAVE_CABSL) && defined(HAVE_CARGL)
227 extern long double complex clogl (long double complex);
231 #if !defined(HAVE_CLOG10F)
233 extern float complex clog10f (float complex);
236 #if !defined(HAVE_CLOG10)
238 extern double complex clog10 (double complex);
241 #if !defined(HAVE_CLOG10L) && defined(HAVE_LOG10L) && defined(HAVE_CABSL) && defined(HAVE_CARGL)
243 extern long double complex clog10l (long double complex);
247 #if !defined(HAVE_CPOWF)
249 extern float complex cpowf (float complex, float complex);
252 #if !defined(HAVE_CPOW)
254 extern double complex cpow (double complex, double complex);
257 #if !defined(HAVE_CPOWL) && defined(HAVE_CEXPL) && defined(HAVE_CLOGL)
259 extern long double complex cpowl (long double complex, long double complex);
263 #if !defined(HAVE_CSQRTF)
265 extern float complex csqrtf (float complex);
268 #if !defined(HAVE_CSQRT)
270 extern double complex csqrt (double complex);
273 #if !defined(HAVE_CSQRTL) && defined(HAVE_COPYSIGNL) && defined(HAVE_SQRTL) && defined(HAVE_FABSL) && defined(HAVE_HYPOTL)
275 extern long double complex csqrtl (long double complex);
279 #if !defined(HAVE_CSINHF)
281 extern float complex csinhf (float complex);
284 #if !defined(HAVE_CSINH)
286 extern double complex csinh (double complex);
289 #if !defined(HAVE_CSINHL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
291 extern long double complex csinhl (long double complex);
295 #if !defined(HAVE_CCOSHF)
297 extern float complex ccoshf (float complex);
300 #if !defined(HAVE_CCOSH)
302 extern double complex ccosh (double complex);
305 #if !defined(HAVE_CCOSHL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
307 extern long double complex ccoshl (long double complex);
311 #if !defined(HAVE_CTANHF)
313 extern float complex ctanhf (float complex);
316 #if !defined(HAVE_CTANH)
318 extern double complex ctanh (double complex);
321 #if !defined(HAVE_CTANHL) && defined(HAVE_TANL) && defined(HAVE_TANHL)
323 extern long double complex ctanhl (long double complex);
327 #if !defined(HAVE_CSINF)
329 extern float complex csinf (float complex);
332 #if !defined(HAVE_CSIN)
334 extern double complex csin (double complex);
337 #if !defined(HAVE_CSINL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
339 extern long double complex csinl (long double complex);
343 #if !defined(HAVE_CCOSF)
345 extern float complex ccosf (float complex);
348 #if !defined(HAVE_CCOS)
350 extern double complex ccos (double complex);
353 #if !defined(HAVE_CCOSL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
355 extern long double complex ccosl (long double complex);
359 #if !defined(HAVE_CTANF)
361 extern float complex ctanf (float complex);
364 #if !defined(HAVE_CTAN)
366 extern double complex ctan (double complex);
369 #if !defined(HAVE_CTANL) && defined(HAVE_TANL) && defined(HAVE_TANHL)
371 extern long double complex ctanl (long double complex);
375 #endif /* C99_PROTOS_H */