cbrt: Provide replacement on MSVC and Minix.
[gnulib.git] / lib / math.in.h
1 /* A GNU-like <math.h>.
2
3    Copyright (C) 2002-2003, 2007-2012 Free Software Foundation, Inc.
4
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.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
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/>.  */
17
18 #ifndef _@GUARD_PREFIX@_MATH_H
19
20 #if __GNUC__ >= 3
21 @PRAGMA_SYSTEM_HEADER@
22 #endif
23 @PRAGMA_COLUMNS@
24
25 /* The include_next requires a split double-inclusion guard.  */
26 #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@
27
28 #ifndef _@GUARD_PREFIX@_MATH_H
29 #define _@GUARD_PREFIX@_MATH_H
30
31
32 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
33
34 /* The definition of _GL_ARG_NONNULL is copied here.  */
35
36 /* The definition of _GL_WARN_ON_USE is copied here.  */
37
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);                                                  \
57 }
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);                                 \
73 }
74 #endif
75
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))
106
107
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
114
115
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 ()
129 {
130   static float zero = 0.0f;
131   return zero / zero;
132 }
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
140
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_VALF
145 # define HUGE_VALF (1.0f / 0.0f)
146 # undef HUGE_VAL
147 # define HUGE_VAL (1.0 / 0.0)
148 # undef HUGE_VALL
149 # define HUGE_VALL (1.0L / 0.0L)
150 #endif
151
152 /* HUGE_VALF is a 'float' Infinity.  */
153 #ifndef HUGE_VALF
154 # if defined _MSC_VER
155 /* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f.  */
156 #  define HUGE_VALF (1e25f * 1e25f)
157 # else
158 #  define HUGE_VALF (1.0f / 0.0f)
159 # endif
160 #endif
161
162 /* HUGE_VAL is a 'double' Infinity.  */
163 #ifndef HUGE_VAL
164 # if defined _MSC_VER
165 /* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0.  */
166 #  define HUGE_VAL (1e250 * 1e250)
167 # else
168 #  define HUGE_VAL (1.0 / 0.0)
169 # endif
170 #endif
171
172 /* HUGE_VALL is a 'long double' Infinity.  */
173 #ifndef HUGE_VALL
174 # if defined _MSC_VER
175 /* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L.  */
176 #  define HUGE_VALL (1e250L * 1e250L)
177 # else
178 #  define HUGE_VALL (1.0L / 0.0L)
179 # endif
180 #endif
181
182 #if @GNULIB_ACOSF@
183 # if !@HAVE_ACOSF@
184 #  undef acosf
185 _GL_FUNCDECL_SYS (acosf, float, (float x));
186 # endif
187 _GL_CXXALIAS_SYS (acosf, float, (float x));
188 _GL_CXXALIASWARN (acosf);
189 #elif defined GNULIB_POSIXCHECK
190 # undef acosf
191 # if HAVE_RAW_DECL_ACOSF
192 _GL_WARN_ON_USE (acosf, "acosf is unportable - "
193                  "use gnulib module acosf for portability");
194 # endif
195 #endif
196
197 #if @GNULIB_ACOSL@
198 # if !@HAVE_ACOSL@ || !@HAVE_DECL_ACOSL@
199 #  undef acosl
200 _GL_FUNCDECL_SYS (acosl, long double, (long double x));
201 # endif
202 _GL_CXXALIAS_SYS (acosl, long double, (long double x));
203 _GL_CXXALIASWARN (acosl);
204 #elif defined GNULIB_POSIXCHECK
205 # undef acosl
206 # if HAVE_RAW_DECL_ACOSL
207 _GL_WARN_ON_USE (acosl, "acosl is unportable - "
208                  "use gnulib module mathl for portability");
209 # endif
210 #endif
211
212
213 #if @GNULIB_ASINF@
214 # if !@HAVE_ASINF@
215 #  undef asinf
216 _GL_FUNCDECL_SYS (asinf, float, (float x));
217 # endif
218 _GL_CXXALIAS_SYS (asinf, float, (float x));
219 _GL_CXXALIASWARN (asinf);
220 #elif defined GNULIB_POSIXCHECK
221 # undef asinf
222 # if HAVE_RAW_DECL_ASINF
223 _GL_WARN_ON_USE (asinf, "asinf is unportable - "
224                  "use gnulib module asinf for portability");
225 # endif
226 #endif
227
228 #if @GNULIB_ASINL@
229 # if !@HAVE_ASINL@ || !@HAVE_DECL_ASINL@
230 #  undef asinl
231 _GL_FUNCDECL_SYS (asinl, long double, (long double x));
232 # endif
233 _GL_CXXALIAS_SYS (asinl, long double, (long double x));
234 _GL_CXXALIASWARN (asinl);
235 #elif defined GNULIB_POSIXCHECK
236 # undef asinl
237 # if HAVE_RAW_DECL_ASINL
238 _GL_WARN_ON_USE (asinl, "asinl is unportable - "
239                  "use gnulib module mathl for portability");
240 # endif
241 #endif
242
243
244 #if @GNULIB_ATANF@
245 # if !@HAVE_ATANF@
246 #  undef atanf
247 _GL_FUNCDECL_SYS (atanf, float, (float x));
248 # endif
249 _GL_CXXALIAS_SYS (atanf, float, (float x));
250 _GL_CXXALIASWARN (atanf);
251 #elif defined GNULIB_POSIXCHECK
252 # undef atanf
253 # if HAVE_RAW_DECL_ATANF
254 _GL_WARN_ON_USE (atanf, "atanf is unportable - "
255                  "use gnulib module atanf for portability");
256 # endif
257 #endif
258
259 #if @GNULIB_ATANL@
260 # if !@HAVE_ATANL@ || !@HAVE_DECL_ATANL@
261 #  undef atanl
262 _GL_FUNCDECL_SYS (atanl, long double, (long double x));
263 # endif
264 _GL_CXXALIAS_SYS (atanl, long double, (long double x));
265 _GL_CXXALIASWARN (atanl);
266 #elif defined GNULIB_POSIXCHECK
267 # undef atanl
268 # if HAVE_RAW_DECL_ATANL
269 _GL_WARN_ON_USE (atanl, "atanl is unportable - "
270                  "use gnulib module mathl for portability");
271 # endif
272 #endif
273
274
275 #if @GNULIB_ATAN2F@
276 # if !@HAVE_ATAN2F@
277 #  undef atan2f
278 _GL_FUNCDECL_SYS (atan2f, float, (float y, float x));
279 # endif
280 _GL_CXXALIAS_SYS (atan2f, float, (float y, float x));
281 _GL_CXXALIASWARN (atan2f);
282 #elif defined GNULIB_POSIXCHECK
283 # undef atan2f
284 # if HAVE_RAW_DECL_ATAN2F
285 _GL_WARN_ON_USE (atan2f, "atan2f is unportable - "
286                  "use gnulib module atan2f for portability");
287 # endif
288 #endif
289
290
291 #if @GNULIB_CBRT@
292 # if !@HAVE_CBRT@
293 _GL_FUNCDECL_SYS (cbrt, double, (double x));
294 # endif
295 _GL_CXXALIAS_SYS (cbrt, double, (double x));
296 _GL_CXXALIASWARN (cbrt);
297 #elif defined GNULIB_POSIXCHECK
298 # undef cbrt
299 # if HAVE_RAW_DECL_CBRT
300 _GL_WARN_ON_USE (cbrt, "cbrt is unportable - "
301                  "use gnulib module cbrt for portability");
302 # endif
303 #endif
304
305
306 #if @GNULIB_CEILF@
307 # if @REPLACE_CEILF@
308 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
309 #   undef ceilf
310 #   define ceilf rpl_ceilf
311 #  endif
312 _GL_FUNCDECL_RPL (ceilf, float, (float x));
313 _GL_CXXALIAS_RPL (ceilf, float, (float x));
314 # else
315 #  if !@HAVE_DECL_CEILF@
316 #   undef ceilf
317 _GL_FUNCDECL_SYS (ceilf, float, (float x));
318 #  endif
319 _GL_CXXALIAS_SYS (ceilf, float, (float x));
320 # endif
321 _GL_CXXALIASWARN (ceilf);
322 #elif defined GNULIB_POSIXCHECK
323 # undef ceilf
324 # if HAVE_RAW_DECL_CEILF
325 _GL_WARN_ON_USE (ceilf, "ceilf is unportable - "
326                  "use gnulib module ceilf for portability");
327 # endif
328 #endif
329
330 #if @GNULIB_CEIL@
331 # if @REPLACE_CEIL@
332 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
333 #   define ceil rpl_ceil
334 #  endif
335 _GL_FUNCDECL_RPL (ceil, double, (double x));
336 _GL_CXXALIAS_RPL (ceil, double, (double x));
337 # else
338 _GL_CXXALIAS_SYS (ceil, double, (double x));
339 # endif
340 _GL_CXXALIASWARN (ceil);
341 #endif
342
343 #if @GNULIB_CEILL@
344 # if @REPLACE_CEILL@
345 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
346 #   undef ceill
347 #   define ceill rpl_ceill
348 #  endif
349 _GL_FUNCDECL_RPL (ceill, long double, (long double x));
350 _GL_CXXALIAS_RPL (ceill, long double, (long double x));
351 # else
352 #  if !@HAVE_DECL_CEILL@
353 #   undef ceill
354 _GL_FUNCDECL_SYS (ceill, long double, (long double x));
355 #  endif
356 _GL_CXXALIAS_SYS (ceill, long double, (long double x));
357 # endif
358 _GL_CXXALIASWARN (ceill);
359 #elif defined GNULIB_POSIXCHECK
360 # undef ceill
361 # if HAVE_RAW_DECL_CEILL
362 _GL_WARN_ON_USE (ceill, "ceill is unportable - "
363                  "use gnulib module ceill for portability");
364 # endif
365 #endif
366
367
368 #if @GNULIB_COPYSIGNF@
369 # if !@HAVE_COPYSIGNF@
370 _GL_FUNCDECL_SYS (copysignf, float, (float x, float y));
371 # endif
372 _GL_CXXALIAS_SYS (copysignf, float, (float x, float y));
373 _GL_CXXALIASWARN (copysignf);
374 #elif defined GNULIB_POSIXCHECK
375 # undef copysignf
376 # if HAVE_RAW_DECL_COPYSIGNF
377 _GL_WARN_ON_USE (copysignf, "copysignf is unportable - "
378                  "use gnulib module copysignf for portability");
379 # endif
380 #endif
381
382 #if @GNULIB_COPYSIGN@
383 # if !@HAVE_COPYSIGN@
384 _GL_FUNCDECL_SYS (copysign, double, (double x, double y));
385 # endif
386 _GL_CXXALIAS_SYS (copysign, double, (double x, double y));
387 _GL_CXXALIASWARN (copysign);
388 #elif defined GNULIB_POSIXCHECK
389 # undef copysign
390 # if HAVE_RAW_DECL_COPYSIGN
391 _GL_WARN_ON_USE (copysign, "copysign is unportable - "
392                  "use gnulib module copysign for portability");
393 # endif
394 #endif
395
396 #if @GNULIB_COPYSIGNL@
397 # if !@HAVE_COPYSIGNL@
398 _GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y));
399 # endif
400 _GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y));
401 _GL_CXXALIASWARN (copysignl);
402 #elif defined GNULIB_POSIXCHECK
403 # undef copysignl
404 # if HAVE_RAW_DECL_COPYSIGNL
405 _GL_WARN_ON_USE (copysign, "copysignl is unportable - "
406                  "use gnulib module copysignl for portability");
407 # endif
408 #endif
409
410
411 #if @GNULIB_COSF@
412 # if !@HAVE_COSF@
413 #  undef cosf
414 _GL_FUNCDECL_SYS (cosf, float, (float x));
415 # endif
416 _GL_CXXALIAS_SYS (cosf, float, (float x));
417 _GL_CXXALIASWARN (cosf);
418 #elif defined GNULIB_POSIXCHECK
419 # undef cosf
420 # if HAVE_RAW_DECL_COSF
421 _GL_WARN_ON_USE (cosf, "cosf is unportable - "
422                  "use gnulib module cosf for portability");
423 # endif
424 #endif
425
426 #if @GNULIB_COSL@
427 # if !@HAVE_COSL@ || !@HAVE_DECL_COSL@
428 #  undef cosl
429 _GL_FUNCDECL_SYS (cosl, long double, (long double x));
430 # endif
431 _GL_CXXALIAS_SYS (cosl, long double, (long double x));
432 _GL_CXXALIASWARN (cosl);
433 #elif defined GNULIB_POSIXCHECK
434 # undef cosl
435 # if HAVE_RAW_DECL_COSL
436 _GL_WARN_ON_USE (cosl, "cosl is unportable - "
437                  "use gnulib module mathl for portability");
438 # endif
439 #endif
440
441
442 #if @GNULIB_COSHF@
443 # if !@HAVE_COSHF@
444 #  undef coshf
445 _GL_FUNCDECL_SYS (coshf, float, (float x));
446 # endif
447 _GL_CXXALIAS_SYS (coshf, float, (float x));
448 _GL_CXXALIASWARN (coshf);
449 #elif defined GNULIB_POSIXCHECK
450 # undef coshf
451 # if HAVE_RAW_DECL_COSHF
452 _GL_WARN_ON_USE (coshf, "coshf is unportable - "
453                  "use gnulib module coshf for portability");
454 # endif
455 #endif
456
457
458 #if @GNULIB_EXPF@
459 # if !@HAVE_EXPF@
460 #  undef expf
461 _GL_FUNCDECL_SYS (expf, float, (float x));
462 # endif
463 _GL_CXXALIAS_SYS (expf, float, (float x));
464 _GL_CXXALIASWARN (expf);
465 #elif defined GNULIB_POSIXCHECK
466 # undef expf
467 # if HAVE_RAW_DECL_EXPF
468 _GL_WARN_ON_USE (expf, "expf is unportable - "
469                  "use gnulib module expf for portability");
470 # endif
471 #endif
472
473 #if @GNULIB_EXPL@
474 # if !@HAVE_EXPL@ || !@HAVE_DECL_EXPL@
475 #  undef expl
476 _GL_FUNCDECL_SYS (expl, long double, (long double x));
477 # endif
478 _GL_CXXALIAS_SYS (expl, long double, (long double x));
479 _GL_CXXALIASWARN (expl);
480 #elif defined GNULIB_POSIXCHECK
481 # undef expl
482 # if HAVE_RAW_DECL_EXPL
483 _GL_WARN_ON_USE (expl, "expl is unportable - "
484                  "use gnulib module mathl for portability");
485 # endif
486 #endif
487
488
489 #if @GNULIB_FABSF@
490 # if !@HAVE_FABSF@
491 #  undef fabsf
492 _GL_FUNCDECL_SYS (fabsf, float, (float x));
493 # endif
494 _GL_CXXALIAS_SYS (fabsf, float, (float x));
495 _GL_CXXALIASWARN (fabsf);
496 #elif defined GNULIB_POSIXCHECK
497 # undef fabsf
498 # if HAVE_RAW_DECL_FABSF
499 _GL_WARN_ON_USE (fabsf, "fabsf is unportable - "
500                  "use gnulib module fabsf for portability");
501 # endif
502 #endif
503
504 #if @GNULIB_FABSL@
505 # if @REPLACE_FABSL@
506 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
507 #   undef fabsl
508 #   define fabsl rpl_fabsl
509 #  endif
510 _GL_FUNCDECL_RPL (fabsl, long double, (long double x));
511 _GL_CXXALIAS_RPL (fabsl, long double, (long double x));
512 # else
513 #  if !@HAVE_FABSL@
514 #   undef fabsl
515 _GL_FUNCDECL_SYS (fabsl, long double, (long double x));
516 #  endif
517 _GL_CXXALIAS_SYS (fabsl, long double, (long double x));
518 # endif
519 _GL_CXXALIASWARN (fabsl);
520 #elif defined GNULIB_POSIXCHECK
521 # undef fabsl
522 # if HAVE_RAW_DECL_FABSL
523 _GL_WARN_ON_USE (fabsl, "fabsl is unportable - "
524                  "use gnulib module fabsl for portability");
525 # endif
526 #endif
527
528
529 #if @GNULIB_FLOORF@
530 # if @REPLACE_FLOORF@
531 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
532 #   undef floorf
533 #   define floorf rpl_floorf
534 #  endif
535 _GL_FUNCDECL_RPL (floorf, float, (float x));
536 _GL_CXXALIAS_RPL (floorf, float, (float x));
537 # else
538 #  if !@HAVE_DECL_FLOORF@
539 #   undef floorf
540 _GL_FUNCDECL_SYS (floorf, float, (float x));
541 #  endif
542 _GL_CXXALIAS_SYS (floorf, float, (float x));
543 # endif
544 _GL_CXXALIASWARN (floorf);
545 #elif defined GNULIB_POSIXCHECK
546 # undef floorf
547 # if HAVE_RAW_DECL_FLOORF
548 _GL_WARN_ON_USE (floorf, "floorf is unportable - "
549                  "use gnulib module floorf for portability");
550 # endif
551 #endif
552
553 #if @GNULIB_FLOOR@
554 # if @REPLACE_FLOOR@
555 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
556 #   define floor rpl_floor
557 #  endif
558 _GL_FUNCDECL_RPL (floor, double, (double x));
559 _GL_CXXALIAS_RPL (floor, double, (double x));
560 # else
561 _GL_CXXALIAS_SYS (floor, double, (double x));
562 # endif
563 _GL_CXXALIASWARN (floor);
564 #endif
565
566 #if @GNULIB_FLOORL@
567 # if @REPLACE_FLOORL@
568 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
569 #   undef floorl
570 #   define floorl rpl_floorl
571 #  endif
572 _GL_FUNCDECL_RPL (floorl, long double, (long double x));
573 _GL_CXXALIAS_RPL (floorl, long double, (long double x));
574 # else
575 #  if !@HAVE_DECL_FLOORL@
576 #   undef floorl
577 _GL_FUNCDECL_SYS (floorl, long double, (long double x));
578 #  endif
579 _GL_CXXALIAS_SYS (floorl, long double, (long double x));
580 # endif
581 _GL_CXXALIASWARN (floorl);
582 #elif defined GNULIB_POSIXCHECK
583 # undef floorl
584 # if HAVE_RAW_DECL_FLOORL
585 _GL_WARN_ON_USE (floorl, "floorl is unportable - "
586                  "use gnulib module floorl for portability");
587 # endif
588 #endif
589
590
591 #if @GNULIB_FMAF@
592 # if @REPLACE_FMAF@
593 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
594 #   undef fmaf
595 #   define fmaf rpl_fmaf
596 #  endif
597 _GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z));
598 _GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z));
599 # else
600 #  if !@HAVE_FMAF@
601 _GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z));
602 #  endif
603 _GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z));
604 # endif
605 _GL_CXXALIASWARN (fmaf);
606 #elif defined GNULIB_POSIXCHECK
607 # undef fmaf
608 # if HAVE_RAW_DECL_FMAF
609 _GL_WARN_ON_USE (fmaf, "fmaf is unportable - "
610                  "use gnulib module fmaf for portability");
611 # endif
612 #endif
613
614 #if @GNULIB_FMA@
615 # if @REPLACE_FMA@
616 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
617 #   undef fma
618 #   define fma rpl_fma
619 #  endif
620 _GL_FUNCDECL_RPL (fma, double, (double x, double y, double z));
621 _GL_CXXALIAS_RPL (fma, double, (double x, double y, double z));
622 # else
623 #  if !@HAVE_FMA@
624 _GL_FUNCDECL_SYS (fma, double, (double x, double y, double z));
625 #  endif
626 _GL_CXXALIAS_SYS (fma, double, (double x, double y, double z));
627 # endif
628 _GL_CXXALIASWARN (fma);
629 #elif defined GNULIB_POSIXCHECK
630 # undef fma
631 # if HAVE_RAW_DECL_FMA
632 _GL_WARN_ON_USE (fma, "fma is unportable - "
633                  "use gnulib module fma for portability");
634 # endif
635 #endif
636
637 #if @GNULIB_FMAL@
638 # if @REPLACE_FMAL@
639 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
640 #   undef fmal
641 #   define fmal rpl_fmal
642 #  endif
643 _GL_FUNCDECL_RPL (fmal, long double,
644                   (long double x, long double y, long double z));
645 _GL_CXXALIAS_RPL (fmal, long double,
646                   (long double x, long double y, long double z));
647 # else
648 #  if !@HAVE_FMAL@
649 _GL_FUNCDECL_SYS (fmal, long double,
650                   (long double x, long double y, long double z));
651 #  endif
652 _GL_CXXALIAS_SYS (fmal, long double,
653                   (long double x, long double y, long double z));
654 # endif
655 _GL_CXXALIASWARN (fmal);
656 #elif defined GNULIB_POSIXCHECK
657 # undef fmal
658 # if HAVE_RAW_DECL_FMAL
659 _GL_WARN_ON_USE (fmal, "fmal is unportable - "
660                  "use gnulib module fmal for portability");
661 # endif
662 #endif
663
664
665 #if @GNULIB_FMODF@
666 # if @REPLACE_FMODF@
667 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
668 #   undef fmodf
669 #   define fmodf rpl_fmodf
670 #  endif
671 _GL_FUNCDECL_RPL (fmodf, float, (float x, float y));
672 _GL_CXXALIAS_RPL (fmodf, float, (float x, float y));
673 # else
674 #  if !@HAVE_FMODF@
675 #   undef fmodf
676 _GL_FUNCDECL_SYS (fmodf, float, (float x, float y));
677 #  endif
678 _GL_CXXALIAS_SYS (fmodf, float, (float x, float y));
679 # endif
680 _GL_CXXALIASWARN (fmodf);
681 #elif defined GNULIB_POSIXCHECK
682 # undef fmodf
683 # if HAVE_RAW_DECL_FMODF
684 _GL_WARN_ON_USE (fmodf, "fmodf is unportable - "
685                  "use gnulib module fmodf for portability");
686 # endif
687 #endif
688
689 #if @GNULIB_FMOD@
690 # if @REPLACE_FMOD@
691 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
692 #   undef fmod
693 #   define fmod rpl_fmod
694 #  endif
695 _GL_FUNCDECL_RPL (fmod, double, (double x, double y));
696 _GL_CXXALIAS_RPL (fmod, double, (double x, double y));
697 # else
698 _GL_CXXALIAS_SYS (fmod, double, (double x, double y));
699 # endif
700 _GL_CXXALIASWARN (fmod);
701 #elif defined GNULIB_POSIXCHECK
702 # undef fmod
703 # if HAVE_RAW_DECL_FMOD
704 _GL_WARN_ON_USE (fmod, "fmod has portability problems - "
705                  "use gnulib module fmod for portability");
706 # endif
707 #endif
708
709 #if @GNULIB_FMODL@
710 # if @REPLACE_FMODL@
711 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
712 #   undef fmodl
713 #   define fmodl rpl_fmodl
714 #  endif
715 _GL_FUNCDECL_RPL (fmodl, long double, (long double x, long double y));
716 _GL_CXXALIAS_RPL (fmodl, long double, (long double x, long double y));
717 # else
718 #  if !@HAVE_FMODL@
719 #   undef fmodl
720 _GL_FUNCDECL_SYS (fmodl, long double, (long double x, long double y));
721 #  endif
722 _GL_CXXALIAS_SYS (fmodl, long double, (long double x, long double y));
723 # endif
724 _GL_CXXALIASWARN (fmodl);
725 #elif defined GNULIB_POSIXCHECK
726 # undef fmodl
727 # if HAVE_RAW_DECL_FMODL
728 _GL_WARN_ON_USE (fmodl, "fmodl is unportable - "
729                  "use gnulib module fmodl for portability");
730 # endif
731 #endif
732
733
734 /* Write x as
735      x = mantissa * 2^exp
736    where
737      If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
738      If x is zero: mantissa = x, exp = 0.
739      If x is infinite or NaN: mantissa = x, exp unspecified.
740    Store exp in *EXPPTR and return mantissa.  */
741 #if @GNULIB_FREXPF@
742 # if @REPLACE_FREXPF@
743 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
744 #   undef frexpf
745 #   define frexpf rpl_frexpf
746 #  endif
747 _GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
748 _GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr));
749 # else
750 #  if !@HAVE_FREXPF@
751 #   undef frexpf
752 _GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
753 #  endif
754 _GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr));
755 # endif
756 _GL_CXXALIASWARN (frexpf);
757 #elif defined GNULIB_POSIXCHECK
758 # undef frexpf
759 # if HAVE_RAW_DECL_FREXPF
760 _GL_WARN_ON_USE (frexpf, "frexpf is unportable - "
761                  "use gnulib module frexpf for portability");
762 # endif
763 #endif
764
765 /* Write x as
766      x = mantissa * 2^exp
767    where
768      If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
769      If x is zero: mantissa = x, exp = 0.
770      If x is infinite or NaN: mantissa = x, exp unspecified.
771    Store exp in *EXPPTR and return mantissa.  */
772 #if @GNULIB_FREXP@
773 # if @REPLACE_FREXP@
774 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
775 #   define frexp rpl_frexp
776 #  endif
777 _GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2)));
778 _GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr));
779 # else
780 _GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr));
781 # endif
782 _GL_CXXALIASWARN (frexp);
783 #elif defined GNULIB_POSIXCHECK
784 # undef frexp
785 /* Assume frexp is always declared.  */
786 _GL_WARN_ON_USE (frexp, "frexp is unportable - "
787                  "use gnulib module frexp for portability");
788 #endif
789
790 /* Write x as
791      x = mantissa * 2^exp
792    where
793      If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
794      If x is zero: mantissa = x, exp = 0.
795      If x is infinite or NaN: mantissa = x, exp unspecified.
796    Store exp in *EXPPTR and return mantissa.  */
797 #if @GNULIB_FREXPL@ && @REPLACE_FREXPL@
798 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
799 #  undef frexpl
800 #  define frexpl rpl_frexpl
801 # endif
802 _GL_FUNCDECL_RPL (frexpl, long double,
803                   (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
804 _GL_CXXALIAS_RPL (frexpl, long double, (long double x, int *expptr));
805 #else
806 # if !@HAVE_DECL_FREXPL@
807 _GL_FUNCDECL_SYS (frexpl, long double,
808                   (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
809 # endif
810 # if @GNULIB_FREXPL@
811 _GL_CXXALIAS_SYS (frexpl, long double, (long double x, int *expptr));
812 # endif
813 #endif
814 #if @GNULIB_FREXPL@ && !(@REPLACE_FREXPL@ && !@HAVE_DECL_FREXPL@)
815 _GL_CXXALIASWARN (frexpl);
816 #endif
817 #if !@GNULIB_FREXPL@ && defined GNULIB_POSIXCHECK
818 # undef frexpl
819 # if HAVE_RAW_DECL_FREXPL
820 _GL_WARN_ON_USE (frexpl, "frexpl is unportable - "
821                  "use gnulib module frexpl for portability");
822 # endif
823 #endif
824
825
826 /* Return sqrt(x^2+y^2).  */
827 #if @GNULIB_HYPOTF@
828 # if @REPLACE_HYPOTF@
829 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
830 #   undef hypotf
831 #   define hypotf rpl_hypotf
832 #  endif
833 _GL_FUNCDECL_RPL (hypotf, float, (float x, float y));
834 _GL_CXXALIAS_RPL (hypotf, float, (float x, float y));
835 # else
836 #  if !@HAVE_HYPOTF@
837 _GL_FUNCDECL_SYS (hypotf, float, (float x, float y));
838 #  endif
839 _GL_CXXALIAS_SYS (hypotf, float, (float x, float y));
840 # endif
841 _GL_CXXALIASWARN (hypotf);
842 #elif defined GNULIB_POSIXCHECK
843 # undef hypotf
844 # if HAVE_RAW_DECL_HYPOTF
845 _GL_WARN_ON_USE (hypotf, "hypotf is unportable - "
846                  "use gnulib module hypotf for portability");
847 # endif
848 #endif
849
850 /* Return sqrt(x^2+y^2).  */
851 #if @GNULIB_HYPOT@
852 # if @REPLACE_HYPOT@
853 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
854 #   undef hypot
855 #   define hypot rpl_hypot
856 #  endif
857 _GL_FUNCDECL_RPL (hypot, double, (double x, double y));
858 _GL_CXXALIAS_RPL (hypot, double, (double x, double y));
859 # else
860 _GL_CXXALIAS_SYS (hypot, double, (double x, double y));
861 # endif
862 _GL_CXXALIASWARN (hypot);
863 #elif defined GNULIB_POSIXCHECK
864 # undef hypot
865 # if HAVE_RAW_DECL_HYPOT
866 _GL_WARN_ON_USE (hypotf, "hypot has portability problems - "
867                  "use gnulib module hypot for portability");
868 # endif
869 #endif
870
871 /* Return sqrt(x^2+y^2).  */
872 #if @GNULIB_HYPOTL@
873 # if @REPLACE_HYPOTL@
874 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
875 #   undef hypotl
876 #   define hypotl rpl_hypotl
877 #  endif
878 _GL_FUNCDECL_RPL (hypotl, long double, (long double x, long double y));
879 _GL_CXXALIAS_RPL (hypotl, long double, (long double x, long double y));
880 # else
881 #  if !@HAVE_HYPOTL@
882 _GL_FUNCDECL_SYS (hypotl, long double, (long double x, long double y));
883 #  endif
884 _GL_CXXALIAS_SYS (hypotl, long double, (long double x, long double y));
885 # endif
886 _GL_CXXALIASWARN (hypotl);
887 #elif defined GNULIB_POSIXCHECK
888 # undef hypotl
889 # if HAVE_RAW_DECL_HYPOTL
890 _GL_WARN_ON_USE (hypotl, "hypotl is unportable - "
891                  "use gnulib module hypotl for portability");
892 # endif
893 #endif
894
895
896 /* Return x * 2^exp.  */
897 #if @GNULIB_LDEXPF@
898 # if !@HAVE_LDEXPF@
899 #  undef ldexpf
900 _GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp));
901 # endif
902 _GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp));
903 _GL_CXXALIASWARN (ldexpf);
904 #elif defined GNULIB_POSIXCHECK
905 # undef ldexpf
906 # if HAVE_RAW_DECL_LDEXPF
907 _GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - "
908                  "use gnulib module ldexpf for portability");
909 # endif
910 #endif
911
912 /* Return x * 2^exp.  */
913 #if @GNULIB_LDEXPL@ && @REPLACE_LDEXPL@
914 # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
915 #  undef ldexpl
916 #  define ldexpl rpl_ldexpl
917 # endif
918 _GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp));
919 _GL_CXXALIAS_RPL (ldexpl, long double, (long double x, int exp));
920 #else
921 # if !@HAVE_DECL_LDEXPL@
922 _GL_FUNCDECL_SYS (ldexpl, long double, (long double x, int exp));
923 # endif
924 # if @GNULIB_LDEXPL@
925 _GL_CXXALIAS_SYS (ldexpl, long double, (long double x, int exp));
926 # endif
927 #endif
928 #if @GNULIB_LDEXPL@
929 _GL_CXXALIASWARN (ldexpl);
930 #endif
931 #if !@GNULIB_LDEXPL@ && defined GNULIB_POSIXCHECK
932 # undef ldexpl
933 # if HAVE_RAW_DECL_LDEXPL
934 _GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - "
935                  "use gnulib module ldexpl for portability");
936 # endif
937 #endif
938
939
940 #if @GNULIB_LOGB@
941 # if !@HAVE_DECL_LOGB@
942 _GL_EXTERN_C double logb (double x);
943 # endif
944 #elif defined GNULIB_POSIXCHECK
945 # undef logb
946 # if HAVE_RAW_DECL_LOGB
947 _GL_WARN_ON_USE (logb, "logb is unportable - "
948                  "use gnulib module logb for portability");
949 # endif
950 #endif
951
952
953 #if @GNULIB_LOGF@
954 # if !@HAVE_LOGF@
955 #  undef logf
956 _GL_FUNCDECL_SYS (logf, float, (float x));
957 # endif
958 _GL_CXXALIAS_SYS (logf, float, (float x));
959 _GL_CXXALIASWARN (logf);
960 #elif defined GNULIB_POSIXCHECK
961 # undef logf
962 # if HAVE_RAW_DECL_LOGF
963 _GL_WARN_ON_USE (logf, "logf is unportable - "
964                  "use gnulib module logf for portability");
965 # endif
966 #endif
967
968 #if @GNULIB_LOGL@
969 # if !@HAVE_LOGL@ || !@HAVE_DECL_LOGL@
970 #  undef logl
971 _GL_FUNCDECL_SYS (logl, long double, (long double x));
972 # endif
973 _GL_CXXALIAS_SYS (logl, long double, (long double x));
974 _GL_CXXALIASWARN (logl);
975 #elif defined GNULIB_POSIXCHECK
976 # undef logl
977 # if HAVE_RAW_DECL_LOGL
978 _GL_WARN_ON_USE (logl, "logl is unportable - "
979                  "use gnulib module mathl for portability");
980 # endif
981 #endif
982
983
984 #if @GNULIB_LOG10F@
985 # if !@HAVE_LOG10F@
986 #  undef log10f
987 _GL_FUNCDECL_SYS (log10f, float, (float x));
988 # endif
989 _GL_CXXALIAS_SYS (log10f, float, (float x));
990 _GL_CXXALIASWARN (log10f);
991 #elif defined GNULIB_POSIXCHECK
992 # undef log10f
993 # if HAVE_RAW_DECL_LOG10F
994 _GL_WARN_ON_USE (log10f, "log10f is unportable - "
995                  "use gnulib module log10f for portability");
996 # endif
997 #endif
998
999 #if @GNULIB_LOG10L@
1000 # if !@HAVE_LOG10L@ || !@HAVE_DECL_LOG10L@
1001 #  undef log10l
1002 _GL_FUNCDECL_SYS (log10l, long double, (long double x));
1003 # endif
1004 _GL_CXXALIAS_SYS (log10l, long double, (long double x));
1005 _GL_CXXALIASWARN (log10l);
1006 #elif defined GNULIB_POSIXCHECK
1007 # undef log10l
1008 # if HAVE_RAW_DECL_LOG10L
1009 _GL_WARN_ON_USE (log10l, "log10l is unportable - "
1010                  "use gnulib module log10l for portability");
1011 # endif
1012 #endif
1013
1014
1015 #if @GNULIB_MODFF@
1016 # if @REPLACE_MODFF@
1017 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1018 #   undef modff
1019 #   define modff rpl_modff
1020 #  endif
1021 _GL_FUNCDECL_RPL (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
1022 _GL_CXXALIAS_RPL (modff, float, (float x, float *iptr));
1023 # else
1024 #  if !@HAVE_MODFF@
1025 #   undef modff
1026 _GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
1027 #  endif
1028 _GL_CXXALIAS_SYS (modff, float, (float x, float *iptr));
1029 # endif
1030 _GL_CXXALIASWARN (modff);
1031 #elif defined GNULIB_POSIXCHECK
1032 # undef modff
1033 # if HAVE_RAW_DECL_MODFF
1034 _GL_WARN_ON_USE (modff, "modff is unportable - "
1035                  "use gnulib module modff for portability");
1036 # endif
1037 #endif
1038
1039 #if @GNULIB_MODF@
1040 # if @REPLACE_MODF@
1041 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1042 #   undef modf
1043 #   define modf rpl_modf
1044 #  endif
1045 _GL_FUNCDECL_RPL (modf, double, (double x, double *iptr) _GL_ARG_NONNULL ((2)));
1046 _GL_CXXALIAS_RPL (modf, double, (double x, double *iptr));
1047 # else
1048 _GL_CXXALIAS_SYS (modf, double, (double x, double *iptr));
1049 # endif
1050 _GL_CXXALIASWARN (modf);
1051 #elif defined GNULIB_POSIXCHECK
1052 # undef modf
1053 # if HAVE_RAW_DECL_MODF
1054 _GL_WARN_ON_USE (modf, "modf has portability problems - "
1055                  "use gnulib module modf for portability");
1056 # endif
1057 #endif
1058
1059 #if @GNULIB_MODFL@
1060 # if @REPLACE_MODFL@
1061 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1062 #   undef modfl
1063 #   define modfl rpl_modfl
1064 #  endif
1065 _GL_FUNCDECL_RPL (modfl, long double, (long double x, long double *iptr)
1066                                       _GL_ARG_NONNULL ((2)));
1067 _GL_CXXALIAS_RPL (modfl, long double, (long double x, long double *iptr));
1068 # else
1069 #  if !@HAVE_MODFL@
1070 #   undef modfl
1071 _GL_FUNCDECL_SYS (modfl, long double, (long double x, long double *iptr)
1072                                       _GL_ARG_NONNULL ((2)));
1073 #  endif
1074 _GL_CXXALIAS_SYS (modfl, long double, (long double x, long double *iptr));
1075 # endif
1076 _GL_CXXALIASWARN (modfl);
1077 #elif defined GNULIB_POSIXCHECK
1078 # undef modfl
1079 # if HAVE_RAW_DECL_MODFL
1080 _GL_WARN_ON_USE (modfl, "modfl is unportable - "
1081                  "use gnulib module modfl for portability");
1082 # endif
1083 #endif
1084
1085
1086 #if @GNULIB_POWF@
1087 # if !@HAVE_POWF@
1088 #  undef powf
1089 _GL_FUNCDECL_SYS (powf, float, (float x, float y));
1090 # endif
1091 _GL_CXXALIAS_SYS (powf, float, (float x, float y));
1092 _GL_CXXALIASWARN (powf);
1093 #elif defined GNULIB_POSIXCHECK
1094 # undef powf
1095 # if HAVE_RAW_DECL_POWF
1096 _GL_WARN_ON_USE (powf, "powf is unportable - "
1097                  "use gnulib module powf for portability");
1098 # endif
1099 #endif
1100
1101
1102 #if @GNULIB_REMAINDERF@
1103 # if @REPLACE_REMAINDERF@
1104 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1105 #   undef remainderf
1106 #   define remainderf rpl_remainderf
1107 #  endif
1108 _GL_FUNCDECL_RPL (remainderf, float, (float x, float y));
1109 _GL_CXXALIAS_RPL (remainderf, float, (float x, float y));
1110 # else
1111 #  if !@HAVE_REMAINDERF@
1112 _GL_FUNCDECL_SYS (remainderf, float, (float x, float y));
1113 #  endif
1114 _GL_CXXALIAS_SYS (remainderf, float, (float x, float y));
1115 # endif
1116 _GL_CXXALIASWARN (remainderf);
1117 #elif defined GNULIB_POSIXCHECK
1118 # undef remainderf
1119 # if HAVE_RAW_DECL_REMAINDERF
1120 _GL_WARN_ON_USE (remainderf, "remainderf is unportable - "
1121                  "use gnulib module remainderf for portability");
1122 # endif
1123 #endif
1124
1125 #if @GNULIB_REMAINDER@
1126 # if @REPLACE_REMAINDER@
1127 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1128 #   undef remainder
1129 #   define remainder rpl_remainder
1130 #  endif
1131 _GL_FUNCDECL_RPL (remainder, double, (double x, double y));
1132 _GL_CXXALIAS_RPL (remainder, double, (double x, double y));
1133 # else
1134 #  if !@HAVE_REMAINDER@ || !@HAVE_DECL_REMAINDER@
1135 _GL_FUNCDECL_SYS (remainder, double, (double x, double y));
1136 #  endif
1137 _GL_CXXALIAS_SYS (remainder, double, (double x, double y));
1138 # endif
1139 _GL_CXXALIASWARN (remainder);
1140 #elif defined GNULIB_POSIXCHECK
1141 # undef remainder
1142 # if HAVE_RAW_DECL_REMAINDER
1143 _GL_WARN_ON_USE (remainder, "remainder is unportable - "
1144                  "use gnulib module remainder for portability");
1145 # endif
1146 #endif
1147
1148 #if @GNULIB_REMAINDERL@
1149 # if @REPLACE_REMAINDERL@
1150 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1151 #   undef remainderl
1152 #   define remainderl rpl_remainderl
1153 #  endif
1154 _GL_FUNCDECL_RPL (remainderl, long double, (long double x, long double y));
1155 _GL_CXXALIAS_RPL (remainderl, long double, (long double x, long double y));
1156 # else
1157 #  if !@HAVE_REMAINDERL@
1158 _GL_FUNCDECL_SYS (remainderl, long double, (long double x, long double y));
1159 #  endif
1160 _GL_CXXALIAS_SYS (remainderl, long double, (long double x, long double y));
1161 # endif
1162 _GL_CXXALIASWARN (remainderl);
1163 #elif defined GNULIB_POSIXCHECK
1164 # undef remainderl
1165 # if HAVE_RAW_DECL_REMAINDERL
1166 _GL_WARN_ON_USE (remainderl, "remainderl is unportable - "
1167                  "use gnulib module remainderl for portability");
1168 # endif
1169 #endif
1170
1171
1172 #if @GNULIB_RINTF@
1173 # if !@HAVE_RINTF@
1174 _GL_FUNCDECL_SYS (rintf, float, (float x));
1175 # endif
1176 _GL_CXXALIAS_SYS (rintf, float, (float x));
1177 _GL_CXXALIASWARN (rintf);
1178 #elif defined GNULIB_POSIXCHECK
1179 # undef rintf
1180 # if HAVE_RAW_DECL_RINTF
1181 _GL_WARN_ON_USE (rintf, "rintf is unportable - "
1182                  "use gnulib module rintf for portability");
1183 # endif
1184 #endif
1185
1186 #if @GNULIB_RINT@
1187 # if !@HAVE_RINT@
1188 _GL_FUNCDECL_SYS (rint, double, (double x));
1189 # endif
1190 _GL_CXXALIAS_SYS (rint, double, (double x));
1191 _GL_CXXALIASWARN (rint);
1192 #elif defined GNULIB_POSIXCHECK
1193 # undef rint
1194 # if HAVE_RAW_DECL_RINT
1195 _GL_WARN_ON_USE (rint, "rint is unportable - "
1196                  "use gnulib module rint for portability");
1197 # endif
1198 #endif
1199
1200 #if @GNULIB_RINTL@
1201 # if !@HAVE_RINTL@
1202 _GL_FUNCDECL_SYS (rintl, long double, (long double x));
1203 # endif
1204 _GL_CXXALIAS_SYS (rintl, long double, (long double x));
1205 _GL_CXXALIASWARN (rintl);
1206 #elif defined GNULIB_POSIXCHECK
1207 # undef rintl
1208 # if HAVE_RAW_DECL_RINTL
1209 _GL_WARN_ON_USE (rintl, "rintl is unportable - "
1210                  "use gnulib module rintl for portability");
1211 # endif
1212 #endif
1213
1214
1215 #if @GNULIB_ROUNDF@
1216 # if @REPLACE_ROUNDF@
1217 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1218 #   undef roundf
1219 #   define roundf rpl_roundf
1220 #  endif
1221 _GL_FUNCDECL_RPL (roundf, float, (float x));
1222 _GL_CXXALIAS_RPL (roundf, float, (float x));
1223 # else
1224 #  if !@HAVE_DECL_ROUNDF@
1225 _GL_FUNCDECL_SYS (roundf, float, (float x));
1226 #  endif
1227 _GL_CXXALIAS_SYS (roundf, float, (float x));
1228 # endif
1229 _GL_CXXALIASWARN (roundf);
1230 #elif defined GNULIB_POSIXCHECK
1231 # undef roundf
1232 # if HAVE_RAW_DECL_ROUNDF
1233 _GL_WARN_ON_USE (roundf, "roundf is unportable - "
1234                  "use gnulib module roundf for portability");
1235 # endif
1236 #endif
1237
1238 #if @GNULIB_ROUND@
1239 # if @REPLACE_ROUND@
1240 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1241 #   undef round
1242 #   define round rpl_round
1243 #  endif
1244 _GL_FUNCDECL_RPL (round, double, (double x));
1245 _GL_CXXALIAS_RPL (round, double, (double x));
1246 # else
1247 #  if !@HAVE_DECL_ROUND@
1248 _GL_FUNCDECL_SYS (round, double, (double x));
1249 #  endif
1250 _GL_CXXALIAS_SYS (round, double, (double x));
1251 # endif
1252 _GL_CXXALIASWARN (round);
1253 #elif defined GNULIB_POSIXCHECK
1254 # undef round
1255 # if HAVE_RAW_DECL_ROUND
1256 _GL_WARN_ON_USE (round, "round is unportable - "
1257                  "use gnulib module round for portability");
1258 # endif
1259 #endif
1260
1261 #if @GNULIB_ROUNDL@
1262 # if @REPLACE_ROUNDL@
1263 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1264 #   undef roundl
1265 #   define roundl rpl_roundl
1266 #  endif
1267 _GL_FUNCDECL_RPL (roundl, long double, (long double x));
1268 _GL_CXXALIAS_RPL (roundl, long double, (long double x));
1269 # else
1270 #  if !@HAVE_DECL_ROUNDL@
1271 _GL_FUNCDECL_SYS (roundl, long double, (long double x));
1272 #  endif
1273 _GL_CXXALIAS_SYS (roundl, long double, (long double x));
1274 # endif
1275 _GL_CXXALIASWARN (roundl);
1276 #elif defined GNULIB_POSIXCHECK
1277 # undef roundl
1278 # if HAVE_RAW_DECL_ROUNDL
1279 _GL_WARN_ON_USE (roundl, "roundl is unportable - "
1280                  "use gnulib module roundl for portability");
1281 # endif
1282 #endif
1283
1284
1285 #if @GNULIB_SINF@
1286 # if !@HAVE_SINF@
1287 #  undef sinf
1288 _GL_FUNCDECL_SYS (sinf, float, (float x));
1289 # endif
1290 _GL_CXXALIAS_SYS (sinf, float, (float x));
1291 _GL_CXXALIASWARN (sinf);
1292 #elif defined GNULIB_POSIXCHECK
1293 # undef sinf
1294 # if HAVE_RAW_DECL_SINF
1295 _GL_WARN_ON_USE (sinf, "sinf is unportable - "
1296                  "use gnulib module sinf for portability");
1297 # endif
1298 #endif
1299
1300 #if @GNULIB_SINL@
1301 # if !@HAVE_SINL@ || !@HAVE_DECL_SINL@
1302 #  undef sinl
1303 _GL_FUNCDECL_SYS (sinl, long double, (long double x));
1304 # endif
1305 _GL_CXXALIAS_SYS (sinl, long double, (long double x));
1306 _GL_CXXALIASWARN (sinl);
1307 #elif defined GNULIB_POSIXCHECK
1308 # undef sinl
1309 # if HAVE_RAW_DECL_SINL
1310 _GL_WARN_ON_USE (sinl, "sinl is unportable - "
1311                  "use gnulib module mathl for portability");
1312 # endif
1313 #endif
1314
1315
1316 #if @GNULIB_SINHF@
1317 # if !@HAVE_SINHF@
1318 #  undef sinhf
1319 _GL_FUNCDECL_SYS (sinhf, float, (float x));
1320 # endif
1321 _GL_CXXALIAS_SYS (sinhf, float, (float x));
1322 _GL_CXXALIASWARN (sinhf);
1323 #elif defined GNULIB_POSIXCHECK
1324 # undef sinhf
1325 # if HAVE_RAW_DECL_SINHF
1326 _GL_WARN_ON_USE (sinhf, "sinhf is unportable - "
1327                  "use gnulib module sinhf for portability");
1328 # endif
1329 #endif
1330
1331
1332 #if @GNULIB_SQRTF@
1333 # if !@HAVE_SQRTF@
1334 #  undef sqrtf
1335 _GL_FUNCDECL_SYS (sqrtf, float, (float x));
1336 # endif
1337 _GL_CXXALIAS_SYS (sqrtf, float, (float x));
1338 _GL_CXXALIASWARN (sqrtf);
1339 #elif defined GNULIB_POSIXCHECK
1340 # undef sqrtf
1341 # if HAVE_RAW_DECL_SQRTF
1342 _GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - "
1343                  "use gnulib module sqrtf for portability");
1344 # endif
1345 #endif
1346
1347 #if @GNULIB_SQRTL@
1348 # if !@HAVE_SQRTL@ || !@HAVE_DECL_SQRTL@
1349 #  undef sqrtl
1350 _GL_FUNCDECL_SYS (sqrtl, long double, (long double x));
1351 # endif
1352 _GL_CXXALIAS_SYS (sqrtl, long double, (long double x));
1353 _GL_CXXALIASWARN (sqrtl);
1354 #elif defined GNULIB_POSIXCHECK
1355 # undef sqrtl
1356 # if HAVE_RAW_DECL_SQRTL
1357 _GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - "
1358                  "use gnulib module mathl for portability");
1359 # endif
1360 #endif
1361
1362
1363 #if @GNULIB_TANF@
1364 # if !@HAVE_TANF@
1365 #  undef tanf
1366 _GL_FUNCDECL_SYS (tanf, float, (float x));
1367 # endif
1368 _GL_CXXALIAS_SYS (tanf, float, (float x));
1369 _GL_CXXALIASWARN (tanf);
1370 #elif defined GNULIB_POSIXCHECK
1371 # undef tanf
1372 # if HAVE_RAW_DECL_TANF
1373 _GL_WARN_ON_USE (tanf, "tanf is unportable - "
1374                  "use gnulib module tanf for portability");
1375 # endif
1376 #endif
1377
1378 #if @GNULIB_TANL@
1379 # if !@HAVE_TANL@ || !@HAVE_DECL_TANL@
1380 #  undef tanl
1381 _GL_FUNCDECL_SYS (tanl, long double, (long double x));
1382 # endif
1383 _GL_CXXALIAS_SYS (tanl, long double, (long double x));
1384 _GL_CXXALIASWARN (tanl);
1385 #elif defined GNULIB_POSIXCHECK
1386 # undef tanl
1387 # if HAVE_RAW_DECL_TANL
1388 _GL_WARN_ON_USE (tanl, "tanl is unportable - "
1389                  "use gnulib module mathl for portability");
1390 # endif
1391 #endif
1392
1393
1394 #if @GNULIB_TANHF@
1395 # if !@HAVE_TANHF@
1396 #  undef tanhf
1397 _GL_FUNCDECL_SYS (tanhf, float, (float x));
1398 # endif
1399 _GL_CXXALIAS_SYS (tanhf, float, (float x));
1400 _GL_CXXALIASWARN (tanhf);
1401 #elif defined GNULIB_POSIXCHECK
1402 # undef tanhf
1403 # if HAVE_RAW_DECL_TANHF
1404 _GL_WARN_ON_USE (tanhf, "tanhf is unportable - "
1405                  "use gnulib module tanhf for portability");
1406 # endif
1407 #endif
1408
1409
1410 #if @GNULIB_TRUNCF@
1411 # if @REPLACE_TRUNCF@
1412 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1413 #   define truncf rpl_truncf
1414 #  endif
1415 _GL_FUNCDECL_RPL (truncf, float, (float x));
1416 _GL_CXXALIAS_RPL (truncf, float, (float x));
1417 # else
1418 #  if !@HAVE_DECL_TRUNCF@
1419 _GL_FUNCDECL_SYS (truncf, float, (float x));
1420 #  endif
1421 _GL_CXXALIAS_SYS (truncf, float, (float x));
1422 # endif
1423 _GL_CXXALIASWARN (truncf);
1424 #elif defined GNULIB_POSIXCHECK
1425 # undef truncf
1426 # if HAVE_RAW_DECL_TRUNCF
1427 _GL_WARN_ON_USE (truncf, "truncf is unportable - "
1428                  "use gnulib module truncf for portability");
1429 # endif
1430 #endif
1431
1432 #if @GNULIB_TRUNC@
1433 # if @REPLACE_TRUNC@
1434 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1435 #   define trunc rpl_trunc
1436 #  endif
1437 _GL_FUNCDECL_RPL (trunc, double, (double x));
1438 _GL_CXXALIAS_RPL (trunc, double, (double x));
1439 # else
1440 #  if !@HAVE_DECL_TRUNC@
1441 _GL_FUNCDECL_SYS (trunc, double, (double x));
1442 #  endif
1443 _GL_CXXALIAS_SYS (trunc, double, (double x));
1444 # endif
1445 _GL_CXXALIASWARN (trunc);
1446 #elif defined GNULIB_POSIXCHECK
1447 # undef trunc
1448 # if HAVE_RAW_DECL_TRUNC
1449 _GL_WARN_ON_USE (trunc, "trunc is unportable - "
1450                  "use gnulib module trunc for portability");
1451 # endif
1452 #endif
1453
1454 #if @GNULIB_TRUNCL@
1455 # if @REPLACE_TRUNCL@
1456 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1457 #   undef truncl
1458 #   define truncl rpl_truncl
1459 #  endif
1460 _GL_FUNCDECL_RPL (truncl, long double, (long double x));
1461 _GL_CXXALIAS_RPL (truncl, long double, (long double x));
1462 # else
1463 #  if !@HAVE_DECL_TRUNCL@
1464 _GL_FUNCDECL_SYS (truncl, long double, (long double x));
1465 #  endif
1466 _GL_CXXALIAS_SYS (truncl, long double, (long double x));
1467 # endif
1468 _GL_CXXALIASWARN (truncl);
1469 #elif defined GNULIB_POSIXCHECK
1470 # undef truncl
1471 # if HAVE_RAW_DECL_TRUNCL
1472 _GL_WARN_ON_USE (truncl, "truncl is unportable - "
1473                  "use gnulib module truncl for portability");
1474 # endif
1475 #endif
1476
1477
1478 /* Definitions of function-like macros come here, after the function
1479    declarations.  */
1480
1481
1482 #if @GNULIB_ISFINITE@
1483 # if @REPLACE_ISFINITE@
1484 _GL_EXTERN_C int gl_isfinitef (float x);
1485 _GL_EXTERN_C int gl_isfinited (double x);
1486 _GL_EXTERN_C int gl_isfinitel (long double x);
1487 #  undef isfinite
1488 #  define isfinite(x) \
1489    (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \
1490     sizeof (x) == sizeof (double) ? gl_isfinited (x) : \
1491     gl_isfinitef (x))
1492 # endif
1493 # ifdef __cplusplus
1494 #  ifdef isfinite
1495 _GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite)
1496 #   undef isfinite
1497 _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite)
1498 #  endif
1499 # endif
1500 #elif defined GNULIB_POSIXCHECK
1501 # if defined isfinite
1502 _GL_WARN_REAL_FLOATING_DECL (isfinite);
1503 #  undef isfinite
1504 #  define isfinite(x) _GL_WARN_REAL_FLOATING_IMPL (isfinite, x)
1505 # endif
1506 #endif
1507
1508
1509 #if @GNULIB_ISINF@
1510 # if @REPLACE_ISINF@
1511 _GL_EXTERN_C int gl_isinff (float x);
1512 _GL_EXTERN_C int gl_isinfd (double x);
1513 _GL_EXTERN_C int gl_isinfl (long double x);
1514 #  undef isinf
1515 #  define isinf(x) \
1516    (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \
1517     sizeof (x) == sizeof (double) ? gl_isinfd (x) : \
1518     gl_isinff (x))
1519 # endif
1520 # ifdef __cplusplus
1521 #  ifdef isinf
1522 _GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf)
1523 #   undef isinf
1524 _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf)
1525 #  endif
1526 # endif
1527 #elif defined GNULIB_POSIXCHECK
1528 # if defined isinf
1529 _GL_WARN_REAL_FLOATING_DECL (isinf);
1530 #  undef isinf
1531 #  define isinf(x) _GL_WARN_REAL_FLOATING_IMPL (isinf, x)
1532 # endif
1533 #endif
1534
1535
1536 #if @GNULIB_ISNANF@
1537 /* Test for NaN for 'float' numbers.  */
1538 # if @HAVE_ISNANF@
1539 /* The original <math.h> included above provides a declaration of isnan macro
1540    or (older) isnanf function.  */
1541 #  if __GNUC__ >= 4
1542     /* GCC 4.0 and newer provides three built-ins for isnan.  */
1543 #   undef isnanf
1544 #   define isnanf(x) __builtin_isnanf ((float)(x))
1545 #  elif defined isnan
1546 #   undef isnanf
1547 #   define isnanf(x) isnan ((float)(x))
1548 #  endif
1549 # else
1550 /* Test whether X is a NaN.  */
1551 #  undef isnanf
1552 #  define isnanf rpl_isnanf
1553 _GL_EXTERN_C int isnanf (float x);
1554 # endif
1555 #endif
1556
1557 #if @GNULIB_ISNAND@
1558 /* Test for NaN for 'double' numbers.
1559    This function is a gnulib extension, unlike isnan() which applied only
1560    to 'double' numbers earlier but now is a type-generic macro.  */
1561 # if @HAVE_ISNAND@
1562 /* The original <math.h> included above provides a declaration of isnan
1563    macro.  */
1564 #  if __GNUC__ >= 4
1565     /* GCC 4.0 and newer provides three built-ins for isnan.  */
1566 #   undef isnand
1567 #   define isnand(x) __builtin_isnan ((double)(x))
1568 #  else
1569 #   undef isnand
1570 #   define isnand(x) isnan ((double)(x))
1571 #  endif
1572 # else
1573 /* Test whether X is a NaN.  */
1574 #  undef isnand
1575 #  define isnand rpl_isnand
1576 _GL_EXTERN_C int isnand (double x);
1577 # endif
1578 #endif
1579
1580 #if @GNULIB_ISNANL@
1581 /* Test for NaN for 'long double' numbers.  */
1582 # if @HAVE_ISNANL@
1583 /* The original <math.h> included above provides a declaration of isnan
1584    macro or (older) isnanl function.  */
1585 #  if __GNUC__ >= 4
1586     /* GCC 4.0 and newer provides three built-ins for isnan.  */
1587 #   undef isnanl
1588 #   define isnanl(x) __builtin_isnanl ((long double)(x))
1589 #  elif defined isnan
1590 #   undef isnanl
1591 #   define isnanl(x) isnan ((long double)(x))
1592 #  endif
1593 # else
1594 /* Test whether X is a NaN.  */
1595 #  undef isnanl
1596 #  define isnanl rpl_isnanl
1597 _GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST;
1598 # endif
1599 #endif
1600
1601 /* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL!  */
1602 #if @GNULIB_ISNAN@
1603 # if @REPLACE_ISNAN@
1604 /* We can't just use the isnanf macro (e.g.) as exposed by
1605    isnanf.h (e.g.) here, because those may end up being macros
1606    that recursively expand back to isnan.  So use the gnulib
1607    replacements for them directly. */
1608 #  if @HAVE_ISNANF@ && __GNUC__ >= 4
1609 #   define gl_isnan_f(x) __builtin_isnanf ((float)(x))
1610 #  else
1611 _GL_EXTERN_C int rpl_isnanf (float x);
1612 #   define gl_isnan_f(x) rpl_isnanf (x)
1613 #  endif
1614 #  if @HAVE_ISNAND@ && __GNUC__ >= 4
1615 #   define gl_isnan_d(x) __builtin_isnan ((double)(x))
1616 #  else
1617 _GL_EXTERN_C int rpl_isnand (double x);
1618 #   define gl_isnan_d(x) rpl_isnand (x)
1619 #  endif
1620 #  if @HAVE_ISNANL@ && __GNUC__ >= 4
1621 #   define gl_isnan_l(x) __builtin_isnanl ((long double)(x))
1622 #  else
1623 _GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
1624 #   define gl_isnan_l(x) rpl_isnanl (x)
1625 #  endif
1626 #  undef isnan
1627 #  define isnan(x) \
1628    (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \
1629     sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \
1630     gl_isnan_f (x))
1631 # elif __GNUC__ >= 4
1632 #  undef isnan
1633 #  define isnan(x) \
1634    (sizeof (x) == sizeof (long double) ? __builtin_isnanl ((long double)(x)) : \
1635     sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \
1636     __builtin_isnanf ((float)(x)))
1637 # endif
1638 # ifdef __cplusplus
1639 #  ifdef isnan
1640 _GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan)
1641 #   undef isnan
1642 _GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan)
1643 #  endif
1644 # else
1645 /* Ensure isnan is a macro.  */
1646 #  ifndef isnan
1647 #   define isnan isnan
1648 #  endif
1649 # endif
1650 #elif defined GNULIB_POSIXCHECK
1651 # if defined isnan
1652 _GL_WARN_REAL_FLOATING_DECL (isnan);
1653 #  undef isnan
1654 #  define isnan(x) _GL_WARN_REAL_FLOATING_IMPL (isnan, x)
1655 # endif
1656 #endif
1657
1658
1659 #if @GNULIB_SIGNBIT@
1660 # if @REPLACE_SIGNBIT_USING_GCC@
1661 #  undef signbit
1662    /* GCC 4.0 and newer provides three built-ins for signbit.  */
1663 #  define signbit(x) \
1664    (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
1665     sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
1666     __builtin_signbitf (x))
1667 # endif
1668 # if @REPLACE_SIGNBIT@
1669 #  undef signbit
1670 _GL_EXTERN_C int gl_signbitf (float arg);
1671 _GL_EXTERN_C int gl_signbitd (double arg);
1672 _GL_EXTERN_C int gl_signbitl (long double arg);
1673 #  if __GNUC__ >= 2 && !defined __STRICT_ANSI__
1674 #   define _GL_NUM_UINT_WORDS(type) \
1675       ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
1676 #   if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf
1677 #    define gl_signbitf_OPTIMIZED_MACRO
1678 #    define gl_signbitf(arg) \
1679        ({ union { float _value;                                         \
1680                   unsigned int _word[_GL_NUM_UINT_WORDS (float)];       \
1681                 } _m;                                                   \
1682           _m._value = (arg);                                            \
1683           (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1;          \
1684         })
1685 #   endif
1686 #   if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd
1687 #    define gl_signbitd_OPTIMIZED_MACRO
1688 #    define gl_signbitd(arg) \
1689        ({ union { double _value;                                        \
1690                   unsigned int _word[_GL_NUM_UINT_WORDS (double)];      \
1691                 } _m;                                                   \
1692           _m._value = (arg);                                            \
1693           (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1;          \
1694         })
1695 #   endif
1696 #   if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined gl_signbitl
1697 #    define gl_signbitl_OPTIMIZED_MACRO
1698 #    define gl_signbitl(arg) \
1699        ({ union { long double _value;                                   \
1700                   unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \
1701                 } _m;                                                   \
1702           _m._value = (arg);                                            \
1703           (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1;        \
1704         })
1705 #   endif
1706 #  endif
1707 #  define signbit(x) \
1708    (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \
1709     sizeof (x) == sizeof (double) ? gl_signbitd (x) : \
1710     gl_signbitf (x))
1711 # endif
1712 # ifdef __cplusplus
1713 #  ifdef signbit
1714 _GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit)
1715 #   undef signbit
1716 _GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit)
1717 #  endif
1718 # endif
1719 #elif defined GNULIB_POSIXCHECK
1720 # if defined signbit
1721 _GL_WARN_REAL_FLOATING_DECL (signbit);
1722 #  undef signbit
1723 #  define signbit(x) _GL_WARN_REAL_FLOATING_IMPL (signbit, x)
1724 # endif
1725 #endif
1726
1727
1728 #endif /* _@GUARD_PREFIX@_MATH_H */
1729 #endif /* _@GUARD_PREFIX@_MATH_H */