Merge remote-tracking branch 'origin/stable-2.0'
[bpt/guile.git] / lib / math.in.h
CommitLineData
2e65b52f
LC
1/* A GNU-like <math.h>.
2
af07e104 3 Copyright (C) 2002-2003, 2007-2013 Free Software Foundation, Inc.
2e65b52f
LC
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
17
3d458a81 18#ifndef _@GUARD_PREFIX@_MATH_H
2e65b52f
LC
19
20#if __GNUC__ >= 3
21@PRAGMA_SYSTEM_HEADER@
22#endif
0f00f2c3 23@PRAGMA_COLUMNS@
2e65b52f
LC
24
25/* The include_next requires a split double-inclusion guard. */
26#@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
27
3d458a81
AW
28#ifndef _@GUARD_PREFIX@_MATH_H
29#define _@GUARD_PREFIX@_MATH_H
2e65b52f 30
af07e104
AW
31_GL_INLINE_HEADER_BEGIN
32#ifndef _GL_MATH_INLINE
33# define _GL_MATH_INLINE _GL_INLINE
34#endif
2e65b52f
LC
35
36/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
37
38/* The definition of _GL_ARG_NONNULL is copied here. */
39
40/* The definition of _GL_WARN_ON_USE is copied here. */
41
35428fb6
LC
42#ifdef __cplusplus
43/* Helper macros to define type-generic function FUNC as overloaded functions,
44 rather than as macros like in C. POSIX declares these with an argument of
45 real-floating (that is, one of float, double, or long double). */
46# define _GL_MATH_CXX_REAL_FLOATING_DECL_1(func) \
47static inline int \
48_gl_cxx_ ## func ## f (float f) \
49{ \
50 return func (f); \
51} \
52static inline int \
53_gl_cxx_ ## func ## d (double d) \
54{ \
55 return func (d); \
56} \
57static inline int \
58_gl_cxx_ ## func ## l (long double l) \
59{ \
60 return func (l); \
61}
62# define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func) \
63inline int \
64func (float f) \
65{ \
66 return _gl_cxx_ ## func ## f (f); \
67} \
68inline int \
69func (double d) \
70{ \
71 return _gl_cxx_ ## func ## d (d); \
72} \
73inline int \
74func (long double l) \
75{ \
76 return _gl_cxx_ ## func ## l (l); \
77}
78#endif
79
2e65b52f
LC
80/* Helper macros to define a portability warning for the
81 classification macro FUNC called with VALUE. POSIX declares the
82 classification macros with an argument of real-floating (that is,
83 one of float, double, or long double). */
84#define _GL_WARN_REAL_FLOATING_DECL(func) \
af07e104 85_GL_MATH_INLINE int \
2e65b52f
LC
86rpl_ ## func ## f (float f) \
87{ \
88 return func (f); \
89} \
af07e104 90_GL_MATH_INLINE int \
2e65b52f
LC
91rpl_ ## func ## d (double d) \
92{ \
93 return func (d); \
94} \
af07e104 95_GL_MATH_INLINE int \
2e65b52f
LC
96rpl_ ## func ## l (long double l) \
97{ \
98 return func (l); \
99} \
100_GL_WARN_ON_USE (rpl_ ## func ## f, #func " is unportable - " \
101 "use gnulib module " #func " for portability"); \
102_GL_WARN_ON_USE (rpl_ ## func ## d, #func " is unportable - " \
103 "use gnulib module " #func " for portability"); \
104_GL_WARN_ON_USE (rpl_ ## func ## l, #func " is unportable - " \
105 "use gnulib module " #func " for portability")
106#define _GL_WARN_REAL_FLOATING_IMPL(func, value) \
107 (sizeof (value) == sizeof (float) ? rpl_ ## func ## f (value) \
108 : sizeof (value) == sizeof (double) ? rpl_ ## func ## d (value) \
109 : rpl_ ## func ## l (value))
110
111
35428fb6
LC
112#if @REPLACE_ITOLD@
113/* Pull in a function that fixes the 'int' to 'long double' conversion
114 of glibc 2.7. */
115_GL_EXTERN_C void _Qp_itoq (long double *, int);
116static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq;
117#endif
118
119
2e65b52f
LC
120/* POSIX allows platforms that don't support NAN. But all major
121 machines in the past 15 years have supported something close to
122 IEEE NaN, so we define this unconditionally. We also must define
123 it on platforms like Solaris 10, where NAN is present but defined
124 as a function pointer rather than a floating point constant. */
125#if !defined NAN || @REPLACE_NAN@
49114fd4
LC
126# if !GNULIB_defined_NAN
127# undef NAN
35428fb6
LC
128 /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler
129 choke on the expression 0.0 / 0.0. */
130# if defined __DECC || defined _MSC_VER
af07e104 131_GL_MATH_INLINE float
2e65b52f
LC
132_NaN ()
133{
134 static float zero = 0.0f;
135 return zero / zero;
136}
49114fd4
LC
137# define NAN (_NaN())
138# else
139# define NAN (0.0f / 0.0f)
140# endif
141# define GNULIB_defined_NAN 1
2e65b52f
LC
142# endif
143#endif
144
145/* Solaris 10 defines HUGE_VAL, but as a function pointer rather
146 than a floating point constant. */
147#if @REPLACE_HUGE_VAL@
005de2e8
LC
148# undef HUGE_VALF
149# define HUGE_VALF (1.0f / 0.0f)
2e65b52f
LC
150# undef HUGE_VAL
151# define HUGE_VAL (1.0 / 0.0)
005de2e8
LC
152# undef HUGE_VALL
153# define HUGE_VALL (1.0L / 0.0L)
154#endif
155
156/* HUGE_VALF is a 'float' Infinity. */
157#ifndef HUGE_VALF
158# if defined _MSC_VER
159/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f. */
160# define HUGE_VALF (1e25f * 1e25f)
161# else
162# define HUGE_VALF (1.0f / 0.0f)
163# endif
164#endif
165
166/* HUGE_VAL is a 'double' Infinity. */
167#ifndef HUGE_VAL
168# if defined _MSC_VER
169/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */
170# define HUGE_VAL (1e250 * 1e250)
171# else
172# define HUGE_VAL (1.0 / 0.0)
173# endif
174#endif
175
176/* HUGE_VALL is a 'long double' Infinity. */
177#ifndef HUGE_VALL
178# if defined _MSC_VER
179/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L. */
180# define HUGE_VALL (1e250L * 1e250L)
181# else
182# define HUGE_VALL (1.0L / 0.0L)
183# endif
184#endif
185
186
187/* Ensure FP_ILOGB0 and FP_ILOGBNAN are defined. */
188#if !(defined FP_ILOGB0 && defined FP_ILOGBNAN)
189# if defined __NetBSD__ || defined __sgi
190 /* NetBSD, IRIX 6.5: match what ilogb() does */
191# define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */
192# define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
193# elif defined _AIX
194 /* AIX 5.1: match what ilogb() does in AIX >= 5.2 */
195# define FP_ILOGB0 (- 2147483647 - 1) /* INT_MIN */
196# define FP_ILOGBNAN 2147483647 /* INT_MAX */
197# elif defined __sun
198 /* Solaris 9: match what ilogb() does */
199# define FP_ILOGB0 (- 2147483647) /* - INT_MAX */
200# define FP_ILOGBNAN 2147483647 /* INT_MAX */
201# else
202 /* Gnulib defined values. */
203# define FP_ILOGB0 (- 2147483647) /* - INT_MAX */
204# define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
205# endif
2e65b52f
LC
206#endif
207
208
35428fb6
LC
209#if @GNULIB_ACOSF@
210# if !@HAVE_ACOSF@
211# undef acosf
212_GL_FUNCDECL_SYS (acosf, float, (float x));
2e65b52f 213# endif
35428fb6
LC
214_GL_CXXALIAS_SYS (acosf, float, (float x));
215_GL_CXXALIASWARN (acosf);
2e65b52f 216#elif defined GNULIB_POSIXCHECK
35428fb6
LC
217# undef acosf
218# if HAVE_RAW_DECL_ACOSF
219_GL_WARN_ON_USE (acosf, "acosf is unportable - "
220 "use gnulib module acosf for portability");
2e65b52f
LC
221# endif
222#endif
223
2e65b52f
LC
224#if @GNULIB_ACOSL@
225# if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@
005de2e8 226# undef acosl
2e65b52f
LC
227_GL_FUNCDECL_SYS (acosl, long double, (long double x));
228# endif
229_GL_CXXALIAS_SYS (acosl, long double, (long double x));
230_GL_CXXALIASWARN (acosl);
231#elif defined GNULIB_POSIXCHECK
232# undef acosl
233# if HAVE_RAW_DECL_ACOSL
234_GL_WARN_ON_USE (acosl, "acosl is unportable - "
005de2e8 235 "use gnulib module acosl for portability");
2e65b52f
LC
236# endif
237#endif
238
239
35428fb6
LC
240#if @GNULIB_ASINF@
241# if !@HAVE_ASINF@
242# undef asinf
243_GL_FUNCDECL_SYS (asinf, float, (float x));
244# endif
245_GL_CXXALIAS_SYS (asinf, float, (float x));
246_GL_CXXALIASWARN (asinf);
247#elif defined GNULIB_POSIXCHECK
248# undef asinf
249# if HAVE_RAW_DECL_ASINF
250_GL_WARN_ON_USE (asinf, "asinf is unportable - "
251 "use gnulib module asinf for portability");
252# endif
253#endif
254
2e65b52f
LC
255#if @GNULIB_ASINL@
256# if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@
005de2e8 257# undef asinl
2e65b52f
LC
258_GL_FUNCDECL_SYS (asinl, long double, (long double x));
259# endif
260_GL_CXXALIAS_SYS (asinl, long double, (long double x));
261_GL_CXXALIASWARN (asinl);
262#elif defined GNULIB_POSIXCHECK
263# undef asinl
264# if HAVE_RAW_DECL_ASINL
265_GL_WARN_ON_USE (asinl, "asinl is unportable - "
005de2e8 266 "use gnulib module asinl for portability");
2e65b52f
LC
267# endif
268#endif
269
270
35428fb6
LC
271#if @GNULIB_ATANF@
272# if !@HAVE_ATANF@
273# undef atanf
274_GL_FUNCDECL_SYS (atanf, float, (float x));
275# endif
276_GL_CXXALIAS_SYS (atanf, float, (float x));
277_GL_CXXALIASWARN (atanf);
278#elif defined GNULIB_POSIXCHECK
279# undef atanf
280# if HAVE_RAW_DECL_ATANF
281_GL_WARN_ON_USE (atanf, "atanf is unportable - "
282 "use gnulib module atanf for portability");
283# endif
284#endif
285
2e65b52f
LC
286#if @GNULIB_ATANL@
287# if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@
005de2e8 288# undef atanl
2e65b52f
LC
289_GL_FUNCDECL_SYS (atanl, long double, (long double x));
290# endif
291_GL_CXXALIAS_SYS (atanl, long double, (long double x));
292_GL_CXXALIASWARN (atanl);
293#elif defined GNULIB_POSIXCHECK
294# undef atanl
295# if HAVE_RAW_DECL_ATANL
296_GL_WARN_ON_USE (atanl, "atanl is unportable - "
005de2e8 297 "use gnulib module atanl for portability");
2e65b52f
LC
298# endif
299#endif
300
301
35428fb6
LC
302#if @GNULIB_ATAN2F@
303# if !@HAVE_ATAN2F@
304# undef atan2f
305_GL_FUNCDECL_SYS (atan2f, float, (float y, float x));
306# endif
307_GL_CXXALIAS_SYS (atan2f, float, (float y, float x));
308_GL_CXXALIASWARN (atan2f);
309#elif defined GNULIB_POSIXCHECK
310# undef atan2f
311# if HAVE_RAW_DECL_ATAN2F
312_GL_WARN_ON_USE (atan2f, "atan2f is unportable - "
313 "use gnulib module atan2f for portability");
314# endif
315#endif
316
317
005de2e8
LC
318#if @GNULIB_CBRTF@
319# if @REPLACE_CBRTF@
320# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
321# undef cbrtf
322# define cbrtf rpl_cbrtf
323# endif
324_GL_FUNCDECL_RPL (cbrtf, float, (float x));
325_GL_CXXALIAS_RPL (cbrtf, float, (float x));
326# else
327# if !@HAVE_DECL_CBRTF@
328_GL_FUNCDECL_SYS (cbrtf, float, (float x));
329# endif
330_GL_CXXALIAS_SYS (cbrtf, float, (float x));
331# endif
332_GL_CXXALIASWARN (cbrtf);
333#elif defined GNULIB_POSIXCHECK
334# undef cbrtf
335# if HAVE_RAW_DECL_CBRTF
336_GL_WARN_ON_USE (cbrtf, "cbrtf is unportable - "
337 "use gnulib module cbrtf for portability");
338# endif
339#endif
340
341#if @GNULIB_CBRT@
342# if !@HAVE_CBRT@
343_GL_FUNCDECL_SYS (cbrt, double, (double x));
344# endif
345_GL_CXXALIAS_SYS (cbrt, double, (double x));
346_GL_CXXALIASWARN (cbrt);
347#elif defined GNULIB_POSIXCHECK
348# undef cbrt
349# if HAVE_RAW_DECL_CBRT
350_GL_WARN_ON_USE (cbrt, "cbrt is unportable - "
351 "use gnulib module cbrt for portability");
352# endif
353#endif
354
355#if @GNULIB_CBRTL@
356# if @REPLACE_CBRTL@
357# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
358# undef cbrtl
359# define cbrtl rpl_cbrtl
360# endif
361_GL_FUNCDECL_RPL (cbrtl, long double, (long double x));
362_GL_CXXALIAS_RPL (cbrtl, long double, (long double x));
363# else
364# if !@HAVE_DECL_CBRTL@
365_GL_FUNCDECL_SYS (cbrtl, long double, (long double x));
366# endif
367_GL_CXXALIAS_SYS (cbrtl, long double, (long double x));
368# endif
369_GL_CXXALIASWARN (cbrtl);
370#elif defined GNULIB_POSIXCHECK
371# undef cbrtl
372# if HAVE_RAW_DECL_CBRTL
373_GL_WARN_ON_USE (cbrtl, "cbrtl is unportable - "
374 "use gnulib module cbrtl for portability");
375# endif
376#endif
377
378
2e65b52f
LC
379#if @GNULIB_CEILF@
380# if @REPLACE_CEILF@
381# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
35428fb6 382# undef ceilf
2e65b52f
LC
383# define ceilf rpl_ceilf
384# endif
385_GL_FUNCDECL_RPL (ceilf, float, (float x));
386_GL_CXXALIAS_RPL (ceilf, float, (float x));
387# else
388# if !@HAVE_DECL_CEILF@
005de2e8 389# undef ceilf
2e65b52f
LC
390_GL_FUNCDECL_SYS (ceilf, float, (float x));
391# endif
392_GL_CXXALIAS_SYS (ceilf, float, (float x));
393# endif
394_GL_CXXALIASWARN (ceilf);
395#elif defined GNULIB_POSIXCHECK
396# undef ceilf
397# if HAVE_RAW_DECL_CEILF
398_GL_WARN_ON_USE (ceilf, "ceilf is unportable - "
399 "use gnulib module ceilf for portability");
400# endif
401#endif
402
49114fd4
LC
403#if @GNULIB_CEIL@
404# if @REPLACE_CEIL@
405# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
406# define ceil rpl_ceil
407# endif
408_GL_FUNCDECL_RPL (ceil, double, (double x));
409_GL_CXXALIAS_RPL (ceil, double, (double x));
410# else
411_GL_CXXALIAS_SYS (ceil, double, (double x));
412# endif
413_GL_CXXALIASWARN (ceil);
414#endif
415
2e65b52f
LC
416#if @GNULIB_CEILL@
417# if @REPLACE_CEILL@
418# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
35428fb6 419# undef ceill
2e65b52f
LC
420# define ceill rpl_ceill
421# endif
422_GL_FUNCDECL_RPL (ceill, long double, (long double x));
423_GL_CXXALIAS_RPL (ceill, long double, (long double x));
424# else
425# if !@HAVE_DECL_CEILL@
005de2e8 426# undef ceill
2e65b52f
LC
427_GL_FUNCDECL_SYS (ceill, long double, (long double x));
428# endif
429_GL_CXXALIAS_SYS (ceill, long double, (long double x));
430# endif
431_GL_CXXALIASWARN (ceill);
432#elif defined GNULIB_POSIXCHECK
433# undef ceill
434# if HAVE_RAW_DECL_CEILL
435_GL_WARN_ON_USE (ceill, "ceill is unportable - "
436 "use gnulib module ceill for portability");
437# endif
438#endif
439
440
35428fb6 441#if @GNULIB_COPYSIGNF@
005de2e8 442# if !@HAVE_DECL_COPYSIGNF@
35428fb6
LC
443_GL_FUNCDECL_SYS (copysignf, float, (float x, float y));
444# endif
445_GL_CXXALIAS_SYS (copysignf, float, (float x, float y));
446_GL_CXXALIASWARN (copysignf);
447#elif defined GNULIB_POSIXCHECK
448# undef copysignf
449# if HAVE_RAW_DECL_COPYSIGNF
450_GL_WARN_ON_USE (copysignf, "copysignf is unportable - "
451 "use gnulib module copysignf for portability");
452# endif
453#endif
454
455#if @GNULIB_COPYSIGN@
456# if !@HAVE_COPYSIGN@
457_GL_FUNCDECL_SYS (copysign, double, (double x, double y));
458# endif
459_GL_CXXALIAS_SYS (copysign, double, (double x, double y));
460_GL_CXXALIASWARN (copysign);
461#elif defined GNULIB_POSIXCHECK
462# undef copysign
463# if HAVE_RAW_DECL_COPYSIGN
464_GL_WARN_ON_USE (copysign, "copysign is unportable - "
465 "use gnulib module copysign for portability");
466# endif
467#endif
468
469#if @GNULIB_COPYSIGNL@
470# if !@HAVE_COPYSIGNL@
471_GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y));
472# endif
473_GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y));
474_GL_CXXALIASWARN (copysignl);
475#elif defined GNULIB_POSIXCHECK
476# undef copysignl
477# if HAVE_RAW_DECL_COPYSIGNL
478_GL_WARN_ON_USE (copysign, "copysignl is unportable - "
479 "use gnulib module copysignl for portability");
480# endif
481#endif
482
483
484#if @GNULIB_COSF@
485# if !@HAVE_COSF@
486# undef cosf
487_GL_FUNCDECL_SYS (cosf, float, (float x));
488# endif
489_GL_CXXALIAS_SYS (cosf, float, (float x));
490_GL_CXXALIASWARN (cosf);
491#elif defined GNULIB_POSIXCHECK
492# undef cosf
493# if HAVE_RAW_DECL_COSF
494_GL_WARN_ON_USE (cosf, "cosf is unportable - "
495 "use gnulib module cosf for portability");
496# endif
497#endif
498
2e65b52f
LC
499#if @GNULIB_COSL@
500# if !@HAVE_COSL@ || !@HAVE_DECL_COSL@
005de2e8 501# undef cosl
2e65b52f
LC
502_GL_FUNCDECL_SYS (cosl, long double, (long double x));
503# endif
504_GL_CXXALIAS_SYS (cosl, long double, (long double x));
505_GL_CXXALIASWARN (cosl);
506#elif defined GNULIB_POSIXCHECK
507# undef cosl
508# if HAVE_RAW_DECL_COSL
509_GL_WARN_ON_USE (cosl, "cosl is unportable - "
005de2e8 510 "use gnulib module cosl for portability");
2e65b52f
LC
511# endif
512#endif
513
514
35428fb6
LC
515#if @GNULIB_COSHF@
516# if !@HAVE_COSHF@
517# undef coshf
518_GL_FUNCDECL_SYS (coshf, float, (float x));
519# endif
520_GL_CXXALIAS_SYS (coshf, float, (float x));
521_GL_CXXALIASWARN (coshf);
522#elif defined GNULIB_POSIXCHECK
523# undef coshf
524# if HAVE_RAW_DECL_COSHF
525_GL_WARN_ON_USE (coshf, "coshf is unportable - "
526 "use gnulib module coshf for portability");
527# endif
528#endif
529
530
531#if @GNULIB_EXPF@
532# if !@HAVE_EXPF@
533# undef expf
534_GL_FUNCDECL_SYS (expf, float, (float x));
535# endif
536_GL_CXXALIAS_SYS (expf, float, (float x));
537_GL_CXXALIASWARN (expf);
538#elif defined GNULIB_POSIXCHECK
539# undef expf
540# if HAVE_RAW_DECL_EXPF
541_GL_WARN_ON_USE (expf, "expf is unportable - "
542 "use gnulib module expf for portability");
543# endif
544#endif
545
2e65b52f
LC
546#if @GNULIB_EXPL@
547# if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@
005de2e8 548# undef expl
2e65b52f
LC
549_GL_FUNCDECL_SYS (expl, long double, (long double x));
550# endif
551_GL_CXXALIAS_SYS (expl, long double, (long double x));
552_GL_CXXALIASWARN (expl);
553#elif defined GNULIB_POSIXCHECK
554# undef expl
555# if HAVE_RAW_DECL_EXPL
556_GL_WARN_ON_USE (expl, "expl is unportable - "
005de2e8
LC
557 "use gnulib module expl for portability");
558# endif
559#endif
560
561
562#if @GNULIB_EXP2F@
563# if !@HAVE_DECL_EXP2F@
564_GL_FUNCDECL_SYS (exp2f, float, (float x));
565# endif
566_GL_CXXALIAS_SYS (exp2f, float, (float x));
567_GL_CXXALIASWARN (exp2f);
568#elif defined GNULIB_POSIXCHECK
569# undef exp2f
570# if HAVE_RAW_DECL_EXP2F
571_GL_WARN_ON_USE (exp2f, "exp2f is unportable - "
572 "use gnulib module exp2f for portability");
573# endif
574#endif
575
576#if @GNULIB_EXP2@
577# if @REPLACE_EXP2@
578# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
579# undef exp2
580# define exp2 rpl_exp2
581# endif
582_GL_FUNCDECL_RPL (exp2, double, (double x));
583_GL_CXXALIAS_RPL (exp2, double, (double x));
584# else
585# if !@HAVE_DECL_EXP2@
586_GL_FUNCDECL_SYS (exp2, double, (double x));
587# endif
588_GL_CXXALIAS_SYS (exp2, double, (double x));
589# endif
590_GL_CXXALIASWARN (exp2);
591#elif defined GNULIB_POSIXCHECK
592# undef exp2
593# if HAVE_RAW_DECL_EXP2
594_GL_WARN_ON_USE (exp2, "exp2 is unportable - "
595 "use gnulib module exp2 for portability");
596# endif
597#endif
598
599#if @GNULIB_EXP2L@
600# if @REPLACE_EXP2L@
601# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
602# undef exp2l
603# define exp2l rpl_exp2l
604# endif
605_GL_FUNCDECL_RPL (exp2l, long double, (long double x));
606_GL_CXXALIAS_RPL (exp2l, long double, (long double x));
607# else
608# if !@HAVE_DECL_EXP2L@
609# undef exp2l
610_GL_FUNCDECL_SYS (exp2l, long double, (long double x));
611# endif
612_GL_CXXALIAS_SYS (exp2l, long double, (long double x));
613# endif
614_GL_CXXALIASWARN (exp2l);
615#elif defined GNULIB_POSIXCHECK
616# undef exp2l
617# if HAVE_RAW_DECL_EXP2L
618_GL_WARN_ON_USE (exp2l, "exp2l is unportable - "
619 "use gnulib module exp2l for portability");
620# endif
621#endif
622
623
624#if @GNULIB_EXPM1F@
625# if @REPLACE_EXPM1F@
626# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
627# undef expm1f
628# define expm1f rpl_expm1f
629# endif
630_GL_FUNCDECL_RPL (expm1f, float, (float x));
631_GL_CXXALIAS_RPL (expm1f, float, (float x));
632# else
633# if !@HAVE_EXPM1F@
634_GL_FUNCDECL_SYS (expm1f, float, (float x));
635# endif
636_GL_CXXALIAS_SYS (expm1f, float, (float x));
637# endif
638_GL_CXXALIASWARN (expm1f);
639#elif defined GNULIB_POSIXCHECK
640# undef expm1f
641# if HAVE_RAW_DECL_EXPM1F
642_GL_WARN_ON_USE (expm1f, "expm1f is unportable - "
643 "use gnulib module expm1f for portability");
644# endif
645#endif
646
647#if @GNULIB_EXPM1@
648# if @REPLACE_EXPM1@
649# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
650# undef expm1
651# define expm1 rpl_expm1
652# endif
653_GL_FUNCDECL_RPL (expm1, double, (double x));
654_GL_CXXALIAS_RPL (expm1, double, (double x));
655# else
656# if !@HAVE_EXPM1@
657_GL_FUNCDECL_SYS (expm1, double, (double x));
658# endif
659_GL_CXXALIAS_SYS (expm1, double, (double x));
660# endif
661_GL_CXXALIASWARN (expm1);
662#elif defined GNULIB_POSIXCHECK
663# undef expm1
664# if HAVE_RAW_DECL_EXPM1
665_GL_WARN_ON_USE (expm1, "expm1 is unportable - "
666 "use gnulib module expm1 for portability");
667# endif
668#endif
669
670#if @GNULIB_EXPM1L@
671# if !@HAVE_DECL_EXPM1L@
672# undef expm1l
673_GL_FUNCDECL_SYS (expm1l, long double, (long double x));
674# endif
675_GL_CXXALIAS_SYS (expm1l, long double, (long double x));
676_GL_CXXALIASWARN (expm1l);
677#elif defined GNULIB_POSIXCHECK
678# undef expm1l
679# if HAVE_RAW_DECL_EXPM1L
680_GL_WARN_ON_USE (expm1l, "expm1l is unportable - "
681 "use gnulib module expm1l for portability");
2e65b52f
LC
682# endif
683#endif
684
685
35428fb6
LC
686#if @GNULIB_FABSF@
687# if !@HAVE_FABSF@
688# undef fabsf
689_GL_FUNCDECL_SYS (fabsf, float, (float x));
690# endif
691_GL_CXXALIAS_SYS (fabsf, float, (float x));
692_GL_CXXALIASWARN (fabsf);
693#elif defined GNULIB_POSIXCHECK
694# undef fabsf
695# if HAVE_RAW_DECL_FABSF
696_GL_WARN_ON_USE (fabsf, "fabsf is unportable - "
697 "use gnulib module fabsf for portability");
698# endif
699#endif
700
005de2e8
LC
701#if @GNULIB_FABSL@
702# if @REPLACE_FABSL@
703# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
704# undef fabsl
705# define fabsl rpl_fabsl
706# endif
707_GL_FUNCDECL_RPL (fabsl, long double, (long double x));
708_GL_CXXALIAS_RPL (fabsl, long double, (long double x));
709# else
710# if !@HAVE_FABSL@
711# undef fabsl
712_GL_FUNCDECL_SYS (fabsl, long double, (long double x));
713# endif
714_GL_CXXALIAS_SYS (fabsl, long double, (long double x));
715# endif
716_GL_CXXALIASWARN (fabsl);
717#elif defined GNULIB_POSIXCHECK
718# undef fabsl
719# if HAVE_RAW_DECL_FABSL
720_GL_WARN_ON_USE (fabsl, "fabsl is unportable - "
721 "use gnulib module fabsl for portability");
722# endif
723#endif
724
35428fb6 725
2e65b52f
LC
726#if @GNULIB_FLOORF@
727# if @REPLACE_FLOORF@
728# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
35428fb6 729# undef floorf
2e65b52f
LC
730# define floorf rpl_floorf
731# endif
732_GL_FUNCDECL_RPL (floorf, float, (float x));
733_GL_CXXALIAS_RPL (floorf, float, (float x));
49114fd4 734# else
2e65b52f 735# if !@HAVE_DECL_FLOORF@
005de2e8 736# undef floorf
2e65b52f
LC
737_GL_FUNCDECL_SYS (floorf, float, (float x));
738# endif
739_GL_CXXALIAS_SYS (floorf, float, (float x));
740# endif
741_GL_CXXALIASWARN (floorf);
742#elif defined GNULIB_POSIXCHECK
743# undef floorf
744# if HAVE_RAW_DECL_FLOORF
745_GL_WARN_ON_USE (floorf, "floorf is unportable - "
746 "use gnulib module floorf for portability");
747# endif
748#endif
749
49114fd4
LC
750#if @GNULIB_FLOOR@
751# if @REPLACE_FLOOR@
752# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
753# define floor rpl_floor
754# endif
755_GL_FUNCDECL_RPL (floor, double, (double x));
756_GL_CXXALIAS_RPL (floor, double, (double x));
757# else
758_GL_CXXALIAS_SYS (floor, double, (double x));
759# endif
760_GL_CXXALIASWARN (floor);
761#endif
762
2e65b52f
LC
763#if @GNULIB_FLOORL@
764# if @REPLACE_FLOORL@
765# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
35428fb6 766# undef floorl
2e65b52f
LC
767# define floorl rpl_floorl
768# endif
769_GL_FUNCDECL_RPL (floorl, long double, (long double x));
770_GL_CXXALIAS_RPL (floorl, long double, (long double x));
771# else
772# if !@HAVE_DECL_FLOORL@
005de2e8 773# undef floorl
2e65b52f
LC
774_GL_FUNCDECL_SYS (floorl, long double, (long double x));
775# endif
776_GL_CXXALIAS_SYS (floorl, long double, (long double x));
777# endif
778_GL_CXXALIASWARN (floorl);
779#elif defined GNULIB_POSIXCHECK
780# undef floorl
781# if HAVE_RAW_DECL_FLOORL
782_GL_WARN_ON_USE (floorl, "floorl is unportable - "
783 "use gnulib module floorl for portability");
784# endif
785#endif
786
787
7f1ea859
LC
788#if @GNULIB_FMAF@
789# if @REPLACE_FMAF@
790# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
791# undef fmaf
792# define fmaf rpl_fmaf
793# endif
794_GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z));
795_GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z));
796# else
797# if !@HAVE_FMAF@
798_GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z));
799# endif
800_GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z));
801# endif
802_GL_CXXALIASWARN (fmaf);
803#elif defined GNULIB_POSIXCHECK
804# undef fmaf
805# if HAVE_RAW_DECL_FMAF
806_GL_WARN_ON_USE (fmaf, "fmaf is unportable - "
807 "use gnulib module fmaf for portability");
808# endif
809#endif
810
811#if @GNULIB_FMA@
812# if @REPLACE_FMA@
813# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
814# undef fma
815# define fma rpl_fma
816# endif
817_GL_FUNCDECL_RPL (fma, double, (double x, double y, double z));
818_GL_CXXALIAS_RPL (fma, double, (double x, double y, double z));
819# else
820# if !@HAVE_FMA@
821_GL_FUNCDECL_SYS (fma, double, (double x, double y, double z));
822# endif
823_GL_CXXALIAS_SYS (fma, double, (double x, double y, double z));
824# endif
825_GL_CXXALIASWARN (fma);
826#elif defined GNULIB_POSIXCHECK
827# undef fma
828# if HAVE_RAW_DECL_FMA
829_GL_WARN_ON_USE (fma, "fma is unportable - "
830 "use gnulib module fma for portability");
831# endif
832#endif
833
834#if @GNULIB_FMAL@
835# if @REPLACE_FMAL@
836# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
837# undef fmal
838# define fmal rpl_fmal
839# endif
840_GL_FUNCDECL_RPL (fmal, long double,
841 (long double x, long double y, long double z));
842_GL_CXXALIAS_RPL (fmal, long double,
843 (long double x, long double y, long double z));
844# else
845# if !@HAVE_FMAL@
005de2e8 846# undef fmal
7f1ea859
LC
847_GL_FUNCDECL_SYS (fmal, long double,
848 (long double x, long double y, long double z));
849# endif
850_GL_CXXALIAS_SYS (fmal, long double,
851 (long double x, long double y, long double z));
852# endif
853_GL_CXXALIASWARN (fmal);
854#elif defined GNULIB_POSIXCHECK
855# undef fmal
856# if HAVE_RAW_DECL_FMAL
857_GL_WARN_ON_USE (fmal, "fmal is unportable - "
858 "use gnulib module fmal for portability");
859# endif
860#endif
861
862
35428fb6 863#if @GNULIB_FMODF@
005de2e8
LC
864# if @REPLACE_FMODF@
865# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
866# undef fmodf
867# define fmodf rpl_fmodf
868# endif
869_GL_FUNCDECL_RPL (fmodf, float, (float x, float y));
870_GL_CXXALIAS_RPL (fmodf, float, (float x, float y));
871# else
872# if !@HAVE_FMODF@
873# undef fmodf
35428fb6 874_GL_FUNCDECL_SYS (fmodf, float, (float x, float y));
005de2e8 875# endif
35428fb6 876_GL_CXXALIAS_SYS (fmodf, float, (float x, float y));
005de2e8 877# endif
35428fb6
LC
878_GL_CXXALIASWARN (fmodf);
879#elif defined GNULIB_POSIXCHECK
880# undef fmodf
881# if HAVE_RAW_DECL_FMODF
882_GL_WARN_ON_USE (fmodf, "fmodf is unportable - "
883 "use gnulib module fmodf for portability");
884# endif
885#endif
886
005de2e8
LC
887#if @GNULIB_FMOD@
888# if @REPLACE_FMOD@
889# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
890# undef fmod
891# define fmod rpl_fmod
892# endif
893_GL_FUNCDECL_RPL (fmod, double, (double x, double y));
894_GL_CXXALIAS_RPL (fmod, double, (double x, double y));
895# else
896_GL_CXXALIAS_SYS (fmod, double, (double x, double y));
897# endif
898_GL_CXXALIASWARN (fmod);
899#elif defined GNULIB_POSIXCHECK
900# undef fmod
901# if HAVE_RAW_DECL_FMOD
902_GL_WARN_ON_USE (fmod, "fmod has portability problems - "
903 "use gnulib module fmod for portability");
904# endif
905#endif
906
907#if @GNULIB_FMODL@
908# if @REPLACE_FMODL@
909# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
910# undef fmodl
911# define fmodl rpl_fmodl
912# endif
913_GL_FUNCDECL_RPL (fmodl, long double, (long double x, long double y));
914_GL_CXXALIAS_RPL (fmodl, long double, (long double x, long double y));
915# else
916# if !@HAVE_FMODL@
917# undef fmodl
918_GL_FUNCDECL_SYS (fmodl, long double, (long double x, long double y));
919# endif
920_GL_CXXALIAS_SYS (fmodl, long double, (long double x, long double y));
921# endif
922_GL_CXXALIASWARN (fmodl);
923#elif defined GNULIB_POSIXCHECK
924# undef fmodl
925# if HAVE_RAW_DECL_FMODL
926_GL_WARN_ON_USE (fmodl, "fmodl is unportable - "
927 "use gnulib module fmodl for portability");
928# endif
929#endif
930
35428fb6
LC
931
932/* Write x as
933 x = mantissa * 2^exp
934 where
935 If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
936 If x is zero: mantissa = x, exp = 0.
937 If x is infinite or NaN: mantissa = x, exp unspecified.
938 Store exp in *EXPPTR and return mantissa. */
939#if @GNULIB_FREXPF@
940# if @REPLACE_FREXPF@
941# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
942# undef frexpf
943# define frexpf rpl_frexpf
944# endif
945_GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
946_GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr));
947# else
948# if !@HAVE_FREXPF@
949# undef frexpf
950_GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
951# endif
952_GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr));
953# endif
954_GL_CXXALIASWARN (frexpf);
955#elif defined GNULIB_POSIXCHECK
956# undef frexpf
957# if HAVE_RAW_DECL_FREXPF
958_GL_WARN_ON_USE (frexpf, "frexpf is unportable - "
959 "use gnulib module frexpf for portability");
960# endif
961#endif
962
963/* Write x as
964 x = mantissa * 2^exp
965 where
966 If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
967 If x is zero: mantissa = x, exp = 0.
968 If x is infinite or NaN: mantissa = x, exp unspecified.
969 Store exp in *EXPPTR and return mantissa. */
970#if @GNULIB_FREXP@
971# if @REPLACE_FREXP@
972# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
973# define frexp rpl_frexp
974# endif
975_GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2)));
976_GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr));
977# else
978_GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr));
979# endif
980_GL_CXXALIASWARN (frexp);
981#elif defined GNULIB_POSIXCHECK
982# undef frexp
983/* Assume frexp is always declared. */
984_GL_WARN_ON_USE (frexp, "frexp is unportable - "
985 "use gnulib module frexp for portability");
986#endif
987
2e65b52f
LC
988/* Write x as
989 x = mantissa * 2^exp
990 where
991 If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
992 If x is zero: mantissa = x, exp = 0.
993 If x is infinite or NaN: mantissa = x, exp unspecified.
994 Store exp in *EXPPTR and return mantissa. */
995#if @GNULIB_FREXPL@ && @REPLACE_FREXPL@
996# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
35428fb6 997# undef frexpl
2e65b52f
LC
998# define frexpl rpl_frexpl
999# endif
1000_GL_FUNCDECL_RPL (frexpl, long double,
1001 (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
1002_GL_CXXALIAS_RPL (frexpl, long double, (long double x, int *expptr));
1003#else
1004# if !@HAVE_DECL_FREXPL@
1005_GL_FUNCDECL_SYS (frexpl, long double,
1006 (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
1007# endif
1008# if @GNULIB_FREXPL@
1009_GL_CXXALIAS_SYS (frexpl, long double, (long double x, int *expptr));
1010# endif
1011#endif
1012#if @GNULIB_FREXPL@ && !(@REPLACE_FREXPL@ && !@HAVE_DECL_FREXPL@)
1013_GL_CXXALIASWARN (frexpl);
1014#endif
1015#if !@GNULIB_FREXPL@ && defined GNULIB_POSIXCHECK
1016# undef frexpl
1017# if HAVE_RAW_DECL_FREXPL
1018_GL_WARN_ON_USE (frexpl, "frexpl is unportable - "
1019 "use gnulib module frexpl for portability");
1020# endif
1021#endif
1022
1023
005de2e8
LC
1024/* Return sqrt(x^2+y^2). */
1025#if @GNULIB_HYPOTF@
1026# if @REPLACE_HYPOTF@
1027# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1028# undef hypotf
1029# define hypotf rpl_hypotf
1030# endif
1031_GL_FUNCDECL_RPL (hypotf, float, (float x, float y));
1032_GL_CXXALIAS_RPL (hypotf, float, (float x, float y));
1033# else
1034# if !@HAVE_HYPOTF@
1035_GL_FUNCDECL_SYS (hypotf, float, (float x, float y));
1036# endif
1037_GL_CXXALIAS_SYS (hypotf, float, (float x, float y));
1038# endif
1039_GL_CXXALIASWARN (hypotf);
1040#elif defined GNULIB_POSIXCHECK
1041# undef hypotf
1042# if HAVE_RAW_DECL_HYPOTF
1043_GL_WARN_ON_USE (hypotf, "hypotf is unportable - "
1044 "use gnulib module hypotf for portability");
1045# endif
1046#endif
1047
1048/* Return sqrt(x^2+y^2). */
1049#if @GNULIB_HYPOT@
1050# if @REPLACE_HYPOT@
1051# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1052# undef hypot
1053# define hypot rpl_hypot
1054# endif
1055_GL_FUNCDECL_RPL (hypot, double, (double x, double y));
1056_GL_CXXALIAS_RPL (hypot, double, (double x, double y));
1057# else
1058_GL_CXXALIAS_SYS (hypot, double, (double x, double y));
1059# endif
1060_GL_CXXALIASWARN (hypot);
1061#elif defined GNULIB_POSIXCHECK
1062# undef hypot
1063# if HAVE_RAW_DECL_HYPOT
1064_GL_WARN_ON_USE (hypotf, "hypot has portability problems - "
1065 "use gnulib module hypot for portability");
1066# endif
1067#endif
1068
1069/* Return sqrt(x^2+y^2). */
1070#if @GNULIB_HYPOTL@
1071# if @REPLACE_HYPOTL@
1072# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1073# undef hypotl
1074# define hypotl rpl_hypotl
1075# endif
1076_GL_FUNCDECL_RPL (hypotl, long double, (long double x, long double y));
1077_GL_CXXALIAS_RPL (hypotl, long double, (long double x, long double y));
1078# else
1079# if !@HAVE_HYPOTL@
1080_GL_FUNCDECL_SYS (hypotl, long double, (long double x, long double y));
1081# endif
1082_GL_CXXALIAS_SYS (hypotl, long double, (long double x, long double y));
1083# endif
1084_GL_CXXALIASWARN (hypotl);
1085#elif defined GNULIB_POSIXCHECK
1086# undef hypotl
1087# if HAVE_RAW_DECL_HYPOTL
1088_GL_WARN_ON_USE (hypotl, "hypotl is unportable - "
1089 "use gnulib module hypotl for portability");
1090# endif
1091#endif
1092
1093
1094#if @GNULIB_ILOGBF@
1095# if @REPLACE_ILOGBF@
1096# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1097# undef ilogbf
1098# define ilogbf rpl_ilogbf
1099# endif
1100_GL_FUNCDECL_RPL (ilogbf, int, (float x));
1101_GL_CXXALIAS_RPL (ilogbf, int, (float x));
1102# else
1103# if !@HAVE_ILOGBF@
1104_GL_FUNCDECL_SYS (ilogbf, int, (float x));
1105# endif
1106_GL_CXXALIAS_SYS (ilogbf, int, (float x));
1107# endif
1108_GL_CXXALIASWARN (ilogbf);
1109#elif defined GNULIB_POSIXCHECK
1110# undef ilogbf
1111# if HAVE_RAW_DECL_ILOGBF
1112_GL_WARN_ON_USE (ilogbf, "ilogbf is unportable - "
1113 "use gnulib module ilogbf for portability");
1114# endif
1115#endif
1116
1117#if @GNULIB_ILOGB@
1118# if @REPLACE_ILOGB@
1119# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1120# undef ilogb
1121# define ilogb rpl_ilogb
1122# endif
1123_GL_FUNCDECL_RPL (ilogb, int, (double x));
1124_GL_CXXALIAS_RPL (ilogb, int, (double x));
1125# else
1126# if !@HAVE_ILOGB@
1127_GL_FUNCDECL_SYS (ilogb, int, (double x));
1128# endif
1129_GL_CXXALIAS_SYS (ilogb, int, (double x));
1130# endif
1131_GL_CXXALIASWARN (ilogb);
1132#elif defined GNULIB_POSIXCHECK
1133# undef ilogb
1134# if HAVE_RAW_DECL_ILOGB
1135_GL_WARN_ON_USE (ilogb, "ilogb is unportable - "
1136 "use gnulib module ilogb for portability");
1137# endif
1138#endif
1139
1140#if @GNULIB_ILOGBL@
1141# if !@HAVE_ILOGBL@
1142_GL_FUNCDECL_SYS (ilogbl, int, (long double x));
1143# endif
1144_GL_CXXALIAS_SYS (ilogbl, int, (long double x));
1145_GL_CXXALIASWARN (ilogbl);
1146#elif defined GNULIB_POSIXCHECK
1147# undef ilogbl
1148# if HAVE_RAW_DECL_ILOGBL
1149_GL_WARN_ON_USE (ilogbl, "ilogbl is unportable - "
1150 "use gnulib module ilogbl for portability");
1151# endif
1152#endif
1153
1154
35428fb6
LC
1155/* Return x * 2^exp. */
1156#if @GNULIB_LDEXPF@
1157# if !@HAVE_LDEXPF@
1158# undef ldexpf
1159_GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp));
1160# endif
1161_GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp));
1162_GL_CXXALIASWARN (ldexpf);
1163#elif defined GNULIB_POSIXCHECK
1164# undef ldexpf
1165# if HAVE_RAW_DECL_LDEXPF
1166_GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - "
1167 "use gnulib module ldexpf for portability");
1168# endif
1169#endif
1170
2e65b52f
LC
1171/* Return x * 2^exp. */
1172#if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@
1173# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
35428fb6 1174# undef ldexpl
2e65b52f
LC
1175# define ldexpl rpl_ldexpl
1176# endif
1177_GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp));
1178_GL_CXXALIAS_RPL (ldexpl, long double, (long double x, int exp));
1179#else
1180# if !@HAVE_DECL_LDEXPL@
1181_GL_FUNCDECL_SYS (ldexpl, long double, (long double x, int exp));
1182# endif
1183# if @GNULIB_LDEXPL@
1184_GL_CXXALIAS_SYS (ldexpl, long double, (long double x, int exp));
1185# endif
1186#endif
1187#if @GNULIB_LDEXPL@
1188_GL_CXXALIASWARN (ldexpl);
1189#endif
1190#if !@GNULIB_LDEXPL@ && defined GNULIB_POSIXCHECK
1191# undef ldexpl
1192# if HAVE_RAW_DECL_LDEXPL
1193_GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - "
1194 "use gnulib module ldexpl for portability");
1195# endif
1196#endif
1197
1198
35428fb6 1199#if @GNULIB_LOGF@
005de2e8
LC
1200# if @REPLACE_LOGF@
1201# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1202# undef logf
1203# define logf rpl_logf
1204# endif
1205_GL_FUNCDECL_RPL (logf, float, (float x));
1206_GL_CXXALIAS_RPL (logf, float, (float x));
1207# else
1208# if !@HAVE_LOGF@
1209# undef logf
35428fb6 1210_GL_FUNCDECL_SYS (logf, float, (float x));
005de2e8 1211# endif
35428fb6 1212_GL_CXXALIAS_SYS (logf, float, (float x));
005de2e8 1213# endif
35428fb6
LC
1214_GL_CXXALIASWARN (logf);
1215#elif defined GNULIB_POSIXCHECK
1216# undef logf
1217# if HAVE_RAW_DECL_LOGF
1218_GL_WARN_ON_USE (logf, "logf is unportable - "
1219 "use gnulib module logf for portability");
1220# endif
1221#endif
1222
005de2e8
LC
1223#if @GNULIB_LOG@
1224# if @REPLACE_LOG@
1225# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1226# undef log
1227# define log rpl_log
1228# endif
1229_GL_FUNCDECL_RPL (log, double, (double x));
1230_GL_CXXALIAS_RPL (log, double, (double x));
1231# else
1232_GL_CXXALIAS_SYS (log, double, (double x));
1233# endif
1234_GL_CXXALIASWARN (log);
1235#elif defined GNULIB_POSIXCHECK
1236# undef log
1237# if HAVE_RAW_DECL_LOG
1238_GL_WARN_ON_USE (log, "log has portability problems - "
1239 "use gnulib module log for portability");
1240# endif
1241#endif
1242
2e65b52f 1243#if @GNULIB_LOGL@
005de2e8
LC
1244# if @REPLACE_LOGL@
1245# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1246# undef logl
1247# define logl rpl_logl
1248# endif
1249_GL_FUNCDECL_RPL (logl, long double, (long double x));
1250_GL_CXXALIAS_RPL (logl, long double, (long double x));
1251# else
1252# if !@HAVE_LOGL@ || !@HAVE_DECL_LOGL@
1253# undef logl
2e65b52f 1254_GL_FUNCDECL_SYS (logl, long double, (long double x));
005de2e8 1255# endif
2e65b52f 1256_GL_CXXALIAS_SYS (logl, long double, (long double x));
005de2e8 1257# endif
2e65b52f
LC
1258_GL_CXXALIASWARN (logl);
1259#elif defined GNULIB_POSIXCHECK
1260# undef logl
1261# if HAVE_RAW_DECL_LOGL
1262_GL_WARN_ON_USE (logl, "logl is unportable - "
005de2e8 1263 "use gnulib module logl for portability");
2e65b52f
LC
1264# endif
1265#endif
1266
1267
35428fb6 1268#if @GNULIB_LOG10F@
005de2e8
LC
1269# if @REPLACE_LOG10F@
1270# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1271# undef log10f
1272# define log10f rpl_log10f
1273# endif
1274_GL_FUNCDECL_RPL (log10f, float, (float x));
1275_GL_CXXALIAS_RPL (log10f, float, (float x));
1276# else
1277# if !@HAVE_LOG10F@
1278# undef log10f
35428fb6 1279_GL_FUNCDECL_SYS (log10f, float, (float x));
005de2e8 1280# endif
35428fb6 1281_GL_CXXALIAS_SYS (log10f, float, (float x));
005de2e8 1282# endif
35428fb6
LC
1283_GL_CXXALIASWARN (log10f);
1284#elif defined GNULIB_POSIXCHECK
1285# undef log10f
1286# if HAVE_RAW_DECL_LOG10F
1287_GL_WARN_ON_USE (log10f, "log10f is unportable - "
1288 "use gnulib module log10f for portability");
1289# endif
1290#endif
1291
005de2e8
LC
1292#if @GNULIB_LOG10@
1293# if @REPLACE_LOG10@
1294# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1295# undef log10
1296# define log10 rpl_log10
1297# endif
1298_GL_FUNCDECL_RPL (log10, double, (double x));
1299_GL_CXXALIAS_RPL (log10, double, (double x));
1300# else
1301_GL_CXXALIAS_SYS (log10, double, (double x));
1302# endif
1303_GL_CXXALIASWARN (log10);
1304#elif defined GNULIB_POSIXCHECK
1305# undef log10
1306# if HAVE_RAW_DECL_LOG10
1307_GL_WARN_ON_USE (log10, "log10 has portability problems - "
1308 "use gnulib module log10 for portability");
1309# endif
1310#endif
1311
1312#if @GNULIB_LOG10L@
1313# if @REPLACE_LOG10L@
1314# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1315# undef log10l
1316# define log10l rpl_log10l
1317# endif
1318_GL_FUNCDECL_RPL (log10l, long double, (long double x));
1319_GL_CXXALIAS_RPL (log10l, long double, (long double x));
1320# else
1321# if !@HAVE_LOG10L@ || !@HAVE_DECL_LOG10L@
1322# undef log10l
1323_GL_FUNCDECL_SYS (log10l, long double, (long double x));
1324# endif
1325_GL_CXXALIAS_SYS (log10l, long double, (long double x));
1326# endif
1327_GL_CXXALIASWARN (log10l);
1328#elif defined GNULIB_POSIXCHECK
1329# undef log10l
1330# if HAVE_RAW_DECL_LOG10L
1331_GL_WARN_ON_USE (log10l, "log10l is unportable - "
1332 "use gnulib module log10l for portability");
1333# endif
1334#endif
1335
1336
1337#if @GNULIB_LOG1PF@
1338# if @REPLACE_LOG1PF@
1339# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1340# undef log1pf
1341# define log1pf rpl_log1pf
1342# endif
1343_GL_FUNCDECL_RPL (log1pf, float, (float x));
1344_GL_CXXALIAS_RPL (log1pf, float, (float x));
1345# else
1346# if !@HAVE_LOG1PF@
1347_GL_FUNCDECL_SYS (log1pf, float, (float x));
1348# endif
1349_GL_CXXALIAS_SYS (log1pf, float, (float x));
1350# endif
1351_GL_CXXALIASWARN (log1pf);
1352#elif defined GNULIB_POSIXCHECK
1353# undef log1pf
1354# if HAVE_RAW_DECL_LOG1PF
1355_GL_WARN_ON_USE (log1pf, "log1pf is unportable - "
1356 "use gnulib module log1pf for portability");
1357# endif
1358#endif
1359
1360#if @GNULIB_LOG1P@
1361# if @REPLACE_LOG1P@
1362# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1363# undef log1p
1364# define log1p rpl_log1p
1365# endif
1366_GL_FUNCDECL_RPL (log1p, double, (double x));
1367_GL_CXXALIAS_RPL (log1p, double, (double x));
1368# else
1369# if !@HAVE_LOG1P@
1370_GL_FUNCDECL_SYS (log1p, double, (double x));
1371# endif
1372_GL_CXXALIAS_SYS (log1p, double, (double x));
1373# endif
1374_GL_CXXALIASWARN (log1p);
1375#elif defined GNULIB_POSIXCHECK
1376# undef log1p
1377# if HAVE_RAW_DECL_LOG1P
1378_GL_WARN_ON_USE (log1p, "log1p has portability problems - "
1379 "use gnulib module log1p for portability");
1380# endif
1381#endif
1382
1383#if @GNULIB_LOG1PL@
1384# if @REPLACE_LOG1PL@
1385# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1386# undef log1pl
1387# define log1pl rpl_log1pl
1388# endif
1389_GL_FUNCDECL_RPL (log1pl, long double, (long double x));
1390_GL_CXXALIAS_RPL (log1pl, long double, (long double x));
1391# else
1392# if !@HAVE_LOG1PL@
1393_GL_FUNCDECL_SYS (log1pl, long double, (long double x));
1394# endif
1395_GL_CXXALIAS_SYS (log1pl, long double, (long double x));
1396# endif
1397_GL_CXXALIASWARN (log1pl);
1398#elif defined GNULIB_POSIXCHECK
1399# undef log1pl
1400# if HAVE_RAW_DECL_LOG1PL
1401_GL_WARN_ON_USE (log1pl, "log1pl has portability problems - "
1402 "use gnulib module log1pl for portability");
1403# endif
1404#endif
1405
1406
1407#if @GNULIB_LOG2F@
1408# if @REPLACE_LOG2F@
1409# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1410# undef log2f
1411# define log2f rpl_log2f
1412# endif
1413_GL_FUNCDECL_RPL (log2f, float, (float x));
1414_GL_CXXALIAS_RPL (log2f, float, (float x));
1415# else
1416# if !@HAVE_DECL_LOG2F@
1417# undef log2f
1418_GL_FUNCDECL_SYS (log2f, float, (float x));
1419# endif
1420_GL_CXXALIAS_SYS (log2f, float, (float x));
1421# endif
1422_GL_CXXALIASWARN (log2f);
1423#elif defined GNULIB_POSIXCHECK
1424# undef log2f
1425# if HAVE_RAW_DECL_LOG2F
1426_GL_WARN_ON_USE (log2f, "log2f is unportable - "
1427 "use gnulib module log2f for portability");
1428# endif
1429#endif
1430
1431#if @GNULIB_LOG2@
1432# if @REPLACE_LOG2@
1433# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1434# undef log2
1435# define log2 rpl_log2
1436# endif
1437_GL_FUNCDECL_RPL (log2, double, (double x));
1438_GL_CXXALIAS_RPL (log2, double, (double x));
1439# else
1440# if !@HAVE_DECL_LOG2@
1441# undef log2
1442_GL_FUNCDECL_SYS (log2, double, (double x));
1443# endif
1444_GL_CXXALIAS_SYS (log2, double, (double x));
1445# endif
1446_GL_CXXALIASWARN (log2);
1447#elif defined GNULIB_POSIXCHECK
1448# undef log2
1449# if HAVE_RAW_DECL_LOG2
1450_GL_WARN_ON_USE (log2, "log2 is unportable - "
1451 "use gnulib module log2 for portability");
1452# endif
1453#endif
1454
1455#if @GNULIB_LOG2L@
1456# if @REPLACE_LOG2L@
1457# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1458# undef log2l
1459# define log2l rpl_log2l
1460# endif
1461_GL_FUNCDECL_RPL (log2l, long double, (long double x));
1462_GL_CXXALIAS_RPL (log2l, long double, (long double x));
1463# else
1464# if !@HAVE_DECL_LOG2L@
1465_GL_FUNCDECL_SYS (log2l, long double, (long double x));
1466# endif
1467_GL_CXXALIAS_SYS (log2l, long double, (long double x));
1468# endif
1469_GL_CXXALIASWARN (log2l);
1470#elif defined GNULIB_POSIXCHECK
1471# undef log2l
1472# if HAVE_RAW_DECL_LOG2L
1473_GL_WARN_ON_USE (log2l, "log2l is unportable - "
1474 "use gnulib module log2l for portability");
1475# endif
1476#endif
1477
1478
1479#if @GNULIB_LOGBF@
1480# if @REPLACE_LOGBF@
1481# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1482# undef logbf
1483# define logbf rpl_logbf
1484# endif
1485_GL_FUNCDECL_RPL (logbf, float, (float x));
1486_GL_CXXALIAS_RPL (logbf, float, (float x));
1487# else
1488# if !@HAVE_LOGBF@
1489_GL_FUNCDECL_SYS (logbf, float, (float x));
1490# endif
1491_GL_CXXALIAS_SYS (logbf, float, (float x));
1492# endif
1493_GL_CXXALIASWARN (logbf);
1494#elif defined GNULIB_POSIXCHECK
1495# undef logbf
1496# if HAVE_RAW_DECL_LOGBF
1497_GL_WARN_ON_USE (logbf, "logbf is unportable - "
1498 "use gnulib module logbf for portability");
1499# endif
1500#endif
1501
1502#if @GNULIB_LOGB@
1503# if @REPLACE_LOGB@
1504# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1505# undef logb
1506# define logb rpl_logb
1507# endif
1508_GL_FUNCDECL_RPL (logb, double, (double x));
1509_GL_CXXALIAS_RPL (logb, double, (double x));
1510# else
1511# if !@HAVE_DECL_LOGB@
1512_GL_FUNCDECL_SYS (logb, double, (double x));
1513# endif
1514_GL_CXXALIAS_SYS (logb, double, (double x));
1515# endif
1516_GL_CXXALIASWARN (logb);
1517#elif defined GNULIB_POSIXCHECK
1518# undef logb
1519# if HAVE_RAW_DECL_LOGB
1520_GL_WARN_ON_USE (logb, "logb is unportable - "
1521 "use gnulib module logb for portability");
1522# endif
1523#endif
1524
1525#if @GNULIB_LOGBL@
1526# if @REPLACE_LOGBL@
1527# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1528# undef logbl
1529# define logbl rpl_logbl
1530# endif
1531_GL_FUNCDECL_RPL (logbl, long double, (long double x));
1532_GL_CXXALIAS_RPL (logbl, long double, (long double x));
1533# else
1534# if !@HAVE_LOGBL@
1535_GL_FUNCDECL_SYS (logbl, long double, (long double x));
1536# endif
1537_GL_CXXALIAS_SYS (logbl, long double, (long double x));
1538# endif
1539_GL_CXXALIASWARN (logbl);
1540#elif defined GNULIB_POSIXCHECK
1541# undef logbl
1542# if HAVE_RAW_DECL_LOGBL
1543_GL_WARN_ON_USE (logbl, "logbl is unportable - "
1544 "use gnulib module logbl for portability");
1545# endif
1546#endif
1547
35428fb6
LC
1548
1549#if @GNULIB_MODFF@
005de2e8
LC
1550# if @REPLACE_MODFF@
1551# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1552# undef modff
1553# define modff rpl_modff
1554# endif
1555_GL_FUNCDECL_RPL (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
1556_GL_CXXALIAS_RPL (modff, float, (float x, float *iptr));
1557# else
1558# if !@HAVE_MODFF@
1559# undef modff
35428fb6 1560_GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
005de2e8 1561# endif
35428fb6 1562_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr));
005de2e8 1563# endif
35428fb6
LC
1564_GL_CXXALIASWARN (modff);
1565#elif defined GNULIB_POSIXCHECK
1566# undef modff
1567# if HAVE_RAW_DECL_MODFF
1568_GL_WARN_ON_USE (modff, "modff is unportable - "
1569 "use gnulib module modff for portability");
1570# endif
1571#endif
1572
005de2e8
LC
1573#if @GNULIB_MODF@
1574# if @REPLACE_MODF@
1575# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1576# undef modf
1577# define modf rpl_modf
1578# endif
1579_GL_FUNCDECL_RPL (modf, double, (double x, double *iptr) _GL_ARG_NONNULL ((2)));
1580_GL_CXXALIAS_RPL (modf, double, (double x, double *iptr));
1581# else
1582_GL_CXXALIAS_SYS (modf, double, (double x, double *iptr));
1583# endif
1584_GL_CXXALIASWARN (modf);
1585#elif defined GNULIB_POSIXCHECK
1586# undef modf
1587# if HAVE_RAW_DECL_MODF
1588_GL_WARN_ON_USE (modf, "modf has portability problems - "
1589 "use gnulib module modf for portability");
1590# endif
1591#endif
1592
1593#if @GNULIB_MODFL@
1594# if @REPLACE_MODFL@
1595# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1596# undef modfl
1597# define modfl rpl_modfl
1598# endif
1599_GL_FUNCDECL_RPL (modfl, long double, (long double x, long double *iptr)
1600 _GL_ARG_NONNULL ((2)));
1601_GL_CXXALIAS_RPL (modfl, long double, (long double x, long double *iptr));
1602# else
1603# if !@HAVE_MODFL@
1604# undef modfl
1605_GL_FUNCDECL_SYS (modfl, long double, (long double x, long double *iptr)
1606 _GL_ARG_NONNULL ((2)));
1607# endif
1608_GL_CXXALIAS_SYS (modfl, long double, (long double x, long double *iptr));
1609# endif
1610_GL_CXXALIASWARN (modfl);
1611#elif defined GNULIB_POSIXCHECK
1612# undef modfl
1613# if HAVE_RAW_DECL_MODFL
1614_GL_WARN_ON_USE (modfl, "modfl is unportable - "
1615 "use gnulib module modfl for portability");
1616# endif
1617#endif
1618
35428fb6
LC
1619
1620#if @GNULIB_POWF@
1621# if !@HAVE_POWF@
1622# undef powf
1623_GL_FUNCDECL_SYS (powf, float, (float x, float y));
1624# endif
1625_GL_CXXALIAS_SYS (powf, float, (float x, float y));
1626_GL_CXXALIASWARN (powf);
1627#elif defined GNULIB_POSIXCHECK
1628# undef powf
1629# if HAVE_RAW_DECL_POWF
1630_GL_WARN_ON_USE (powf, "powf is unportable - "
1631 "use gnulib module powf for portability");
1632# endif
1633#endif
1634
1635
005de2e8
LC
1636#if @GNULIB_REMAINDERF@
1637# if @REPLACE_REMAINDERF@
1638# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1639# undef remainderf
1640# define remainderf rpl_remainderf
1641# endif
1642_GL_FUNCDECL_RPL (remainderf, float, (float x, float y));
1643_GL_CXXALIAS_RPL (remainderf, float, (float x, float y));
1644# else
1645# if !@HAVE_REMAINDERF@
1646_GL_FUNCDECL_SYS (remainderf, float, (float x, float y));
1647# endif
1648_GL_CXXALIAS_SYS (remainderf, float, (float x, float y));
1649# endif
1650_GL_CXXALIASWARN (remainderf);
1651#elif defined GNULIB_POSIXCHECK
1652# undef remainderf
1653# if HAVE_RAW_DECL_REMAINDERF
1654_GL_WARN_ON_USE (remainderf, "remainderf is unportable - "
1655 "use gnulib module remainderf for portability");
1656# endif
1657#endif
1658
1659#if @GNULIB_REMAINDER@
1660# if @REPLACE_REMAINDER@
1661# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1662# undef remainder
1663# define remainder rpl_remainder
1664# endif
1665_GL_FUNCDECL_RPL (remainder, double, (double x, double y));
1666_GL_CXXALIAS_RPL (remainder, double, (double x, double y));
1667# else
1668# if !@HAVE_REMAINDER@ || !@HAVE_DECL_REMAINDER@
1669_GL_FUNCDECL_SYS (remainder, double, (double x, double y));
1670# endif
1671_GL_CXXALIAS_SYS (remainder, double, (double x, double y));
1672# endif
1673_GL_CXXALIASWARN (remainder);
1674#elif defined GNULIB_POSIXCHECK
1675# undef remainder
1676# if HAVE_RAW_DECL_REMAINDER
1677_GL_WARN_ON_USE (remainder, "remainder is unportable - "
1678 "use gnulib module remainder for portability");
1679# endif
1680#endif
1681
1682#if @GNULIB_REMAINDERL@
1683# if @REPLACE_REMAINDERL@
1684# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1685# undef remainderl
1686# define remainderl rpl_remainderl
1687# endif
1688_GL_FUNCDECL_RPL (remainderl, long double, (long double x, long double y));
1689_GL_CXXALIAS_RPL (remainderl, long double, (long double x, long double y));
1690# else
1691# if !@HAVE_DECL_REMAINDERL@
1692# undef remainderl
1693_GL_FUNCDECL_SYS (remainderl, long double, (long double x, long double y));
1694# endif
1695_GL_CXXALIAS_SYS (remainderl, long double, (long double x, long double y));
1696# endif
1697_GL_CXXALIASWARN (remainderl);
1698#elif defined GNULIB_POSIXCHECK
1699# undef remainderl
1700# if HAVE_RAW_DECL_REMAINDERL
1701_GL_WARN_ON_USE (remainderl, "remainderl is unportable - "
1702 "use gnulib module remainderl for portability");
1703# endif
1704#endif
1705
1706
35428fb6 1707#if @GNULIB_RINTF@
005de2e8 1708# if !@HAVE_DECL_RINTF@
35428fb6
LC
1709_GL_FUNCDECL_SYS (rintf, float, (float x));
1710# endif
1711_GL_CXXALIAS_SYS (rintf, float, (float x));
1712_GL_CXXALIASWARN (rintf);
1713#elif defined GNULIB_POSIXCHECK
1714# undef rintf
1715# if HAVE_RAW_DECL_RINTF
1716_GL_WARN_ON_USE (rintf, "rintf is unportable - "
1717 "use gnulib module rintf for portability");
1718# endif
1719#endif
1720
1721#if @GNULIB_RINT@
1722# if !@HAVE_RINT@
1723_GL_FUNCDECL_SYS (rint, double, (double x));
1724# endif
1725_GL_CXXALIAS_SYS (rint, double, (double x));
1726_GL_CXXALIASWARN (rint);
1727#elif defined GNULIB_POSIXCHECK
1728# undef rint
1729# if HAVE_RAW_DECL_RINT
1730_GL_WARN_ON_USE (rint, "rint is unportable - "
1731 "use gnulib module rint for portability");
1732# endif
1733#endif
1734
1735#if @GNULIB_RINTL@
1736# if !@HAVE_RINTL@
1737_GL_FUNCDECL_SYS (rintl, long double, (long double x));
1738# endif
1739_GL_CXXALIAS_SYS (rintl, long double, (long double x));
1740_GL_CXXALIASWARN (rintl);
1741#elif defined GNULIB_POSIXCHECK
1742# undef rintl
1743# if HAVE_RAW_DECL_RINTL
1744_GL_WARN_ON_USE (rintl, "rintl is unportable - "
1745 "use gnulib module rintl for portability");
1746# endif
1747#endif
1748
1749
2e65b52f
LC
1750#if @GNULIB_ROUNDF@
1751# if @REPLACE_ROUNDF@
1752# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1753# undef roundf
1754# define roundf rpl_roundf
1755# endif
1756_GL_FUNCDECL_RPL (roundf, float, (float x));
1757_GL_CXXALIAS_RPL (roundf, float, (float x));
1758# else
1759# if !@HAVE_DECL_ROUNDF@
1760_GL_FUNCDECL_SYS (roundf, float, (float x));
1761# endif
1762_GL_CXXALIAS_SYS (roundf, float, (float x));
1763# endif
1764_GL_CXXALIASWARN (roundf);
1765#elif defined GNULIB_POSIXCHECK
1766# undef roundf
1767# if HAVE_RAW_DECL_ROUNDF
1768_GL_WARN_ON_USE (roundf, "roundf is unportable - "
1769 "use gnulib module roundf for portability");
1770# endif
1771#endif
1772
1773#if @GNULIB_ROUND@
1774# if @REPLACE_ROUND@
1775# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1776# undef round
1777# define round rpl_round
1778# endif
1779_GL_FUNCDECL_RPL (round, double, (double x));
1780_GL_CXXALIAS_RPL (round, double, (double x));
1781# else
1782# if !@HAVE_DECL_ROUND@
1783_GL_FUNCDECL_SYS (round, double, (double x));
1784# endif
1785_GL_CXXALIAS_SYS (round, double, (double x));
1786# endif
1787_GL_CXXALIASWARN (round);
1788#elif defined GNULIB_POSIXCHECK
1789# undef round
1790# if HAVE_RAW_DECL_ROUND
1791_GL_WARN_ON_USE (round, "round is unportable - "
1792 "use gnulib module round for portability");
1793# endif
1794#endif
1795
1796#if @GNULIB_ROUNDL@
1797# if @REPLACE_ROUNDL@
1798# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1799# undef roundl
1800# define roundl rpl_roundl
1801# endif
1802_GL_FUNCDECL_RPL (roundl, long double, (long double x));
1803_GL_CXXALIAS_RPL (roundl, long double, (long double x));
1804# else
1805# if !@HAVE_DECL_ROUNDL@
005de2e8 1806# undef roundl
2e65b52f
LC
1807_GL_FUNCDECL_SYS (roundl, long double, (long double x));
1808# endif
1809_GL_CXXALIAS_SYS (roundl, long double, (long double x));
1810# endif
1811_GL_CXXALIASWARN (roundl);
1812#elif defined GNULIB_POSIXCHECK
1813# undef roundl
1814# if HAVE_RAW_DECL_ROUNDL
1815_GL_WARN_ON_USE (roundl, "roundl is unportable - "
1816 "use gnulib module roundl for portability");
1817# endif
1818#endif
1819
1820
35428fb6
LC
1821#if @GNULIB_SINF@
1822# if !@HAVE_SINF@
1823# undef sinf
1824_GL_FUNCDECL_SYS (sinf, float, (float x));
1825# endif
1826_GL_CXXALIAS_SYS (sinf, float, (float x));
1827_GL_CXXALIASWARN (sinf);
1828#elif defined GNULIB_POSIXCHECK
1829# undef sinf
1830# if HAVE_RAW_DECL_SINF
1831_GL_WARN_ON_USE (sinf, "sinf is unportable - "
1832 "use gnulib module sinf for portability");
1833# endif
1834#endif
1835
2e65b52f
LC
1836#if @GNULIB_SINL@
1837# if !@HAVE_SINL@ || !@HAVE_DECL_SINL@
005de2e8 1838# undef sinl
2e65b52f
LC
1839_GL_FUNCDECL_SYS (sinl, long double, (long double x));
1840# endif
1841_GL_CXXALIAS_SYS (sinl, long double, (long double x));
1842_GL_CXXALIASWARN (sinl);
1843#elif defined GNULIB_POSIXCHECK
1844# undef sinl
1845# if HAVE_RAW_DECL_SINL
1846_GL_WARN_ON_USE (sinl, "sinl is unportable - "
005de2e8 1847 "use gnulib module sinl for portability");
2e65b52f
LC
1848# endif
1849#endif
1850
1851
35428fb6
LC
1852#if @GNULIB_SINHF@
1853# if !@HAVE_SINHF@
1854# undef sinhf
1855_GL_FUNCDECL_SYS (sinhf, float, (float x));
1856# endif
1857_GL_CXXALIAS_SYS (sinhf, float, (float x));
1858_GL_CXXALIASWARN (sinhf);
1859#elif defined GNULIB_POSIXCHECK
1860# undef sinhf
1861# if HAVE_RAW_DECL_SINHF
1862_GL_WARN_ON_USE (sinhf, "sinhf is unportable - "
1863 "use gnulib module sinhf for portability");
1864# endif
1865#endif
1866
1867
1868#if @GNULIB_SQRTF@
1869# if !@HAVE_SQRTF@
1870# undef sqrtf
1871_GL_FUNCDECL_SYS (sqrtf, float, (float x));
1872# endif
1873_GL_CXXALIAS_SYS (sqrtf, float, (float x));
1874_GL_CXXALIASWARN (sqrtf);
1875#elif defined GNULIB_POSIXCHECK
1876# undef sqrtf
1877# if HAVE_RAW_DECL_SQRTF
1878_GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - "
1879 "use gnulib module sqrtf for portability");
1880# endif
1881#endif
1882
2e65b52f 1883#if @GNULIB_SQRTL@
005de2e8
LC
1884# if @REPLACE_SQRTL@
1885# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1886# undef sqrtl
1887# define sqrtl rpl_sqrtl
1888# endif
1889_GL_FUNCDECL_RPL (sqrtl, long double, (long double x));
1890_GL_CXXALIAS_RPL (sqrtl, long double, (long double x));
1891# else
1892# if !@HAVE_SQRTL@ || !@HAVE_DECL_SQRTL@
1893# undef sqrtl
2e65b52f 1894_GL_FUNCDECL_SYS (sqrtl, long double, (long double x));
005de2e8 1895# endif
2e65b52f 1896_GL_CXXALIAS_SYS (sqrtl, long double, (long double x));
005de2e8 1897# endif
2e65b52f
LC
1898_GL_CXXALIASWARN (sqrtl);
1899#elif defined GNULIB_POSIXCHECK
1900# undef sqrtl
1901# if HAVE_RAW_DECL_SQRTL
1902_GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - "
005de2e8 1903 "use gnulib module sqrtl for portability");
2e65b52f
LC
1904# endif
1905#endif
1906
1907
35428fb6
LC
1908#if @GNULIB_TANF@
1909# if !@HAVE_TANF@
1910# undef tanf
1911_GL_FUNCDECL_SYS (tanf, float, (float x));
1912# endif
1913_GL_CXXALIAS_SYS (tanf, float, (float x));
1914_GL_CXXALIASWARN (tanf);
1915#elif defined GNULIB_POSIXCHECK
1916# undef tanf
1917# if HAVE_RAW_DECL_TANF
1918_GL_WARN_ON_USE (tanf, "tanf is unportable - "
1919 "use gnulib module tanf for portability");
1920# endif
1921#endif
1922
2e65b52f
LC
1923#if @GNULIB_TANL@
1924# if !@HAVE_TANL@ || !@HAVE_DECL_TANL@
005de2e8 1925# undef tanl
2e65b52f
LC
1926_GL_FUNCDECL_SYS (tanl, long double, (long double x));
1927# endif
1928_GL_CXXALIAS_SYS (tanl, long double, (long double x));
1929_GL_CXXALIASWARN (tanl);
1930#elif defined GNULIB_POSIXCHECK
1931# undef tanl
1932# if HAVE_RAW_DECL_TANL
1933_GL_WARN_ON_USE (tanl, "tanl is unportable - "
005de2e8 1934 "use gnulib module tanl for portability");
2e65b52f
LC
1935# endif
1936#endif
1937
1938
35428fb6
LC
1939#if @GNULIB_TANHF@
1940# if !@HAVE_TANHF@
1941# undef tanhf
1942_GL_FUNCDECL_SYS (tanhf, float, (float x));
1943# endif
1944_GL_CXXALIAS_SYS (tanhf, float, (float x));
1945_GL_CXXALIASWARN (tanhf);
1946#elif defined GNULIB_POSIXCHECK
1947# undef tanhf
1948# if HAVE_RAW_DECL_TANHF
1949_GL_WARN_ON_USE (tanhf, "tanhf is unportable - "
1950 "use gnulib module tanhf for portability");
1951# endif
1952#endif
1953
1954
2e65b52f 1955#if @GNULIB_TRUNCF@
49114fd4
LC
1956# if @REPLACE_TRUNCF@
1957# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1958# define truncf rpl_truncf
1959# endif
1960_GL_FUNCDECL_RPL (truncf, float, (float x));
1961_GL_CXXALIAS_RPL (truncf, float, (float x));
1962# else
1963# if !@HAVE_DECL_TRUNCF@
2e65b52f 1964_GL_FUNCDECL_SYS (truncf, float, (float x));
49114fd4 1965# endif
2e65b52f 1966_GL_CXXALIAS_SYS (truncf, float, (float x));
49114fd4 1967# endif
2e65b52f
LC
1968_GL_CXXALIASWARN (truncf);
1969#elif defined GNULIB_POSIXCHECK
1970# undef truncf
1971# if HAVE_RAW_DECL_TRUNCF
1972_GL_WARN_ON_USE (truncf, "truncf is unportable - "
1973 "use gnulib module truncf for portability");
1974# endif
1975#endif
1976
1977#if @GNULIB_TRUNC@
49114fd4
LC
1978# if @REPLACE_TRUNC@
1979# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1980# define trunc rpl_trunc
1981# endif
1982_GL_FUNCDECL_RPL (trunc, double, (double x));
1983_GL_CXXALIAS_RPL (trunc, double, (double x));
1984# else
1985# if !@HAVE_DECL_TRUNC@
2e65b52f 1986_GL_FUNCDECL_SYS (trunc, double, (double x));
49114fd4 1987# endif
2e65b52f 1988_GL_CXXALIAS_SYS (trunc, double, (double x));
49114fd4 1989# endif
2e65b52f
LC
1990_GL_CXXALIASWARN (trunc);
1991#elif defined GNULIB_POSIXCHECK
1992# undef trunc
1993# if HAVE_RAW_DECL_TRUNC
1994_GL_WARN_ON_USE (trunc, "trunc is unportable - "
1995 "use gnulib module trunc for portability");
1996# endif
1997#endif
1998
1999#if @GNULIB_TRUNCL@
2000# if @REPLACE_TRUNCL@
2001# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2002# undef truncl
2003# define truncl rpl_truncl
2004# endif
2005_GL_FUNCDECL_RPL (truncl, long double, (long double x));
2006_GL_CXXALIAS_RPL (truncl, long double, (long double x));
2007# else
2008# if !@HAVE_DECL_TRUNCL@
2009_GL_FUNCDECL_SYS (truncl, long double, (long double x));
2010# endif
2011_GL_CXXALIAS_SYS (truncl, long double, (long double x));
2012# endif
2013_GL_CXXALIASWARN (truncl);
2014#elif defined GNULIB_POSIXCHECK
2015# undef truncl
2016# if HAVE_RAW_DECL_TRUNCL
2017_GL_WARN_ON_USE (truncl, "truncl is unportable - "
2018 "use gnulib module truncl for portability");
2019# endif
2020#endif
2021
2022
35428fb6
LC
2023/* Definitions of function-like macros come here, after the function
2024 declarations. */
2025
2026
2e65b52f
LC
2027#if @GNULIB_ISFINITE@
2028# if @REPLACE_ISFINITE@
2029_GL_EXTERN_C int gl_isfinitef (float x);
2030_GL_EXTERN_C int gl_isfinited (double x);
2031_GL_EXTERN_C int gl_isfinitel (long double x);
2032# undef isfinite
2033# define isfinite(x) \
2034 (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \
2035 sizeof (x) == sizeof (double) ? gl_isfinited (x) : \
2036 gl_isfinitef (x))
2037# endif
35428fb6
LC
2038# ifdef __cplusplus
2039# ifdef isfinite
2040_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite)
2041# undef isfinite
2042_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite)
2043# endif
2044# endif
2e65b52f
LC
2045#elif defined GNULIB_POSIXCHECK
2046# if defined isfinite
2047_GL_WARN_REAL_FLOATING_DECL (isfinite);
2048# undef isfinite
2049# define isfinite(x) _GL_WARN_REAL_FLOATING_IMPL (isfinite, x)
2050# endif
2051#endif
2052
2053
2054#if @GNULIB_ISINF@
2055# if @REPLACE_ISINF@
2056_GL_EXTERN_C int gl_isinff (float x);
2057_GL_EXTERN_C int gl_isinfd (double x);
2058_GL_EXTERN_C int gl_isinfl (long double x);
2059# undef isinf
2060# define isinf(x) \
2061 (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \
2062 sizeof (x) == sizeof (double) ? gl_isinfd (x) : \
2063 gl_isinff (x))
2064# endif
35428fb6
LC
2065# ifdef __cplusplus
2066# ifdef isinf
2067_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf)
2068# undef isinf
2069_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf)
2070# endif
2071# endif
2e65b52f
LC
2072#elif defined GNULIB_POSIXCHECK
2073# if defined isinf
2074_GL_WARN_REAL_FLOATING_DECL (isinf);
2075# undef isinf
2076# define isinf(x) _GL_WARN_REAL_FLOATING_IMPL (isinf, x)
2077# endif
2078#endif
2079
2080
2081#if @GNULIB_ISNANF@
2082/* Test for NaN for 'float' numbers. */
2083# if @HAVE_ISNANF@
2084/* The original <math.h> included above provides a declaration of isnan macro
2085 or (older) isnanf function. */
2086# if __GNUC__ >= 4
2087 /* GCC 4.0 and newer provides three built-ins for isnan. */
2088# undef isnanf
2089# define isnanf(x) __builtin_isnanf ((float)(x))
2090# elif defined isnan
2091# undef isnanf
2092# define isnanf(x) isnan ((float)(x))
2093# endif
2094# else
2095/* Test whether X is a NaN. */
2096# undef isnanf
2097# define isnanf rpl_isnanf
2098_GL_EXTERN_C int isnanf (float x);
2099# endif
2100#endif
2101
2102#if @GNULIB_ISNAND@
2103/* Test for NaN for 'double' numbers.
2104 This function is a gnulib extension, unlike isnan() which applied only
2105 to 'double' numbers earlier but now is a type-generic macro. */
2106# if @HAVE_ISNAND@
0f00f2c3
LC
2107/* The original <math.h> included above provides a declaration of isnan
2108 macro. */
2e65b52f
LC
2109# if __GNUC__ >= 4
2110 /* GCC 4.0 and newer provides three built-ins for isnan. */
2111# undef isnand
2112# define isnand(x) __builtin_isnan ((double)(x))
2113# else
2114# undef isnand
2115# define isnand(x) isnan ((double)(x))
2116# endif
2117# else
2118/* Test whether X is a NaN. */
2119# undef isnand
2120# define isnand rpl_isnand
2121_GL_EXTERN_C int isnand (double x);
2122# endif
2123#endif
2124
2125#if @GNULIB_ISNANL@
2126/* Test for NaN for 'long double' numbers. */
2127# if @HAVE_ISNANL@
0f00f2c3
LC
2128/* The original <math.h> included above provides a declaration of isnan
2129 macro or (older) isnanl function. */
2e65b52f
LC
2130# if __GNUC__ >= 4
2131 /* GCC 4.0 and newer provides three built-ins for isnan. */
2132# undef isnanl
2133# define isnanl(x) __builtin_isnanl ((long double)(x))
2134# elif defined isnan
2135# undef isnanl
2136# define isnanl(x) isnan ((long double)(x))
2137# endif
2138# else
2139/* Test whether X is a NaN. */
2140# undef isnanl
2141# define isnanl rpl_isnanl
7f1ea859 2142_GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST;
2e65b52f
LC
2143# endif
2144#endif
2145
2146/* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL! */
2147#if @GNULIB_ISNAN@
2148# if @REPLACE_ISNAN@
2149/* We can't just use the isnanf macro (e.g.) as exposed by
2150 isnanf.h (e.g.) here, because those may end up being macros
2151 that recursively expand back to isnan. So use the gnulib
2152 replacements for them directly. */
2153# if @HAVE_ISNANF@ && __GNUC__ >= 4
49114fd4 2154# define gl_isnan_f(x) __builtin_isnanf ((float)(x))
2e65b52f
LC
2155# else
2156_GL_EXTERN_C int rpl_isnanf (float x);
2157# define gl_isnan_f(x) rpl_isnanf (x)
2158# endif
2159# if @HAVE_ISNAND@ && __GNUC__ >= 4
2160# define gl_isnan_d(x) __builtin_isnan ((double)(x))
2161# else
2162_GL_EXTERN_C int rpl_isnand (double x);
2163# define gl_isnan_d(x) rpl_isnand (x)
2164# endif
2165# if @HAVE_ISNANL@ && __GNUC__ >= 4
49114fd4 2166# define gl_isnan_l(x) __builtin_isnanl ((long double)(x))
2e65b52f 2167# else
7f1ea859 2168_GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
2e65b52f
LC
2169# define gl_isnan_l(x) rpl_isnanl (x)
2170# endif
2171# undef isnan
2172# define isnan(x) \
2173 (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \
2174 sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \
2175 gl_isnan_f (x))
49114fd4
LC
2176# elif __GNUC__ >= 4
2177# undef isnan
2178# define isnan(x) \
2179 (sizeof (x) == sizeof (long double) ? __builtin_isnanl ((long double)(x)) : \
2180 sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \
2181 __builtin_isnanf ((float)(x)))
2e65b52f 2182# endif
35428fb6
LC
2183# ifdef __cplusplus
2184# ifdef isnan
2185_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan)
2186# undef isnan
2187_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan)
2188# endif
2189# else
ab4d62ad 2190/* Ensure isnan is a macro. */
35428fb6
LC
2191# ifndef isnan
2192# define isnan isnan
2193# endif
ab4d62ad 2194# endif
2e65b52f
LC
2195#elif defined GNULIB_POSIXCHECK
2196# if defined isnan
2197_GL_WARN_REAL_FLOATING_DECL (isnan);
2198# undef isnan
2199# define isnan(x) _GL_WARN_REAL_FLOATING_IMPL (isnan, x)
2200# endif
2201#endif
2202
2203
2204#if @GNULIB_SIGNBIT@
2205# if @REPLACE_SIGNBIT_USING_GCC@
2206# undef signbit
2207 /* GCC 4.0 and newer provides three built-ins for signbit. */
2208# define signbit(x) \
2209 (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
2210 sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
2211 __builtin_signbitf (x))
2212# endif
2213# if @REPLACE_SIGNBIT@
2214# undef signbit
2215_GL_EXTERN_C int gl_signbitf (float arg);
2216_GL_EXTERN_C int gl_signbitd (double arg);
2217_GL_EXTERN_C int gl_signbitl (long double arg);
35428fb6 2218# if __GNUC__ >= 2 && !defined __STRICT_ANSI__
0f00f2c3
LC
2219# define _GL_NUM_UINT_WORDS(type) \
2220 ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
2e65b52f
LC
2221# if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf
2222# define gl_signbitf_OPTIMIZED_MACRO
2223# define gl_signbitf(arg) \
2224 ({ union { float _value; \
0f00f2c3 2225 unsigned int _word[_GL_NUM_UINT_WORDS (float)]; \
2e65b52f
LC
2226 } _m; \
2227 _m._value = (arg); \
2228 (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; \
2229 })
2230# endif
2231# if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd
2232# define gl_signbitd_OPTIMIZED_MACRO
2233# define gl_signbitd(arg) \
0f00f2c3
LC
2234 ({ union { double _value; \
2235 unsigned int _word[_GL_NUM_UINT_WORDS (double)]; \
2e65b52f
LC
2236 } _m; \
2237 _m._value = (arg); \
2238 (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; \
2239 })
2240# endif
2241# if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined gl_signbitl
2242# define gl_signbitl_OPTIMIZED_MACRO
2243# define gl_signbitl(arg) \
2244 ({ union { long double _value; \
0f00f2c3 2245 unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \
2e65b52f
LC
2246 } _m; \
2247 _m._value = (arg); \
0f00f2c3 2248 (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; \
2e65b52f
LC
2249 })
2250# endif
2251# endif
2252# define signbit(x) \
2253 (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \
2254 sizeof (x) == sizeof (double) ? gl_signbitd (x) : \
2255 gl_signbitf (x))
2256# endif
35428fb6
LC
2257# ifdef __cplusplus
2258# ifdef signbit
2259_GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit)
2260# undef signbit
2261_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit)
2262# endif
2263# endif
2e65b52f
LC
2264#elif defined GNULIB_POSIXCHECK
2265# if defined signbit
2266_GL_WARN_REAL_FLOATING_DECL (signbit);
2267# undef signbit
2268# define signbit(x) _GL_WARN_REAL_FLOATING_IMPL (signbit, x)
2269# endif
2270#endif
2271
af07e104 2272_GL_INLINE_HEADER_END
2e65b52f 2273
3d458a81
AW
2274#endif /* _@GUARD_PREFIX@_MATH_H */
2275#endif /* _@GUARD_PREFIX@_MATH_H */