summaryrefslogtreecommitdiffstats
path: root/gl/math.in.h
diff options
context:
space:
mode:
Diffstat (limited to 'gl/math.in.h')
-rw-r--r--gl/math.in.h1675
1 files changed, 1600 insertions, 75 deletions
diff --git a/gl/math.in.h b/gl/math.in.h
index fbc2918..7189819 100644
--- a/gl/math.in.h
+++ b/gl/math.in.h
@@ -1,6 +1,6 @@
1/* A GNU-like <math.h>. 1/* A GNU-like <math.h>.
2 2
3 Copyright (C) 2002-2003, 2007-2010 Free Software Foundation, Inc. 3 Copyright (C) 2002-2003, 2007-2013 Free Software Foundation, Inc.
4 4
5 This program is free software: you can redistribute it and/or modify 5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
@@ -15,18 +15,23 @@
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
17 17
18#ifndef _GL_MATH_H 18#ifndef _@GUARD_PREFIX@_MATH_H
19 19
20#if __GNUC__ >= 3 20#if __GNUC__ >= 3
21@PRAGMA_SYSTEM_HEADER@ 21@PRAGMA_SYSTEM_HEADER@
22#endif 22#endif
23@PRAGMA_COLUMNS@
23 24
24/* The include_next requires a split double-inclusion guard. */ 25/* The include_next requires a split double-inclusion guard. */
25#@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ 26#@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
26 27
27#ifndef _GL_MATH_H 28#ifndef _@GUARD_PREFIX@_MATH_H
28#define _GL_MATH_H 29#define _@GUARD_PREFIX@_MATH_H
29 30
31_GL_INLINE_HEADER_BEGIN
32#ifndef _GL_MATH_INLINE
33# define _GL_MATH_INLINE _GL_INLINE
34#endif
30 35
31/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ 36/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
32 37
@@ -34,22 +39,60 @@
34 39
35/* The definition of _GL_WARN_ON_USE is copied here. */ 40/* The definition of _GL_WARN_ON_USE is copied here. */
36 41
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
37/* Helper macros to define a portability warning for the 80/* Helper macros to define a portability warning for the
38 classification macro FUNC called with VALUE. POSIX declares the 81 classification macro FUNC called with VALUE. POSIX declares the
39 classification macros with an argument of real-floating (that is, 82 classification macros with an argument of real-floating (that is,
40 one of float, double, or long double). */ 83 one of float, double, or long double). */
41#define _GL_WARN_REAL_FLOATING_DECL(func) \ 84#define _GL_WARN_REAL_FLOATING_DECL(func) \
42static inline int \ 85_GL_MATH_INLINE int \
43rpl_ ## func ## f (float f) \ 86rpl_ ## func ## f (float f) \
44{ \ 87{ \
45 return func (f); \ 88 return func (f); \
46} \ 89} \
47static inline int \ 90_GL_MATH_INLINE int \
48rpl_ ## func ## d (double d) \ 91rpl_ ## func ## d (double d) \
49{ \ 92{ \
50 return func (d); \ 93 return func (d); \
51} \ 94} \
52static inline int \ 95_GL_MATH_INLINE int \
53rpl_ ## func ## l (long double l) \ 96rpl_ ## func ## l (long double l) \
54{ \ 97{ \
55 return func (l); \ 98 return func (l); \
@@ -66,76 +109,121 @@ _GL_WARN_ON_USE (rpl_ ## func ## l, #func " is unportable - " \
66 : rpl_ ## func ## l (value)) 109 : rpl_ ## func ## l (value))
67 110
68 111
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
69/* POSIX allows platforms that don't support NAN. But all major 120/* POSIX allows platforms that don't support NAN. But all major
70 machines in the past 15 years have supported something close to 121 machines in the past 15 years have supported something close to
71 IEEE NaN, so we define this unconditionally. We also must define 122 IEEE NaN, so we define this unconditionally. We also must define
72 it on platforms like Solaris 10, where NAN is present but defined 123 it on platforms like Solaris 10, where NAN is present but defined
73 as a function pointer rather than a floating point constant. */ 124 as a function pointer rather than a floating point constant. */
74#if !defined NAN || @REPLACE_NAN@ 125#if !defined NAN || @REPLACE_NAN@
75# undef NAN 126# if !GNULIB_defined_NAN
76 /* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */ 127# undef NAN
77# ifdef __DECC 128 /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler
78static float 129 choke on the expression 0.0 / 0.0. */
130# if defined __DECC || defined _MSC_VER
131_GL_MATH_INLINE float
79_NaN () 132_NaN ()
80{ 133{
81 static float zero = 0.0f; 134 static float zero = 0.0f;
82 return zero / zero; 135 return zero / zero;
83} 136}
84# define NAN (_NaN()) 137# define NAN (_NaN())
85# else 138# else
86# define NAN (0.0f / 0.0f) 139# define NAN (0.0f / 0.0f)
140# endif
141# define GNULIB_defined_NAN 1
87# endif 142# endif
88#endif 143#endif
89 144
90/* Solaris 10 defines HUGE_VAL, but as a function pointer rather 145/* Solaris 10 defines HUGE_VAL, but as a function pointer rather
91 than a floating point constant. */ 146 than a floating point constant. */
92#if @REPLACE_HUGE_VAL@ 147#if @REPLACE_HUGE_VAL@
148# undef HUGE_VALF
149# define HUGE_VALF (1.0f / 0.0f)
93# undef HUGE_VAL 150# undef HUGE_VAL
94# define HUGE_VAL (1.0 / 0.0) 151# define HUGE_VAL (1.0 / 0.0)
152# undef HUGE_VALL
153# define HUGE_VALL (1.0L / 0.0L)
95#endif 154#endif
96 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
97 165
98/* Write x as 166/* HUGE_VAL is a 'double' Infinity. */
99 x = mantissa * 2^exp 167#ifndef HUGE_VAL
100 where 168# if defined _MSC_VER
101 If x finite and nonzero: 0.5 <= |mantissa| < 1.0. 169/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0. */
102 If x is zero: mantissa = x, exp = 0. 170# define HUGE_VAL (1e250 * 1e250)
103 If x is infinite or NaN: mantissa = x, exp unspecified.
104 Store exp in *EXPPTR and return mantissa. */
105#if @GNULIB_FREXP@
106# if @REPLACE_FREXP@
107# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
108# define frexp rpl_frexp
109# endif
110_GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2)));
111_GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr));
112# else 171# else
113_GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr)); 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)
114# endif 183# endif
115_GL_CXXALIASWARN (frexp);
116#elif defined GNULIB_POSIXCHECK
117# undef frexp
118/* Assume frexp is always declared. */
119_GL_WARN_ON_USE (frexp, "frexp is unportable - "
120 "use gnulib module frexp for portability");
121#endif 184#endif
122 185
123 186
124#if @GNULIB_LOGB@ 187/* Ensure FP_ILOGB0 and FP_ILOGBNAN are defined. */
125# if !@HAVE_DECL_LOGB@ 188#if !(defined FP_ILOGB0 && defined FP_ILOGBNAN)
126_GL_EXTERN_C double logb (double x); 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
206#endif
207
208
209#if @GNULIB_ACOSF@
210# if !@HAVE_ACOSF@
211# undef acosf
212_GL_FUNCDECL_SYS (acosf, float, (float x));
127# endif 213# endif
214_GL_CXXALIAS_SYS (acosf, float, (float x));
215_GL_CXXALIASWARN (acosf);
128#elif defined GNULIB_POSIXCHECK 216#elif defined GNULIB_POSIXCHECK
129# undef logb 217# undef acosf
130# if HAVE_RAW_DECL_LOGB 218# if HAVE_RAW_DECL_ACOSF
131_GL_WARN_ON_USE (logb, "logb is unportable - " 219_GL_WARN_ON_USE (acosf, "acosf is unportable - "
132 "use gnulib module logb for portability"); 220 "use gnulib module acosf for portability");
133# endif 221# endif
134#endif 222#endif
135 223
136
137#if @GNULIB_ACOSL@ 224#if @GNULIB_ACOSL@
138# if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@ 225# if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@
226# undef acosl
139_GL_FUNCDECL_SYS (acosl, long double, (long double x)); 227_GL_FUNCDECL_SYS (acosl, long double, (long double x));
140# endif 228# endif
141_GL_CXXALIAS_SYS (acosl, long double, (long double x)); 229_GL_CXXALIAS_SYS (acosl, long double, (long double x));
@@ -144,13 +232,29 @@ _GL_CXXALIASWARN (acosl);
144# undef acosl 232# undef acosl
145# if HAVE_RAW_DECL_ACOSL 233# if HAVE_RAW_DECL_ACOSL
146_GL_WARN_ON_USE (acosl, "acosl is unportable - " 234_GL_WARN_ON_USE (acosl, "acosl is unportable - "
147 "use gnulib module mathl for portability"); 235 "use gnulib module acosl for portability");
148# endif 236# endif
149#endif 237#endif
150 238
151 239
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
152#if @GNULIB_ASINL@ 255#if @GNULIB_ASINL@
153# if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@ 256# if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@
257# undef asinl
154_GL_FUNCDECL_SYS (asinl, long double, (long double x)); 258_GL_FUNCDECL_SYS (asinl, long double, (long double x));
155# endif 259# endif
156_GL_CXXALIAS_SYS (asinl, long double, (long double x)); 260_GL_CXXALIAS_SYS (asinl, long double, (long double x));
@@ -159,13 +263,29 @@ _GL_CXXALIASWARN (asinl);
159# undef asinl 263# undef asinl
160# if HAVE_RAW_DECL_ASINL 264# if HAVE_RAW_DECL_ASINL
161_GL_WARN_ON_USE (asinl, "asinl is unportable - " 265_GL_WARN_ON_USE (asinl, "asinl is unportable - "
162 "use gnulib module mathl for portability"); 266 "use gnulib module asinl for portability");
163# endif 267# endif
164#endif 268#endif
165 269
166 270
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
167#if @GNULIB_ATANL@ 286#if @GNULIB_ATANL@
168# if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@ 287# if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@
288# undef atanl
169_GL_FUNCDECL_SYS (atanl, long double, (long double x)); 289_GL_FUNCDECL_SYS (atanl, long double, (long double x));
170# endif 290# endif
171_GL_CXXALIAS_SYS (atanl, long double, (long double x)); 291_GL_CXXALIAS_SYS (atanl, long double, (long double x));
@@ -174,7 +294,84 @@ _GL_CXXALIASWARN (atanl);
174# undef atanl 294# undef atanl
175# if HAVE_RAW_DECL_ATANL 295# if HAVE_RAW_DECL_ATANL
176_GL_WARN_ON_USE (atanl, "atanl is unportable - " 296_GL_WARN_ON_USE (atanl, "atanl is unportable - "
177 "use gnulib module mathl for portability"); 297 "use gnulib module atanl for portability");
298# endif
299#endif
300
301
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
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");
178# endif 375# endif
179#endif 376#endif
180 377
@@ -182,12 +379,14 @@ _GL_WARN_ON_USE (atanl, "atanl is unportable - "
182#if @GNULIB_CEILF@ 379#if @GNULIB_CEILF@
183# if @REPLACE_CEILF@ 380# if @REPLACE_CEILF@
184# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 381# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
382# undef ceilf
185# define ceilf rpl_ceilf 383# define ceilf rpl_ceilf
186# endif 384# endif
187_GL_FUNCDECL_RPL (ceilf, float, (float x)); 385_GL_FUNCDECL_RPL (ceilf, float, (float x));
188_GL_CXXALIAS_RPL (ceilf, float, (float x)); 386_GL_CXXALIAS_RPL (ceilf, float, (float x));
189# else 387# else
190# if !@HAVE_DECL_CEILF@ 388# if !@HAVE_DECL_CEILF@
389# undef ceilf
191_GL_FUNCDECL_SYS (ceilf, float, (float x)); 390_GL_FUNCDECL_SYS (ceilf, float, (float x));
192# endif 391# endif
193_GL_CXXALIAS_SYS (ceilf, float, (float x)); 392_GL_CXXALIAS_SYS (ceilf, float, (float x));
@@ -201,15 +400,30 @@ _GL_WARN_ON_USE (ceilf, "ceilf is unportable - "
201# endif 400# endif
202#endif 401#endif
203 402
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
204#if @GNULIB_CEILL@ 416#if @GNULIB_CEILL@
205# if @REPLACE_CEILL@ 417# if @REPLACE_CEILL@
206# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 418# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
419# undef ceill
207# define ceill rpl_ceill 420# define ceill rpl_ceill
208# endif 421# endif
209_GL_FUNCDECL_RPL (ceill, long double, (long double x)); 422_GL_FUNCDECL_RPL (ceill, long double, (long double x));
210_GL_CXXALIAS_RPL (ceill, long double, (long double x)); 423_GL_CXXALIAS_RPL (ceill, long double, (long double x));
211# else 424# else
212# if !@HAVE_DECL_CEILL@ 425# if !@HAVE_DECL_CEILL@
426# undef ceill
213_GL_FUNCDECL_SYS (ceill, long double, (long double x)); 427_GL_FUNCDECL_SYS (ceill, long double, (long double x));
214# endif 428# endif
215_GL_CXXALIAS_SYS (ceill, long double, (long double x)); 429_GL_CXXALIAS_SYS (ceill, long double, (long double x));
@@ -224,8 +438,67 @@ _GL_WARN_ON_USE (ceill, "ceill is unportable - "
224#endif 438#endif
225 439
226 440
441#if @GNULIB_COPYSIGNF@
442# if !@HAVE_DECL_COPYSIGNF@
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
227#if @GNULIB_COSL@ 499#if @GNULIB_COSL@
228# if !@HAVE_COSL@ || !@HAVE_DECL_COSL@ 500# if !@HAVE_COSL@ || !@HAVE_DECL_COSL@
501# undef cosl
229_GL_FUNCDECL_SYS (cosl, long double, (long double x)); 502_GL_FUNCDECL_SYS (cosl, long double, (long double x));
230# endif 503# endif
231_GL_CXXALIAS_SYS (cosl, long double, (long double x)); 504_GL_CXXALIAS_SYS (cosl, long double, (long double x));
@@ -234,13 +507,45 @@ _GL_CXXALIASWARN (cosl);
234# undef cosl 507# undef cosl
235# if HAVE_RAW_DECL_COSL 508# if HAVE_RAW_DECL_COSL
236_GL_WARN_ON_USE (cosl, "cosl is unportable - " 509_GL_WARN_ON_USE (cosl, "cosl is unportable - "
237 "use gnulib module mathl for portability"); 510 "use gnulib module cosl for portability");
511# endif
512#endif
513
514
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");
238# endif 527# endif
239#endif 528#endif
240 529
241 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
242#if @GNULIB_EXPL@ 546#if @GNULIB_EXPL@
243# if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@ 547# if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@
548# undef expl
244_GL_FUNCDECL_SYS (expl, long double, (long double x)); 549_GL_FUNCDECL_SYS (expl, long double, (long double x));
245# endif 550# endif
246_GL_CXXALIAS_SYS (expl, long double, (long double x)); 551_GL_CXXALIAS_SYS (expl, long double, (long double x));
@@ -249,7 +554,171 @@ _GL_CXXALIASWARN (expl);
249# undef expl 554# undef expl
250# if HAVE_RAW_DECL_EXPL 555# if HAVE_RAW_DECL_EXPL
251_GL_WARN_ON_USE (expl, "expl is unportable - " 556_GL_WARN_ON_USE (expl, "expl is unportable - "
252 "use gnulib module mathl for portability"); 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");
682# endif
683#endif
684
685
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
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");
253# endif 722# endif
254#endif 723#endif
255 724
@@ -257,12 +726,14 @@ _GL_WARN_ON_USE (expl, "expl is unportable - "
257#if @GNULIB_FLOORF@ 726#if @GNULIB_FLOORF@
258# if @REPLACE_FLOORF@ 727# if @REPLACE_FLOORF@
259# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 728# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
729# undef floorf
260# define floorf rpl_floorf 730# define floorf rpl_floorf
261# endif 731# endif
262_GL_FUNCDECL_RPL (floorf, float, (float x)); 732_GL_FUNCDECL_RPL (floorf, float, (float x));
263_GL_CXXALIAS_RPL (floorf, float, (float x)); 733_GL_CXXALIAS_RPL (floorf, float, (float x));
264#else 734# else
265# if !@HAVE_DECL_FLOORF@ 735# if !@HAVE_DECL_FLOORF@
736# undef floorf
266_GL_FUNCDECL_SYS (floorf, float, (float x)); 737_GL_FUNCDECL_SYS (floorf, float, (float x));
267# endif 738# endif
268_GL_CXXALIAS_SYS (floorf, float, (float x)); 739_GL_CXXALIAS_SYS (floorf, float, (float x));
@@ -276,15 +747,30 @@ _GL_WARN_ON_USE (floorf, "floorf is unportable - "
276# endif 747# endif
277#endif 748#endif
278 749
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
279#if @GNULIB_FLOORL@ 763#if @GNULIB_FLOORL@
280# if @REPLACE_FLOORL@ 764# if @REPLACE_FLOORL@
281# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 765# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
766# undef floorl
282# define floorl rpl_floorl 767# define floorl rpl_floorl
283# endif 768# endif
284_GL_FUNCDECL_RPL (floorl, long double, (long double x)); 769_GL_FUNCDECL_RPL (floorl, long double, (long double x));
285_GL_CXXALIAS_RPL (floorl, long double, (long double x)); 770_GL_CXXALIAS_RPL (floorl, long double, (long double x));
286# else 771# else
287# if !@HAVE_DECL_FLOORL@ 772# if !@HAVE_DECL_FLOORL@
773# undef floorl
288_GL_FUNCDECL_SYS (floorl, long double, (long double x)); 774_GL_FUNCDECL_SYS (floorl, long double, (long double x));
289# endif 775# endif
290_GL_CXXALIAS_SYS (floorl, long double, (long double x)); 776_GL_CXXALIAS_SYS (floorl, long double, (long double x));
@@ -299,6 +785,206 @@ _GL_WARN_ON_USE (floorl, "floorl is unportable - "
299#endif 785#endif
300 786
301 787
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@
846# undef fmal
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
863#if @GNULIB_FMODF@
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
874_GL_FUNCDECL_SYS (fmodf, float, (float x, float y));
875# endif
876_GL_CXXALIAS_SYS (fmodf, float, (float x, float y));
877# endif
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
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
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
302/* Write x as 988/* Write x as
303 x = mantissa * 2^exp 989 x = mantissa * 2^exp
304 where 990 where
@@ -308,6 +994,7 @@ _GL_WARN_ON_USE (floorl, "floorl is unportable - "
308 Store exp in *EXPPTR and return mantissa. */ 994 Store exp in *EXPPTR and return mantissa. */
309#if @GNULIB_FREXPL@ && @REPLACE_FREXPL@ 995#if @GNULIB_FREXPL@ && @REPLACE_FREXPL@
310# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 996# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
997# undef frexpl
311# define frexpl rpl_frexpl 998# define frexpl rpl_frexpl
312# endif 999# endif
313_GL_FUNCDECL_RPL (frexpl, long double, 1000_GL_FUNCDECL_RPL (frexpl, long double,
@@ -334,9 +1021,157 @@ _GL_WARN_ON_USE (frexpl, "frexpl is unportable - "
334#endif 1021#endif
335 1022
336 1023
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
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
337/* Return x * 2^exp. */ 1171/* Return x * 2^exp. */
338#if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@ 1172#if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@
339# if !(defined __cplusplus && defined GNULIB_NAMESPACE) 1173# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1174# undef ldexpl
340# define ldexpl rpl_ldexpl 1175# define ldexpl rpl_ldexpl
341# endif 1176# endif
342_GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp)); 1177_GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp));
@@ -361,17 +1196,553 @@ _GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - "
361#endif 1196#endif
362 1197
363 1198
1199#if @GNULIB_LOGF@
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
1210_GL_FUNCDECL_SYS (logf, float, (float x));
1211# endif
1212_GL_CXXALIAS_SYS (logf, float, (float x));
1213# endif
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
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
364#if @GNULIB_LOGL@ 1243#if @GNULIB_LOGL@
365# if !@HAVE_LOGL@ || !@HAVE_DECL_LOGL@ 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
366_GL_FUNCDECL_SYS (logl, long double, (long double x)); 1254_GL_FUNCDECL_SYS (logl, long double, (long double x));
367# endif 1255# endif
368_GL_CXXALIAS_SYS (logl, long double, (long double x)); 1256_GL_CXXALIAS_SYS (logl, long double, (long double x));
1257# endif
369_GL_CXXALIASWARN (logl); 1258_GL_CXXALIASWARN (logl);
370#elif defined GNULIB_POSIXCHECK 1259#elif defined GNULIB_POSIXCHECK
371# undef logl 1260# undef logl
372# if HAVE_RAW_DECL_LOGL 1261# if HAVE_RAW_DECL_LOGL
373_GL_WARN_ON_USE (logl, "logl is unportable - " 1262_GL_WARN_ON_USE (logl, "logl is unportable - "
374 "use gnulib module mathl for portability"); 1263 "use gnulib module logl for portability");
1264# endif
1265#endif
1266
1267
1268#if @GNULIB_LOG10F@
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
1279_GL_FUNCDECL_SYS (log10f, float, (float x));
1280# endif
1281_GL_CXXALIAS_SYS (log10f, float, (float x));
1282# endif
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
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
1548
1549#if @GNULIB_MODFF@
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
1560_GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
1561# endif
1562_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr));
1563# endif
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
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
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
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
1707#if @GNULIB_RINTF@
1708# if !@HAVE_DECL_RINTF@
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");
375# endif 1746# endif
376#endif 1747#endif
377 1748
@@ -432,6 +1803,7 @@ _GL_FUNCDECL_RPL (roundl, long double, (long double x));
432_GL_CXXALIAS_RPL (roundl, long double, (long double x)); 1803_GL_CXXALIAS_RPL (roundl, long double, (long double x));
433# else 1804# else
434# if !@HAVE_DECL_ROUNDL@ 1805# if !@HAVE_DECL_ROUNDL@
1806# undef roundl
435_GL_FUNCDECL_SYS (roundl, long double, (long double x)); 1807_GL_FUNCDECL_SYS (roundl, long double, (long double x));
436# endif 1808# endif
437_GL_CXXALIAS_SYS (roundl, long double, (long double x)); 1809_GL_CXXALIAS_SYS (roundl, long double, (long double x));
@@ -446,8 +1818,24 @@ _GL_WARN_ON_USE (roundl, "roundl is unportable - "
446#endif 1818#endif
447 1819
448 1820
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
449#if @GNULIB_SINL@ 1836#if @GNULIB_SINL@
450# if !@HAVE_SINL@ || !@HAVE_DECL_SINL@ 1837# if !@HAVE_SINL@ || !@HAVE_DECL_SINL@
1838# undef sinl
451_GL_FUNCDECL_SYS (sinl, long double, (long double x)); 1839_GL_FUNCDECL_SYS (sinl, long double, (long double x));
452# endif 1840# endif
453_GL_CXXALIAS_SYS (sinl, long double, (long double x)); 1841_GL_CXXALIAS_SYS (sinl, long double, (long double x));
@@ -456,28 +1844,85 @@ _GL_CXXALIASWARN (sinl);
456# undef sinl 1844# undef sinl
457# if HAVE_RAW_DECL_SINL 1845# if HAVE_RAW_DECL_SINL
458_GL_WARN_ON_USE (sinl, "sinl is unportable - " 1846_GL_WARN_ON_USE (sinl, "sinl is unportable - "
459 "use gnulib module mathl for portability"); 1847 "use gnulib module sinl for portability");
1848# endif
1849#endif
1850
1851
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");
460# endif 1864# endif
461#endif 1865#endif
462 1866
463 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
464#if @GNULIB_SQRTL@ 1883#if @GNULIB_SQRTL@
465# if !@HAVE_SQRTL@ || !@HAVE_DECL_SQRTL@ 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
466_GL_FUNCDECL_SYS (sqrtl, long double, (long double x)); 1894_GL_FUNCDECL_SYS (sqrtl, long double, (long double x));
467# endif 1895# endif
468_GL_CXXALIAS_SYS (sqrtl, long double, (long double x)); 1896_GL_CXXALIAS_SYS (sqrtl, long double, (long double x));
1897# endif
469_GL_CXXALIASWARN (sqrtl); 1898_GL_CXXALIASWARN (sqrtl);
470#elif defined GNULIB_POSIXCHECK 1899#elif defined GNULIB_POSIXCHECK
471# undef sqrtl 1900# undef sqrtl
472# if HAVE_RAW_DECL_SQRTL 1901# if HAVE_RAW_DECL_SQRTL
473_GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - " 1902_GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - "
474 "use gnulib module mathl for portability"); 1903 "use gnulib module sqrtl for portability");
475# endif 1904# endif
476#endif 1905#endif
477 1906
478 1907
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
479#if @GNULIB_TANL@ 1923#if @GNULIB_TANL@
480# if !@HAVE_TANL@ || !@HAVE_DECL_TANL@ 1924# if !@HAVE_TANL@ || !@HAVE_DECL_TANL@
1925# undef tanl
481_GL_FUNCDECL_SYS (tanl, long double, (long double x)); 1926_GL_FUNCDECL_SYS (tanl, long double, (long double x));
482# endif 1927# endif
483_GL_CXXALIAS_SYS (tanl, long double, (long double x)); 1928_GL_CXXALIAS_SYS (tanl, long double, (long double x));
@@ -486,16 +1931,40 @@ _GL_CXXALIASWARN (tanl);
486# undef tanl 1931# undef tanl
487# if HAVE_RAW_DECL_TANL 1932# if HAVE_RAW_DECL_TANL
488_GL_WARN_ON_USE (tanl, "tanl is unportable - " 1933_GL_WARN_ON_USE (tanl, "tanl is unportable - "
489 "use gnulib module mathl for portability"); 1934 "use gnulib module tanl for portability");
1935# endif
1936#endif
1937
1938
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");
490# endif 1951# endif
491#endif 1952#endif
492 1953
493 1954
494#if @GNULIB_TRUNCF@ 1955#if @GNULIB_TRUNCF@
495# if !@HAVE_DECL_TRUNCF@ 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@
496_GL_FUNCDECL_SYS (truncf, float, (float x)); 1964_GL_FUNCDECL_SYS (truncf, float, (float x));
497# endif 1965# endif
498_GL_CXXALIAS_SYS (truncf, float, (float x)); 1966_GL_CXXALIAS_SYS (truncf, float, (float x));
1967# endif
499_GL_CXXALIASWARN (truncf); 1968_GL_CXXALIASWARN (truncf);
500#elif defined GNULIB_POSIXCHECK 1969#elif defined GNULIB_POSIXCHECK
501# undef truncf 1970# undef truncf
@@ -506,10 +1975,18 @@ _GL_WARN_ON_USE (truncf, "truncf is unportable - "
506#endif 1975#endif
507 1976
508#if @GNULIB_TRUNC@ 1977#if @GNULIB_TRUNC@
509# if !@HAVE_DECL_TRUNC@ 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@
510_GL_FUNCDECL_SYS (trunc, double, (double x)); 1986_GL_FUNCDECL_SYS (trunc, double, (double x));
511# endif 1987# endif
512_GL_CXXALIAS_SYS (trunc, double, (double x)); 1988_GL_CXXALIAS_SYS (trunc, double, (double x));
1989# endif
513_GL_CXXALIASWARN (trunc); 1990_GL_CXXALIASWARN (trunc);
514#elif defined GNULIB_POSIXCHECK 1991#elif defined GNULIB_POSIXCHECK
515# undef trunc 1992# undef trunc
@@ -543,6 +2020,10 @@ _GL_WARN_ON_USE (truncl, "truncl is unportable - "
543#endif 2020#endif
544 2021
545 2022
2023/* Definitions of function-like macros come here, after the function
2024 declarations. */
2025
2026
546#if @GNULIB_ISFINITE@ 2027#if @GNULIB_ISFINITE@
547# if @REPLACE_ISFINITE@ 2028# if @REPLACE_ISFINITE@
548_GL_EXTERN_C int gl_isfinitef (float x); 2029_GL_EXTERN_C int gl_isfinitef (float x);
@@ -554,6 +2035,13 @@ _GL_EXTERN_C int gl_isfinitel (long double x);
554 sizeof (x) == sizeof (double) ? gl_isfinited (x) : \ 2035 sizeof (x) == sizeof (double) ? gl_isfinited (x) : \
555 gl_isfinitef (x)) 2036 gl_isfinitef (x))
556# endif 2037# endif
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
557#elif defined GNULIB_POSIXCHECK 2045#elif defined GNULIB_POSIXCHECK
558# if defined isfinite 2046# if defined isfinite
559_GL_WARN_REAL_FLOATING_DECL (isfinite); 2047_GL_WARN_REAL_FLOATING_DECL (isfinite);
@@ -574,6 +2062,13 @@ _GL_EXTERN_C int gl_isinfl (long double x);
574 sizeof (x) == sizeof (double) ? gl_isinfd (x) : \ 2062 sizeof (x) == sizeof (double) ? gl_isinfd (x) : \
575 gl_isinff (x)) 2063 gl_isinff (x))
576# endif 2064# endif
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
577#elif defined GNULIB_POSIXCHECK 2072#elif defined GNULIB_POSIXCHECK
578# if defined isinf 2073# if defined isinf
579_GL_WARN_REAL_FLOATING_DECL (isinf); 2074_GL_WARN_REAL_FLOATING_DECL (isinf);
@@ -609,7 +2104,8 @@ _GL_EXTERN_C int isnanf (float x);
609 This function is a gnulib extension, unlike isnan() which applied only 2104 This function is a gnulib extension, unlike isnan() which applied only
610 to 'double' numbers earlier but now is a type-generic macro. */ 2105 to 'double' numbers earlier but now is a type-generic macro. */
611# if @HAVE_ISNAND@ 2106# if @HAVE_ISNAND@
612/* The original <math.h> included above provides a declaration of isnan macro. */ 2107/* The original <math.h> included above provides a declaration of isnan
2108 macro. */
613# if __GNUC__ >= 4 2109# if __GNUC__ >= 4
614 /* GCC 4.0 and newer provides three built-ins for isnan. */ 2110 /* GCC 4.0 and newer provides three built-ins for isnan. */
615# undef isnand 2111# undef isnand
@@ -629,7 +2125,8 @@ _GL_EXTERN_C int isnand (double x);
629#if @GNULIB_ISNANL@ 2125#if @GNULIB_ISNANL@
630/* Test for NaN for 'long double' numbers. */ 2126/* Test for NaN for 'long double' numbers. */
631# if @HAVE_ISNANL@ 2127# if @HAVE_ISNANL@
632/* The original <math.h> included above provides a declaration of isnan macro or (older) isnanl function. */ 2128/* The original <math.h> included above provides a declaration of isnan
2129 macro or (older) isnanl function. */
633# if __GNUC__ >= 4 2130# if __GNUC__ >= 4
634 /* GCC 4.0 and newer provides three built-ins for isnan. */ 2131 /* GCC 4.0 and newer provides three built-ins for isnan. */
635# undef isnanl 2132# undef isnanl
@@ -642,7 +2139,7 @@ _GL_EXTERN_C int isnand (double x);
642/* Test whether X is a NaN. */ 2139/* Test whether X is a NaN. */
643# undef isnanl 2140# undef isnanl
644# define isnanl rpl_isnanl 2141# define isnanl rpl_isnanl
645_GL_EXTERN_C int isnanl (long double x); 2142_GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST;
646# endif 2143# endif
647#endif 2144#endif
648 2145
@@ -654,7 +2151,7 @@ _GL_EXTERN_C int isnanl (long double x);
654 that recursively expand back to isnan. So use the gnulib 2151 that recursively expand back to isnan. So use the gnulib
655 replacements for them directly. */ 2152 replacements for them directly. */
656# if @HAVE_ISNANF@ && __GNUC__ >= 4 2153# if @HAVE_ISNANF@ && __GNUC__ >= 4
657# define gl_isnan_f(x) __builtin_isnan ((float)(x)) 2154# define gl_isnan_f(x) __builtin_isnanf ((float)(x))
658# else 2155# else
659_GL_EXTERN_C int rpl_isnanf (float x); 2156_GL_EXTERN_C int rpl_isnanf (float x);
660# define gl_isnan_f(x) rpl_isnanf (x) 2157# define gl_isnan_f(x) rpl_isnanf (x)
@@ -666,9 +2163,9 @@ _GL_EXTERN_C int rpl_isnand (double x);
666# define gl_isnan_d(x) rpl_isnand (x) 2163# define gl_isnan_d(x) rpl_isnand (x)
667# endif 2164# endif
668# if @HAVE_ISNANL@ && __GNUC__ >= 4 2165# if @HAVE_ISNANL@ && __GNUC__ >= 4
669# define gl_isnan_l(x) __builtin_isnan ((long double)(x)) 2166# define gl_isnan_l(x) __builtin_isnanl ((long double)(x))
670# else 2167# else
671_GL_EXTERN_C int rpl_isnanl (long double x); 2168_GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
672# define gl_isnan_l(x) rpl_isnanl (x) 2169# define gl_isnan_l(x) rpl_isnanl (x)
673# endif 2170# endif
674# undef isnan 2171# undef isnan
@@ -676,6 +2173,24 @@ _GL_EXTERN_C int rpl_isnanl (long double x);
676 (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \ 2173 (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \
677 sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \ 2174 sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \
678 gl_isnan_f (x)) 2175 gl_isnan_f (x))
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)))
2182# endif
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
2190/* Ensure isnan is a macro. */
2191# ifndef isnan
2192# define isnan isnan
2193# endif
679# endif 2194# endif
680#elif defined GNULIB_POSIXCHECK 2195#elif defined GNULIB_POSIXCHECK
681# if defined isnan 2196# if defined isnan
@@ -700,12 +2215,14 @@ _GL_WARN_REAL_FLOATING_DECL (isnan);
700_GL_EXTERN_C int gl_signbitf (float arg); 2215_GL_EXTERN_C int gl_signbitf (float arg);
701_GL_EXTERN_C int gl_signbitd (double arg); 2216_GL_EXTERN_C int gl_signbitd (double arg);
702_GL_EXTERN_C int gl_signbitl (long double arg); 2217_GL_EXTERN_C int gl_signbitl (long double arg);
703# if __GNUC__ >= 2 && !__STRICT_ANSI__ 2218# if __GNUC__ >= 2 && !defined __STRICT_ANSI__
2219# define _GL_NUM_UINT_WORDS(type) \
2220 ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
704# if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf 2221# if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf
705# define gl_signbitf_OPTIMIZED_MACRO 2222# define gl_signbitf_OPTIMIZED_MACRO
706# define gl_signbitf(arg) \ 2223# define gl_signbitf(arg) \
707 ({ union { float _value; \ 2224 ({ union { float _value; \
708 unsigned int _word[(sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int)]; \ 2225 unsigned int _word[_GL_NUM_UINT_WORDS (float)]; \
709 } _m; \ 2226 } _m; \
710 _m._value = (arg); \ 2227 _m._value = (arg); \
711 (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; \ 2228 (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; \
@@ -714,8 +2231,8 @@ _GL_EXTERN_C int gl_signbitl (long double arg);
714# if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd 2231# if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd
715# define gl_signbitd_OPTIMIZED_MACRO 2232# define gl_signbitd_OPTIMIZED_MACRO
716# define gl_signbitd(arg) \ 2233# define gl_signbitd(arg) \
717 ({ union { double _value; \ 2234 ({ union { double _value; \
718 unsigned int _word[(sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)]; \ 2235 unsigned int _word[_GL_NUM_UINT_WORDS (double)]; \
719 } _m; \ 2236 } _m; \
720 _m._value = (arg); \ 2237 _m._value = (arg); \
721 (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; \ 2238 (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; \
@@ -725,10 +2242,10 @@ _GL_EXTERN_C int gl_signbitl (long double arg);
725# define gl_signbitl_OPTIMIZED_MACRO 2242# define gl_signbitl_OPTIMIZED_MACRO
726# define gl_signbitl(arg) \ 2243# define gl_signbitl(arg) \
727 ({ union { long double _value; \ 2244 ({ union { long double _value; \
728 unsigned int _word[(sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)]; \ 2245 unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \
729 } _m; \ 2246 } _m; \
730 _m._value = (arg); \ 2247 _m._value = (arg); \
731 (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; \ 2248 (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; \
732 }) 2249 })
733# endif 2250# endif
734# endif 2251# endif
@@ -737,6 +2254,13 @@ _GL_EXTERN_C int gl_signbitl (long double arg);
737 sizeof (x) == sizeof (double) ? gl_signbitd (x) : \ 2254 sizeof (x) == sizeof (double) ? gl_signbitd (x) : \
738 gl_signbitf (x)) 2255 gl_signbitf (x))
739# endif 2256# endif
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
740#elif defined GNULIB_POSIXCHECK 2264#elif defined GNULIB_POSIXCHECK
741# if defined signbit 2265# if defined signbit
742_GL_WARN_REAL_FLOATING_DECL (signbit); 2266_GL_WARN_REAL_FLOATING_DECL (signbit);
@@ -745,6 +2269,7 @@ _GL_WARN_REAL_FLOATING_DECL (signbit);
745# endif 2269# endif
746#endif 2270#endif
747 2271
2272_GL_INLINE_HEADER_END
748 2273
749#endif /* _GL_MATH_H */ 2274#endif /* _@GUARD_PREFIX@_MATH_H */
750#endif /* _GL_MATH_H */ 2275#endif /* _@GUARD_PREFIX@_MATH_H */