1/* This file is automatically generated.  DO NOT EDIT! */
2/* Generated from: NetBSD: mknative-gdb,v 1.14 2020/09/24 14:53:17 christos Exp  */
3/* Generated from: NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp  */
4
5/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
6/* A GNU-like <math.h>.
7
8   Copyright (C) 2002-2003, 2007-2020 Free Software Foundation, Inc.
9
10   This program is free software: you can redistribute it and/or modify
11   it under the terms of the GNU General Public License as published by
12   the Free Software Foundation; either version 3 of the License, or
13   (at your option) any later version.
14
15   This program is distributed in the hope that it will be useful,
16   but WITHOUT ANY WARRANTY; without even the implied warranty of
17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18   GNU General Public License for more details.
19
20   You should have received a copy of the GNU General Public License
21   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
22
23#ifndef _GL_MATH_H
24
25#if __GNUC__ >= 3
26#pragma GCC system_header
27#endif
28
29
30/* The include_next requires a split double-inclusion guard.  */
31#include_next <math.h>
32
33#ifndef _GL_MATH_H
34#define _GL_MATH_H
35
36/* On OpenVMS, NAN, INFINITY, and HUGEVAL macros are defined in <fp.h>.  */
37#if defined __VMS && ! defined NAN
38# include <fp.h>
39#endif
40
41#ifndef _GL_INLINE_HEADER_BEGIN
42 #error "Please include config.h first."
43#endif
44_GL_INLINE_HEADER_BEGIN
45#ifndef _GL_MATH_INLINE
46# define _GL_MATH_INLINE _GL_INLINE
47#endif
48
49/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
50/* C++ compatible function declaration macros.
51   Copyright (C) 2010-2020 Free Software Foundation, Inc.
52
53   This program is free software: you can redistribute it and/or modify it
54   under the terms of the GNU General Public License as published
55   by the Free Software Foundation; either version 3 of the License, or
56   (at your option) any later version.
57
58   This program is distributed in the hope that it will be useful,
59   but WITHOUT ANY WARRANTY; without even the implied warranty of
60   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
61   General Public License for more details.
62
63   You should have received a copy of the GNU General Public License
64   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
65
66#ifndef _GL_CXXDEFS_H
67#define _GL_CXXDEFS_H
68
69/* Begin/end the GNULIB_NAMESPACE namespace.  */
70#if defined __cplusplus && defined GNULIB_NAMESPACE
71# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
72# define _GL_END_NAMESPACE }
73#else
74# define _GL_BEGIN_NAMESPACE
75# define _GL_END_NAMESPACE
76#endif
77
78/* The three most frequent use cases of these macros are:
79
80   * For providing a substitute for a function that is missing on some
81     platforms, but is declared and works fine on the platforms on which
82     it exists:
83
84       #if @GNULIB_FOO@
85       # if !@HAVE_FOO@
86       _GL_FUNCDECL_SYS (foo, ...);
87       # endif
88       _GL_CXXALIAS_SYS (foo, ...);
89       _GL_CXXALIASWARN (foo);
90       #elif defined GNULIB_POSIXCHECK
91       ...
92       #endif
93
94   * For providing a replacement for a function that exists on all platforms,
95     but is broken/insufficient and needs to be replaced on some platforms:
96
97       #if @GNULIB_FOO@
98       # if @REPLACE_FOO@
99       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
100       #   undef foo
101       #   define foo rpl_foo
102       #  endif
103       _GL_FUNCDECL_RPL (foo, ...);
104       _GL_CXXALIAS_RPL (foo, ...);
105       # else
106       _GL_CXXALIAS_SYS (foo, ...);
107       # endif
108       _GL_CXXALIASWARN (foo);
109       #elif defined GNULIB_POSIXCHECK
110       ...
111       #endif
112
113   * For providing a replacement for a function that exists on some platforms
114     but is broken/insufficient and needs to be replaced on some of them and
115     is additionally either missing or undeclared on some other platforms:
116
117       #if @GNULIB_FOO@
118       # if @REPLACE_FOO@
119       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
120       #   undef foo
121       #   define foo rpl_foo
122       #  endif
123       _GL_FUNCDECL_RPL (foo, ...);
124       _GL_CXXALIAS_RPL (foo, ...);
125       # else
126       #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
127       _GL_FUNCDECL_SYS (foo, ...);
128       #  endif
129       _GL_CXXALIAS_SYS (foo, ...);
130       # endif
131       _GL_CXXALIASWARN (foo);
132       #elif defined GNULIB_POSIXCHECK
133       ...
134       #endif
135*/
136
137/* _GL_EXTERN_C declaration;
138   performs the declaration with C linkage.  */
139#if defined __cplusplus
140# define _GL_EXTERN_C extern "C"
141#else
142# define _GL_EXTERN_C extern
143#endif
144
145/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
146   declares a replacement function, named rpl_func, with the given prototype,
147   consisting of return type, parameters, and attributes.
148   Example:
149     _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
150                                  _GL_ARG_NONNULL ((1)));
151 */
152#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
153  _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
154#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
155  _GL_EXTERN_C rettype rpl_func parameters_and_attributes
156
157/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
158   declares the system function, named func, with the given prototype,
159   consisting of return type, parameters, and attributes.
160   Example:
161     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
162                                  _GL_ARG_NONNULL ((1)));
163 */
164#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
165  _GL_EXTERN_C rettype func parameters_and_attributes
166
167/* _GL_CXXALIAS_RPL (func, rettype, parameters);
168   declares a C++ alias called GNULIB_NAMESPACE::func
169   that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
170   Example:
171     _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
172
173   Wrapping rpl_func in an object with an inline conversion operator
174   avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
175   actually used in the program.  */
176#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
177  _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
178#if defined __cplusplus && defined GNULIB_NAMESPACE
179# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
180    namespace GNULIB_NAMESPACE                                \
181    {                                                         \
182      static const struct _gl_ ## func ## _wrapper            \
183      {                                                       \
184        typedef rettype (*type) parameters;                   \
185                                                              \
186        inline operator type () const                         \
187        {                                                     \
188          return ::rpl_func;                                  \
189        }                                                     \
190      } func = {};                                            \
191    }                                                         \
192    _GL_EXTERN_C int _gl_cxxalias_dummy
193#else
194# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
195    _GL_EXTERN_C int _gl_cxxalias_dummy
196#endif
197
198/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
199   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
200   except that the C function rpl_func may have a slightly different
201   declaration.  A cast is used to silence the "invalid conversion" error
202   that would otherwise occur.  */
203#if defined __cplusplus && defined GNULIB_NAMESPACE
204# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
205    namespace GNULIB_NAMESPACE                                     \
206    {                                                              \
207      static const struct _gl_ ## func ## _wrapper                 \
208      {                                                            \
209        typedef rettype (*type) parameters;                        \
210                                                                   \
211        inline operator type () const                              \
212        {                                                          \
213          return reinterpret_cast<type>(::rpl_func);               \
214        }                                                          \
215      } func = {};                                                 \
216    }                                                              \
217    _GL_EXTERN_C int _gl_cxxalias_dummy
218#else
219# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
220    _GL_EXTERN_C int _gl_cxxalias_dummy
221#endif
222
223/* _GL_CXXALIAS_SYS (func, rettype, parameters);
224   declares a C++ alias called GNULIB_NAMESPACE::func
225   that redirects to the system provided function func, if GNULIB_NAMESPACE
226   is defined.
227   Example:
228     _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
229
230   Wrapping func in an object with an inline conversion operator
231   avoids a reference to func unless GNULIB_NAMESPACE::func is
232   actually used in the program.  */
233#if defined __cplusplus && defined GNULIB_NAMESPACE
234# define _GL_CXXALIAS_SYS(func,rettype,parameters)            \
235    namespace GNULIB_NAMESPACE                                \
236    {                                                         \
237      static const struct _gl_ ## func ## _wrapper            \
238      {                                                       \
239        typedef rettype (*type) parameters;                   \
240                                                              \
241        inline operator type () const                         \
242        {                                                     \
243          return ::func;                                      \
244        }                                                     \
245      } func = {};                                            \
246    }                                                         \
247    _GL_EXTERN_C int _gl_cxxalias_dummy
248#else
249# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
250    _GL_EXTERN_C int _gl_cxxalias_dummy
251#endif
252
253/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
254   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
255   except that the C function func may have a slightly different declaration.
256   A cast is used to silence the "invalid conversion" error that would
257   otherwise occur.  */
258#if defined __cplusplus && defined GNULIB_NAMESPACE
259# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
260    namespace GNULIB_NAMESPACE                          \
261    {                                                   \
262      static const struct _gl_ ## func ## _wrapper      \
263      {                                                 \
264        typedef rettype (*type) parameters;             \
265                                                        \
266        inline operator type () const                   \
267        {                                               \
268          return reinterpret_cast<type>(::func);        \
269        }                                               \
270      } func = {};                                      \
271    }                                                   \
272    _GL_EXTERN_C int _gl_cxxalias_dummy
273#else
274# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
275    _GL_EXTERN_C int _gl_cxxalias_dummy
276#endif
277
278/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
279   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
280   except that the C function is picked among a set of overloaded functions,
281   namely the one with rettype2 and parameters2.  Two consecutive casts
282   are used to silence the "cannot find a match" and "invalid conversion"
283   errors that would otherwise occur.  */
284#if defined __cplusplus && defined GNULIB_NAMESPACE
285  /* The outer cast must be a reinterpret_cast.
286     The inner cast: When the function is defined as a set of overloaded
287     functions, it works as a static_cast<>, choosing the designated variant.
288     When the function is defined as a single variant, it works as a
289     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
290# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
291    namespace GNULIB_NAMESPACE                                                \
292    {                                                                         \
293      static const struct _gl_ ## func ## _wrapper                            \
294      {                                                                       \
295        typedef rettype (*type) parameters;                                   \
296                                                                              \
297        inline operator type () const                                         \
298        {                                                                     \
299          return reinterpret_cast<type>((rettype2 (*) parameters2)(::func));  \
300        }                                                                     \
301      } func = {};                                                            \
302    }                                                                         \
303    _GL_EXTERN_C int _gl_cxxalias_dummy
304#else
305# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
306    _GL_EXTERN_C int _gl_cxxalias_dummy
307#endif
308
309/* _GL_CXXALIASWARN (func);
310   causes a warning to be emitted when ::func is used but not when
311   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
312   variants.  */
313#if defined __cplusplus && defined GNULIB_NAMESPACE
314# define _GL_CXXALIASWARN(func) \
315   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
316# define _GL_CXXALIASWARN_1(func,namespace) \
317   _GL_CXXALIASWARN_2 (func, namespace)
318/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
319   we enable the warning only when not optimizing.  */
320# if !__OPTIMIZE__
321#  define _GL_CXXALIASWARN_2(func,namespace) \
322    _GL_WARN_ON_USE (func, \
323                     "The symbol ::" #func " refers to the system function. " \
324                     "Use " #namespace "::" #func " instead.")
325# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
326#  define _GL_CXXALIASWARN_2(func,namespace) \
327     extern __typeof__ (func) func
328# else
329#  define _GL_CXXALIASWARN_2(func,namespace) \
330     _GL_EXTERN_C int _gl_cxxalias_dummy
331# endif
332#else
333# define _GL_CXXALIASWARN(func) \
334    _GL_EXTERN_C int _gl_cxxalias_dummy
335#endif
336
337/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
338   causes a warning to be emitted when the given overloaded variant of ::func
339   is used but not when GNULIB_NAMESPACE::func is used.  */
340#if defined __cplusplus && defined GNULIB_NAMESPACE
341# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
342   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
343                        GNULIB_NAMESPACE)
344# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
345   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
346/* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
347   we enable the warning only when not optimizing.  */
348# if !__OPTIMIZE__
349#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
350    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
351                         "The symbol ::" #func " refers to the system function. " \
352                         "Use " #namespace "::" #func " instead.")
353# else
354#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
355     _GL_EXTERN_C int _gl_cxxalias_dummy
356# endif
357#else
358# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
359    _GL_EXTERN_C int _gl_cxxalias_dummy
360#endif
361
362#endif /* _GL_CXXDEFS_H */
363
364/* The definition of _GL_ARG_NONNULL is copied here.  */
365/* A C macro for declaring that specific arguments must not be NULL.
366   Copyright (C) 2009-2020 Free Software Foundation, Inc.
367
368   This program is free software: you can redistribute it and/or modify it
369   under the terms of the GNU General Public License as published
370   by the Free Software Foundation; either version 3 of the License, or
371   (at your option) any later version.
372
373   This program is distributed in the hope that it will be useful,
374   but WITHOUT ANY WARRANTY; without even the implied warranty of
375   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
376   General Public License for more details.
377
378   You should have received a copy of the GNU General Public License
379   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
380
381/* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
382   that the values passed as arguments n, ..., m must be non-NULL pointers.
383   n = 1 stands for the first argument, n = 2 for the second argument etc.  */
384#ifndef _GL_ARG_NONNULL
385# if (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || __GNUC__ > 3
386#  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
387# else
388#  define _GL_ARG_NONNULL(params)
389# endif
390#endif
391
392/* The definition of _GL_WARN_ON_USE is copied here.  */
393/* A C macro for emitting warnings if a function is used.
394   Copyright (C) 2010-2020 Free Software Foundation, Inc.
395
396   This program is free software: you can redistribute it and/or modify it
397   under the terms of the GNU General Public License as published
398   by the Free Software Foundation; either version 3 of the License, or
399   (at your option) any later version.
400
401   This program is distributed in the hope that it will be useful,
402   but WITHOUT ANY WARRANTY; without even the implied warranty of
403   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
404   General Public License for more details.
405
406   You should have received a copy of the GNU General Public License
407   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
408
409/* _GL_WARN_ON_USE (function, "literal string") issues a declaration
410   for FUNCTION which will then trigger a compiler warning containing
411   the text of "literal string" anywhere that function is called, if
412   supported by the compiler.  If the compiler does not support this
413   feature, the macro expands to an unused extern declaration.
414
415   _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
416   attribute used in _GL_WARN_ON_USE.  If the compiler does not support
417   this feature, it expands to empty.
418
419   These macros are useful for marking a function as a potential
420   portability trap, with the intent that "literal string" include
421   instructions on the replacement function that should be used
422   instead.
423   _GL_WARN_ON_USE is for functions with 'extern' linkage.
424   _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
425   linkage.
426
427   However, one of the reasons that a function is a portability trap is
428   if it has the wrong signature.  Declaring FUNCTION with a different
429   signature in C is a compilation error, so this macro must use the
430   same type as any existing declaration so that programs that avoid
431   the problematic FUNCTION do not fail to compile merely because they
432   included a header that poisoned the function.  But this implies that
433   _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
434   have a declaration.  Use of this macro implies that there must not
435   be any other macro hiding the declaration of FUNCTION; but
436   undefining FUNCTION first is part of the poisoning process anyway
437   (although for symbols that are provided only via a macro, the result
438   is a compilation error rather than a warning containing
439   "literal string").  Also note that in C++, it is only safe to use if
440   FUNCTION has no overloads.
441
442   For an example, it is possible to poison 'getline' by:
443   - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
444     [getline]) in configure.ac, which potentially defines
445     HAVE_RAW_DECL_GETLINE
446   - adding this code to a header that wraps the system <stdio.h>:
447     #undef getline
448     #if HAVE_RAW_DECL_GETLINE
449     _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
450       "not universally present; use the gnulib module getline");
451     #endif
452
453   It is not possible to directly poison global variables.  But it is
454   possible to write a wrapper accessor function, and poison that
455   (less common usage, like &environ, will cause a compilation error
456   rather than issue the nice warning, but the end result of informing
457   the developer about their portability problem is still achieved):
458     #if HAVE_RAW_DECL_ENVIRON
459     static char ***
460     rpl_environ (void) { return &environ; }
461     _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
462     # undef environ
463     # define environ (*rpl_environ ())
464     #endif
465   or better (avoiding contradictory use of 'static' and 'extern'):
466     #if HAVE_RAW_DECL_ENVIRON
467     static char ***
468     _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
469     rpl_environ (void) { return &environ; }
470     # undef environ
471     # define environ (*rpl_environ ())
472     #endif
473   */
474#ifndef _GL_WARN_ON_USE
475
476# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
477/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
478#  define _GL_WARN_ON_USE(function, message) \
479extern __typeof__ (function) function __attribute__ ((__warning__ (message)))
480#  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
481  __attribute__ ((__warning__ (message)))
482# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
483/* Verify the existence of the function.  */
484#  define _GL_WARN_ON_USE(function, message) \
485extern __typeof__ (function) function
486#  define _GL_WARN_ON_USE_ATTRIBUTE(message)
487# else /* Unsupported.  */
488#  define _GL_WARN_ON_USE(function, message) \
489_GL_WARN_EXTERN_C int _gl_warn_on_use
490#  define _GL_WARN_ON_USE_ATTRIBUTE(message)
491# endif
492#endif
493
494/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
495   is like _GL_WARN_ON_USE (function, "string"), except that in C++ mode the
496   function is declared with the given prototype, consisting of return type,
497   parameters, and attributes.
498   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
499   not work in this case.  */
500#ifndef _GL_WARN_ON_USE_CXX
501# if !defined __cplusplus
502#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
503     _GL_WARN_ON_USE (function, msg)
504# else
505#  if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
506#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
507extern rettype function parameters_and_attributes \
508     __attribute__ ((__warning__ (msg)))
509#  elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
510/* Verify the existence of the function.  */
511#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
512extern rettype function parameters_and_attributes
513#  else /* Unsupported.  */
514#   define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
515_GL_WARN_EXTERN_C int _gl_warn_on_use
516#  endif
517# endif
518#endif
519
520/* _GL_WARN_EXTERN_C declaration;
521   performs the declaration with C linkage.  */
522#ifndef _GL_WARN_EXTERN_C
523# if defined __cplusplus
524#  define _GL_WARN_EXTERN_C extern "C"
525# else
526#  define _GL_WARN_EXTERN_C extern
527# endif
528#endif
529
530#ifdef __cplusplus
531/* Helper macros to define type-generic function FUNC as overloaded functions,
532   rather than as macros like in C.  POSIX declares these with an argument of
533   real-floating (that is, one of float, double, or long double).  */
534# define _GL_MATH_CXX_REAL_FLOATING_DECL_1(func) \
535static inline int                                                   \
536_gl_cxx_ ## func ## f (float f)                                     \
537{                                                                   \
538  return func (f);                                                  \
539}                                                                   \
540static inline int                                                   \
541_gl_cxx_ ## func ## d (double d)                                    \
542{                                                                   \
543  return func (d);                                                  \
544}                                                                   \
545static inline int                                                   \
546_gl_cxx_ ## func ## l (long double l)                               \
547{                                                                   \
548  return func (l);                                                  \
549}
550# define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func,rpl_func,rettype) \
551_GL_BEGIN_NAMESPACE                                                 \
552inline rettype                                                      \
553rpl_func (float f)                                                  \
554{                                                                   \
555  return _gl_cxx_ ## func ## f (f);                                 \
556}                                                                   \
557inline rettype                                                      \
558rpl_func (double d)                                                 \
559{                                                                   \
560  return _gl_cxx_ ## func ## d (d);                                 \
561}                                                                   \
562inline rettype                                                      \
563rpl_func (long double l)                                            \
564{                                                                   \
565  return _gl_cxx_ ## func ## l (l);                                 \
566}                                                                   \
567_GL_END_NAMESPACE
568#endif
569
570/* Helper macros to define a portability warning for the
571   classification macro FUNC called with VALUE.  POSIX declares the
572   classification macros with an argument of real-floating (that is,
573   one of float, double, or long double).  */
574#define _GL_WARN_REAL_FLOATING_DECL(func) \
575_GL_MATH_INLINE int                                                       \
576_GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - "                      \
577                           "use gnulib module " #func " for portability") \
578rpl_ ## func ## f (float f)                                               \
579{                                                                         \
580  return func (f);                                                        \
581}                                                                         \
582_GL_MATH_INLINE int                                                       \
583_GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - "                      \
584                           "use gnulib module " #func " for portability") \
585rpl_ ## func ## d (double d)                                              \
586{                                                                         \
587  return func (d);                                                        \
588}                                                                         \
589_GL_MATH_INLINE int                                                       \
590_GL_WARN_ON_USE_ATTRIBUTE (#func " is unportable - "                      \
591                           "use gnulib module " #func " for portability") \
592rpl_ ## func ## l (long double l)                                         \
593{                                                                         \
594  return func (l);                                                        \
595}
596#define _GL_WARN_REAL_FLOATING_IMPL(func, value) \
597  (sizeof (value) == sizeof (float) ? rpl_ ## func ## f (value)     \
598   : sizeof (value) == sizeof (double) ? rpl_ ## func ## d (value)  \
599   : rpl_ ## func ## l (value))
600
601
602#if 0
603/* Pull in a function that fixes the 'int' to 'long double' conversion
604   of glibc 2.7.  */
605_GL_EXTERN_C void _Qp_itoq (long double *, int);
606static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq;
607#endif
608
609
610/* For clang: Use __has_builtin to determine whether a builtin is available.  */
611#ifndef __has_builtin
612# define __has_builtin(name) 0
613#endif
614
615
616/* POSIX allows platforms that don't support NAN.  But all major
617   machines in the past 15 years have supported something close to
618   IEEE NaN, so we define this unconditionally.  We also must define
619   it on platforms like Solaris 10, where NAN is present but defined
620   as a function pointer rather than a floating point constant.  */
621#if !defined NAN || 0
622# if !GNULIB_defined_NAN
623#  undef NAN
624  /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler
625     choke on the expression 0.0 / 0.0.  */
626#  if defined __DECC || defined _MSC_VER
627_GL_MATH_INLINE float
628_NaN ()
629{
630  static float zero = 0.0f;
631  return zero / zero;
632}
633#   define NAN (_NaN())
634#  else
635#   define NAN (0.0f / 0.0f)
636#  endif
637#  define GNULIB_defined_NAN 1
638# endif
639#endif
640
641/* Solaris 10 defines HUGE_VAL, but as a function pointer rather
642   than a floating point constant.  */
643#if 0
644# undef HUGE_VALF
645# define HUGE_VALF (1.0f / 0.0f)
646# undef HUGE_VAL
647# define HUGE_VAL (1.0 / 0.0)
648# undef HUGE_VALL
649# define HUGE_VALL (1.0L / 0.0L)
650#endif
651
652/* HUGE_VALF is a 'float' Infinity.  */
653#ifndef HUGE_VALF
654# if defined _MSC_VER
655/* The Microsoft MSVC 9 compiler chokes on the expression 1.0f / 0.0f.  */
656#  define HUGE_VALF (1e25f * 1e25f)
657# else
658#  define HUGE_VALF (1.0f / 0.0f)
659# endif
660#endif
661
662/* HUGE_VAL is a 'double' Infinity.  */
663#ifndef HUGE_VAL
664# if defined _MSC_VER
665/* The Microsoft MSVC 9 compiler chokes on the expression 1.0 / 0.0.  */
666#  define HUGE_VAL (1e250 * 1e250)
667# else
668#  define HUGE_VAL (1.0 / 0.0)
669# endif
670#endif
671
672/* HUGE_VALL is a 'long double' Infinity.  */
673#ifndef HUGE_VALL
674# if defined _MSC_VER
675/* The Microsoft MSVC 9 compiler chokes on the expression 1.0L / 0.0L.  */
676#  define HUGE_VALL (1e250L * 1e250L)
677# else
678#  define HUGE_VALL (1.0L / 0.0L)
679# endif
680#endif
681
682
683#if defined FP_ILOGB0 && defined FP_ILOGBNAN
684 /* Ensure FP_ILOGB0 and FP_ILOGBNAN are correct.  */
685# if defined __HAIKU__
686  /* Haiku: match what ilogb() does */
687#  undef FP_ILOGB0
688#  undef FP_ILOGBNAN
689#  define FP_ILOGB0   (- 2147483647 - 1) /* INT_MIN */
690#  define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
691# endif
692#else
693 /* Ensure FP_ILOGB0 and FP_ILOGBNAN are defined.  */
694# if defined __NetBSD__ || defined __sgi
695  /* NetBSD, IRIX 6.5: match what ilogb() does */
696#  define FP_ILOGB0   (- 2147483647 - 1) /* INT_MIN */
697#  define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
698# elif defined _AIX
699  /* AIX 5.1: match what ilogb() does in AIX >= 5.2 */
700#  define FP_ILOGB0   (- 2147483647 - 1) /* INT_MIN */
701#  define FP_ILOGBNAN 2147483647 /* INT_MAX */
702# elif defined __sun
703  /* Solaris 9: match what ilogb() does */
704#  define FP_ILOGB0   (- 2147483647) /* - INT_MAX */
705#  define FP_ILOGBNAN 2147483647 /* INT_MAX */
706# else
707  /* Gnulib defined values.  */
708#  define FP_ILOGB0   (- 2147483647) /* - INT_MAX */
709#  define FP_ILOGBNAN (- 2147483647 - 1) /* INT_MIN */
710# endif
711#endif
712
713
714#if 0
715# if 0
716#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
717#   undef acosf
718#   define acosf rpl_acosf
719#  endif
720_GL_FUNCDECL_RPL (acosf, float, (float x));
721_GL_CXXALIAS_RPL (acosf, float, (float x));
722# else
723#  if !1
724#   undef acosf
725_GL_FUNCDECL_SYS (acosf, float, (float x));
726#  endif
727_GL_CXXALIAS_SYS (acosf, float, (float x));
728# endif
729_GL_CXXALIASWARN (acosf);
730#elif defined GNULIB_POSIXCHECK
731# undef acosf
732# if HAVE_RAW_DECL_ACOSF
733_GL_WARN_ON_USE (acosf, "acosf is unportable - "
734                 "use gnulib module acosf for portability");
735# endif
736#endif
737
738#if 0
739# if !1 || !1
740#  undef acosl
741_GL_FUNCDECL_SYS (acosl, long double, (long double x));
742# endif
743_GL_CXXALIAS_SYS (acosl, long double, (long double x));
744_GL_CXXALIASWARN (acosl);
745#elif defined GNULIB_POSIXCHECK
746# undef acosl
747# if HAVE_RAW_DECL_ACOSL
748_GL_WARN_ON_USE (acosl, "acosl is unportable - "
749                 "use gnulib module acosl for portability");
750# endif
751#endif
752
753
754#if 0
755# if 0
756#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
757#   undef asinf
758#   define asinf rpl_asinf
759#  endif
760_GL_FUNCDECL_RPL (asinf, float, (float x));
761_GL_CXXALIAS_RPL (asinf, float, (float x));
762# else
763#  if !1
764#   undef asinf
765_GL_FUNCDECL_SYS (asinf, float, (float x));
766#  endif
767_GL_CXXALIAS_SYS (asinf, float, (float x));
768# endif
769_GL_CXXALIASWARN (asinf);
770#elif defined GNULIB_POSIXCHECK
771# undef asinf
772# if HAVE_RAW_DECL_ASINF
773_GL_WARN_ON_USE (asinf, "asinf is unportable - "
774                 "use gnulib module asinf for portability");
775# endif
776#endif
777
778#if 0
779# if !1 || !1
780#  undef asinl
781_GL_FUNCDECL_SYS (asinl, long double, (long double x));
782# endif
783_GL_CXXALIAS_SYS (asinl, long double, (long double x));
784_GL_CXXALIASWARN (asinl);
785#elif defined GNULIB_POSIXCHECK
786# undef asinl
787# if HAVE_RAW_DECL_ASINL
788_GL_WARN_ON_USE (asinl, "asinl is unportable - "
789                 "use gnulib module asinl for portability");
790# endif
791#endif
792
793
794#if 0
795# if 0
796#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
797#   undef atanf
798#   define atanf rpl_atanf
799#  endif
800_GL_FUNCDECL_RPL (atanf, float, (float x));
801_GL_CXXALIAS_RPL (atanf, float, (float x));
802# else
803#  if !1
804#   undef atanf
805_GL_FUNCDECL_SYS (atanf, float, (float x));
806#  endif
807_GL_CXXALIAS_SYS (atanf, float, (float x));
808# endif
809_GL_CXXALIASWARN (atanf);
810#elif defined GNULIB_POSIXCHECK
811# undef atanf
812# if HAVE_RAW_DECL_ATANF
813_GL_WARN_ON_USE (atanf, "atanf is unportable - "
814                 "use gnulib module atanf for portability");
815# endif
816#endif
817
818#if 0
819# if !1 || !1
820#  undef atanl
821_GL_FUNCDECL_SYS (atanl, long double, (long double x));
822# endif
823_GL_CXXALIAS_SYS (atanl, long double, (long double x));
824_GL_CXXALIASWARN (atanl);
825#elif defined GNULIB_POSIXCHECK
826# undef atanl
827# if HAVE_RAW_DECL_ATANL
828_GL_WARN_ON_USE (atanl, "atanl is unportable - "
829                 "use gnulib module atanl for portability");
830# endif
831#endif
832
833
834#if 0
835# if 0
836#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
837#   undef atan2f
838#   define atan2f rpl_atan2f
839#  endif
840_GL_FUNCDECL_RPL (atan2f, float, (float y, float x));
841_GL_CXXALIAS_RPL (atan2f, float, (float y, float x));
842# else
843#  if !1
844#   undef atan2f
845_GL_FUNCDECL_SYS (atan2f, float, (float y, float x));
846#  endif
847_GL_CXXALIAS_SYS (atan2f, float, (float y, float x));
848# endif
849_GL_CXXALIASWARN (atan2f);
850#elif defined GNULIB_POSIXCHECK
851# undef atan2f
852# if HAVE_RAW_DECL_ATAN2F
853_GL_WARN_ON_USE (atan2f, "atan2f is unportable - "
854                 "use gnulib module atan2f for portability");
855# endif
856#endif
857
858
859#if 0
860# if 0
861#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
862#   undef cbrtf
863#   define cbrtf rpl_cbrtf
864#  endif
865_GL_FUNCDECL_RPL (cbrtf, float, (float x));
866_GL_CXXALIAS_RPL (cbrtf, float, (float x));
867# else
868#  if !1
869_GL_FUNCDECL_SYS (cbrtf, float, (float x));
870#  endif
871_GL_CXXALIAS_SYS (cbrtf, float, (float x));
872# endif
873_GL_CXXALIASWARN (cbrtf);
874#elif defined GNULIB_POSIXCHECK
875# undef cbrtf
876# if HAVE_RAW_DECL_CBRTF
877_GL_WARN_ON_USE (cbrtf, "cbrtf is unportable - "
878                 "use gnulib module cbrtf for portability");
879# endif
880#endif
881
882#if 0
883# if !1
884_GL_FUNCDECL_SYS (cbrt, double, (double x));
885# endif
886_GL_CXXALIAS_SYS (cbrt, double, (double x));
887# if __GLIBC__ >= 2
888_GL_CXXALIASWARN (cbrt);
889# endif
890#elif defined GNULIB_POSIXCHECK
891# undef cbrt
892# if HAVE_RAW_DECL_CBRT
893_GL_WARN_ON_USE (cbrt, "cbrt is unportable - "
894                 "use gnulib module cbrt for portability");
895# endif
896#endif
897
898#if 0
899# if 0
900#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
901#   undef cbrtl
902#   define cbrtl rpl_cbrtl
903#  endif
904_GL_FUNCDECL_RPL (cbrtl, long double, (long double x));
905_GL_CXXALIAS_RPL (cbrtl, long double, (long double x));
906# else
907#  if !1
908_GL_FUNCDECL_SYS (cbrtl, long double, (long double x));
909#  endif
910_GL_CXXALIAS_SYS (cbrtl, long double, (long double x));
911# endif
912_GL_CXXALIASWARN (cbrtl);
913#elif defined GNULIB_POSIXCHECK
914# undef cbrtl
915# if HAVE_RAW_DECL_CBRTL
916_GL_WARN_ON_USE (cbrtl, "cbrtl is unportable - "
917                 "use gnulib module cbrtl for portability");
918# endif
919#endif
920
921
922#if 0
923# if 0
924#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
925#   undef ceilf
926#   define ceilf rpl_ceilf
927#  endif
928_GL_FUNCDECL_RPL (ceilf, float, (float x));
929_GL_CXXALIAS_RPL (ceilf, float, (float x));
930# else
931#  if !1
932#   undef ceilf
933_GL_FUNCDECL_SYS (ceilf, float, (float x));
934#  endif
935_GL_CXXALIAS_SYS (ceilf, float, (float x));
936# endif
937_GL_CXXALIASWARN (ceilf);
938#elif defined GNULIB_POSIXCHECK
939# undef ceilf
940# if HAVE_RAW_DECL_CEILF
941_GL_WARN_ON_USE (ceilf, "ceilf is unportable - "
942                 "use gnulib module ceilf for portability");
943# endif
944#endif
945
946#if 0
947# if 0
948#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
949#   undef ceil
950#   define ceil rpl_ceil
951#  endif
952_GL_FUNCDECL_RPL (ceil, double, (double x));
953_GL_CXXALIAS_RPL (ceil, double, (double x));
954# else
955_GL_CXXALIAS_SYS (ceil, double, (double x));
956# endif
957# if __GLIBC__ >= 2
958_GL_CXXALIASWARN (ceil);
959# endif
960#endif
961
962#if 0
963# if 0
964#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
965#   undef ceill
966#   define ceill rpl_ceill
967#  endif
968_GL_FUNCDECL_RPL (ceill, long double, (long double x));
969_GL_CXXALIAS_RPL (ceill, long double, (long double x));
970# else
971#  if !1
972#   undef ceill
973_GL_FUNCDECL_SYS (ceill, long double, (long double x));
974#  endif
975_GL_CXXALIAS_SYS (ceill, long double, (long double x));
976# endif
977_GL_CXXALIASWARN (ceill);
978#elif defined GNULIB_POSIXCHECK
979# undef ceill
980# if HAVE_RAW_DECL_CEILL
981_GL_WARN_ON_USE (ceill, "ceill is unportable - "
982                 "use gnulib module ceill for portability");
983# endif
984#endif
985
986
987#if 0
988# if !1
989#  undef copysignf
990_GL_FUNCDECL_SYS (copysignf, float, (float x, float y));
991# endif
992_GL_CXXALIAS_SYS (copysignf, float, (float x, float y));
993_GL_CXXALIASWARN (copysignf);
994#elif defined GNULIB_POSIXCHECK
995# undef copysignf
996# if HAVE_RAW_DECL_COPYSIGNF
997_GL_WARN_ON_USE (copysignf, "copysignf is unportable - "
998                 "use gnulib module copysignf for portability");
999# endif
1000#endif
1001
1002#if 0
1003# if !1
1004_GL_FUNCDECL_SYS (copysign, double, (double x, double y));
1005# endif
1006_GL_CXXALIAS_SYS (copysign, double, (double x, double y));
1007# if __GLIBC__ >= 2
1008_GL_CXXALIASWARN (copysign);
1009# endif
1010#elif defined GNULIB_POSIXCHECK
1011# undef copysign
1012# if HAVE_RAW_DECL_COPYSIGN
1013_GL_WARN_ON_USE (copysign, "copysign is unportable - "
1014                 "use gnulib module copysign for portability");
1015# endif
1016#endif
1017
1018#if 0
1019# if !1
1020_GL_FUNCDECL_SYS (copysignl, long double, (long double x, long double y));
1021# endif
1022_GL_CXXALIAS_SYS (copysignl, long double, (long double x, long double y));
1023_GL_CXXALIASWARN (copysignl);
1024#elif defined GNULIB_POSIXCHECK
1025# undef copysignl
1026# if HAVE_RAW_DECL_COPYSIGNL
1027_GL_WARN_ON_USE (copysign, "copysignl is unportable - "
1028                 "use gnulib module copysignl for portability");
1029# endif
1030#endif
1031
1032
1033#if 0
1034# if 0
1035#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1036#   undef cosf
1037#   define cosf rpl_cosf
1038#  endif
1039_GL_FUNCDECL_RPL (cosf, float, (float x));
1040_GL_CXXALIAS_RPL (cosf, float, (float x));
1041# else
1042#  if !1
1043#   undef cosf
1044_GL_FUNCDECL_SYS (cosf, float, (float x));
1045#  endif
1046_GL_CXXALIAS_SYS (cosf, float, (float x));
1047# endif
1048_GL_CXXALIASWARN (cosf);
1049#elif defined GNULIB_POSIXCHECK
1050# undef cosf
1051# if HAVE_RAW_DECL_COSF
1052_GL_WARN_ON_USE (cosf, "cosf is unportable - "
1053                 "use gnulib module cosf for portability");
1054# endif
1055#endif
1056
1057#if 0
1058# if !1 || !1
1059#  undef cosl
1060_GL_FUNCDECL_SYS (cosl, long double, (long double x));
1061# endif
1062_GL_CXXALIAS_SYS (cosl, long double, (long double x));
1063_GL_CXXALIASWARN (cosl);
1064#elif defined GNULIB_POSIXCHECK
1065# undef cosl
1066# if HAVE_RAW_DECL_COSL
1067_GL_WARN_ON_USE (cosl, "cosl is unportable - "
1068                 "use gnulib module cosl for portability");
1069# endif
1070#endif
1071
1072
1073#if 0
1074# if 0
1075#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1076#   undef coshf
1077#   define coshf rpl_coshf
1078#  endif
1079_GL_FUNCDECL_RPL (coshf, float, (float x));
1080_GL_CXXALIAS_RPL (coshf, float, (float x));
1081# else
1082#  if !1
1083#   undef coshf
1084_GL_FUNCDECL_SYS (coshf, float, (float x));
1085#  endif
1086_GL_CXXALIAS_SYS (coshf, float, (float x));
1087# endif
1088_GL_CXXALIASWARN (coshf);
1089#elif defined GNULIB_POSIXCHECK
1090# undef coshf
1091# if HAVE_RAW_DECL_COSHF
1092_GL_WARN_ON_USE (coshf, "coshf is unportable - "
1093                 "use gnulib module coshf for portability");
1094# endif
1095#endif
1096
1097
1098#if 0
1099# if 0
1100#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1101#   undef expf
1102#   define expf rpl_expf
1103#  endif
1104_GL_FUNCDECL_RPL (expf, float, (float x));
1105_GL_CXXALIAS_RPL (expf, float, (float x));
1106# else
1107#  if !1
1108#   undef expf
1109_GL_FUNCDECL_SYS (expf, float, (float x));
1110#  endif
1111_GL_CXXALIAS_SYS (expf, float, (float x));
1112# endif
1113_GL_CXXALIASWARN (expf);
1114#elif defined GNULIB_POSIXCHECK
1115# undef expf
1116# if HAVE_RAW_DECL_EXPF
1117_GL_WARN_ON_USE (expf, "expf is unportable - "
1118                 "use gnulib module expf for portability");
1119# endif
1120#endif
1121
1122#if 0
1123# if 0
1124#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1125#   undef expl
1126#   define expl rpl_expl
1127#  endif
1128_GL_FUNCDECL_RPL (expl, long double, (long double x));
1129_GL_CXXALIAS_RPL (expl, long double, (long double x));
1130# else
1131#  if !1 || !1
1132#   undef expl
1133_GL_FUNCDECL_SYS (expl, long double, (long double x));
1134#  endif
1135_GL_CXXALIAS_SYS (expl, long double, (long double x));
1136# endif
1137_GL_CXXALIASWARN (expl);
1138#elif defined GNULIB_POSIXCHECK
1139# undef expl
1140# if HAVE_RAW_DECL_EXPL
1141_GL_WARN_ON_USE (expl, "expl is unportable - "
1142                 "use gnulib module expl for portability");
1143# endif
1144#endif
1145
1146
1147#if 0
1148# if !1
1149_GL_FUNCDECL_SYS (exp2f, float, (float x));
1150# endif
1151_GL_CXXALIAS_SYS (exp2f, float, (float x));
1152_GL_CXXALIASWARN (exp2f);
1153#elif defined GNULIB_POSIXCHECK
1154# undef exp2f
1155# if HAVE_RAW_DECL_EXP2F
1156_GL_WARN_ON_USE (exp2f, "exp2f is unportable - "
1157                 "use gnulib module exp2f for portability");
1158# endif
1159#endif
1160
1161#if 0
1162# if 0
1163#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1164#   undef exp2
1165#   define exp2 rpl_exp2
1166#  endif
1167_GL_FUNCDECL_RPL (exp2, double, (double x));
1168_GL_CXXALIAS_RPL (exp2, double, (double x));
1169# else
1170#  if !1
1171_GL_FUNCDECL_SYS (exp2, double, (double x));
1172#  endif
1173_GL_CXXALIAS_SYS (exp2, double, (double x));
1174# endif
1175# if __GLIBC__ >= 2
1176_GL_CXXALIASWARN (exp2);
1177# endif
1178#elif defined GNULIB_POSIXCHECK
1179# undef exp2
1180# if HAVE_RAW_DECL_EXP2
1181_GL_WARN_ON_USE (exp2, "exp2 is unportable - "
1182                 "use gnulib module exp2 for portability");
1183# endif
1184#endif
1185
1186#if 0
1187# if 0
1188#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1189#   undef exp2l
1190#   define exp2l rpl_exp2l
1191#  endif
1192_GL_FUNCDECL_RPL (exp2l, long double, (long double x));
1193_GL_CXXALIAS_RPL (exp2l, long double, (long double x));
1194# else
1195#  if !1
1196#   undef exp2l
1197_GL_FUNCDECL_SYS (exp2l, long double, (long double x));
1198#  endif
1199_GL_CXXALIAS_SYS (exp2l, long double, (long double x));
1200# endif
1201_GL_CXXALIASWARN (exp2l);
1202#elif defined GNULIB_POSIXCHECK
1203# undef exp2l
1204# if HAVE_RAW_DECL_EXP2L
1205_GL_WARN_ON_USE (exp2l, "exp2l is unportable - "
1206                 "use gnulib module exp2l for portability");
1207# endif
1208#endif
1209
1210
1211#if 0
1212# if 0
1213#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1214#   undef expm1f
1215#   define expm1f rpl_expm1f
1216#  endif
1217_GL_FUNCDECL_RPL (expm1f, float, (float x));
1218_GL_CXXALIAS_RPL (expm1f, float, (float x));
1219# else
1220#  if !1
1221_GL_FUNCDECL_SYS (expm1f, float, (float x));
1222#  endif
1223_GL_CXXALIAS_SYS (expm1f, float, (float x));
1224# endif
1225_GL_CXXALIASWARN (expm1f);
1226#elif defined GNULIB_POSIXCHECK
1227# undef expm1f
1228# if HAVE_RAW_DECL_EXPM1F
1229_GL_WARN_ON_USE (expm1f, "expm1f is unportable - "
1230                 "use gnulib module expm1f for portability");
1231# endif
1232#endif
1233
1234#if 0
1235# if 0
1236#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1237#   undef expm1
1238#   define expm1 rpl_expm1
1239#  endif
1240_GL_FUNCDECL_RPL (expm1, double, (double x));
1241_GL_CXXALIAS_RPL (expm1, double, (double x));
1242# else
1243#  if !1
1244_GL_FUNCDECL_SYS (expm1, double, (double x));
1245#  endif
1246_GL_CXXALIAS_SYS (expm1, double, (double x));
1247# endif
1248# if __GLIBC__ >= 2
1249_GL_CXXALIASWARN (expm1);
1250# endif
1251#elif defined GNULIB_POSIXCHECK
1252# undef expm1
1253# if HAVE_RAW_DECL_EXPM1
1254_GL_WARN_ON_USE (expm1, "expm1 is unportable - "
1255                 "use gnulib module expm1 for portability");
1256# endif
1257#endif
1258
1259#if 0
1260# if 0
1261#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1262#   undef expm1l
1263#   define expm1l rpl_expm1l
1264#  endif
1265_GL_FUNCDECL_RPL (expm1l, long double, (long double x));
1266_GL_CXXALIAS_RPL (expm1l, long double, (long double x));
1267# else
1268#  if !1
1269#   undef expm1l
1270#   if !(defined __cplusplus && defined _AIX)
1271_GL_FUNCDECL_SYS (expm1l, long double, (long double x));
1272#   endif
1273#  endif
1274_GL_CXXALIAS_SYS (expm1l, long double, (long double x));
1275# endif
1276_GL_CXXALIASWARN (expm1l);
1277#elif defined GNULIB_POSIXCHECK
1278# undef expm1l
1279# if HAVE_RAW_DECL_EXPM1L
1280_GL_WARN_ON_USE (expm1l, "expm1l is unportable - "
1281                 "use gnulib module expm1l for portability");
1282# endif
1283#endif
1284
1285
1286#if 0
1287# if !1
1288#  undef fabsf
1289_GL_FUNCDECL_SYS (fabsf, float, (float x));
1290# endif
1291_GL_CXXALIAS_SYS (fabsf, float, (float x));
1292_GL_CXXALIASWARN (fabsf);
1293#elif defined GNULIB_POSIXCHECK
1294# undef fabsf
1295# if HAVE_RAW_DECL_FABSF
1296_GL_WARN_ON_USE (fabsf, "fabsf is unportable - "
1297                 "use gnulib module fabsf for portability");
1298# endif
1299#endif
1300
1301#if 0
1302# if 0
1303#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1304#   undef fabsl
1305#   define fabsl rpl_fabsl
1306#  endif
1307_GL_FUNCDECL_RPL (fabsl, long double, (long double x));
1308_GL_CXXALIAS_RPL (fabsl, long double, (long double x));
1309# else
1310#  if !1
1311#   undef fabsl
1312_GL_FUNCDECL_SYS (fabsl, long double, (long double x));
1313#  endif
1314_GL_CXXALIAS_SYS (fabsl, long double, (long double x));
1315# endif
1316_GL_CXXALIASWARN (fabsl);
1317#elif defined GNULIB_POSIXCHECK
1318# undef fabsl
1319# if HAVE_RAW_DECL_FABSL
1320_GL_WARN_ON_USE (fabsl, "fabsl is unportable - "
1321                 "use gnulib module fabsl for portability");
1322# endif
1323#endif
1324
1325
1326#if 0
1327# if 0
1328#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1329#   undef floorf
1330#   define floorf rpl_floorf
1331#  endif
1332_GL_FUNCDECL_RPL (floorf, float, (float x));
1333_GL_CXXALIAS_RPL (floorf, float, (float x));
1334# else
1335#  if !1
1336#   undef floorf
1337_GL_FUNCDECL_SYS (floorf, float, (float x));
1338#  endif
1339_GL_CXXALIAS_SYS (floorf, float, (float x));
1340# endif
1341_GL_CXXALIASWARN (floorf);
1342#elif defined GNULIB_POSIXCHECK
1343# undef floorf
1344# if HAVE_RAW_DECL_FLOORF
1345_GL_WARN_ON_USE (floorf, "floorf is unportable - "
1346                 "use gnulib module floorf for portability");
1347# endif
1348#endif
1349
1350#if 0
1351# if 0
1352#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1353#   undef floor
1354#   define floor rpl_floor
1355#  endif
1356_GL_FUNCDECL_RPL (floor, double, (double x));
1357_GL_CXXALIAS_RPL (floor, double, (double x));
1358# else
1359_GL_CXXALIAS_SYS (floor, double, (double x));
1360# endif
1361# if __GLIBC__ >= 2
1362_GL_CXXALIASWARN (floor);
1363# endif
1364#endif
1365
1366#if 0
1367# if 0
1368#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1369#   undef floorl
1370#   define floorl rpl_floorl
1371#  endif
1372_GL_FUNCDECL_RPL (floorl, long double, (long double x));
1373_GL_CXXALIAS_RPL (floorl, long double, (long double x));
1374# else
1375#  if !1
1376#   undef floorl
1377_GL_FUNCDECL_SYS (floorl, long double, (long double x));
1378#  endif
1379_GL_CXXALIAS_SYS (floorl, long double, (long double x));
1380# endif
1381_GL_CXXALIASWARN (floorl);
1382#elif defined GNULIB_POSIXCHECK
1383# undef floorl
1384# if HAVE_RAW_DECL_FLOORL
1385_GL_WARN_ON_USE (floorl, "floorl is unportable - "
1386                 "use gnulib module floorl for portability");
1387# endif
1388#endif
1389
1390
1391#if 0
1392# if 0
1393#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1394#   undef fmaf
1395#   define fmaf rpl_fmaf
1396#  endif
1397_GL_FUNCDECL_RPL (fmaf, float, (float x, float y, float z));
1398_GL_CXXALIAS_RPL (fmaf, float, (float x, float y, float z));
1399# else
1400#  if !1
1401#   undef fmaf
1402_GL_FUNCDECL_SYS (fmaf, float, (float x, float y, float z));
1403#  endif
1404_GL_CXXALIAS_SYS (fmaf, float, (float x, float y, float z));
1405# endif
1406_GL_CXXALIASWARN (fmaf);
1407#elif defined GNULIB_POSIXCHECK
1408# undef fmaf
1409# if HAVE_RAW_DECL_FMAF
1410_GL_WARN_ON_USE (fmaf, "fmaf is unportable - "
1411                 "use gnulib module fmaf for portability");
1412# endif
1413#endif
1414
1415#if 0
1416# if 0
1417#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1418#   undef fma
1419#   define fma rpl_fma
1420#  endif
1421_GL_FUNCDECL_RPL (fma, double, (double x, double y, double z));
1422_GL_CXXALIAS_RPL (fma, double, (double x, double y, double z));
1423# else
1424#  if !1
1425#   undef fma
1426_GL_FUNCDECL_SYS (fma, double, (double x, double y, double z));
1427#  endif
1428_GL_CXXALIAS_SYS (fma, double, (double x, double y, double z));
1429# endif
1430# if __GLIBC__ >= 2
1431_GL_CXXALIASWARN (fma);
1432# endif
1433#elif defined GNULIB_POSIXCHECK
1434# undef fma
1435# if HAVE_RAW_DECL_FMA
1436_GL_WARN_ON_USE (fma, "fma is unportable - "
1437                 "use gnulib module fma for portability");
1438# endif
1439#endif
1440
1441#if 0
1442# if 0
1443#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1444#   undef fmal
1445#   define fmal rpl_fmal
1446#  endif
1447_GL_FUNCDECL_RPL (fmal, long double,
1448                  (long double x, long double y, long double z));
1449_GL_CXXALIAS_RPL (fmal, long double,
1450                  (long double x, long double y, long double z));
1451# else
1452#  if !1
1453#   undef fmal
1454#   if !(defined __cplusplus && defined _AIX)
1455_GL_FUNCDECL_SYS (fmal, long double,
1456                  (long double x, long double y, long double z));
1457#   endif
1458#  endif
1459_GL_CXXALIAS_SYS (fmal, long double,
1460                  (long double x, long double y, long double z));
1461# endif
1462_GL_CXXALIASWARN (fmal);
1463#elif defined GNULIB_POSIXCHECK
1464# undef fmal
1465# if HAVE_RAW_DECL_FMAL
1466_GL_WARN_ON_USE (fmal, "fmal is unportable - "
1467                 "use gnulib module fmal for portability");
1468# endif
1469#endif
1470
1471
1472#if 0
1473# if 0
1474#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1475#   undef fmodf
1476#   define fmodf rpl_fmodf
1477#  endif
1478_GL_FUNCDECL_RPL (fmodf, float, (float x, float y));
1479_GL_CXXALIAS_RPL (fmodf, float, (float x, float y));
1480# else
1481#  if !1
1482#   undef fmodf
1483_GL_FUNCDECL_SYS (fmodf, float, (float x, float y));
1484#  endif
1485_GL_CXXALIAS_SYS (fmodf, float, (float x, float y));
1486# endif
1487_GL_CXXALIASWARN (fmodf);
1488#elif defined GNULIB_POSIXCHECK
1489# undef fmodf
1490# if HAVE_RAW_DECL_FMODF
1491_GL_WARN_ON_USE (fmodf, "fmodf is unportable - "
1492                 "use gnulib module fmodf for portability");
1493# endif
1494#endif
1495
1496#if 0
1497# if 0
1498#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1499#   undef fmod
1500#   define fmod rpl_fmod
1501#  endif
1502_GL_FUNCDECL_RPL (fmod, double, (double x, double y));
1503_GL_CXXALIAS_RPL (fmod, double, (double x, double y));
1504# else
1505_GL_CXXALIAS_SYS (fmod, double, (double x, double y));
1506# endif
1507# if __GLIBC__ >= 2
1508_GL_CXXALIASWARN (fmod);
1509# endif
1510#elif defined GNULIB_POSIXCHECK
1511# undef fmod
1512# if HAVE_RAW_DECL_FMOD
1513_GL_WARN_ON_USE (fmod, "fmod has portability problems - "
1514                 "use gnulib module fmod for portability");
1515# endif
1516#endif
1517
1518#if 0
1519# if 0
1520#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1521#   undef fmodl
1522#   define fmodl rpl_fmodl
1523#  endif
1524_GL_FUNCDECL_RPL (fmodl, long double, (long double x, long double y));
1525_GL_CXXALIAS_RPL (fmodl, long double, (long double x, long double y));
1526# else
1527#  if !1
1528#   undef fmodl
1529_GL_FUNCDECL_SYS (fmodl, long double, (long double x, long double y));
1530#  endif
1531_GL_CXXALIAS_SYS (fmodl, long double, (long double x, long double y));
1532# endif
1533_GL_CXXALIASWARN (fmodl);
1534#elif defined GNULIB_POSIXCHECK
1535# undef fmodl
1536# if HAVE_RAW_DECL_FMODL
1537_GL_WARN_ON_USE (fmodl, "fmodl is unportable - "
1538                 "use gnulib module fmodl for portability");
1539# endif
1540#endif
1541
1542
1543/* Write x as
1544     x = mantissa * 2^exp
1545   where
1546     If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
1547     If x is zero: mantissa = x, exp = 0.
1548     If x is infinite or NaN: mantissa = x, exp unspecified.
1549   Store exp in *EXPPTR and return mantissa.  */
1550#if 0
1551# if 0
1552#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1553#   undef frexpf
1554#   define frexpf rpl_frexpf
1555#  endif
1556_GL_FUNCDECL_RPL (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
1557_GL_CXXALIAS_RPL (frexpf, float, (float x, int *expptr));
1558# else
1559#  if !1
1560#   undef frexpf
1561_GL_FUNCDECL_SYS (frexpf, float, (float x, int *expptr) _GL_ARG_NONNULL ((2)));
1562#  endif
1563_GL_CXXALIAS_SYS (frexpf, float, (float x, int *expptr));
1564# endif
1565_GL_CXXALIASWARN (frexpf);
1566#elif defined GNULIB_POSIXCHECK
1567# undef frexpf
1568# if HAVE_RAW_DECL_FREXPF
1569_GL_WARN_ON_USE (frexpf, "frexpf is unportable - "
1570                 "use gnulib module frexpf for portability");
1571# endif
1572#endif
1573
1574/* Write x as
1575     x = mantissa * 2^exp
1576   where
1577     If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
1578     If x is zero: mantissa = x, exp = 0.
1579     If x is infinite or NaN: mantissa = x, exp unspecified.
1580   Store exp in *EXPPTR and return mantissa.  */
1581#if 1
1582# if 0
1583#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1584#   undef frexp
1585#   define frexp rpl_frexp
1586#  endif
1587_GL_FUNCDECL_RPL (frexp, double, (double x, int *expptr) _GL_ARG_NONNULL ((2)));
1588_GL_CXXALIAS_RPL (frexp, double, (double x, int *expptr));
1589# else
1590_GL_CXXALIAS_SYS (frexp, double, (double x, int *expptr));
1591# endif
1592# if __GLIBC__ >= 2
1593_GL_CXXALIASWARN1 (frexp, double, (double x, int *expptr));
1594# endif
1595#elif defined GNULIB_POSIXCHECK
1596# undef frexp
1597/* Assume frexp is always declared.  */
1598_GL_WARN_ON_USE (frexp, "frexp is unportable - "
1599                 "use gnulib module frexp for portability");
1600#endif
1601
1602/* Write x as
1603     x = mantissa * 2^exp
1604   where
1605     If x finite and nonzero: 0.5 <= |mantissa| < 1.0.
1606     If x is zero: mantissa = x, exp = 0.
1607     If x is infinite or NaN: mantissa = x, exp unspecified.
1608   Store exp in *EXPPTR and return mantissa.  */
1609#if 1 && 0
1610# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1611#  undef frexpl
1612#  define frexpl rpl_frexpl
1613# endif
1614_GL_FUNCDECL_RPL (frexpl, long double,
1615                  (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
1616_GL_CXXALIAS_RPL (frexpl, long double, (long double x, int *expptr));
1617#else
1618# if !1
1619_GL_FUNCDECL_SYS (frexpl, long double,
1620                  (long double x, int *expptr) _GL_ARG_NONNULL ((2)));
1621# endif
1622# if 1
1623_GL_CXXALIAS_SYS (frexpl, long double, (long double x, int *expptr));
1624# endif
1625#endif
1626#if 1 && !(0 && !1)
1627_GL_CXXALIASWARN (frexpl);
1628#endif
1629#if !1 && defined GNULIB_POSIXCHECK
1630# undef frexpl
1631# if HAVE_RAW_DECL_FREXPL
1632_GL_WARN_ON_USE (frexpl, "frexpl is unportable - "
1633                 "use gnulib module frexpl for portability");
1634# endif
1635#endif
1636
1637
1638/* Return sqrt(x^2+y^2).  */
1639#if 0
1640# if 0
1641#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1642#   undef hypotf
1643#   define hypotf rpl_hypotf
1644#  endif
1645_GL_FUNCDECL_RPL (hypotf, float, (float x, float y));
1646_GL_CXXALIAS_RPL (hypotf, float, (float x, float y));
1647# else
1648#  if !1
1649_GL_FUNCDECL_SYS (hypotf, float, (float x, float y));
1650#  endif
1651_GL_CXXALIAS_SYS (hypotf, float, (float x, float y));
1652# endif
1653_GL_CXXALIASWARN (hypotf);
1654#elif defined GNULIB_POSIXCHECK
1655# undef hypotf
1656# if HAVE_RAW_DECL_HYPOTF
1657_GL_WARN_ON_USE (hypotf, "hypotf is unportable - "
1658                 "use gnulib module hypotf for portability");
1659# endif
1660#endif
1661
1662/* Return sqrt(x^2+y^2).  */
1663#if 0
1664# if 0
1665#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1666#   undef hypot
1667#   define hypot rpl_hypot
1668#  endif
1669_GL_FUNCDECL_RPL (hypot, double, (double x, double y));
1670_GL_CXXALIAS_RPL (hypot, double, (double x, double y));
1671# else
1672_GL_CXXALIAS_SYS (hypot, double, (double x, double y));
1673# endif
1674# if __GLIBC__ >= 2
1675_GL_CXXALIASWARN (hypot);
1676# endif
1677#elif defined GNULIB_POSIXCHECK
1678# undef hypot
1679# if HAVE_RAW_DECL_HYPOT
1680_GL_WARN_ON_USE (hypotf, "hypot has portability problems - "
1681                 "use gnulib module hypot for portability");
1682# endif
1683#endif
1684
1685/* Return sqrt(x^2+y^2).  */
1686#if 0
1687# if 0
1688#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1689#   undef hypotl
1690#   define hypotl rpl_hypotl
1691#  endif
1692_GL_FUNCDECL_RPL (hypotl, long double, (long double x, long double y));
1693_GL_CXXALIAS_RPL (hypotl, long double, (long double x, long double y));
1694# else
1695#  if !1
1696_GL_FUNCDECL_SYS (hypotl, long double, (long double x, long double y));
1697#  endif
1698_GL_CXXALIAS_SYS (hypotl, long double, (long double x, long double y));
1699# endif
1700_GL_CXXALIASWARN (hypotl);
1701#elif defined GNULIB_POSIXCHECK
1702# undef hypotl
1703# if HAVE_RAW_DECL_HYPOTL
1704_GL_WARN_ON_USE (hypotl, "hypotl is unportable - "
1705                 "use gnulib module hypotl for portability");
1706# endif
1707#endif
1708
1709
1710#if 0
1711# if 0
1712#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1713#   undef ilogbf
1714#   define ilogbf rpl_ilogbf
1715#  endif
1716_GL_FUNCDECL_RPL (ilogbf, int, (float x));
1717_GL_CXXALIAS_RPL (ilogbf, int, (float x));
1718# else
1719#  if !1
1720_GL_FUNCDECL_SYS (ilogbf, int, (float x));
1721#  endif
1722_GL_CXXALIAS_SYS (ilogbf, int, (float x));
1723# endif
1724_GL_CXXALIASWARN (ilogbf);
1725#elif defined GNULIB_POSIXCHECK
1726# undef ilogbf
1727# if HAVE_RAW_DECL_ILOGBF
1728_GL_WARN_ON_USE (ilogbf, "ilogbf is unportable - "
1729                 "use gnulib module ilogbf for portability");
1730# endif
1731#endif
1732
1733#if 0
1734# if 0
1735#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1736#   undef ilogb
1737#   define ilogb rpl_ilogb
1738#  endif
1739_GL_FUNCDECL_RPL (ilogb, int, (double x));
1740_GL_CXXALIAS_RPL (ilogb, int, (double x));
1741# else
1742#  if !1
1743_GL_FUNCDECL_SYS (ilogb, int, (double x));
1744#  endif
1745_GL_CXXALIAS_SYS (ilogb, int, (double x));
1746# endif
1747# if __GLIBC__ >= 2
1748_GL_CXXALIASWARN (ilogb);
1749# endif
1750#elif defined GNULIB_POSIXCHECK
1751# undef ilogb
1752# if HAVE_RAW_DECL_ILOGB
1753_GL_WARN_ON_USE (ilogb, "ilogb is unportable - "
1754                 "use gnulib module ilogb for portability");
1755# endif
1756#endif
1757
1758#if 0
1759# if 0
1760#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1761#   undef ilogbl
1762#   define ilogbl rpl_ilogbl
1763#  endif
1764_GL_FUNCDECL_RPL (ilogbl, int, (long double x));
1765_GL_CXXALIAS_RPL (ilogbl, int, (long double x));
1766# else
1767#  if !1
1768_GL_FUNCDECL_SYS (ilogbl, int, (long double x));
1769#  endif
1770_GL_CXXALIAS_SYS (ilogbl, int, (long double x));
1771# endif
1772_GL_CXXALIASWARN (ilogbl);
1773#elif defined GNULIB_POSIXCHECK
1774# undef ilogbl
1775# if HAVE_RAW_DECL_ILOGBL
1776_GL_WARN_ON_USE (ilogbl, "ilogbl is unportable - "
1777                 "use gnulib module ilogbl for portability");
1778# endif
1779#endif
1780
1781
1782/* Return x * 2^exp.  */
1783#if 0
1784# if !1
1785#  undef ldexpf
1786_GL_FUNCDECL_SYS (ldexpf, float, (float x, int exp));
1787# endif
1788_GL_CXXALIAS_SYS (ldexpf, float, (float x, int exp));
1789_GL_CXXALIASWARN (ldexpf);
1790#elif defined GNULIB_POSIXCHECK
1791# undef ldexpf
1792# if HAVE_RAW_DECL_LDEXPF
1793_GL_WARN_ON_USE (ldexpf, "ldexpf is unportable - "
1794                 "use gnulib module ldexpf for portability");
1795# endif
1796#endif
1797
1798/* Return x * 2^exp.  */
1799#if 0 && 0
1800# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1801#  undef ldexpl
1802#  define ldexpl rpl_ldexpl
1803# endif
1804_GL_FUNCDECL_RPL (ldexpl, long double, (long double x, int exp));
1805_GL_CXXALIAS_RPL (ldexpl, long double, (long double x, int exp));
1806#else
1807# if !1
1808_GL_FUNCDECL_SYS (ldexpl, long double, (long double x, int exp));
1809# endif
1810# if 0
1811_GL_CXXALIAS_SYS (ldexpl, long double, (long double x, int exp));
1812# endif
1813#endif
1814#if 0
1815_GL_CXXALIASWARN (ldexpl);
1816#endif
1817#if !0 && defined GNULIB_POSIXCHECK
1818# undef ldexpl
1819# if HAVE_RAW_DECL_LDEXPL
1820_GL_WARN_ON_USE (ldexpl, "ldexpl is unportable - "
1821                 "use gnulib module ldexpl for portability");
1822# endif
1823#endif
1824
1825
1826#if 0
1827# if 0
1828#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1829#   undef logf
1830#   define logf rpl_logf
1831#  endif
1832_GL_FUNCDECL_RPL (logf, float, (float x));
1833_GL_CXXALIAS_RPL (logf, float, (float x));
1834# else
1835#  if !1
1836#   undef logf
1837_GL_FUNCDECL_SYS (logf, float, (float x));
1838#  endif
1839_GL_CXXALIAS_SYS (logf, float, (float x));
1840# endif
1841_GL_CXXALIASWARN (logf);
1842#elif defined GNULIB_POSIXCHECK
1843# undef logf
1844# if HAVE_RAW_DECL_LOGF
1845_GL_WARN_ON_USE (logf, "logf is unportable - "
1846                 "use gnulib module logf for portability");
1847# endif
1848#endif
1849
1850#if 0
1851# if 0
1852#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1853#   undef log
1854#   define log rpl_log
1855#  endif
1856_GL_FUNCDECL_RPL (log, double, (double x));
1857_GL_CXXALIAS_RPL (log, double, (double x));
1858# else
1859_GL_CXXALIAS_SYS (log, double, (double x));
1860# endif
1861# if __GLIBC__ >= 2
1862_GL_CXXALIASWARN (log);
1863# endif
1864#elif defined GNULIB_POSIXCHECK
1865# undef log
1866# if HAVE_RAW_DECL_LOG
1867_GL_WARN_ON_USE (log, "log has portability problems - "
1868                 "use gnulib module log for portability");
1869# endif
1870#endif
1871
1872#if 0
1873# if 0
1874#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1875#   undef logl
1876#   define logl rpl_logl
1877#  endif
1878_GL_FUNCDECL_RPL (logl, long double, (long double x));
1879_GL_CXXALIAS_RPL (logl, long double, (long double x));
1880# else
1881#  if !1 || !1
1882#   undef logl
1883_GL_FUNCDECL_SYS (logl, long double, (long double x));
1884#  endif
1885_GL_CXXALIAS_SYS (logl, long double, (long double x));
1886# endif
1887_GL_CXXALIASWARN (logl);
1888#elif defined GNULIB_POSIXCHECK
1889# undef logl
1890# if HAVE_RAW_DECL_LOGL
1891_GL_WARN_ON_USE (logl, "logl is unportable - "
1892                 "use gnulib module logl for portability");
1893# endif
1894#endif
1895
1896
1897#if 0
1898# if 0
1899#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1900#   undef log10f
1901#   define log10f rpl_log10f
1902#  endif
1903_GL_FUNCDECL_RPL (log10f, float, (float x));
1904_GL_CXXALIAS_RPL (log10f, float, (float x));
1905# else
1906#  if !1
1907#   undef log10f
1908_GL_FUNCDECL_SYS (log10f, float, (float x));
1909#  endif
1910_GL_CXXALIAS_SYS (log10f, float, (float x));
1911# endif
1912_GL_CXXALIASWARN (log10f);
1913#elif defined GNULIB_POSIXCHECK
1914# undef log10f
1915# if HAVE_RAW_DECL_LOG10F
1916_GL_WARN_ON_USE (log10f, "log10f is unportable - "
1917                 "use gnulib module log10f for portability");
1918# endif
1919#endif
1920
1921#if 0
1922# if 0
1923#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1924#   undef log10
1925#   define log10 rpl_log10
1926#  endif
1927_GL_FUNCDECL_RPL (log10, double, (double x));
1928_GL_CXXALIAS_RPL (log10, double, (double x));
1929# else
1930_GL_CXXALIAS_SYS (log10, double, (double x));
1931# endif
1932# if __GLIBC__ >= 2
1933_GL_CXXALIASWARN (log10);
1934# endif
1935#elif defined GNULIB_POSIXCHECK
1936# undef log10
1937# if HAVE_RAW_DECL_LOG10
1938_GL_WARN_ON_USE (log10, "log10 has portability problems - "
1939                 "use gnulib module log10 for portability");
1940# endif
1941#endif
1942
1943#if 0
1944# if 0
1945#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1946#   undef log10l
1947#   define log10l rpl_log10l
1948#  endif
1949_GL_FUNCDECL_RPL (log10l, long double, (long double x));
1950_GL_CXXALIAS_RPL (log10l, long double, (long double x));
1951# else
1952#  if !1 || !1
1953#   undef log10l
1954_GL_FUNCDECL_SYS (log10l, long double, (long double x));
1955#  endif
1956_GL_CXXALIAS_SYS (log10l, long double, (long double x));
1957# endif
1958_GL_CXXALIASWARN (log10l);
1959#elif defined GNULIB_POSIXCHECK
1960# undef log10l
1961# if HAVE_RAW_DECL_LOG10L
1962_GL_WARN_ON_USE (log10l, "log10l is unportable - "
1963                 "use gnulib module log10l for portability");
1964# endif
1965#endif
1966
1967
1968#if 0
1969# if 0
1970#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1971#   undef log1pf
1972#   define log1pf rpl_log1pf
1973#  endif
1974_GL_FUNCDECL_RPL (log1pf, float, (float x));
1975_GL_CXXALIAS_RPL (log1pf, float, (float x));
1976# else
1977#  if !1
1978_GL_FUNCDECL_SYS (log1pf, float, (float x));
1979#  endif
1980_GL_CXXALIAS_SYS (log1pf, float, (float x));
1981# endif
1982_GL_CXXALIASWARN (log1pf);
1983#elif defined GNULIB_POSIXCHECK
1984# undef log1pf
1985# if HAVE_RAW_DECL_LOG1PF
1986_GL_WARN_ON_USE (log1pf, "log1pf is unportable - "
1987                 "use gnulib module log1pf for portability");
1988# endif
1989#endif
1990
1991#if 0
1992# if 0
1993#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1994#   undef log1p
1995#   define log1p rpl_log1p
1996#  endif
1997_GL_FUNCDECL_RPL (log1p, double, (double x));
1998_GL_CXXALIAS_RPL (log1p, double, (double x));
1999# else
2000#  if !1
2001_GL_FUNCDECL_SYS (log1p, double, (double x));
2002#  endif
2003_GL_CXXALIAS_SYS (log1p, double, (double x));
2004# endif
2005# if __GLIBC__ >= 2
2006_GL_CXXALIASWARN (log1p);
2007# endif
2008#elif defined GNULIB_POSIXCHECK
2009# undef log1p
2010# if HAVE_RAW_DECL_LOG1P
2011_GL_WARN_ON_USE (log1p, "log1p has portability problems - "
2012                 "use gnulib module log1p for portability");
2013# endif
2014#endif
2015
2016#if 0
2017# if 0
2018#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2019#   undef log1pl
2020#   define log1pl rpl_log1pl
2021#  endif
2022_GL_FUNCDECL_RPL (log1pl, long double, (long double x));
2023_GL_CXXALIAS_RPL (log1pl, long double, (long double x));
2024# else
2025#  if !1
2026_GL_FUNCDECL_SYS (log1pl, long double, (long double x));
2027#  endif
2028_GL_CXXALIAS_SYS (log1pl, long double, (long double x));
2029# endif
2030_GL_CXXALIASWARN (log1pl);
2031#elif defined GNULIB_POSIXCHECK
2032# undef log1pl
2033# if HAVE_RAW_DECL_LOG1PL
2034_GL_WARN_ON_USE (log1pl, "log1pl has portability problems - "
2035                 "use gnulib module log1pl for portability");
2036# endif
2037#endif
2038
2039
2040#if 0
2041# if 0
2042#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2043#   undef log2f
2044#   define log2f rpl_log2f
2045#  endif
2046_GL_FUNCDECL_RPL (log2f, float, (float x));
2047_GL_CXXALIAS_RPL (log2f, float, (float x));
2048# else
2049#  if !1
2050#   undef log2f
2051_GL_FUNCDECL_SYS (log2f, float, (float x));
2052#  endif
2053_GL_CXXALIAS_SYS (log2f, float, (float x));
2054# endif
2055_GL_CXXALIASWARN (log2f);
2056#elif defined GNULIB_POSIXCHECK
2057# undef log2f
2058# if HAVE_RAW_DECL_LOG2F
2059_GL_WARN_ON_USE (log2f, "log2f is unportable - "
2060                 "use gnulib module log2f for portability");
2061# endif
2062#endif
2063
2064#if 0
2065# if 0
2066#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2067#   undef log2
2068#   define log2 rpl_log2
2069#  endif
2070_GL_FUNCDECL_RPL (log2, double, (double x));
2071_GL_CXXALIAS_RPL (log2, double, (double x));
2072# else
2073#  if !1
2074#   undef log2
2075_GL_FUNCDECL_SYS (log2, double, (double x));
2076#  endif
2077_GL_CXXALIAS_SYS (log2, double, (double x));
2078# endif
2079# if __GLIBC__ >= 2
2080_GL_CXXALIASWARN (log2);
2081# endif
2082#elif defined GNULIB_POSIXCHECK
2083# undef log2
2084# if HAVE_RAW_DECL_LOG2
2085_GL_WARN_ON_USE (log2, "log2 is unportable - "
2086                 "use gnulib module log2 for portability");
2087# endif
2088#endif
2089
2090#if 0
2091# if 0
2092#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2093#   undef log2l
2094#   define log2l rpl_log2l
2095#  endif
2096_GL_FUNCDECL_RPL (log2l, long double, (long double x));
2097_GL_CXXALIAS_RPL (log2l, long double, (long double x));
2098# else
2099#  if !1
2100_GL_FUNCDECL_SYS (log2l, long double, (long double x));
2101#  endif
2102_GL_CXXALIAS_SYS (log2l, long double, (long double x));
2103# endif
2104_GL_CXXALIASWARN (log2l);
2105#elif defined GNULIB_POSIXCHECK
2106# undef log2l
2107# if HAVE_RAW_DECL_LOG2L
2108_GL_WARN_ON_USE (log2l, "log2l is unportable - "
2109                 "use gnulib module log2l for portability");
2110# endif
2111#endif
2112
2113
2114#if 0
2115# if 0
2116#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2117#   undef logbf
2118#   define logbf rpl_logbf
2119#  endif
2120_GL_FUNCDECL_RPL (logbf, float, (float x));
2121_GL_CXXALIAS_RPL (logbf, float, (float x));
2122# else
2123#  if !1
2124_GL_FUNCDECL_SYS (logbf, float, (float x));
2125#  endif
2126_GL_CXXALIAS_SYS (logbf, float, (float x));
2127# endif
2128_GL_CXXALIASWARN (logbf);
2129#elif defined GNULIB_POSIXCHECK
2130# undef logbf
2131# if HAVE_RAW_DECL_LOGBF
2132_GL_WARN_ON_USE (logbf, "logbf is unportable - "
2133                 "use gnulib module logbf for portability");
2134# endif
2135#endif
2136
2137#if 0
2138# if 0
2139#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2140#   undef logb
2141#   define logb rpl_logb
2142#  endif
2143_GL_FUNCDECL_RPL (logb, double, (double x));
2144_GL_CXXALIAS_RPL (logb, double, (double x));
2145# else
2146#  if !1
2147_GL_FUNCDECL_SYS (logb, double, (double x));
2148#  endif
2149_GL_CXXALIAS_SYS (logb, double, (double x));
2150# endif
2151# if __GLIBC__ >= 2
2152_GL_CXXALIASWARN (logb);
2153# endif
2154#elif defined GNULIB_POSIXCHECK
2155# undef logb
2156# if HAVE_RAW_DECL_LOGB
2157_GL_WARN_ON_USE (logb, "logb is unportable - "
2158                 "use gnulib module logb for portability");
2159# endif
2160#endif
2161
2162#if 0
2163# if 0
2164#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2165#   undef logbl
2166#   define logbl rpl_logbl
2167#  endif
2168_GL_FUNCDECL_RPL (logbl, long double, (long double x));
2169_GL_CXXALIAS_RPL (logbl, long double, (long double x));
2170# else
2171#  if !1
2172_GL_FUNCDECL_SYS (logbl, long double, (long double x));
2173#  endif
2174_GL_CXXALIAS_SYS (logbl, long double, (long double x));
2175# endif
2176_GL_CXXALIASWARN (logbl);
2177#elif defined GNULIB_POSIXCHECK
2178# undef logbl
2179# if HAVE_RAW_DECL_LOGBL
2180_GL_WARN_ON_USE (logbl, "logbl is unportable - "
2181                 "use gnulib module logbl for portability");
2182# endif
2183#endif
2184
2185
2186#if 0
2187# if 0
2188#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2189#   undef modff
2190#   define modff rpl_modff
2191#  endif
2192_GL_FUNCDECL_RPL (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
2193_GL_CXXALIAS_RPL (modff, float, (float x, float *iptr));
2194# else
2195#  if !1
2196#   undef modff
2197_GL_FUNCDECL_SYS (modff, float, (float x, float *iptr) _GL_ARG_NONNULL ((2)));
2198#  endif
2199_GL_CXXALIAS_SYS (modff, float, (float x, float *iptr));
2200# endif
2201_GL_CXXALIASWARN (modff);
2202#elif defined GNULIB_POSIXCHECK
2203# undef modff
2204# if HAVE_RAW_DECL_MODFF
2205_GL_WARN_ON_USE (modff, "modff is unportable - "
2206                 "use gnulib module modff for portability");
2207# endif
2208#endif
2209
2210#if 0
2211# if 0
2212#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2213#   undef modf
2214#   define modf rpl_modf
2215#  endif
2216_GL_FUNCDECL_RPL (modf, double, (double x, double *iptr) _GL_ARG_NONNULL ((2)));
2217_GL_CXXALIAS_RPL (modf, double, (double x, double *iptr));
2218# else
2219_GL_CXXALIAS_SYS (modf, double, (double x, double *iptr));
2220# endif
2221# if __GLIBC__ >= 2
2222_GL_CXXALIASWARN (modf);
2223# endif
2224#elif defined GNULIB_POSIXCHECK
2225# undef modf
2226# if HAVE_RAW_DECL_MODF
2227_GL_WARN_ON_USE (modf, "modf has portability problems - "
2228                 "use gnulib module modf for portability");
2229# endif
2230#endif
2231
2232#if 0
2233# if 0
2234#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2235#   undef modfl
2236#   define modfl rpl_modfl
2237#  endif
2238_GL_FUNCDECL_RPL (modfl, long double, (long double x, long double *iptr)
2239                                      _GL_ARG_NONNULL ((2)));
2240_GL_CXXALIAS_RPL (modfl, long double, (long double x, long double *iptr));
2241# else
2242#  if !1
2243#   undef modfl
2244_GL_FUNCDECL_SYS (modfl, long double, (long double x, long double *iptr)
2245                                      _GL_ARG_NONNULL ((2)));
2246#  endif
2247_GL_CXXALIAS_SYS (modfl, long double, (long double x, long double *iptr));
2248# endif
2249_GL_CXXALIASWARN (modfl);
2250#elif defined GNULIB_POSIXCHECK
2251# undef modfl
2252# if HAVE_RAW_DECL_MODFL
2253_GL_WARN_ON_USE (modfl, "modfl is unportable - "
2254                 "use gnulib module modfl for portability");
2255# endif
2256#endif
2257
2258
2259#if 0
2260# if !1
2261#  undef powf
2262_GL_FUNCDECL_SYS (powf, float, (float x, float y));
2263# endif
2264_GL_CXXALIAS_SYS (powf, float, (float x, float y));
2265_GL_CXXALIASWARN (powf);
2266#elif defined GNULIB_POSIXCHECK
2267# undef powf
2268# if HAVE_RAW_DECL_POWF
2269_GL_WARN_ON_USE (powf, "powf is unportable - "
2270                 "use gnulib module powf for portability");
2271# endif
2272#endif
2273
2274
2275#if 0
2276# if 0
2277#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2278#   undef remainderf
2279#   define remainderf rpl_remainderf
2280#  endif
2281_GL_FUNCDECL_RPL (remainderf, float, (float x, float y));
2282_GL_CXXALIAS_RPL (remainderf, float, (float x, float y));
2283# else
2284#  if !1
2285_GL_FUNCDECL_SYS (remainderf, float, (float x, float y));
2286#  endif
2287_GL_CXXALIAS_SYS (remainderf, float, (float x, float y));
2288# endif
2289_GL_CXXALIASWARN (remainderf);
2290#elif defined GNULIB_POSIXCHECK
2291# undef remainderf
2292# if HAVE_RAW_DECL_REMAINDERF
2293_GL_WARN_ON_USE (remainderf, "remainderf is unportable - "
2294                 "use gnulib module remainderf for portability");
2295# endif
2296#endif
2297
2298#if 0
2299# if 0
2300#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2301#   undef remainder
2302#   define remainder rpl_remainder
2303#  endif
2304_GL_FUNCDECL_RPL (remainder, double, (double x, double y));
2305_GL_CXXALIAS_RPL (remainder, double, (double x, double y));
2306# else
2307#  if !1 || !1
2308_GL_FUNCDECL_SYS (remainder, double, (double x, double y));
2309#  endif
2310_GL_CXXALIAS_SYS (remainder, double, (double x, double y));
2311# endif
2312# if __GLIBC__ >= 2
2313_GL_CXXALIASWARN (remainder);
2314# endif
2315#elif defined GNULIB_POSIXCHECK
2316# undef remainder
2317# if HAVE_RAW_DECL_REMAINDER
2318_GL_WARN_ON_USE (remainder, "remainder is unportable - "
2319                 "use gnulib module remainder for portability");
2320# endif
2321#endif
2322
2323#if 0
2324# if 0
2325#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2326#   undef remainderl
2327#   define remainderl rpl_remainderl
2328#  endif
2329_GL_FUNCDECL_RPL (remainderl, long double, (long double x, long double y));
2330_GL_CXXALIAS_RPL (remainderl, long double, (long double x, long double y));
2331# else
2332#  if !1
2333#   undef remainderl
2334#   if !(defined __cplusplus && defined _AIX)
2335_GL_FUNCDECL_SYS (remainderl, long double, (long double x, long double y));
2336#   endif
2337#  endif
2338_GL_CXXALIAS_SYS (remainderl, long double, (long double x, long double y));
2339# endif
2340_GL_CXXALIASWARN (remainderl);
2341#elif defined GNULIB_POSIXCHECK
2342# undef remainderl
2343# if HAVE_RAW_DECL_REMAINDERL
2344_GL_WARN_ON_USE (remainderl, "remainderl is unportable - "
2345                 "use gnulib module remainderl for portability");
2346# endif
2347#endif
2348
2349
2350#if 0
2351# if !1
2352_GL_FUNCDECL_SYS (rintf, float, (float x));
2353# endif
2354_GL_CXXALIAS_SYS (rintf, float, (float x));
2355_GL_CXXALIASWARN (rintf);
2356#elif defined GNULIB_POSIXCHECK
2357# undef rintf
2358# if HAVE_RAW_DECL_RINTF
2359_GL_WARN_ON_USE (rintf, "rintf is unportable - "
2360                 "use gnulib module rintf for portability");
2361# endif
2362#endif
2363
2364#if 0
2365# if !1
2366_GL_FUNCDECL_SYS (rint, double, (double x));
2367# endif
2368_GL_CXXALIAS_SYS (rint, double, (double x));
2369# if __GLIBC__ >= 2
2370_GL_CXXALIASWARN (rint);
2371# endif
2372#elif defined GNULIB_POSIXCHECK
2373# undef rint
2374# if HAVE_RAW_DECL_RINT
2375_GL_WARN_ON_USE (rint, "rint is unportable - "
2376                 "use gnulib module rint for portability");
2377# endif
2378#endif
2379
2380#if 0
2381# if 0
2382#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2383#   undef rintl
2384#   define rintl rpl_rintl
2385#  endif
2386_GL_FUNCDECL_RPL (rintl, long double, (long double x));
2387_GL_CXXALIAS_RPL (rintl, long double, (long double x));
2388# else
2389#  if !1
2390_GL_FUNCDECL_SYS (rintl, long double, (long double x));
2391#  endif
2392_GL_CXXALIAS_SYS (rintl, long double, (long double x));
2393# endif
2394_GL_CXXALIASWARN (rintl);
2395#elif defined GNULIB_POSIXCHECK
2396# undef rintl
2397# if HAVE_RAW_DECL_RINTL
2398_GL_WARN_ON_USE (rintl, "rintl is unportable - "
2399                 "use gnulib module rintl for portability");
2400# endif
2401#endif
2402
2403
2404#if 0
2405# if 0
2406#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2407#   undef roundf
2408#   define roundf rpl_roundf
2409#  endif
2410_GL_FUNCDECL_RPL (roundf, float, (float x));
2411_GL_CXXALIAS_RPL (roundf, float, (float x));
2412# else
2413#  if !1
2414_GL_FUNCDECL_SYS (roundf, float, (float x));
2415#  endif
2416_GL_CXXALIAS_SYS (roundf, float, (float x));
2417# endif
2418_GL_CXXALIASWARN (roundf);
2419#elif defined GNULIB_POSIXCHECK
2420# undef roundf
2421# if HAVE_RAW_DECL_ROUNDF
2422_GL_WARN_ON_USE (roundf, "roundf is unportable - "
2423                 "use gnulib module roundf for portability");
2424# endif
2425#endif
2426
2427#if 0
2428# if 0
2429#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2430#   undef round
2431#   define round rpl_round
2432#  endif
2433_GL_FUNCDECL_RPL (round, double, (double x));
2434_GL_CXXALIAS_RPL (round, double, (double x));
2435# else
2436#  if !1
2437_GL_FUNCDECL_SYS (round, double, (double x));
2438#  endif
2439_GL_CXXALIAS_SYS (round, double, (double x));
2440# endif
2441# if __GLIBC__ >= 2
2442_GL_CXXALIASWARN (round);
2443# endif
2444#elif defined GNULIB_POSIXCHECK
2445# undef round
2446# if HAVE_RAW_DECL_ROUND
2447_GL_WARN_ON_USE (round, "round is unportable - "
2448                 "use gnulib module round for portability");
2449# endif
2450#endif
2451
2452#if 0
2453# if 0
2454#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2455#   undef roundl
2456#   define roundl rpl_roundl
2457#  endif
2458_GL_FUNCDECL_RPL (roundl, long double, (long double x));
2459_GL_CXXALIAS_RPL (roundl, long double, (long double x));
2460# else
2461#  if !1
2462#   undef roundl
2463#   if !(defined __cplusplus && defined _AIX)
2464_GL_FUNCDECL_SYS (roundl, long double, (long double x));
2465#   endif
2466#  endif
2467_GL_CXXALIAS_SYS (roundl, long double, (long double x));
2468# endif
2469_GL_CXXALIASWARN (roundl);
2470#elif defined GNULIB_POSIXCHECK
2471# undef roundl
2472# if HAVE_RAW_DECL_ROUNDL
2473_GL_WARN_ON_USE (roundl, "roundl is unportable - "
2474                 "use gnulib module roundl for portability");
2475# endif
2476#endif
2477
2478
2479#if 0
2480# if 0
2481#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2482#   undef sinf
2483#   define sinf rpl_sinf
2484#  endif
2485_GL_FUNCDECL_RPL (sinf, float, (float x));
2486_GL_CXXALIAS_RPL (sinf, float, (float x));
2487# else
2488#  if !1
2489 #  undef sinf
2490_GL_FUNCDECL_SYS (sinf, float, (float x));
2491#  endif
2492_GL_CXXALIAS_SYS (sinf, float, (float x));
2493# endif
2494_GL_CXXALIASWARN (sinf);
2495#elif defined GNULIB_POSIXCHECK
2496# undef sinf
2497# if HAVE_RAW_DECL_SINF
2498_GL_WARN_ON_USE (sinf, "sinf is unportable - "
2499                 "use gnulib module sinf for portability");
2500# endif
2501#endif
2502
2503#if 0
2504# if !1 || !1
2505#  undef sinl
2506_GL_FUNCDECL_SYS (sinl, long double, (long double x));
2507# endif
2508_GL_CXXALIAS_SYS (sinl, long double, (long double x));
2509_GL_CXXALIASWARN (sinl);
2510#elif defined GNULIB_POSIXCHECK
2511# undef sinl
2512# if HAVE_RAW_DECL_SINL
2513_GL_WARN_ON_USE (sinl, "sinl is unportable - "
2514                 "use gnulib module sinl for portability");
2515# endif
2516#endif
2517
2518
2519#if 0
2520# if 0
2521#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2522#   undef sinhf
2523#   define sinhf rpl_sinhf
2524#  endif
2525_GL_FUNCDECL_RPL (sinhf, float, (float x));
2526_GL_CXXALIAS_RPL (sinhf, float, (float x));
2527# else
2528#  if !1
2529#   undef sinhf
2530_GL_FUNCDECL_SYS (sinhf, float, (float x));
2531#  endif
2532_GL_CXXALIAS_SYS (sinhf, float, (float x));
2533# endif
2534_GL_CXXALIASWARN (sinhf);
2535#elif defined GNULIB_POSIXCHECK
2536# undef sinhf
2537# if HAVE_RAW_DECL_SINHF
2538_GL_WARN_ON_USE (sinhf, "sinhf is unportable - "
2539                 "use gnulib module sinhf for portability");
2540# endif
2541#endif
2542
2543
2544#if 0
2545# if 0
2546#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2547#   undef sqrtf
2548#   define sqrtf rpl_sqrtf
2549#  endif
2550_GL_FUNCDECL_RPL (sqrtf, float, (float x));
2551_GL_CXXALIAS_RPL (sqrtf, float, (float x));
2552# else
2553#  if !1
2554#   undef sqrtf
2555_GL_FUNCDECL_SYS (sqrtf, float, (float x));
2556#  endif
2557_GL_CXXALIAS_SYS (sqrtf, float, (float x));
2558# endif
2559_GL_CXXALIASWARN (sqrtf);
2560#elif defined GNULIB_POSIXCHECK
2561# undef sqrtf
2562# if HAVE_RAW_DECL_SQRTF
2563_GL_WARN_ON_USE (sqrtf, "sqrtf is unportable - "
2564                 "use gnulib module sqrtf for portability");
2565# endif
2566#endif
2567
2568#if 0
2569# if 0
2570#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2571#   undef sqrtl
2572#   define sqrtl rpl_sqrtl
2573#  endif
2574_GL_FUNCDECL_RPL (sqrtl, long double, (long double x));
2575_GL_CXXALIAS_RPL (sqrtl, long double, (long double x));
2576# else
2577#  if !1 || !1
2578#   undef sqrtl
2579_GL_FUNCDECL_SYS (sqrtl, long double, (long double x));
2580#  endif
2581_GL_CXXALIAS_SYS (sqrtl, long double, (long double x));
2582# endif
2583_GL_CXXALIASWARN (sqrtl);
2584#elif defined GNULIB_POSIXCHECK
2585# undef sqrtl
2586# if HAVE_RAW_DECL_SQRTL
2587_GL_WARN_ON_USE (sqrtl, "sqrtl is unportable - "
2588                 "use gnulib module sqrtl for portability");
2589# endif
2590#endif
2591
2592
2593#if 0
2594# if 0
2595#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2596#   undef tanf
2597#   define tanf rpl_tanf
2598#  endif
2599_GL_FUNCDECL_RPL (tanf, float, (float x));
2600_GL_CXXALIAS_RPL (tanf, float, (float x));
2601# else
2602#  if !1
2603#   undef tanf
2604_GL_FUNCDECL_SYS (tanf, float, (float x));
2605#  endif
2606_GL_CXXALIAS_SYS (tanf, float, (float x));
2607# endif
2608_GL_CXXALIASWARN (tanf);
2609#elif defined GNULIB_POSIXCHECK
2610# undef tanf
2611# if HAVE_RAW_DECL_TANF
2612_GL_WARN_ON_USE (tanf, "tanf is unportable - "
2613                 "use gnulib module tanf for portability");
2614# endif
2615#endif
2616
2617#if 0
2618# if !1 || !1
2619#  undef tanl
2620_GL_FUNCDECL_SYS (tanl, long double, (long double x));
2621# endif
2622_GL_CXXALIAS_SYS (tanl, long double, (long double x));
2623_GL_CXXALIASWARN (tanl);
2624#elif defined GNULIB_POSIXCHECK
2625# undef tanl
2626# if HAVE_RAW_DECL_TANL
2627_GL_WARN_ON_USE (tanl, "tanl is unportable - "
2628                 "use gnulib module tanl for portability");
2629# endif
2630#endif
2631
2632
2633#if 0
2634# if 0
2635#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2636#   undef tanhf
2637#   define tanhf rpl_tanhf
2638#  endif
2639_GL_FUNCDECL_RPL (tanhf, float, (float x));
2640_GL_CXXALIAS_RPL (tanhf, float, (float x));
2641# else
2642#  if !1
2643#   undef tanhf
2644_GL_FUNCDECL_SYS (tanhf, float, (float x));
2645#  endif
2646_GL_CXXALIAS_SYS (tanhf, float, (float x));
2647# endif
2648_GL_CXXALIASWARN (tanhf);
2649#elif defined GNULIB_POSIXCHECK
2650# undef tanhf
2651# if HAVE_RAW_DECL_TANHF
2652_GL_WARN_ON_USE (tanhf, "tanhf is unportable - "
2653                 "use gnulib module tanhf for portability");
2654# endif
2655#endif
2656
2657
2658#if 0
2659# if 0
2660#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2661#   undef truncf
2662#   define truncf rpl_truncf
2663#  endif
2664_GL_FUNCDECL_RPL (truncf, float, (float x));
2665_GL_CXXALIAS_RPL (truncf, float, (float x));
2666# else
2667#  if !1
2668_GL_FUNCDECL_SYS (truncf, float, (float x));
2669#  endif
2670_GL_CXXALIAS_SYS (truncf, float, (float x));
2671# endif
2672_GL_CXXALIASWARN (truncf);
2673#elif defined GNULIB_POSIXCHECK
2674# undef truncf
2675# if HAVE_RAW_DECL_TRUNCF
2676_GL_WARN_ON_USE (truncf, "truncf is unportable - "
2677                 "use gnulib module truncf for portability");
2678# endif
2679#endif
2680
2681#if 0
2682# if 0
2683#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2684#   undef trunc
2685#   define trunc rpl_trunc
2686#  endif
2687_GL_FUNCDECL_RPL (trunc, double, (double x));
2688_GL_CXXALIAS_RPL (trunc, double, (double x));
2689# else
2690#  if !1
2691_GL_FUNCDECL_SYS (trunc, double, (double x));
2692#  endif
2693_GL_CXXALIAS_SYS (trunc, double, (double x));
2694# endif
2695# if __GLIBC__ >= 2
2696_GL_CXXALIASWARN (trunc);
2697# endif
2698#elif defined GNULIB_POSIXCHECK
2699# undef trunc
2700# if HAVE_RAW_DECL_TRUNC
2701_GL_WARN_ON_USE (trunc, "trunc is unportable - "
2702                 "use gnulib module trunc for portability");
2703# endif
2704#endif
2705
2706#if 0
2707# if 0
2708#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
2709#   undef truncl
2710#   define truncl rpl_truncl
2711#  endif
2712_GL_FUNCDECL_RPL (truncl, long double, (long double x));
2713_GL_CXXALIAS_RPL (truncl, long double, (long double x));
2714# else
2715#  if !1
2716_GL_FUNCDECL_SYS (truncl, long double, (long double x));
2717#  endif
2718_GL_CXXALIAS_SYS (truncl, long double, (long double x));
2719# endif
2720_GL_CXXALIASWARN (truncl);
2721#elif defined GNULIB_POSIXCHECK
2722# undef truncl
2723# if HAVE_RAW_DECL_TRUNCL
2724_GL_WARN_ON_USE (truncl, "truncl is unportable - "
2725                 "use gnulib module truncl for portability");
2726# endif
2727#endif
2728
2729
2730/* Definitions of function-like macros come here, after the function
2731   declarations.  */
2732
2733
2734#if 0
2735# if 0
2736_GL_EXTERN_C int gl_isfinitef (float x);
2737_GL_EXTERN_C int gl_isfinited (double x);
2738_GL_EXTERN_C int gl_isfinitel (long double x);
2739#  undef isfinite
2740#  define isfinite(x) \
2741   (sizeof (x) == sizeof (long double) ? gl_isfinitel (x) : \
2742    sizeof (x) == sizeof (double) ? gl_isfinited (x) : \
2743    gl_isfinitef (x))
2744# endif
2745# ifdef __cplusplus
2746#  if defined isfinite || defined GNULIB_NAMESPACE
2747_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite)
2748#   undef isfinite
2749#   if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined _AIX))
2750  /* This platform's <cmath> possibly defines isfinite through a set of inline
2751     functions.  */
2752_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite, rpl_isfinite, bool)
2753#    define isfinite rpl_isfinite
2754#   else
2755_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite, isfinite, bool)
2756#   endif
2757#  endif
2758# endif
2759#elif defined GNULIB_POSIXCHECK
2760# if defined isfinite
2761_GL_WARN_REAL_FLOATING_DECL (isfinite);
2762#  undef isfinite
2763#  define isfinite(x) _GL_WARN_REAL_FLOATING_IMPL (isfinite, x)
2764# endif
2765#endif
2766
2767
2768#if 0
2769# if 0
2770_GL_EXTERN_C int gl_isinff (float x);
2771_GL_EXTERN_C int gl_isinfd (double x);
2772_GL_EXTERN_C int gl_isinfl (long double x);
2773#  undef isinf
2774#  define isinf(x) \
2775   (sizeof (x) == sizeof (long double) ? gl_isinfl (x) : \
2776    sizeof (x) == sizeof (double) ? gl_isinfd (x) : \
2777    gl_isinff (x))
2778# endif
2779# ifdef __cplusplus
2780#  if defined isinf || defined GNULIB_NAMESPACE
2781_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf)
2782#   undef isinf
2783#   if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__))
2784  /* This platform's <cmath> possibly defines isinf through a set of inline
2785     functions.  */
2786_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf, rpl_isinf, bool)
2787#    define isinf rpl_isinf
2788#   else
2789_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf, isinf, bool)
2790#   endif
2791#  endif
2792# endif
2793#elif defined GNULIB_POSIXCHECK
2794# if defined isinf
2795_GL_WARN_REAL_FLOATING_DECL (isinf);
2796#  undef isinf
2797#  define isinf(x) _GL_WARN_REAL_FLOATING_IMPL (isinf, x)
2798# endif
2799#endif
2800
2801
2802#if 0
2803/* Test for NaN for 'float' numbers.  */
2804# if 1
2805/* The original <math.h> included above provides a declaration of isnan macro
2806   or (older) isnanf function.  */
2807#  if __GNUC__ >= 4 && (!defined __clang__ || __has_builtin (__builtin_isnanf))
2808    /* GCC 4.0 and newer provides three built-ins for isnan.  */
2809#   undef isnanf
2810#   define isnanf(x) __builtin_isnanf ((float)(x))
2811#  elif defined isnan
2812#   undef isnanf
2813#   define isnanf(x) isnan ((float)(x))
2814#  endif
2815# else
2816/* Test whether X is a NaN.  */
2817#  undef isnanf
2818#  define isnanf rpl_isnanf
2819_GL_EXTERN_C int isnanf (float x);
2820# endif
2821#endif
2822
2823#if 0
2824/* Test for NaN for 'double' numbers.
2825   This function is a gnulib extension, unlike isnan() which applied only
2826   to 'double' numbers earlier but now is a type-generic macro.  */
2827# if 1
2828/* The original <math.h> included above provides a declaration of isnan
2829   macro.  */
2830#  if __GNUC__ >= 4
2831    /* GCC 4.0 and newer provides three built-ins for isnan.  */
2832#   undef isnand
2833#   define isnand(x) __builtin_isnan ((double)(x))
2834#  else
2835#   undef isnand
2836#   define isnand(x) isnan ((double)(x))
2837#  endif
2838# else
2839/* Test whether X is a NaN.  */
2840#  undef isnand
2841#  define isnand rpl_isnand
2842_GL_EXTERN_C int isnand (double x);
2843# endif
2844#endif
2845
2846#if 0
2847/* Test for NaN for 'long double' numbers.  */
2848# if 1
2849/* The original <math.h> included above provides a declaration of isnan
2850   macro or (older) isnanl function.  */
2851#  if __GNUC__ >= 4 && (!defined __clang__ || __has_builtin (__builtin_isnanl))
2852    /* GCC 4.0 and newer provides three built-ins for isnan.  */
2853#   undef isnanl
2854#   define isnanl(x) __builtin_isnanl ((long double)(x))
2855#  elif defined isnan
2856#   undef isnanl
2857#   define isnanl(x) isnan ((long double)(x))
2858#  endif
2859# else
2860/* Test whether X is a NaN.  */
2861#  undef isnanl
2862#  define isnanl rpl_isnanl
2863_GL_EXTERN_C int isnanl (long double x) _GL_ATTRIBUTE_CONST;
2864# endif
2865#endif
2866
2867/* This must come *after* the snippets for GNULIB_ISNANF and GNULIB_ISNANL!  */
2868#if 0
2869# if 0
2870/* We can't just use the isnanf macro (e.g.) as exposed by
2871   isnanf.h (e.g.) here, because those may end up being macros
2872   that recursively expand back to isnan.  So use the gnulib
2873   replacements for them directly. */
2874#  if 1 && __GNUC__ >= 4 && (!defined __clang__ || __has_builtin (__builtin_isnanf))
2875#   define gl_isnan_f(x) __builtin_isnanf ((float)(x))
2876#  else
2877_GL_EXTERN_C int rpl_isnanf (float x);
2878#   define gl_isnan_f(x) rpl_isnanf (x)
2879#  endif
2880#  if 1 && __GNUC__ >= 4
2881#   define gl_isnan_d(x) __builtin_isnan ((double)(x))
2882#  else
2883_GL_EXTERN_C int rpl_isnand (double x);
2884#   define gl_isnan_d(x) rpl_isnand (x)
2885#  endif
2886#  if 1 && __GNUC__ >= 4 && (!defined __clang__ || __has_builtin (__builtin_isnanl))
2887#   define gl_isnan_l(x) __builtin_isnanl ((long double)(x))
2888#  else
2889_GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
2890#   define gl_isnan_l(x) rpl_isnanl (x)
2891#  endif
2892#  undef isnan
2893#  define isnan(x) \
2894   (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \
2895    sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \
2896    gl_isnan_f (x))
2897# elif __GNUC__ >= 4 && (!defined __clang__ || (__has_builtin (__builtin_isnanf) && __has_builtin (__builtin_isnanl)))
2898#  undef isnan
2899#  define isnan(x) \
2900   (sizeof (x) == sizeof (long double) ? __builtin_isnanl ((long double)(x)) : \
2901    sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \
2902    __builtin_isnanf ((float)(x)))
2903# endif
2904# ifdef __cplusplus
2905#  if defined isnan || defined GNULIB_NAMESPACE
2906_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan)
2907#   undef isnan
2908#   if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__))
2909  /* This platform's <cmath> possibly defines isnan through a set of inline
2910     functions.  */
2911_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, rpl_isnan, bool)
2912#    define isnan rpl_isnan
2913#   else
2914_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan, isnan, bool)
2915#   endif
2916#  endif
2917# else
2918/* Ensure isnan is a macro.  */
2919#  ifndef isnan
2920#   define isnan isnan
2921#  endif
2922# endif
2923#elif defined GNULIB_POSIXCHECK
2924# if defined isnan
2925_GL_WARN_REAL_FLOATING_DECL (isnan);
2926#  undef isnan
2927#  define isnan(x) _GL_WARN_REAL_FLOATING_IMPL (isnan, x)
2928# endif
2929#endif
2930
2931
2932#if 0
2933# if (0 \
2934      && (!defined __cplusplus || __cplusplus < 201103))
2935#  undef signbit
2936   /* GCC 4.0 and newer provides three built-ins for signbit.  */
2937#  define signbit(x) \
2938   (sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
2939    sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
2940    __builtin_signbitf (x))
2941# endif
2942# if 0 && !GNULIB_defined_signbit
2943#  undef signbit
2944_GL_EXTERN_C int gl_signbitf (float arg);
2945_GL_EXTERN_C int gl_signbitd (double arg);
2946_GL_EXTERN_C int gl_signbitl (long double arg);
2947#  if __GNUC__ >= 2 && !defined __STRICT_ANSI__
2948#   define _GL_NUM_UINT_WORDS(type) \
2949      ((sizeof (type) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
2950#   if defined FLT_SIGNBIT_WORD && defined FLT_SIGNBIT_BIT && !defined gl_signbitf
2951#    define gl_signbitf_OPTIMIZED_MACRO
2952#    define gl_signbitf(arg) \
2953       ({ union { float _value;                                         \
2954                  unsigned int _word[_GL_NUM_UINT_WORDS (float)];       \
2955                } _m;                                                   \
2956          _m._value = (arg);                                            \
2957          (_m._word[FLT_SIGNBIT_WORD] >> FLT_SIGNBIT_BIT) & 1;          \
2958        })
2959#   endif
2960#   if defined DBL_SIGNBIT_WORD && defined DBL_SIGNBIT_BIT && !defined gl_signbitd
2961#    define gl_signbitd_OPTIMIZED_MACRO
2962#    define gl_signbitd(arg) \
2963       ({ union { double _value;                                        \
2964                  unsigned int _word[_GL_NUM_UINT_WORDS (double)];      \
2965                } _m;                                                   \
2966          _m._value = (arg);                                            \
2967          (_m._word[DBL_SIGNBIT_WORD] >> DBL_SIGNBIT_BIT) & 1;          \
2968        })
2969#   endif
2970#   if defined LDBL_SIGNBIT_WORD && defined LDBL_SIGNBIT_BIT && !defined gl_signbitl
2971#    define gl_signbitl_OPTIMIZED_MACRO
2972#    define gl_signbitl(arg) \
2973       ({ union { long double _value;                                   \
2974                  unsigned int _word[_GL_NUM_UINT_WORDS (long double)]; \
2975                } _m;                                                   \
2976          _m._value = (arg);                                            \
2977          (_m._word[LDBL_SIGNBIT_WORD] >> LDBL_SIGNBIT_BIT) & 1;        \
2978        })
2979#   endif
2980#  endif
2981#  define signbit(x) \
2982   (sizeof (x) == sizeof (long double) ? gl_signbitl (x) : \
2983    sizeof (x) == sizeof (double) ? gl_signbitd (x) : \
2984    gl_signbitf (x))
2985#  define GNULIB_defined_signbit 1
2986# endif
2987# ifdef __cplusplus
2988#  if defined signbit || defined GNULIB_NAMESPACE
2989_GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit)
2990#   undef signbit
2991#   if __GNUC__ >= 6 || (defined __clang__ && !((defined __APPLE__ && defined __MACH__) || defined __FreeBSD__ || defined _AIX))
2992  /* This platform's <cmath> possibly defines signbit through a set of inline
2993     functions.  */
2994_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit, rpl_signbit, bool)
2995#    define signbit rpl_signbit
2996#   else
2997_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit, signbit, bool)
2998#   endif
2999#  endif
3000# endif
3001#elif defined GNULIB_POSIXCHECK
3002# if defined signbit
3003_GL_WARN_REAL_FLOATING_DECL (signbit);
3004#  undef signbit
3005#  define signbit(x) _GL_WARN_REAL_FLOATING_IMPL (signbit, x)
3006# endif
3007#endif
3008
3009_GL_INLINE_HEADER_END
3010
3011#endif /* _GL_MATH_H */
3012#endif /* _GL_MATH_H */
3013