X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fmath.in.h;h=d6308cbb9dc1df25022a2203a21c32d3954529f5;hb=b344de996cd51f8a2f2558a3172016b64d99c622;hp=63950327de76cd2844eb84c3e759d5d0b7c545b7;hpb=fb22d8f7dad4a6160090cf16c824aa651425e563;p=gnulib.git diff --git a/lib/math.in.h b/lib/math.in.h index 63950327d..d6308cbb9 100644 --- a/lib/math.in.h +++ b/lib/math.in.h @@ -1,6 +1,6 @@ /* A GNU-like . - Copyright (C) 2002-2003, 2007-2010 Free Software Foundation, Inc. + Copyright (C) 2002-2003, 2007-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,17 +15,18 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#ifndef _GL_MATH_H +#ifndef _@GUARD_PREFIX@_MATH_H #if __GNUC__ >= 3 @PRAGMA_SYSTEM_HEADER@ #endif +@PRAGMA_COLUMNS@ /* The include_next requires a split double-inclusion guard. */ #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ -#ifndef _GL_MATH_H -#define _GL_MATH_H +#ifndef _@GUARD_PREFIX@_MATH_H +#define _@GUARD_PREFIX@_MATH_H /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ @@ -72,18 +73,21 @@ _GL_WARN_ON_USE (rpl_ ## func ## l, #func " is unportable - " \ it on platforms like Solaris 10, where NAN is present but defined as a function pointer rather than a floating point constant. */ #if !defined NAN || @REPLACE_NAN@ -# undef NAN +# if !GNULIB_defined_NAN +# undef NAN /* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */ -# ifdef __DECC +# ifdef __DECC static float _NaN () { static float zero = 0.0f; return zero / zero; } -# define NAN (_NaN()) -# else -# define NAN (0.0f / 0.0f) +# define NAN (_NaN()) +# else +# define NAN (0.0f / 0.0f) +# endif +# define GNULIB_defined_NAN 1 # endif #endif @@ -201,6 +205,19 @@ _GL_WARN_ON_USE (ceilf, "ceilf is unportable - " # endif #endif +#if @GNULIB_CEIL@ +# if @REPLACE_CEIL@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# define ceil rpl_ceil +# endif +_GL_FUNCDECL_RPL (ceil, double, (double x)); +_GL_CXXALIAS_RPL (ceil, double, (double x)); +# else +_GL_CXXALIAS_SYS (ceil, double, (double x)); +# endif +_GL_CXXALIASWARN (ceil); +#endif + #if @GNULIB_CEILL@ # if @REPLACE_CEILL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) @@ -261,7 +278,7 @@ _GL_WARN_ON_USE (expl, "expl is unportable - " # endif _GL_FUNCDECL_RPL (floorf, float, (float x)); _GL_CXXALIAS_RPL (floorf, float, (float x)); -#else +# else # if !@HAVE_DECL_FLOORF@ _GL_FUNCDECL_SYS (floorf, float, (float x)); # endif @@ -276,6 +293,19 @@ _GL_WARN_ON_USE (floorf, "floorf is unportable - " # endif #endif +#if @GNULIB_FLOOR@ +# if @REPLACE_FLOOR@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# define floor rpl_floor +# endif +_GL_FUNCDECL_RPL (floor, double, (double x)); +_GL_CXXALIAS_RPL (floor, double, (double x)); +# else +_GL_CXXALIAS_SYS (floor, double, (double x)); +# endif +_GL_CXXALIASWARN (floor); +#endif + #if @GNULIB_FLOORL@ # if @REPLACE_FLOORL@ # if !(defined __cplusplus && defined GNULIB_NAMESPACE) @@ -492,10 +522,18 @@ _GL_WARN_ON_USE (tanl, "tanl is unportable - " #if @GNULIB_TRUNCF@ -# if !@HAVE_DECL_TRUNCF@ +# if @REPLACE_TRUNCF@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# define truncf rpl_truncf +# endif +_GL_FUNCDECL_RPL (truncf, float, (float x)); +_GL_CXXALIAS_RPL (truncf, float, (float x)); +# else +# if !@HAVE_DECL_TRUNCF@ _GL_FUNCDECL_SYS (truncf, float, (float x)); -# endif +# endif _GL_CXXALIAS_SYS (truncf, float, (float x)); +# endif _GL_CXXALIASWARN (truncf); #elif defined GNULIB_POSIXCHECK # undef truncf @@ -506,10 +544,18 @@ _GL_WARN_ON_USE (truncf, "truncf is unportable - " #endif #if @GNULIB_TRUNC@ -# if !@HAVE_DECL_TRUNC@ +# if @REPLACE_TRUNC@ +# if !(defined __cplusplus && defined GNULIB_NAMESPACE) +# define trunc rpl_trunc +# endif +_GL_FUNCDECL_RPL (trunc, double, (double x)); +_GL_CXXALIAS_RPL (trunc, double, (double x)); +# else +# if !@HAVE_DECL_TRUNC@ _GL_FUNCDECL_SYS (trunc, double, (double x)); -# endif +# endif _GL_CXXALIAS_SYS (trunc, double, (double x)); +# endif _GL_CXXALIASWARN (trunc); #elif defined GNULIB_POSIXCHECK # undef trunc @@ -656,7 +702,7 @@ _GL_EXTERN_C int isnanl (long double x); that recursively expand back to isnan. So use the gnulib replacements for them directly. */ # if @HAVE_ISNANF@ && __GNUC__ >= 4 -# define gl_isnan_f(x) __builtin_isnan ((float)(x)) +# define gl_isnan_f(x) __builtin_isnanf ((float)(x)) # else _GL_EXTERN_C int rpl_isnanf (float x); # define gl_isnan_f(x) rpl_isnanf (x) @@ -668,7 +714,7 @@ _GL_EXTERN_C int rpl_isnand (double x); # define gl_isnan_d(x) rpl_isnand (x) # endif # if @HAVE_ISNANL@ && __GNUC__ >= 4 -# define gl_isnan_l(x) __builtin_isnan ((long double)(x)) +# define gl_isnan_l(x) __builtin_isnanl ((long double)(x)) # else _GL_EXTERN_C int rpl_isnanl (long double x); # define gl_isnan_l(x) rpl_isnanl (x) @@ -678,6 +724,16 @@ _GL_EXTERN_C int rpl_isnanl (long double x); (sizeof (x) == sizeof (long double) ? gl_isnan_l (x) : \ sizeof (x) == sizeof (double) ? gl_isnan_d (x) : \ gl_isnan_f (x)) +# elif __GNUC__ >= 4 +# undef isnan +# define isnan(x) \ + (sizeof (x) == sizeof (long double) ? __builtin_isnanl ((long double)(x)) : \ + sizeof (x) == sizeof (double) ? __builtin_isnan ((double)(x)) : \ + __builtin_isnanf ((float)(x))) +# endif +/* Ensure isnan is a macro. */ +# ifndef isnan +# define isnan isnan # endif #elif defined GNULIB_POSIXCHECK # if defined isnan @@ -750,5 +806,5 @@ _GL_WARN_REAL_FLOATING_DECL (signbit); #endif -#endif /* _GL_MATH_H */ -#endif /* _GL_MATH_H */ +#endif /* _@GUARD_PREFIX@_MATH_H */ +#endif /* _@GUARD_PREFIX@_MATH_H */