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