summary refs log tree commit diff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-10-30 22:15:40 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-10-30 22:15:40 +0000
commitb61afe8c813e80aa7766c325023743fef4464807 (patch)
tree0ed94f159b71ac47a3b6baacbdd8849690bfbff6 /math
parenteda162dd8a7d2ca0b1900aa57a78b9586800b4ec (diff)
downloadglibc-b61afe8c813e80aa7766c325023743fef4464807.tar.gz
glibc-b61afe8c813e80aa7766c325023743fef4464807.tar.xz
glibc-b61afe8c813e80aa7766c325023743fef4464807.zip
Include bits/math-finite.h for more _FloatN, _FloatNx types.
Continuing the preparation for additional _FloatN / _FloatNx type
support, this patch extends the includes of <bits/math-finite.h> to
cover all such types, under conditions analogous to those for
_Float128.

Tested for x86_64.

	* math/math.h [__HAVE_DISTINCT_FLOAT16 || (__HAVE_FLOAT16 && !_LIBC)]:
	Include <bits/math-finite.h> with appropriate macros defined and
	undefined.
	[__HAVE_DISTINCT_FLOAT32 || (__HAVE_FLOAT32 && !_LIBC)]: Likewise.
	[__HAVE_DISTINCT_FLOAT64 || (__HAVE_FLOAT64 && !_LIBC)]: Likewise.
	[__HAVE_DISTINCT_FLOAT32X || (__HAVE_FLOAT32X && !_LIBC)]: Likewise.
	[__HAVE_DISTINCT_FLOAT64X || (__HAVE_FLOAT64X && !_LIBC)]: Likewise.
	[__HAVE_DISTINCT_FLOAT128X || (__HAVE_FLOAT128X && !_LIBC)]: Likewise.
Diffstat (limited to 'math')
-rw-r--r--math/math.h139
1 files changed, 137 insertions, 2 deletions
diff --git a/math/math.h b/math/math.h
index 88fd4bce54..125d845c86 100644
--- a/math/math.h
+++ b/math/math.h
@@ -978,8 +978,74 @@ iszero (__T __val)
 
 # endif /* __USE_ISOC99.  */
 
-/* Include bits/math-finite.h for float128.  */
-# if (__HAVE_DISTINCT_FLOAT128 || (__HAVE_FLOAT128 && !defined _LIBC)) \
+/* Include bits/math-finite.h for _FloatN and _FloatNx.  */
+
+# if (__HAVE_DISTINCT_FLOAT16 || (__HAVE_FLOAT16 && !defined _LIBC))	\
+      && __GLIBC_USE (IEC_60559_TYPES_EXT)
+#  define _Mdouble_ _Float16
+#  define __MATH_DECLARING_DOUBLE 0
+#  define __MATH_DECLARING_FLOATN 1
+#  define __REDIRFROM_X(function, reentrant) \
+  function ## f16 ## reentrant
+#  if __HAVE_DISTINCT_FLOAT16
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## f16 ## reentrant ## _finite
+#  else
+#   error "non-disinct _Float16"
+#  endif
+#  include <bits/math-finite.h>
+#  undef _Mdouble_
+#  undef __MATH_DECLARING_DOUBLE
+#  undef __MATH_DECLARING_FLOATN
+#  undef __REDIRFROM_X
+#  undef __REDIRTO_X
+# endif
+
+# if (__HAVE_DISTINCT_FLOAT32 || (__HAVE_FLOAT32 && !defined _LIBC))	\
+      && __GLIBC_USE (IEC_60559_TYPES_EXT)
+#  define _Mdouble_ _Float32
+#  define __MATH_DECLARING_DOUBLE 0
+#  define __MATH_DECLARING_FLOATN 1
+#  define __REDIRFROM_X(function, reentrant) \
+  function ## f32 ## reentrant
+#  if __HAVE_DISTINCT_FLOAT32
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## f32 ## reentrant ## _finite
+#  else
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## f ## reentrant ## _finite
+#  endif
+#  include <bits/math-finite.h>
+#  undef _Mdouble_
+#  undef __MATH_DECLARING_DOUBLE
+#  undef __MATH_DECLARING_FLOATN
+#  undef __REDIRFROM_X
+#  undef __REDIRTO_X
+# endif
+
+# if (__HAVE_DISTINCT_FLOAT64 || (__HAVE_FLOAT64 && !defined _LIBC))	\
+      && __GLIBC_USE (IEC_60559_TYPES_EXT)
+#  define _Mdouble_ _Float64
+#  define __MATH_DECLARING_DOUBLE 0
+#  define __MATH_DECLARING_FLOATN 1
+#  define __REDIRFROM_X(function, reentrant) \
+  function ## f64 ## reentrant
+#  if __HAVE_DISTINCT_FLOAT64
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## f64 ## reentrant ## _finite
+#  else
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## reentrant ## _finite
+#  endif
+#  include <bits/math-finite.h>
+#  undef _Mdouble_
+#  undef __MATH_DECLARING_DOUBLE
+#  undef __MATH_DECLARING_FLOATN
+#  undef __REDIRFROM_X
+#  undef __REDIRTO_X
+# endif
+
+# if (__HAVE_DISTINCT_FLOAT128 || (__HAVE_FLOAT128 && !defined _LIBC))	\
       && __GLIBC_USE (IEC_60559_TYPES_EXT)
 #  define _Mdouble_ _Float128
 #  define __MATH_DECLARING_DOUBLE 0
@@ -1000,6 +1066,75 @@ iszero (__T __val)
 #  undef __REDIRFROM_X
 #  undef __REDIRTO_X
 # endif
+
+# if (__HAVE_DISTINCT_FLOAT32X || (__HAVE_FLOAT32X && !defined _LIBC))	\
+      && __GLIBC_USE (IEC_60559_TYPES_EXT)
+#  define _Mdouble_ _Float32x
+#  define __MATH_DECLARING_DOUBLE 0
+#  define __MATH_DECLARING_FLOATN 1
+#  define __REDIRFROM_X(function, reentrant) \
+  function ## f32x ## reentrant
+#  if __HAVE_DISTINCT_FLOAT32X
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## f32x ## reentrant ## _finite
+#  else
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## reentrant ## _finite
+#  endif
+#  include <bits/math-finite.h>
+#  undef _Mdouble_
+#  undef __MATH_DECLARING_DOUBLE
+#  undef __MATH_DECLARING_FLOATN
+#  undef __REDIRFROM_X
+#  undef __REDIRTO_X
+# endif
+
+# if (__HAVE_DISTINCT_FLOAT64X || (__HAVE_FLOAT64X && !defined _LIBC))	\
+      && __GLIBC_USE (IEC_60559_TYPES_EXT)
+#  define _Mdouble_ _Float64x
+#  define __MATH_DECLARING_DOUBLE 0
+#  define __MATH_DECLARING_FLOATN 1
+#  define __REDIRFROM_X(function, reentrant) \
+  function ## f64x ## reentrant
+#  if __HAVE_DISTINCT_FLOAT64X
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## f64x ## reentrant ## _finite
+#  elif __HAVE_FLOAT64X_LONG_DOUBLE
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## l ## reentrant ## _finite
+#  else
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## f128 ## reentrant ## _finite
+#  endif
+#  include <bits/math-finite.h>
+#  undef _Mdouble_
+#  undef __MATH_DECLARING_DOUBLE
+#  undef __MATH_DECLARING_FLOATN
+#  undef __REDIRFROM_X
+#  undef __REDIRTO_X
+# endif
+
+# if (__HAVE_DISTINCT_FLOAT128X || (__HAVE_FLOAT128X && !defined _LIBC)) \
+      && __GLIBC_USE (IEC_60559_TYPES_EXT)
+#  define _Mdouble_ _Float128x
+#  define __MATH_DECLARING_DOUBLE 0
+#  define __MATH_DECLARING_FLOATN 1
+#  define __REDIRFROM_X(function, reentrant) \
+  function ## f128x ## reentrant
+#  if __HAVE_DISTINCT_FLOAT128X
+#   define __REDIRTO_X(function, reentrant) \
+   __ ## function ## f128x ## reentrant ## _finite
+#  else
+#   error "non-disinct _Float128x"
+#  endif
+#  include <bits/math-finite.h>
+#  undef _Mdouble_
+#  undef __MATH_DECLARING_DOUBLE
+#  undef __MATH_DECLARING_FLOATN
+#  undef __REDIRFROM_X
+#  undef __REDIRTO_X
+# endif
+
 #endif /* __FINITE_MATH_ONLY__ > 0.  */
 
 #if __GLIBC_USE (IEC_60559_BFP_EXT)