Revert "always link against the distributed libopts"
[gnutls.git] / gl / math.in.h
blobf2a3e52f3aa309c427b02c0eb96862c9f532d696
1 /* A GNU-like <math.h>.
3 Copyright (C) 2002-2003, 2007-2012 Free Software Foundation, Inc.
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
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
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/>. */
18 #ifndef _@GUARD_PREFIX@_MATH_H
20 #if __GNUC__ >= 3
21 @PRAGMA_SYSTEM_HEADER@
22 #endif
23 @PRAGMA_COLUMNS@
25 /* The include_next requires a split double-inclusion guard. */
26 #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
28 #ifndef _@GUARD_PREFIX@_MATH_H
29 #define _@GUARD_PREFIX@_MATH_H
32 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
34 /* The definition of _GL_ARG_NONNULL is copied here. */
36 /* The definition of _GL_WARN_ON_USE is copied here. */
38 #ifdef __cplusplus
39 /* Helper macros to define type-generic function FUNC as overloaded functions,
40 rather than as macros like in C. POSIX declares these with an argument of
41 real-floating (that is, one of float, double, or long double). */
42 # define _GL_MATH_CXX_REAL_FLOATING_DECL_1(func) \
43 static inline int \
44 _gl_cxx_ ## func ## f (float f) \
45 { \
46 return func (f); \
47 } \
48 static inline int \
49 _gl_cxx_ ## func ## d (double d) \
50 { \
51 return func (d); \
52 } \
53 static inline int \
54 _gl_cxx_ ## func ## l (long double l) \
55 { \
56 return func (l); \
58 # define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func) \
59 inline int \
60 func (float f) \
61 { \
62 return _gl_cxx_ ## func ## f (f); \
63 } \
64 inline int \
65 func (double d) \
66 { \
67 return _gl_cxx_ ## func ## d (d); \
68 } \
69 inline int \
70 func (long double l) \
71 { \
72 return _gl_cxx_ ## func ## l (l); \
74 #endif
76 /* Helper macros to define a portability warning for the
77 classification macro FUNC called with VALUE. POSIX declares the
78 classification macros with an argument of real-floating (that is,
79 one of float, double, or long double). */
80 #define _GL_WARN_REAL_FLOATING_DECL(func) \
81 static inline int \
82 rpl_ ## func ## f (float f) \
83 { \
84 return func (f); \
85 } \
86 static inline int \
87 rpl_ ## func ## d (double d) \
88 { \
89 return func (d); \
90 } \
91 static inline int \
92 rpl_ ## func ## l (long double l) \
93 { \
94 return func (l); \
95 } \
96 _GL_WARN_ON_USE (rpl_ ## func ## f, #func " is unportable - " \
97 "use gnulib module " #func " for portability"); \
98 _GL_WARN_ON_USE (rpl_ ## func ## d, #func " is unportable - " \
99 "use gnulib module " #func " for portability"); \
100 _GL_WARN_ON_USE (rpl_ ## func ## l, #func " is unportable - " \
101 "use gnulib module " #func " for portability")
102 #define _GL_WARN_REAL_FLOATING_IMPL(func, value) \
103 (sizeof (value) == sizeof (float) ? rpl_ ## func ## f (value) \
104 : sizeof (value) == sizeof (double) ? rpl_ ## func ## d (value) \
105 : rpl_ ## func ## l (value))
108 #if @REPLACE_ITOLD@
109 /* Pull in a function that fixes the 'int' to 'long double' conversion
110 of glibc 2.7. */
111 _GL_EXTERN_C void _Qp_itoq (long double *, int);
112 static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq;
113 #endif
116 /* POSIX allows platforms that don't support NAN. But all major
117 machines in the past 15 years have supported something close to
118 IEEE NaN, so we define this unconditionally. We also must define
119 it on platforms like Solaris 10, where NAN is present but defined
120 as a function pointer rather than a floating point constant. */
121 #if !defined NAN || @REPLACE_NAN@
122 # if !GNULIB_defined_NAN
123 # undef NAN
124 /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler
125 choke on the expression 0.0 / 0.0. */
126 # if defined __DECC || defined _MSC_VER
127 static float
128 _NaN ()
130 static float zero = 0.0f;
131 return zero / zero;
133 # define NAN (_NaN())
134 # else
135 # define NAN (0.0f / 0.0f)
136 # endif
137 # define GNULIB_defined_NAN 1
138 # endif
139 #endif
141 /* Solaris 10 defines HUGE_VAL, but as a function pointer rather
142 than a floating point constant. */
143 #if @REPLACE_HUGE_VAL@
144 # undef HUGE_VAL
145 # define HUGE_VAL (1.0 / 0.0)
146 #endif
149 #if @GNULIB_ACOSF@
150 # if !@HAVE_ACOSF@
151 # undef acosf
152 _GL_FUNCDECL_SYS (acosf, float, (float x));
153 # endif
154 _GL_CXXALIAS_SYS (acosf, float, (float x));
155 _GL_CXXALIASWARN (acosf);
156 #elif defined GNULIB_POSIXCHECK
157 # undef acosf
158 # if HAVE_RAW_DECL_ACOSF
159 _GL_WARN_ON_USE (acosf, "acosf is unportable - "
160 "use gnulib module acosf for portability");
161 # endif
162 #endif
164 #if @GNULIB_ACOSL@
165 # if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@
166 # undef acosl
167 _GL_FUNCDECL_SYS (acosl, long double, (long double x));
168 # endif
169 _GL_CXXALIAS_SYS (acosl, long double, (long double x));
170 _GL_CXXALIASWARN (acosl);
171 #elif defined GNULIB_POSIXCHECK
172 # undef acosl
173 # if HAVE_RAW_DECL_ACOSL
174 _GL_WARN_ON_USE (acosl, "acosl is unportable - "
175 "use gnulib module mathl for portability");
176 # endif
177 #endif
180 #if @GNULIB_ASINF@
181 # if !@HAVE_ASINF@
182 # undef asinf
183 _GL_FUNCDECL_SYS (asinf, float, (float x));
184 # endif
185 _GL_CXXALIAS_SYS (asinf, float, (float x));
186 _GL_CXXALIASWARN (asinf);
187 #elif defined GNULIB_POSIXCHECK
188 # undef asinf
189 # if HAVE_RAW_DECL_ASINF
190 _GL_WARN_ON_USE (asinf, "asinf is unportable - "
191 "use gnulib module asinf for portability");
192 # endif
193 #endif
195 #if @GNULIB_ASINL@
196 # if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@
197 # undef asinl
198 _GL_FUNCDECL_SYS (asinl, long double, (long double x));
199 # endif
200 _GL_CXXALIAS_SYS (asinl, long double, (long double x));
201 _GL_CXXALIASWARN (asinl);
202 #elif defined GNULIB_POSIXCHECK
203 # undef asinl
204 # if HAVE_RAW_DECL_ASINL
205 _GL_WARN_ON_USE (asinl, "asinl is unportable - "
206 "use gnulib module mathl for portability");
207 # endif
208 #endif
211 #if @GNULIB_ATANF@
212 # if !@HAVE_ATANF@
213 # undef atanf
214 _GL_FUNCDECL_SYS (atanf, float, (float x));
215 # endif
216 _GL_CXXALIAS_SYS (atanf, float, (float x));
217 _GL_CXXALIASWARN (atanf);
218 #elif defined GNULIB_POSIXCHECK
219 # undef atanf
220 # if HAVE_RAW_DECL_ATANF
221 _GL_WARN_ON_USE (atanf, "atanf is unportable - "
222 "use gnulib module atanf for portability");
223 # endif
224 #endif
226 #if @GNULIB_ATANL@
227 # if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@
228 # undef atanl
229 _GL_FUNCDECL_SYS (atanl, long double, (long double x));
230 # endif
231 _GL_CXXALIAS_SYS (atanl, long double, (long double x));
232 _GL_CXXALIASWARN (atanl);
233 #elif defined GNULIB_POSIXCHECK
234 # undef atanl
235 # if HAVE_RAW_DECL_ATANL
236 _GL_WARN_ON_USE (atanl, "atanl is unportable - "
237 "use gnulib module mathl for portability");
238 # endif
239 #endif
242 #if @GNULIB_ATAN2F@
243 # if !@HAVE_ATAN2F@
244 # undef atan2f
245 _GL_FUNCDECL_SYS (atan2f, float, (float y, float x));
246 # endif
247 _GL_CXXALIAS_SYS (atan2f, float, (float y, float x));
248 _GL_CXXALIASWARN (atan2f);
249 #elif defined GNULIB_POSIXCHECK
250 # undef atan2f
251 # if HAVE_RAW_DECL_ATAN2F
252 _GL_WARN_ON_USE (atan2f, "atan2f is unportable - "
253 "use gnulib module atan2f for portability");
254 # endif
255 #endif
258 #if @GNULIB_CEILF@
259 # if @REPLACE_CEILF@
260 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
261 # undef ceilf
262 # define ceilf rpl_ceilf
263 # endif
264 _GL_FUNCDECL_RPL (ceilf, float, (float x));
265 _GL_CXXALIAS_RPL (ceilf, float, (float x));
266 # else
267 # if !@HAVE_DECL_CEILF@
268 # undef ceilf
269 _GL_FUNCDECL_SYS (ceilf, float, (float x));
270 # endif
271 _GL_CXXALIAS_SYS (ceilf, float, (float x));
272 # endif
273 _GL_CXXALIASWARN (ceilf);
274 #elif defined GNULIB_POSIXCHECK
275 # undef ceilf
276 # if HAVE_RAW_DECL_CEILF
277 _GL_WARN_ON_USE (ceilf, "ceilf is unportable - "
278 "use gnulib module ceilf for portability");
279 # endif
280 #endif
282 #if @GNULIB_CEIL@
283 # if @REPLACE_CEIL@
284 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
285 # define ceil rpl_ceil
286 # endif
287 _GL_FUNCDECL_RPL (ceil, double, (double x));
288 _GL_CXXALIAS_RPL (ceil, double, (double x));
289 # else
290 _GL_CXXALIAS_SYS (ceil, double, (double x));
291 # endif
292 _GL_CXXALIASWARN (ceil);
293 #endif
295 #if @GNULIB_CEILL@
296 # if @REPLACE_CEILL@
297 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
298 # undef ceill
299 # define ceill rpl_ceill
300 # endif
301 _GL_FUNCDECL_RPL (ceill, long double, (long double x));
302 _GL_CXXALIAS_RPL (ceill, long double, (long double x));
303 # else
304 # if !@HAVE_DECL_CEILL@
305 # undef ceill
306 _GL_FUNCDECL_SYS (ceill, long double, (long double x));
307 # endif
308 _GL_CXXALIAS_SYS (ceill, long double, (long double x));
309 # endif
310 _GL_CXXALIASWARN (ceill);
311 #elif defined GNULIB_POSIXCHECK
312 # undef ceill
313 # if HAVE_RAW_DECL_CEILL
314 _GL_WARN_ON_USE (ceill, "ceill is unportable - "
315 "use gnulib module ceill for portability");
316 # endif
317 #endif
320 #if @GNULIB_COPYSIGNF@
321 # if !@HAVE_COPYSIGNF@
322 _GL_FUNCDECL_SYS (copysignf, float, (float x, float y));
323 # endif
324 _GL_CXXALIAS_SYS (copysignf, float, (float x, float y));
325 _GL_CXXALIASWARN (copysignf);
326 #elif defined GNULIB_POSIXCHECK
327 # undef copysignf
328 # if HAVE_RAW_DECL_COPYSIGNF
329 _GL_WARN_ON_USE (copysignf, "copysignf is unportable - "
330 "use gnulib module copysignf for portability");
331 # endif
332 #endif
334 #if @GNULIB_COPYSIGN@
335 # if !@HAVE_COPYSIGN@
336 _GL_FUNCDECL_SYS (copysign, double, (double x, double y));
337 # endif
338 _GL_CXXALIAS_SYS (copysign, double, (double x, double y));
339 _GL_CXXALIASWARN (copysign);
340 #elif defined GNULIB_POSIXCHECK
341 # undef copysign
342 # if HAVE_RAW_DECL_COPYSIGN
343 _GL_WARN_ON_USE (copysign, "copysign is unportable - "
344 "use gnulib module copysign for portability");
345 # endif
346 #endif
348 #if @GNULIB_COPYSIGNL@
349 # if !@HAVE_COPYSIGNL@
350 _GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y));
351 # endif
352 _GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y));
353 _GL_CXXALIASWARN (copysignl);
354 #elif defined GNULIB_POSIXCHECK
355 # undef copysignl
356 # if HAVE_RAW_DECL_COPYSIGNL
357 _GL_WARN_ON_USE (copysign, "copysignl is unportable - "
358 "use gnulib module copysignl for portability");
359 # endif
360 #endif
363 #if @GNULIB_COSF@
364 # if !@HAVE_COSF@
365 # undef cosf
366 _GL_FUNCDECL_SYS (cosf, float, (float x));
367 # endif
368 _GL_CXXALIAS_SYS (cosf, float, (float x));
369 _GL_CXXALIASWARN (cosf);
370 #elif defined GNULIB_POSIXCHECK
371 # undef cosf
372 # if HAVE_RAW_DECL_COSF
373 _GL_WARN_ON_USE (cosf, "cosf is unportable - "
374 "use gnulib module cosf for portability");
375 # endif
376 #endif
378 #if @GNULIB_COSL@
379 # if !@HAVE_COSL@ || !@HAVE_DECL_COSL@
380 # undef cosl
381 _GL_FUNCDECL_SYS (cosl, long double, (long double x));
382 # endif
383 _GL_CXXALIAS_SYS (cosl, long double, (long double x));
384 _GL_CXXALIASWARN (cosl);
385 #elif defined GNULIB_POSIXCHECK
386 # undef cosl
387 # if HAVE_RAW_DECL_COSL
388 _GL_WARN_ON_USE (cosl, "cosl is unportable - "
389 "use gnulib module mathl for portability");
390 # endif
391 #endif
394 #if @GNULIB_COSHF@
395 # if !@HAVE_COSHF@
396 # undef coshf
397 _GL_FUNCDECL_SYS (coshf, float, (float x));
398 # endif
399 _GL_CXXALIAS_SYS (coshf, float, (float x));
400 _GL_CXXALIASWARN (coshf);
401 #elif defined GNULIB_POSIXCHECK
402 # undef coshf
403 # if HAVE_RAW_DECL_COSHF
404 _GL_WARN_ON_USE (coshf, "coshf is unportable - "
405 "use gnulib module coshf for portability");
406 # endif
407 #endif
410 #if @GNULIB_EXPF@
411 # if !@HAVE_EXPF@
412 # undef expf
413 _GL_FUNCDECL_SYS (expf, float, (float x));
414 # endif
415 _GL_CXXALIAS_SYS (expf, float, (float x));
416 _GL_CXXALIASWARN (expf);
417 #elif defined GNULIB_POSIXCHECK
418 # undef expf
419 # if HAVE_RAW_DECL_EXPF
420 _GL_WARN_ON_USE (expf, "expf is unportable - "
421 "use gnulib module expf for portability");
422 # endif
423 #endif
425 #if @GNULIB_EXPL@
426 # if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@
427 # undef expl
428 _GL_FUNCDECL_SYS (expl, long double, (long double x));
429 # endif
430 _GL_CXXALIAS_SYS (expl, long double, (long double x));
431 _GL_CXXALIASWARN (expl);
432 #elif defined GNULIB_POSIXCHECK
433 # undef expl
434 # if HAVE_RAW_DECL_EXPL
435 _GL_WARN_ON_USE (expl, "expl is unportable - "
436 "use gnulib module mathl for portability");
437 # endif
438 #endif
441 #if @GNULIB_FABSF@
442 # if !@HAVE_FABSF@
443 # undef fabsf
444 _GL_FUNCDECL_SYS (fabsf, float, (float x));
445 # endif
446 _GL_CXXALIAS_SYS (fabsf, float, (float x));
447 _GL_CXXALIASWARN (fabsf);
448 #elif defined GNULIB_POSIXCHECK
449 # undef fabsf
450 # if HAVE_RAW_DECL_FABSF
451 _GL_WARN_ON_USE (fabsf, "fabsf is unportable - "
452 "use gnulib module fabsf for portability");
453 # endif
454 #endif
456 #if @GNULIB_FABSL@
457 # if @REPLACE_FABSL@
458 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
459 # undef fabsl
460 # define fabsl rpl_fabsl
461 # endif
462 _GL_FUNCDECL_RPL (fabsl, long double, (long double x));
463 _GL_CXXALIAS_RPL (fabsl, long double, (long double x));
464 # else
465 # if !@HAVE_FABSL@
466 # undef fabsl
467 _GL_FUNCDECL_SYS (fabsl, long double, (long double x));
468 # endif
469 _GL_CXXALIAS_SYS (fabsl, long double, (long double x));
470 # endif
471 _GL_CXXALIASWARN (fabsl);
472 #elif defined GNULIB_POSIXCHECK
473 # undef fabsl
474 # if HAVE_RAW_DECL_FABSL
475 _GL_WARN_ON_USE (fabsl, "fabsl is unportable - "
476 "use gnulib module fabsl for portability");
477 # endif
478 #endif
481 #if @GNULIB_FLOORF@
482 # if @REPLACE_FLOORF@
483 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
484 # undef floorf
485 # define floorf rpl_floorf
486 # endif
487 _GL_FUNCDECL_RPL (floorf, float, (float x));
488 _GL_CXXALIAS_RPL (floorf, float, (float x));
489 # else
490 # if !@HAVE_DECL_FLOORF@
491 # undef floorf
492 _GL_FUNCDECL_SYS (floorf, float, (float x));
493 # endif
494 _GL_CXXALIAS_SYS (floorf, float, (float x));
495 # endif
496 _GL_CXXALIASWARN (floorf);
497 #elif defined GNULIB_POSIXCHECK
498 # undef floorf
499 # if HAVE_RAW_DECL_FLOORF
500 _GL_WARN_ON_USE (floorf, "floorf is unportable - "
501 "use gnulib module floorf for portability");
502 # endif
503 #endif
505 #if @GNULIB_FLOOR@
506 # if @REPLACE_FLOOR@
507 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
508 # define floor rpl_floor
509 # endif
510 _GL_FUNCDECL_RPL (floor, double, (double x));
511 _GL_CXXALIAS_RPL (floor, double, (double x));
512 # else
513 _GL_CXXALIAS_SYS (floor, double, (double x));
514 # endif
515 _GL_CXXALIASWARN (floor);
516 #endif
518 #if @GNULIB_FLOORL@
519 # if @REPLACE_FLOORL@
520 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
521 # undef floorl
522 # define floorl rpl_floorl
523 # endif
524 _GL_FUNCDECL_RPL (floorl, long double, (long double x));
525 _GL_CXXALIAS_RPL (floorl, long double, (long double x));
526 # else
527 # if !@HAVE_DECL_FLOORL@
528 # undef floorl
529 _GL_FUNCDECL_SYS (floorl, long double, (long double x));
530 # endif
531 _GL_CXXALIAS_SYS (floorl, long double, (long double x));
532 # endif
533 _GL_CXXALIASWARN (floorl);
534 #elif defined GNULIB_POSIXCHECK
535 # undef floorl
536 # if HAVE_RAW_DECL_FLOORL
537 _GL_WARN_ON_USE (floorl, "floorl is unportable - "
538 "use gnulib module floorl for portability");
539 # endif
540 #endif
543 #if @GNULIB_FMAF@
544 # if @REPLACE_FMAF@
545 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
546 # undef fmaf
547 # define fmaf rpl_fmaf
548 # endif
549 _GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z));
550 _GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z));
551 # else
552 # if !@HAVE_FMAF@
553 _GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z));
554 # endif
555 _GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z));
556 # endif
557 _GL_CXXALIASWARN (fmaf);
558 #elif defined GNULIB_POSIXCHECK
559 # undef fmaf
560 # if HAVE_RAW_DECL_FMAF
561 _GL_WARN_ON_USE (fmaf, "fmaf is unportable - "
562 "use gnulib module fmaf for portability");
563 # endif
564 #endif
566 #if @GNULIB_FMA@
567 # if @REPLACE_FMA@
568 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
569 # undef fma
570 # define fma rpl_fma
571 # endif
572 _GL_FUNCDECL_RPL (fma, double, (double x, double y, double z));
573 _GL_CXXALIAS_RPL (fma, double, (double x, double y, double z));
574 # else
575 # if !@HAVE_FMA@
576 _GL_FUNCDECL_SYS (fma, double, (double x, double y, double z));
577 # endif
578 _GL_CXXALIAS_SYS (fma, double, (double x, double y, double z));
579 # endif
580 _GL_CXXALIASWARN (fma);
581 #elif defined GNULIB_POSIXCHECK
582 # undef fma
583 # if HAVE_RAW_DECL_FMA
584 _GL_WARN_ON_USE (fma, "fma is unportable - "
585 "use gnulib module fma for portability");
586 # endif
587 #endif
589 #if @GNULIB_FMAL@
590 # if @REPLACE_FMAL@
591 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
592 # undef fmal
593 # define fmal rpl_fmal
594 # endif
595 _GL_FUNCDECL_RPL (fmal, long double,
596 (long double x, long double y, long double z));
597 _GL_CXXALIAS_RPL (fmal, long double,
598 (long double x, long double y, long double z));
599 # else
600 # if !@HAVE_FMAL@
601 _GL_FUNCDECL_SYS (fmal, long double,
602 (long double x, long double y, long double z));
603 # endif
604 _GL_CXXALIAS_SYS (fmal, long double,
605 (long double x, long double y, long double z));
606 # endif
607 _GL_CXXALIASWARN (fmal);
608 #elif defined GNULIB_POSIXCHECK
609 # undef fmal
610 # if HAVE_RAW_DECL_FMAL
611 _GL_WARN_ON_USE (fmal, "fmal is unportable - "
612 "use gnulib module fmal for portability");
613 # endif
614 #endif
617 #if @GNULIB_FMODF@
618 # if !@HAVE_FMODF@
619 # undef fmodf
620 _GL_FUNCDECL_SYS (fmodf, float, (float x, float y));
621 # endif
622 _GL_CXXALIAS_SYS (fmodf, float, (float x, float y));
623 _GL_CXXALIASWARN (fmodf);
624 #elif defined GNULIB_POSIXCHECK
625 # undef fmodf
626 # if HAVE_RAW_DECL_FMODF
627 _GL_WARN_ON_USE (fmodf, "fmodf is unportable - "
628 "use gnulib module fmodf for portability");
629 # endif
630 #endif
632 #if @GNULIB_FMODL@
633 # if @REPLACE_FMODL@
634 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
635 # undef fmodl
636 # define fmodl rpl_fmodl
637 # endif
638 _GL_FUNCDECL_RPL (fmodl, long double, (long double x, long double y));
639 _GL_CXXALIAS_RPL (fmodl, long double, (long double x, long double y));
640 # else
641 # if !@HAVE_FMODL@
642 # undef fmodl
643 _GL_FUNCDECL_SYS (fmodl, long double, (long double x, long double y));
644 # endif
645 _GL_CXXALIAS_SYS (fmodl, long double, (long double x, long double y));
646 # endif
647 _GL_CXXALIASWARN (fmodl);
648 #elif defined GNULIB_POSIXCHECK
649 # undef fmodl
650 # if HAVE_RAW_DECL_FMODL
651 _GL_WARN_ON_USE (fmodl, "fmodl is unportable - "
652 "use gnulib module fmodl for portability");
653 # endif
654 #endif
657 /* Write x as
658 x = mantissa * 2^exp
659 where
660 If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
661 If x is zero: mantissa = x, exp = 0.
662 If x is infinite or NaN: mantissa = x, exp unspecified.
663 Store exp in *EXPPTR and return mantissa. */
664 #if @GNULIB_FREXPF@
665 # if @REPLACE_FREXPF@
666 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
667 # undef frexpf
668 # define frexpf rpl_frexpf
669 # endif
670 _GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
671 _GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr));
672 # else
673 # if !@HAVE_FREXPF@
674 # undef frexpf
675 _GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
676 # endif
677 _GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr));
678 # endif
679 _GL_CXXALIASWARN (frexpf);
680 #elif defined GNULIB_POSIXCHECK
681 # undef frexpf
682 # if HAVE_RAW_DECL_FREXPF
683 _GL_WARN_ON_USE (frexpf, "frexpf is unportable - "
684 "use gnulib module frexpf for portability");
685 # endif
686 #endif
688 /* Write x as
689 x = mantissa * 2^exp
690 where
691 If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
692 If x is zero: mantissa = x, exp = 0.
693 If x is infinite or NaN: mantissa = x, exp unspecified.
694 Store exp in *EXPPTR and return mantissa. */
695 #if @GNULIB_FREXP@
696 # if @REPLACE_FREXP@
697 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
698 # define frexp rpl_frexp
699 # endif
700 _GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2)));
701 _GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr));
702 # else
703 _GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr));
704 # endif
705 _GL_CXXALIASWARN (frexp);
706 #elif defined GNULIB_POSIXCHECK
707 # undef frexp
708 /* Assume frexp is always declared. */
709 _GL_WARN_ON_USE (frexp, "frexp is unportable - "
710 "use gnulib module frexp for portability");
711 #endif
713 /* Write x as
714 x = mantissa * 2^exp
715 where
716 If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
717 If x is zero: mantissa = x, exp = 0.
718 If x is infinite or NaN: mantissa = x, exp unspecified.
719 Store exp in *EXPPTR and return mantissa. */
720 #if @GNULIB_FREXPL@ && @REPLACE_FREXPL@
721 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
722 # undef frexpl
723 # define frexpl rpl_frexpl
724 # endif
725 _GL_FUNCDECL_RPL (frexpl, long double,
726 (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
727 _GL_CXXALIAS_RPL (frexpl, long double, (long double x, int *expptr));
728 #else
729 # if !@HAVE_DECL_FREXPL@
730 _GL_FUNCDECL_SYS (frexpl, long double,
731 (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
732 # endif
733 # if @GNULIB_FREXPL@
734 _GL_CXXALIAS_SYS (frexpl, long double, (long double x, int *expptr));
735 # endif
736 #endif
737 #if @GNULIB_FREXPL@ && !(@REPLACE_FREXPL@ && !@HAVE_DECL_FREXPL@)
738 _GL_CXXALIASWARN (frexpl);
739 #endif
740 #if !@GNULIB_FREXPL@ && defined GNULIB_POSIXCHECK
741 # undef frexpl
742 # if HAVE_RAW_DECL_FREXPL
743 _GL_WARN_ON_USE (frexpl, "frexpl is unportable - "
744 "use gnulib module frexpl for portability");
745 # endif
746 #endif
749 /* Return x * 2^exp. */
750 #if @GNULIB_LDEXPF@
751 # if !@HAVE_LDEXPF@
752 # undef ldexpf
753 _GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp));
754 # endif
755 _GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp));
756 _GL_CXXALIASWARN (ldexpf);
757 #elif defined GNULIB_POSIXCHECK
758 # undef ldexpf
759 # if HAVE_RAW_DECL_LDEXPF
760 _GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - "
761 "use gnulib module ldexpf for portability");
762 # endif
763 #endif
765 /* Return x * 2^exp. */
766 #if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@
767 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
768 # undef ldexpl
769 # define ldexpl rpl_ldexpl
770 # endif
771 _GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp));
772 _GL_CXXALIAS_RPL (ldexpl, long double, (long double x, int exp));
773 #else
774 # if !@HAVE_DECL_LDEXPL@
775 _GL_FUNCDECL_SYS (ldexpl, long double, (long double x, int exp));
776 # endif
777 # if @GNULIB_LDEXPL@
778 _GL_CXXALIAS_SYS (ldexpl, long double, (long double x, int exp));
779 # endif
780 #endif
781 #if @GNULIB_LDEXPL@
782 _GL_CXXALIASWARN (ldexpl);
783 #endif
784 #if !@GNULIB_LDEXPL@ && defined GNULIB_POSIXCHECK
785 # undef ldexpl
786 # if HAVE_RAW_DECL_LDEXPL
787 _GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - "
788 "use gnulib module ldexpl for portability");
789 # endif
790 #endif
793 #if @GNULIB_LOGB@
794 # if !@HAVE_DECL_LOGB@
795 _GL_EXTERN_C double logb (double x);
796 # endif
797 #elif defined GNULIB_POSIXCHECK
798 # undef logb
799 # if HAVE_RAW_DECL_LOGB
800 _GL_WARN_ON_USE (logb, "logb is unportable - "
801 "use gnulib module logb for portability");
802 # endif
803 #endif
806 #if @GNULIB_LOGF@
807 # if !@HAVE_LOGF@
808 # undef logf
809 _GL_FUNCDECL_SYS (logf, float, (float x));
810 # endif
811 _GL_CXXALIAS_SYS (logf, float, (float x));
812 _GL_CXXALIASWARN (logf);
813 #elif defined GNULIB_POSIXCHECK
814 # undef logf
815 # if HAVE_RAW_DECL_LOGF
816 _GL_WARN_ON_USE (logf, "logf is unportable - "
817 "use gnulib module logf for portability");
818 # endif
819 #endif
821 #if @GNULIB_LOGL@
822 # if !@HAVE_LOGL@ || !@HAVE_DECL_LOGL@
823 # undef logl
824 _GL_FUNCDECL_SYS (logl, long double, (long double x));
825 # endif
826 _GL_CXXALIAS_SYS (logl, long double, (long double x));
827 _GL_CXXALIASWARN (logl);
828 #elif defined GNULIB_POSIXCHECK
829 # undef logl
830 # if HAVE_RAW_DECL_LOGL
831 _GL_WARN_ON_USE (logl, "logl is unportable - "
832 "use gnulib module mathl for portability");
833 # endif
834 #endif
837 #if @GNULIB_LOG10F@
838 # if !@HAVE_LOG10F@
839 # undef log10f
840 _GL_FUNCDECL_SYS (log10f, float, (float x));
841 # endif
842 _GL_CXXALIAS_SYS (log10f, float, (float x));
843 _GL_CXXALIASWARN (log10f);
844 #elif defined GNULIB_POSIXCHECK
845 # undef log10f
846 # if HAVE_RAW_DECL_LOG10F
847 _GL_WARN_ON_USE (log10f, "log10f is unportable - "
848 "use gnulib module log10f for portability");
849 # endif
850 #endif
853 #if @GNULIB_MODFF@
854 # if !@HAVE_MODFF@
855 # undef modff
856 _GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
857 # endif
858 _GL_CXXALIAS_SYS (modff, float, (float x, float *iptr));
859 _GL_CXXALIASWARN (modff);
860 #elif defined GNULIB_POSIXCHECK
861 # undef modff
862 # if HAVE_RAW_DECL_MODFF
863 _GL_WARN_ON_USE (modff, "modff is unportable - "
864 "use gnulib module modff for portability");
865 # endif
866 #endif
868 #if @GNULIB_MODFL@
869 # if !@HAVE_MODFL@
870 # undef modfl
871 _GL_FUNCDECL_SYS (modfl, long double, (long double x, long double *iptr)
872 _GL_ARG_NONNULL ((2)));
873 # endif
874 _GL_CXXALIAS_SYS (modfl, long double, (long double x, long double *iptr));
875 _GL_CXXALIASWARN (modfl);
876 #elif defined GNULIB_POSIXCHECK
877 # undef modfl
878 # if HAVE_RAW_DECL_MODFL
879 _GL_WARN_ON_USE (modfl, "modfl is unportable - "
880 "use gnulib module modfl for portability");
881 # endif
882 #endif
885 #if @GNULIB_POWF@
886 # if !@HAVE_POWF@
887 # undef powf
888 _GL_FUNCDECL_SYS (powf, float, (float x, float y));
889 # endif
890 _GL_CXXALIAS_SYS (powf, float, (float x, float y));
891 _GL_CXXALIASWARN (powf);
892 #elif defined GNULIB_POSIXCHECK
893 # undef powf
894 # if HAVE_RAW_DECL_POWF
895 _GL_WARN_ON_USE (powf, "powf is unportable - "
896 "use gnulib module powf for portability");
897 # endif
898 #endif
901 #if @GNULIB_REMAINDER@
902 # if !@HAVE_REMAINDER@ || !@HAVE_DECL_REMAINDER@
903 _GL_FUNCDECL_SYS (remainder, double, (double x, double y));
904 # endif
905 _GL_CXXALIAS_SYS (remainder, double, (double x, double y));
906 _GL_CXXALIASWARN (remainder);
907 #elif defined GNULIB_POSIXCHECK
908 # undef remainder
909 # if HAVE_RAW_DECL_REMAINDER
910 _GL_WARN_ON_USE (remainder, "remainder is unportable - "
911 "use gnulib module remainder for portability");
912 # endif
913 #endif
916 #if @GNULIB_RINTF@
917 # if !@HAVE_RINTF@
918 _GL_FUNCDECL_SYS (rintf, float, (float x));
919 # endif
920 _GL_CXXALIAS_SYS (rintf, float, (float x));
921 _GL_CXXALIASWARN (rintf);
922 #elif defined GNULIB_POSIXCHECK
923 # undef rintf
924 # if HAVE_RAW_DECL_RINTF
925 _GL_WARN_ON_USE (rintf, "rintf is unportable - "
926 "use gnulib module rintf for portability");
927 # endif
928 #endif
930 #if @GNULIB_RINT@
931 # if !@HAVE_RINT@
932 _GL_FUNCDECL_SYS (rint, double, (double x));
933 # endif
934 _GL_CXXALIAS_SYS (rint, double, (double x));
935 _GL_CXXALIASWARN (rint);
936 #elif defined GNULIB_POSIXCHECK
937 # undef rint
938 # if HAVE_RAW_DECL_RINT
939 _GL_WARN_ON_USE (rint, "rint is unportable - "
940 "use gnulib module rint for portability");
941 # endif
942 #endif
944 #if @GNULIB_RINTL@
945 # if !@HAVE_RINTL@
946 _GL_FUNCDECL_SYS (rintl, long double, (long double x));
947 # endif
948 _GL_CXXALIAS_SYS (rintl, long double, (long double x));
949 _GL_CXXALIASWARN (rintl);
950 #elif defined GNULIB_POSIXCHECK
951 # undef rintl
952 # if HAVE_RAW_DECL_RINTL
953 _GL_WARN_ON_USE (rintl, "rintl is unportable - "
954 "use gnulib module rintl for portability");
955 # endif
956 #endif
959 #if @GNULIB_ROUNDF@
960 # if @REPLACE_ROUNDF@
961 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
962 # undef roundf
963 # define roundf rpl_roundf
964 # endif
965 _GL_FUNCDECL_RPL (roundf, float, (float x));
966 _GL_CXXALIAS_RPL (roundf, float, (float x));
967 # else
968 # if !@HAVE_DECL_ROUNDF@
969 _GL_FUNCDECL_SYS (roundf, float, (float x));
970 # endif
971 _GL_CXXALIAS_SYS (roundf, float, (float x));
972 # endif
973 _GL_CXXALIASWARN (roundf);
974 #elif defined GNULIB_POSIXCHECK
975 # undef roundf
976 # if HAVE_RAW_DECL_ROUNDF
977 _GL_WARN_ON_USE (roundf, "roundf is unportable - "
978 "use gnulib module roundf for portability");
979 # endif
980 #endif
982 #if @GNULIB_ROUND@
983 # if @REPLACE_ROUND@
984 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
985 # undef round
986 # define round rpl_round
987 # endif
988 _GL_FUNCDECL_RPL (round, double, (double x));
989 _GL_CXXALIAS_RPL (round, double, (double x));
990 # else
991 # if !@HAVE_DECL_ROUND@
992 _GL_FUNCDECL_SYS (round, double, (double x));
993 # endif
994 _GL_CXXALIAS_SYS (round, double, (double x));
995 # endif
996 _GL_CXXALIASWARN (round);
997 #elif defined GNULIB_POSIXCHECK
998 # undef round
999 # if HAVE_RAW_DECL_ROUND
1000 _GL_WARN_ON_USE (round, "round is unportable - "
1001 "use gnulib module round for portability");
1002 # endif
1003 #endif
1005 #if @GNULIB_ROUNDL@
1006 # if @REPLACE_ROUNDL@
1007 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1008 # undef roundl
1009 # define roundl rpl_roundl
1010 # endif
1011 _GL_FUNCDECL_RPL (roundl, long double, (long double x));
1012 _GL_CXXALIAS_RPL (roundl, long double, (long double x));
1013 # else
1014 # if !@HAVE_DECL_ROUNDL@
1015 _GL_FUNCDECL_SYS (roundl, long double, (long double x));
1016 # endif
1017 _GL_CXXALIAS_SYS (roundl, long double, (long double x));
1018 # endif
1019 _GL_CXXALIASWARN (roundl);
1020 #elif defined GNULIB_POSIXCHECK
1021 # undef roundl
1022 # if HAVE_RAW_DECL_ROUNDL
1023 _GL_WARN_ON_USE (roundl, "roundl is unportable - "
1024 "use gnulib module roundl for portability");
1025 # endif
1026 #endif
1029 #if @GNULIB_SINF@
1030 # if !@HAVE_SINF@
1031 # undef sinf
1032 _GL_FUNCDECL_SYS (sinf, float, (float x));
1033 # endif
1034 _GL_CXXALIAS_SYS (sinf, float, (float x));
1035 _GL_CXXALIASWARN (sinf);
1036 #elif defined GNULIB_POSIXCHECK
1037 # undef sinf
1038 # if HAVE_RAW_DECL_SINF
1039 _GL_WARN_ON_USE (sinf, "sinf is unportable - "
1040 "use gnulib module sinf for portability");
1041 # endif
1042 #endif
1044 #if @GNULIB_SINL@
1045 # if !@HAVE_SINL@ || !@HAVE_DECL_SINL@
1046 # undef sinl
1047 _GL_FUNCDECL_SYS (sinl, long double, (long double x));
1048 # endif
1049 _GL_CXXALIAS_SYS (sinl, long double, (long double x));
1050 _GL_CXXALIASWARN (sinl);
1051 #elif defined GNULIB_POSIXCHECK
1052 # undef sinl
1053 # if HAVE_RAW_DECL_SINL
1054 _GL_WARN_ON_USE (sinl, "sinl is unportable - "
1055 "use gnulib module mathl for portability");
1056 # endif
1057 #endif
1060 #if @GNULIB_SINHF@
1061 # if !@HAVE_SINHF@
1062 # undef sinhf
1063 _GL_FUNCDECL_SYS (sinhf, float, (float x));
1064 # endif
1065 _GL_CXXALIAS_SYS (sinhf, float, (float x));
1066 _GL_CXXALIASWARN (sinhf);
1067 #elif defined GNULIB_POSIXCHECK
1068 # undef sinhf
1069 # if HAVE_RAW_DECL_SINHF
1070 _GL_WARN_ON_USE (sinhf, "sinhf is unportable - "
1071 "use gnulib module sinhf for portability");
1072 # endif
1073 #endif
1076 #if @GNULIB_SQRTF@
1077 # if !@HAVE_SQRTF@
1078 # undef sqrtf
1079 _GL_FUNCDECL_SYS (sqrtf, float, (float x));
1080 # endif
1081 _GL_CXXALIAS_SYS (sqrtf, float, (float x));
1082 _GL_CXXALIASWARN (sqrtf);
1083 #elif defined GNULIB_POSIXCHECK
1084 # undef sqrtf
1085 # if HAVE_RAW_DECL_SQRTF
1086 _GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - "
1087 "use gnulib module sqrtf for portability");
1088 # endif
1089 #endif
1091 #if @GNULIB_SQRTL@
1092 # if !@HAVE_SQRTL@ || !@HAVE_DECL_SQRTL@
1093 # undef sqrtl
1094 _GL_FUNCDECL_SYS (sqrtl, long double, (long double x));
1095 # endif
1096 _GL_CXXALIAS_SYS (sqrtl, long double, (long double x));
1097 _GL_CXXALIASWARN (sqrtl);
1098 #elif defined GNULIB_POSIXCHECK
1099 # undef sqrtl
1100 # if HAVE_RAW_DECL_SQRTL
1101 _GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - "
1102 "use gnulib module mathl for portability");
1103 # endif
1104 #endif
1107 #if @GNULIB_TANF@
1108 # if !@HAVE_TANF@
1109 # undef tanf
1110 _GL_FUNCDECL_SYS (tanf, float, (float x));
1111 # endif
1112 _GL_CXXALIAS_SYS (tanf, float, (float x));
1113 _GL_CXXALIASWARN (tanf);
1114 #elif defined GNULIB_POSIXCHECK
1115 # undef tanf
1116 # if HAVE_RAW_DECL_TANF
1117 _GL_WARN_ON_USE (tanf, "tanf is unportable - "
1118 "use gnulib module tanf for portability");
1119 # endif
1120 #endif
1122 #if @GNULIB_TANL@
1123 # if !@HAVE_TANL@ || !@HAVE_DECL_TANL@
1124 # undef tanl
1125 _GL_FUNCDECL_SYS (tanl, long double, (long double x));
1126 # endif
1127 _GL_CXXALIAS_SYS (tanl, long double, (long double x));
1128 _GL_CXXALIASWARN (tanl);
1129 #elif defined GNULIB_POSIXCHECK
1130 # undef tanl
1131 # if HAVE_RAW_DECL_TANL
1132 _GL_WARN_ON_USE (tanl, "tanl is unportable - "
1133 "use gnulib module mathl for portability");
1134 # endif
1135 #endif
1138 #if @GNULIB_TANHF@
1139 # if !@HAVE_TANHF@
1140 # undef tanhf
1141 _GL_FUNCDECL_SYS (tanhf, float, (float x));
1142 # endif
1143 _GL_CXXALIAS_SYS (tanhf, float, (float x));
1144 _GL_CXXALIASWARN (tanhf);
1145 #elif defined GNULIB_POSIXCHECK
1146 # undef tanhf
1147 # if HAVE_RAW_DECL_TANHF
1148 _GL_WARN_ON_USE (tanhf, "tanhf is unportable - "
1149 "use gnulib module tanhf for portability");
1150 # endif
1151 #endif
1154 #if @GNULIB_TRUNCF@
1155 # if @REPLACE_TRUNCF@
1156 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1157 # define truncf rpl_truncf
1158 # endif
1159 _GL_FUNCDECL_RPL (truncf, float, (float x));
1160 _GL_CXXALIAS_RPL (truncf, float, (float x));
1161 # else
1162 # if !@HAVE_DECL_TRUNCF@
1163 _GL_FUNCDECL_SYS (truncf, float, (float x));
1164 # endif
1165 _GL_CXXALIAS_SYS (truncf, float, (float x));
1166 # endif
1167 _GL_CXXALIASWARN (truncf);
1168 #elif defined GNULIB_POSIXCHECK
1169 # undef truncf
1170 # if HAVE_RAW_DECL_TRUNCF
1171 _GL_WARN_ON_USE (truncf, "truncf is unportable - "
1172 "use gnulib module truncf for portability");
1173 # endif
1174 #endif
1176 #if @GNULIB_TRUNC@
1177 # if @REPLACE_TRUNC@
1178 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1179 # define trunc rpl_trunc
1180 # endif
1181 _GL_FUNCDECL_RPL (trunc, double, (double x));
1182 _GL_CXXALIAS_RPL (trunc, double, (double x));
1183 # else
1184 # if !@HAVE_DECL_TRUNC@
1185 _GL_FUNCDECL_SYS (trunc, double, (double x));
1186 # endif
1187 _GL_CXXALIAS_SYS (trunc, double, (double x));
1188 # endif
1189 _GL_CXXALIASWARN (trunc);
1190 #elif defined GNULIB_POSIXCHECK
1191 # undef trunc
1192 # if HAVE_RAW_DECL_TRUNC
1193 _GL_WARN_ON_USE (trunc, "trunc is unportable - "
1194 "use gnulib module trunc for portability");
1195 # endif
1196 #endif
1198 #if @GNULIB_TRUNCL@
1199 # if @REPLACE_TRUNCL@
1200 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1201 # undef truncl
1202 # define truncl rpl_truncl
1203 # endif
1204 _GL_FUNCDECL_RPL (truncl, long double, (long double x));
1205 _GL_CXXALIAS_RPL (truncl, long double, (long double x));
1206 # else
1207 # if !@HAVE_DECL_TRUNCL@
1208 _GL_FUNCDECL_SYS (truncl, long double, (long double x));
1209 # endif
1210 _GL_CXXALIAS_SYS (truncl, long double, (long double x));
1211 # endif
1212 _GL_CXXALIASWARN (truncl);
1213 #elif defined GNULIB_POSIXCHECK
1214 # undef truncl
1215 # if HAVE_RAW_DECL_TRUNCL
1216 _GL_WARN_ON_USE (truncl, "truncl is unportable - "
1217 "use gnulib module truncl for portability");
1218 # endif
1219 #endif
1222 /* Definitions of function-like macros come here, after the function
1223 declarations. */
1226 #if @GNULIB_ISFINITE@
1227 # if @REPLACE_ISFINITE@
1228 _GL_EXTERN_C int gl_isfinitef (float x);
1229 _GL_EXTERN_C int gl_isfinited (double x);
1230 _GL_EXTERN_C int gl_isfinitel (long double x);
1231 # undef isfinite
1232 # define isfinite(x) \
1233 (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \
1234 sizeof (x) == sizeof (double) ? gl_isfinited (x) : \
1235 gl_isfinitef (x))
1236 # endif
1237 # ifdef __cplusplus
1238 # ifdef isfinite
1239 _GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite)
1240 # undef isfinite
1241 _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite)
1242 # endif
1243 # endif
1244 #elif defined GNULIB_POSIXCHECK
1245 # if defined isfinite
1246 _GL_WARN_REAL_FLOATING_DECL (isfinite);
1247 # undef isfinite
1248 # define isfinite(x) _GL_WARN_REAL_FLOATING_IMPL (isfinite, x)
1249 # endif
1250 #endif
1253 #if @GNULIB_ISINF@
1254 # if @REPLACE_ISINF@
1255 _GL_EXTERN_C int gl_isinff (float x);
1256 _GL_EXTERN_C int gl_isinfd (double x);
1257 _GL_EXTERN_C int gl_isinfl (long double x);
1258 # undef isinf
1259 # define isinf(x) \
1260 (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \
1261 sizeof (x) == sizeof (double) ? gl_isinfd (x) : \
1262 gl_isinff (x))
1263 # endif
1264 # ifdef __cplusplus
1265 # ifdef isinf
1266 _GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf)
1267 # undef isinf
1268 _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf)
1269 # endif
1270 # endif
1271 #elif defined GNULIB_POSIXCHECK
1272 # if defined isinf
1273 _GL_WARN_REAL_FLOATING_DECL (isinf);
1274 # undef isinf
1275 # define isinf(x) _GL_WARN_REAL_FLOATING_IMPL (isinf, x)
1276 # endif
1277 #endif
1280 #if @GNULIB_ISNANF@
1281 /* Test for NaN for 'float' numbers. */
1282 # if @HAVE_ISNANF@
1283 /* The original <math.h> included above provides a declaration of isnan macro
1284 or (older) isnanf function. */
1285 # if __GNUC__ >= 4
1286 /* GCC 4.0 and newer provides three built-ins for isnan. */
1287 # undef isnanf
1288 # define isnanf(x) __builtin_isnanf ((float)(x))
1289 # elif defined isnan
1290 # undef isnanf
1291 # define isnanf(x) isnan ((float)(x))
1292 # endif
1293 # else
1294 /* Test whether X is a NaN. */
1295 # undef isnanf
1296 # define isnanf rpl_isnanf
1297 _GL_EXTERN_C int isnanf (float x);
1298 # endif
1299 #endif
1301 #if @GNULIB_ISNAND@
1302 /* Test for NaN for 'double' numbers.
1303 This function is a gnulib extension, unlike isnan() which applied only
1304 to 'double' numbers earlier but now is a type-generic macro. */
1305 # if @HAVE_ISNAND@
1306 /* The original <math.h> included above provides a declaration of isnan
1307 macro. */
1308 # if __GNUC__ >= 4
1309 /* GCC 4.0 and newer provides three built-ins for isnan. */
1310 # undef isnand
1311 # define isnand(x) __builtin_isnan ((double)(x))
1312 # else
1313 # undef isnand
1314 # define isnand(x) isnan ((double)(x))
1315 # endif
1316 # else
1317 /* Test whether X is a NaN. */
1318 # undef isnand
1319 # define isnand rpl_isnand
1320 _GL_EXTERN_C int isnand (double x);
1321 # endif
1322 #endif
1324 #if @GNULIB_ISNANL@
1325 /* Test for NaN for 'long double' numbers. */
1326 # if @HAVE_ISNANL@
1327 /* The original <math.h> included above provides a declaration of isnan
1328 macro or (older) isnanl function. */
1329 # if __GNUC__ >= 4
1330 /* GCC 4.0 and newer provides three built-ins for isnan. */
1331 # undef isnanl
1332 # define isnanl(x) __builtin_isnanl ((long double)(x))
1333 # elif defined isnan
1334 # undef isnanl
1335 # define isnanl(x) isnan ((long double)(x))
1336 # endif
1337 # else
1338 /* Test whether X is a NaN. */
1339 # undef isnanl
1340 # define isnanl rpl_isnanl
1341 _GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST;
1342 # endif
1343 #endif
1345 /* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL! */
1346 #if @GNULIB_ISNAN@
1347 # if @REPLACE_ISNAN@
1348 /* We can't just use the isnanf macro (e.g.) as exposed by
1349 isnanf.h (e.g.) here, because those may end up being macros
1350 that recursively expand back to isnan. So use the gnulib
1351 replacements for them directly. */
1352 # if @HAVE_ISNANF@ && __GNUC__ >= 4
1353 # define gl_isnan_f(x) __builtin_isnanf ((float)(x))
1354 # else
1355 _GL_EXTERN_C int rpl_isnanf (float x);
1356 # define gl_isnan_f(x) rpl_isnanf (x)
1357 # endif
1358 # if @HAVE_ISNAND@ && __GNUC__ >= 4
1359 # define gl_isnan_d(x) __builtin_isnan ((double)(x))
1360 # else
1361 _GL_EXTERN_C int rpl_isnand (double x);
1362 # define gl_isnan_d(x) rpl_isnand (x)
1363 # endif
1364 # if @HAVE_ISNANL@ && __GNUC__ >= 4
1365 # define gl_isnan_l(x) __builtin_isnanl ((long double)(x))
1366 # else
1367 _GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
1368 # define gl_isnan_l(x) rpl_isnanl (x)
1369 # endif
1370 # undef isnan
1371 # define isnan(x) \
1372 (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \
1373 sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \
1374 gl_isnan_f (x))
1375 # elif __GNUC__ >= 4
1376 # undef isnan
1377 # define isnan(x) \
1378 (sizeof (x) == sizeof (long double) ? __builtin_isnanl ((long double)(x)) : \
1379 sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \
1380 __builtin_isnanf ((float)(x)))
1381 # endif
1382 # ifdef __cplusplus
1383 # ifdef isnan
1384 _GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan)
1385 # undef isnan
1386 _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan)
1387 # endif
1388 # else
1389 /* Ensure isnan is a macro. */
1390 # ifndef isnan
1391 # define isnan isnan
1392 # endif
1393 # endif
1394 #elif defined GNULIB_POSIXCHECK
1395 # if defined isnan
1396 _GL_WARN_REAL_FLOATING_DECL (isnan);
1397 # undef isnan
1398 # define isnan(x) _GL_WARN_REAL_FLOATING_IMPL (isnan, x)
1399 # endif
1400 #endif
1403 #if @GNULIB_SIGNBIT@
1404 # if @REPLACE_SIGNBIT_USING_GCC@
1405 # undef signbit
1406 /* GCC 4.0 and newer provides three built-ins for signbit. */
1407 # define signbit(x) \
1408 (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
1409 sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
1410 __builtin_signbitf (x))
1411 # endif
1412 # if @REPLACE_SIGNBIT@
1413 # undef signbit
1414 _GL_EXTERN_C int gl_signbitf (float arg);
1415 _GL_EXTERN_C int gl_signbitd (double arg);
1416 _GL_EXTERN_C int gl_signbitl (long double arg);
1417 # if __GNUC__ >= 2 && !defined __STRICT_ANSI__
1418 # define _GL_NUM_UINT_WORDS(type) \
1419 ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
1420 # if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf
1421 # define gl_signbitf_OPTIMIZED_MACRO
1422 # define gl_signbitf(arg) \
1423 ({ union { float _value; \
1424 unsigned int _word[_GL_NUM_UINT_WORDS (float)]; \
1425 } _m; \
1426 _m._value = (arg); \
1427 (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1; \
1429 # endif
1430 # if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd
1431 # define gl_signbitd_OPTIMIZED_MACRO
1432 # define gl_signbitd(arg) \
1433 ({ union { double _value; \
1434 unsigned int _word[_GL_NUM_UINT_WORDS (double)]; \
1435 } _m; \
1436 _m._value = (arg); \
1437 (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1; \
1439 # endif
1440 # if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined gl_signbitl
1441 # define gl_signbitl_OPTIMIZED_MACRO
1442 # define gl_signbitl(arg) \
1443 ({ union { long double _value; \
1444 unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \
1445 } _m; \
1446 _m._value = (arg); \
1447 (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1; \
1449 # endif
1450 # endif
1451 # define signbit(x) \
1452 (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \
1453 sizeof (x) == sizeof (double) ? gl_signbitd (x) : \
1454 gl_signbitf (x))
1455 # endif
1456 # ifdef __cplusplus
1457 # ifdef signbit
1458 _GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit)
1459 # undef signbit
1460 _GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit)
1461 # endif
1462 # endif
1463 #elif defined GNULIB_POSIXCHECK
1464 # if defined signbit
1465 _GL_WARN_REAL_FLOATING_DECL (signbit);
1466 # undef signbit
1467 # define signbit(x) _GL_WARN_REAL_FLOATING_IMPL (signbit, x)
1468 # endif
1469 #endif
1472 #endif /* _@GUARD_PREFIX@_MATH_H */
1473 #endif /* _@GUARD_PREFIX@_MATH_H */