diff options
-rw-r--r-- | ChangeLog | 25 | ||||
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | bits/libc-header-start.h | 9 | ||||
-rw-r--r-- | include/features.h | 1 | ||||
-rw-r--r-- | manual/arith.texi | 21 | ||||
-rw-r--r-- | manual/creature.texi | 9 | ||||
-rw-r--r-- | math/bits/mathcalls.h | 4 | ||||
-rw-r--r-- | math/math.h | 7 |
8 files changed, 65 insertions, 16 deletions
@@ -1,3 +1,28 @@ +2016-08-03 Joseph Myers <joseph@codesourcery.com> + + * bits/libc-header-start.h (__GLIBC_USE_IEC_60559_BFP_EXT): New + macro. + * include/features.h (__STDC_WANT_IEC_60559_BFP_EXT__): Document. + * manual/arith.texi (issignaling): Document as ISO from TS + 18661-1:2014. + (nextup): Likewise. + (nextupf): Likewise. + (nextupl): Likewise. + (nextdown): Likewise. + (nextdownf): Likewise. + (nextdownl): Likewise. + * manual/creature.texi (__STDC_WANT_IEC_60559_BFP_EXT__): Document + macro. + * math/math.h: Define + __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION and include + <bits/libc-header-start.h> instead of including <features.h>. + (issignaling): Define if [__GLIBC_USE (IEC_60559_BFP_EXT)], not + [__USE_GNU]. + * math/bits/mathcalls.h (nextdown): Declare if + [__GLIBC_USE (IEC_60559_BFP_EXT)], not [__USE_GNU]. + (nextup): Likewise. + (__issignaling): Likewise. + 2016-08-03 Paul E. Murphy <murphyp@linux.vnet.ibm.com> * s_ccoshf.c (__ccoshf): Remove FE_INVALID @@ -12,6 +12,11 @@ Version 2.25 TR. Note that not all functions from that TR are supported by the GNU C Library. +* The feature test macro __STDC_WANT_IEC_60559_BFP_EXT__, from ISO/IEC TS + 18661-1:2014, is supported to enable declarations of functions and macros + from that TS. Note that most features from that TS are not supported by + the GNU C Library. + Security related changes: [Add security related changes here] diff --git a/bits/libc-header-start.h b/bits/libc-header-start.h index c6663074a8..6a5850526c 100644 --- a/bits/libc-header-start.h +++ b/bits/libc-header-start.h @@ -41,3 +41,12 @@ #else # define __GLIBC_USE_LIB_EXT2 0 #endif + +/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ + macro. */ +#undef __GLIBC_USE_IEC_60559_BFP_EXT +#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__ +# define __GLIBC_USE_IEC_60559_BFP_EXT 1 +#else +# define __GLIBC_USE_IEC_60559_BFP_EXT 0 +#endif diff --git a/include/features.h b/include/features.h index 404014115a..f2cd148fa4 100644 --- a/include/features.h +++ b/include/features.h @@ -25,6 +25,7 @@ _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. _ISOC11_SOURCE Extensions to ISO C99 from ISO C11. __STDC_WANT_LIB_EXT2__ Extensions to ISO C99 from TR 27431-2:2010. + __STDC_WANT_IEC_60559_BFP_EXT__ Extensions to ISO C11 from TS 18661-1:2014. _POSIX_SOURCE IEEE Std 1003.1. _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; if >=199309L, add IEEE Std 1003.1b-1993; diff --git a/manual/arith.texi b/manual/arith.texi index f54b1ec7df..3d8bdd8cad 100644 --- a/manual/arith.texi +++ b/manual/arith.texi @@ -397,12 +397,11 @@ to @end deftypefn @comment math.h -@comment GNU +@comment ISO @deftypefn {Macro} int issignaling (@emph{float-type} @var{x}) @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} This macro returns a nonzero value if @var{x} is a signaling NaN -(sNaN). It is based on draft TS 18661 and currently enabled as a GNU -extension. +(sNaN). It is from TS 18661-1:2014. @end deftypefn Another set of floating-point classification functions was provided by @@ -1703,13 +1702,13 @@ double}. @end deftypefun @comment math.h -@comment GNU +@comment ISO @deftypefun double nextup (double @var{x}) @comment math.h -@comment GNU +@comment ISO @deftypefunx float nextupf (float @var{x}) @comment math.h -@comment GNU +@comment ISO @deftypefunx {long double} nextupl (long double @var{x}) @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} The @code{nextup} function returns the next representable neighbor of @var{x} @@ -1718,18 +1717,18 @@ subnormal number in the type of @var{x} the function returns @code{-0}. If @math{@var{x} = @code{0}} the function returns the smallest positive subnormal number in the type of @var{x}. If @var{x} is NaN, NaN is returned. If @var{x} is @math{+@infinity{}}, @math{+@infinity{}} is returned. -@code{nextup} is based on TS 18661 and currently enabled as a GNU extension. +@code{nextup} from TS 18661-1:2014. @code{nextup} never raises an exception except for signaling NaNs. @end deftypefun @comment math.h -@comment GNU +@comment ISO @deftypefun double nextdown (double @var{x}) @comment math.h -@comment GNU +@comment ISO @deftypefunx float nextdownf (float @var{x}) @comment math.h -@comment GNU +@comment ISO @deftypefunx {long double} nextdownl (long double @var{x}) @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} The @code{nextdown} function returns the next representable neighbor of @var{x} @@ -1738,7 +1737,7 @@ subnormal number in the type of @var{x} the function returns @code{+0}. If @math{@var{x} = @code{0}} the function returns the smallest negative subnormal number in the type of @var{x}. If @var{x} is NaN, NaN is returned. If @var{x} is @math{-@infinity{}}, @math{-@infinity{}} is returned. -@code{nextdown} is based on TS 18661 and currently enabled as a GNU extension. +@code{nextdown} is from TS 18661-1:2014. @code{nextdown} never raises an exception except for signaling NaNs. @end deftypefun diff --git a/manual/creature.texi b/manual/creature.texi index 65c5928343..61b17ce22b 100644 --- a/manual/creature.texi +++ b/manual/creature.texi @@ -174,6 +174,15 @@ of the features from this TR are supported by @theglibc{}. @end defvr @comment (none) +@comment ISO +@defvr Macro __STDC_WANT_IEC_60559_BFP_EXT__ +If you define this macro, features from ISO/IEC TS 18661-1:2014 +(Floating-point extensions for C: Binary floating-point arithmetic) +are enabled. Only some of the features from this TS are supported by +@theglibc{}. +@end defvr + +@comment (none) @comment GNU @defvr Macro _GNU_SOURCE If you define this macro, everything is included: @w{ISO C89}, @w{ISO diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h index e2cf49f627..e1c0521ae8 100644 --- a/math/bits/mathcalls.h +++ b/math/bits/mathcalls.h @@ -294,7 +294,7 @@ __MATHCALLX (nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__)); __MATHCALLX (nexttoward,, (_Mdouble_ __x, long double __y), (__const__)); # endif -#ifdef __USE_GNU +#if __GLIBC_USE (IEC_60559_BFP_EXT) /* Return X - epsilon. */ __MATHCALL (nextdown,, (_Mdouble_ __x)); /* Return X + epsilon. */ @@ -377,7 +377,7 @@ __MATHCALL (fma,, (_Mdouble_ __x, _Mdouble_ __y, _Mdouble_ __z)); __END_NAMESPACE_C99 #endif -#ifdef __USE_GNU +#if __GLIBC_USE (IEC_60559_BFP_EXT) /* Test for signaling NaN. */ __MATHDECL_1 (int, __issignaling,, (_Mdouble_ __value)) __attribute__ ((__const__)); diff --git a/math/math.h b/math/math.h index 4724b10b6f..ff9d70adf5 100644 --- a/math/math.h +++ b/math/math.h @@ -23,7 +23,8 @@ #ifndef _MATH_H #define _MATH_H 1 -#include <features.h> +#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION +#include <bits/libc-header-start.h> __BEGIN_DECLS @@ -328,7 +329,7 @@ enum #endif /* Use ISO C99. */ -#ifdef __USE_GNU +#if __GLIBC_USE (IEC_60559_BFP_EXT) /* Return nonzero value if X is a signaling NaN. */ # ifdef __NO_LONG_DOUBLE_MATH # define issignaling(x) \ @@ -340,7 +341,7 @@ enum : sizeof (x) == sizeof (double) \ ? __issignaling (x) : __issignalingl (x)) # endif -#endif /* Use GNU. */ +#endif /* Use IEC_60559_BFP_EXT. */ #ifdef __USE_MISC /* Support for various different standard error handling behaviors. */ |