about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog12
-rw-r--r--NEWS5
-rw-r--r--bits/libc-header-start.h9
-rw-r--r--include/features.h2
-rw-r--r--manual/creature.texi9
-rw-r--r--manual/math.texi9
-rw-r--r--math/bits/mathcalls.h6
7 files changed, 46 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 954af379c5..ac692dc9e7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2016-08-03  Joseph Myers  <joseph@codesourcery.com>
 
+	* bits/libc-header-start.h (__GLIBC_USE_IEC_60559_FUNCS_EXT): New
+	macro.
+	* include/features.h (__STDC_WANT_IEC_60559_FUNCS_EXT__):
+	Document.
+	* manual/creature.texi (__STDC_WANT_IEC_60559_FUNCS_EXT__):
+	Document macro.
+	* manual/math.texi (exp10): Document as ISO from TS 18661-4:2015.
+	(exp10f): Likewise.
+	(exp10l): Likewise.
+	* math/bits/mathcalls.h (exp10): Declare if
+	[__GLIBC_USE (IEC_60559_FUNCS_EXT)], not [__USE_GNU].
+
 	* manual/arith.texi (nextup): Fix typo in last change.
 
 2016-08-03  Zack Weinberg  <zackw@panix.com>
diff --git a/NEWS b/NEWS
index 25c771df2e..fe9ff1c451 100644
--- a/NEWS
+++ b/NEWS
@@ -17,6 +17,11 @@ Version 2.25
   from that TS.  Note that most features from that TS are not supported by
   the GNU C Library.
 
+* The feature test macro __STDC_WANT_IEC_60559_FUNCS_EXT__, from ISO/IEC TS
+  18661-4:2015, 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.
+
 * The inclusion of <sys/sysmacros.h> by <sys/types.h> is deprecated.  This
   means that in a future release, the macros “major”, “minor”, and “makedev”
   will only be available from <sys/sysmacros.h>.
diff --git a/bits/libc-header-start.h b/bits/libc-header-start.h
index 6a5850526c..ee6a876d82 100644
--- a/bits/libc-header-start.h
+++ b/bits/libc-header-start.h
@@ -50,3 +50,12 @@
 #else
 # define __GLIBC_USE_IEC_60559_BFP_EXT 0
 #endif
+
+/* ISO/IEC TS 18661-4:2015 defines the
+   __STDC_WANT_IEC_60559_FUNCS_EXT__ macro.  */
+#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
+#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_FUNCS_EXT__
+# define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
+#else
+# define __GLIBC_USE_IEC_60559_FUNCS_EXT 0
+#endif
diff --git a/include/features.h b/include/features.h
index 554c5c888a..650d4c5e12 100644
--- a/include/features.h
+++ b/include/features.h
@@ -26,6 +26,8 @@
    _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.
+   __STDC_WANT_IEC_60559_FUNCS_EXT__ Extensions to ISO C11 from
+			TS 18661-4:2015.
    _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/creature.texi b/manual/creature.texi
index 61b17ce22b..257f8718b1 100644
--- a/manual/creature.texi
+++ b/manual/creature.texi
@@ -183,6 +183,15 @@ are enabled.  Only some of the features from this TS are supported by
 @end defvr
 
 @comment (none)
+@comment ISO
+@defvr Macro __STDC_WANT_IEC_60559_FUNCS_EXT__
+If you define this macro, features from ISO/IEC TS 18661-4:2015
+(Floating-point extensions for C: Supplementary functions) 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/manual/math.texi b/manual/math.texi
index 5c9f7b9f1c..d689820c6c 100644
--- a/manual/math.texi
+++ b/manual/math.texi
@@ -480,13 +480,13 @@ Mathematically, @code{exp2 (x)} is the same as @code{exp (x * log (2))}.
 @end deftypefun
 
 @comment math.h
-@comment GNU
+@comment ISO
 @deftypefun double exp10 (double @var{x})
 @comment math.h
-@comment GNU
+@comment ISO
 @deftypefunx float exp10f (float @var{x})
 @comment math.h
-@comment GNU
+@comment ISO
 @deftypefunx {long double} exp10l (long double @var{x})
 @comment math.h
 @comment GNU
@@ -501,7 +501,8 @@ Mathematically, @code{exp2 (x)} is the same as @code{exp (x * log (2))}.
 These functions compute @code{10} raised to the power @var{x}.
 Mathematically, @code{exp10 (x)} is the same as @code{exp (x * log (10))}.
 
-These functions are GNU extensions.  The name @code{exp10} is
+The @code{exp10} functions are from TS 18661-4:2015; the @code{pow10}
+names are GNU extensions.  The name @code{exp10} is
 preferred, since it is analogous to @code{exp} and @code{exp2}.
 @end deftypefun
 
diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h
index e1c0521ae8..951a3d0090 100644
--- a/math/bits/mathcalls.h
+++ b/math/bits/mathcalls.h
@@ -115,9 +115,11 @@ __MATHCALL (log10,, (_Mdouble_ __x));
 __MATHCALL (modf,, (_Mdouble_ __x, _Mdouble_ *__iptr)) __nonnull ((2));
 _Mdouble_END_NAMESPACE
 
-#ifdef __USE_GNU
-/* A function missing in all standards: compute exponent to base ten.  */
+#if __GLIBC_USE (IEC_60559_FUNCS_EXT)
+/* Compute exponent to base ten.  */
 __MATHCALL (exp10,, (_Mdouble_ __x));
+#endif
+#ifdef __USE_GNU
 /* Another name occasionally used.  */
 __MATHCALL (pow10,, (_Mdouble_ __x));
 #endif