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