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