summaryrefslogtreecommitdiff
path: root/math/math.h
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/math.h
parenteda162dd8a7d2ca0b1900aa57a78b9586800b4ec (diff)
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/math.h')
-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)