c99_protos.h revision 1.1.1.1
1/* Declarations of various C99 functions
2   Copyright (C) 2004-2019 Free Software Foundation, Inc.
3
4This file is part of the GNU Fortran 95 runtime library (libgfortran).
5
6Libgfortran is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 3, or (at your option)
9any later version.
10
11Libgfortran is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14GNU General Public License for more details.
15
16Under Section 7 of GPL version 3, you are granted additional
17permissions described in the GCC Runtime Library Exception, version
183.1, as published by the Free Software Foundation.
19
20You should have received a copy of the GNU General Public License and
21a copy of the GCC Runtime Library Exception along with this program;
22see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23<http://www.gnu.org/licenses/>.  */
24
25#ifndef C99_PROTOS_H
26#define C99_PROTOS_H 1
27
28/* float variants of libm functions */
29#ifndef HAVE_ACOSF
30#define HAVE_ACOSF 1
31extern float acosf(float);
32#endif
33
34#if HAVE_ACOSH && !HAVE_ACOSHF
35#define HAVE_ACOSHF 1
36extern float acoshf(float);
37#endif
38
39#ifndef HAVE_ASINF
40#define HAVE_ASINF 1
41extern float asinf(float);
42#endif
43
44#if HAVE_ASINH && !HAVE_ASINHF
45#define HAVE_ASINHF 1
46extern float asinhf(float);
47#endif
48
49#ifndef HAVE_ATAN2F
50#define HAVE_ATAN2F 1
51extern float atan2f(float, float);
52#endif
53
54#ifndef HAVE_ATANF
55#define HAVE_ATANF 1
56extern float atanf(float);
57#endif
58
59#if HAVE_ATANH && !HAVE_ATANHF
60#define HAVE_ATANHF 1
61extern float atanhf(float);
62#endif
63
64#ifndef HAVE_CEILF
65#define HAVE_CEILF 1
66extern float ceilf(float);
67#endif
68
69#ifndef HAVE_COPYSIGNF
70#define HAVE_COPYSIGNF 1
71extern float copysignf(float, float);
72#endif
73
74#ifndef HAVE_COSF
75#define HAVE_COSF 1
76extern float cosf(float);
77#endif
78
79#ifndef HAVE_COSHF
80#define HAVE_COSHF 1
81extern float coshf(float);
82#endif
83
84#ifndef HAVE_EXPF
85#define HAVE_EXPF 1
86extern float expf(float);
87#endif
88
89#ifndef HAVE_FABSF
90#define HAVE_FABSF 1
91extern float fabsf(float);
92#endif
93
94#ifndef HAVE_FLOORF
95#define HAVE_FLOORF 1
96extern float floorf(float);
97#endif
98
99#ifndef HAVE_FLOORL
100#define HAVE_FLOORL 1
101extern long double floorl (long double x);
102#endif
103
104#ifndef HAVE_FMODF
105#define HAVE_FMODF 1
106extern float fmodf (float x, float y);
107#endif
108
109#ifndef HAVE_FMODL
110#define HAVE_FMODL 1
111extern long double fmodl (long double x, long double y);
112#endif
113
114#ifndef HAVE_FREXPF
115#define HAVE_FREXPF 1
116extern float frexpf(float, int *);
117#endif
118
119#ifndef HAVE_HYPOTF
120#define HAVE_HYPOTF 1
121extern float hypotf(float, float);
122#endif
123
124#ifndef HAVE_LOGF
125#define HAVE_LOGF 1
126extern float logf(float);
127#endif
128
129#ifndef HAVE_LOG10F
130#define HAVE_LOG10F 1
131extern float log10f(float);
132#endif
133
134#ifndef HAVE_SCALBN
135#define HAVE_SCALBN 1
136extern double scalbn(double, int);
137#endif
138
139#ifndef HAVE_SCALBNF
140#define HAVE_SCALBNF 1
141extern float scalbnf(float, int);
142#endif
143
144#ifndef HAVE_SINF
145#define HAVE_SINF 1
146extern float sinf(float);
147#endif
148
149#ifndef HAVE_SINHF
150#define HAVE_SINHF 1
151extern float sinhf(float);
152#endif
153
154#ifndef HAVE_SQRTF
155#define HAVE_SQRTF 1
156extern float sqrtf(float);
157#endif
158
159#ifndef HAVE_TANF
160#define HAVE_TANF 1
161extern float tanf(float);
162#endif
163
164#ifndef HAVE_TANHF
165#define HAVE_TANHF 1
166extern float tanhf(float);
167#endif
168
169#ifndef HAVE_TRUNC
170#define HAVE_TRUNC 1
171extern double trunc(double);
172#endif
173
174#ifndef HAVE_TRUNCF
175#define HAVE_TRUNCF 1
176extern float truncf(float);
177#endif
178
179#ifndef HAVE_NEXTAFTERF
180#define HAVE_NEXTAFTERF 1
181extern float nextafterf(float, float);
182#endif
183
184#ifndef HAVE_POWF
185#define HAVE_POWF 1
186extern float powf(float, float);
187#endif
188
189#ifndef HAVE_ROUND
190#define HAVE_ROUND 1
191extern double round(double);
192#endif
193
194#ifndef HAVE_ROUNDF
195#define HAVE_ROUNDF 1
196extern float roundf(float);
197#endif
198
199#if !defined(HAVE_ROUNDL)
200#define HAVE_ROUNDL 1
201extern long double roundl(long double);
202#endif
203
204
205
206#if !defined(HAVE_LROUNDF) && defined(HAVE_ROUNDF)
207#define HAVE_LROUNDF 1
208long int lroundf (float);
209#endif
210
211#if !defined(HAVE_LROUND) && defined(HAVE_ROUND)
212#define HAVE_LROUND 1
213long int lround (double);
214#endif
215
216#if !defined(HAVE_LROUNDL) && defined(HAVE_ROUNDL)
217#define HAVE_LROUNDL 1
218long int lroundl (long double);
219#endif
220
221#if !defined(HAVE_LLROUNDF) && defined(HAVE_ROUNDF)
222#define HAVE_LLROUNDF 1
223long long int llroundf (float);
224#endif
225
226#if !defined(HAVE_LLROUND) && defined(HAVE_ROUND)
227#define HAVE_LLROUND 1
228long long int llround (double);
229#endif
230
231#if !defined(HAVE_LLROUNDL) && defined(HAVE_ROUNDL)
232#define HAVE_LLROUNDL 1
233long long int llroundl (long double);
234#endif
235
236/* Wrappers for systems without the various C99 single precision Bessel
237   functions.  */
238
239#if defined(HAVE_J0) && ! defined(HAVE_J0F)
240#define HAVE_J0F 1
241extern float j0f (float);
242#endif
243
244#if defined(HAVE_J1) && !defined(HAVE_J1F)
245#define HAVE_J1F 1
246extern float j1f (float);
247#endif
248
249#if defined(HAVE_JN) && !defined(HAVE_JNF)
250#define HAVE_JNF 1
251extern float jnf (int, float);
252#endif
253
254#if defined(HAVE_Y0) && !defined(HAVE_Y0F)
255#define HAVE_Y0F 1
256extern float y0f (float);
257#endif
258
259#if defined(HAVE_Y1) && !defined(HAVE_Y1F)
260#define HAVE_Y1F 1
261extern float y1f (float);
262#endif
263
264#if defined(HAVE_YN) && !defined(HAVE_YNF)
265#define HAVE_YNF 1
266extern float ynf (int, float);
267#endif
268
269
270/* Wrappers for systems without the C99 erff() and erfcf() functions.  */
271
272#if defined(HAVE_ERF) && !defined(HAVE_ERFF)
273#define HAVE_ERFF 1
274extern float erff (float);
275#endif
276
277#if defined(HAVE_ERFC) && !defined(HAVE_ERFCF)
278#define HAVE_ERFCF 1
279extern float erfcf (float);
280#endif
281
282
283
284/* log10l is needed on all platforms for decimal I/O */
285#ifndef HAVE_LOG10L
286#define HAVE_LOG10L 1
287extern long double log10l(long double);
288#endif
289
290
291/* complex math functions */
292
293#if !defined(HAVE_CABSF)
294#define HAVE_CABSF 1
295extern float cabsf (float complex);
296#endif
297
298#if !defined(HAVE_CABS)
299#define HAVE_CABS 1
300extern double cabs (double complex);
301#endif
302
303#if !defined(HAVE_CABSL) && defined(HAVE_HYPOTL)
304#define HAVE_CABSL 1
305extern long double cabsl (long double complex);
306#endif
307
308
309#if !defined(HAVE_CARGF)
310#define HAVE_CARGF 1
311extern float cargf (float complex);
312#endif
313
314#if !defined(HAVE_CARG)
315#define HAVE_CARG 1
316extern double carg (double complex);
317#endif
318
319#if !defined(HAVE_CARGL) && defined(HAVE_ATAN2L)
320#define HAVE_CARGL 1
321extern long double cargl (long double complex);
322#endif
323
324
325#if !defined(HAVE_CEXPF)
326#define HAVE_CEXPF 1
327extern float complex cexpf (float complex);
328#endif
329
330#if !defined(HAVE_CEXP)
331#define HAVE_CEXP 1
332extern double complex cexp (double complex);
333#endif
334
335#if !defined(HAVE_CEXPL) && defined(HAVE_COSL) && defined(HAVE_SINL) && defined(HAVE_EXPL)
336#define HAVE_CEXPL 1
337extern long double complex cexpl (long double complex);
338#endif
339
340
341#if !defined(HAVE_CLOGF)
342#define HAVE_CLOGF 1
343extern float complex clogf (float complex);
344#endif
345
346#if !defined(HAVE_CLOG)
347#define HAVE_CLOG 1
348extern double complex clog (double complex);
349#endif
350
351#if !defined(HAVE_CLOGL) && defined(HAVE_LOGL) && defined(HAVE_CABSL) && defined(HAVE_CARGL)
352#define HAVE_CLOGL 1
353extern long double complex clogl (long double complex);
354#endif
355
356
357#if !defined(HAVE_CLOG10F)
358#define HAVE_CLOG10F 1
359extern float complex clog10f (float complex);
360#endif
361
362#if !defined(HAVE_CLOG10)
363#define HAVE_CLOG10 1
364extern double complex clog10 (double complex);
365#endif
366
367#if !defined(HAVE_CLOG10L) && defined(HAVE_LOG10L) && defined(HAVE_CABSL) && defined(HAVE_CARGL)
368#define HAVE_CLOG10L 1
369extern long double complex clog10l (long double complex);
370#endif
371
372
373#if !defined(HAVE_CPOWF)
374#define HAVE_CPOWF 1
375extern float complex cpowf (float complex, float complex);
376#endif
377
378#if !defined(HAVE_CPOW)
379#define HAVE_CPOW 1
380extern double complex cpow (double complex, double complex);
381#endif
382
383#if !defined(HAVE_CPOWL) && defined(HAVE_CEXPL) && defined(HAVE_CLOGL)
384#define HAVE_CPOWL 1
385extern long double complex cpowl (long double complex, long double complex);
386#endif
387
388
389#if !defined(HAVE_CSQRTF)
390#define HAVE_CSQRTF 1
391extern float complex csqrtf (float complex);
392#endif
393
394#if !defined(HAVE_CSQRT)
395#define HAVE_CSQRT 1
396extern double complex csqrt (double complex);
397#endif
398
399#if !defined(HAVE_CSQRTL) && defined(HAVE_COPYSIGNL) && defined(HAVE_SQRTL) && defined(HAVE_FABSL) && defined(HAVE_HYPOTL)
400#define HAVE_CSQRTL 1
401extern long double complex csqrtl (long double complex);
402#endif
403
404
405#if !defined(HAVE_CSINHF)
406#define HAVE_CSINHF 1
407extern float complex csinhf (float complex);
408#endif
409
410#if !defined(HAVE_CSINH)
411#define HAVE_CSINH 1
412extern double complex csinh (double complex);
413#endif
414
415#if !defined(HAVE_CSINHL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
416#define HAVE_CSINHL 1
417extern long double complex csinhl (long double complex);
418#endif
419
420
421#if !defined(HAVE_CCOSHF)
422#define HAVE_CCOSHF 1
423extern float complex ccoshf (float complex);
424#endif
425
426#if !defined(HAVE_CCOSH)
427#define HAVE_CCOSH 1
428extern double complex ccosh (double complex);
429#endif
430
431#if !defined(HAVE_CCOSHL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
432#define HAVE_CCOSHL 1
433extern long double complex ccoshl (long double complex);
434#endif
435
436
437#if !defined(HAVE_CTANHF)
438#define HAVE_CTANHF 1
439extern float complex ctanhf (float complex);
440#endif
441
442#if !defined(HAVE_CTANH)
443#define HAVE_CTANH 1
444extern double complex ctanh (double complex);
445#endif
446
447#if !defined(HAVE_CTANHL) && defined(HAVE_TANL) && defined(HAVE_TANHL)
448#define HAVE_CTANHL 1
449extern long double complex ctanhl (long double complex);
450#endif
451
452
453#if !defined(HAVE_CSINF)
454#define HAVE_CSINF 1
455extern float complex csinf (float complex);
456#endif
457
458#if !defined(HAVE_CSIN)
459#define HAVE_CSIN 1
460extern double complex csin (double complex);
461#endif
462
463#if !defined(HAVE_CSINL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
464#define HAVE_CSINL 1
465extern long double complex csinl (long double complex);
466#endif
467
468
469#if !defined(HAVE_CCOSF)
470#define HAVE_CCOSF 1
471extern float complex ccosf (float complex);
472#endif
473
474#if !defined(HAVE_CCOS)
475#define HAVE_CCOS 1
476extern double complex ccos (double complex);
477#endif
478
479#if !defined(HAVE_CCOSL) && defined(HAVE_COSL) && defined(HAVE_COSHL) && defined(HAVE_SINL) && defined(HAVE_SINHL)
480#define HAVE_CCOSL 1
481extern long double complex ccosl (long double complex);
482#endif
483
484
485#if !defined(HAVE_CTANF)
486#define HAVE_CTANF 1
487extern float complex ctanf (float complex);
488#endif
489
490#if !defined(HAVE_CTAN)
491#define HAVE_CTAN 1
492extern double complex ctan (double complex);
493#endif
494
495#if !defined(HAVE_CTANL) && defined(HAVE_TANL) && defined(HAVE_TANHL)
496#define HAVE_CTANL 1
497extern long double complex ctanl (long double complex);
498#endif
499
500
501/* Complex ACOS.  */
502
503#if !defined(HAVE_CACOSF) && defined(HAVE_CLOGF) && defined(HAVE_CSQRTF)
504#define HAVE_CACOSF 1
505extern complex float cacosf (complex float z);
506#endif
507
508#if !defined(HAVE_CACOS) && defined(HAVE_CLOG) && defined(HAVE_CSQRT)
509#define HAVE_CACOS 1
510extern complex double cacos (complex double z);
511#endif
512
513#if !defined(HAVE_CACOSL) && defined(HAVE_CLOGL) && defined(HAVE_CSQRTL)
514#define HAVE_CACOSL 1
515extern complex long double cacosl (complex long double z);
516#endif
517
518
519/* Complex ASIN.  */
520
521#if !defined(HAVE_CASINF) && defined(HAVE_CLOGF) && defined(HAVE_CSQRTF)
522#define HAVE_CASINF 1
523extern complex float casinf (complex float z);
524#endif
525
526#if !defined(HAVE_CASIN) && defined(HAVE_CLOG) && defined(HAVE_CSQRT)
527#define HAVE_CASIN 1
528extern complex double casin (complex double z);
529#endif
530
531#if !defined(HAVE_CASINL) && defined(HAVE_CLOGL) && defined(HAVE_CSQRTL)
532#define HAVE_CASINL 1
533extern complex long double casinl (complex long double z);
534#endif
535
536
537/* Complex ATAN.  */
538
539#if !defined(HAVE_CATANF) && defined(HAVE_CLOGF)
540#define HAVE_CATANF 1
541extern complex float catanf (complex float z);
542#endif
543
544#if !defined(HAVE_CATAN) && defined(HAVE_CLOG)
545#define HAVE_CATAN 1
546extern complex double catan (complex double z);
547#endif
548
549#if !defined(HAVE_CATANL) && defined(HAVE_CLOGL)
550#define HAVE_CATANL 1
551extern complex long double catanl (complex long double z);
552#endif
553
554
555/* Complex ASINH.  */
556
557#if !defined(HAVE_CASINHF) && defined(HAVE_CLOGF) && defined(HAVE_CSQRTF)
558#define HAVE_CASINHF 1
559extern complex float casinhf (complex float z);
560#endif
561
562
563#if !defined(HAVE_CASINH) && defined(HAVE_CLOG) && defined(HAVE_CSQRT)
564#define HAVE_CASINH 1
565extern complex double casinh (complex double z);
566#endif
567
568#if !defined(HAVE_CASINHL) && defined(HAVE_CLOGL) && defined(HAVE_CSQRTL)
569#define HAVE_CASINHL 1
570extern complex long double casinhl (complex long double z);
571#endif
572
573
574/* Complex ACOSH.  */
575
576#if !defined(HAVE_CACOSHF) && defined(HAVE_CLOGF) && defined(HAVE_CSQRTF)
577#define HAVE_CACOSHF 1
578extern complex float cacoshf (complex float z);
579#endif
580
581#if !defined(HAVE_CACOSH) && defined(HAVE_CLOG) && defined(HAVE_CSQRT)
582#define HAVE_CACOSH 1
583extern complex double cacosh (complex double z);
584#endif
585
586#if !defined(HAVE_CACOSHL) && defined(HAVE_CLOGL) && defined(HAVE_CSQRTL)
587#define HAVE_CACOSHL 1
588extern complex long double cacoshl (complex long double z);
589#endif
590
591
592/* Complex ATANH.  */
593
594#if !defined(HAVE_CATANHF) && defined(HAVE_CLOGF)
595#define HAVE_CATANHF 1
596extern complex float catanhf (complex float z);
597#endif
598
599#if !defined(HAVE_CATANH) && defined(HAVE_CLOG)
600#define HAVE_CATANH 1
601extern complex double catanh (complex double z);
602#endif
603
604#if !defined(HAVE_CATANHL) && defined(HAVE_CLOGL)
605#define HAVE_CATANHL 1
606extern complex long double catanhl (complex long double z);
607#endif
608
609
610/* Gamma-related prototypes.  */
611#if !defined(HAVE_TGAMMA)
612#define HAVE_TGAMMA 1
613extern double tgamma (double);
614#endif
615
616#if !defined(HAVE_LGAMMA)
617#define HAVE_LGAMMA 1
618extern double lgamma (double);
619#endif
620
621#if defined(HAVE_TGAMMA) && !defined(HAVE_TGAMMAF)
622#define HAVE_TGAMMAF 1
623extern float tgammaf (float);
624#endif
625
626#if defined(HAVE_LGAMMA) && !defined(HAVE_LGAMMAF)
627#define HAVE_LGAMMAF 1
628extern float lgammaf (float);
629#endif
630
631
632#endif  /* C99_PROTOS_H  */
633
634