diff options
Diffstat (limited to 'math')
-rw-r--r-- | math/Makefile | 3 | ||||
-rw-r--r-- | math/math.h | 42 |
2 files changed, 42 insertions, 3 deletions
diff --git a/math/Makefile b/math/Makefile index e84f86a..576e108 100644 --- a/math/Makefile +++ b/math/Makefile @@ -27,7 +27,8 @@ headers := math.h bits/mathcalls.h bits/mathinline.h bits/huge_val.h \ fpu_control.h complex.h bits/cmathcalls.h fenv.h \ bits/fenv.h bits/fenvinline.h bits/mathdef.h tgmath.h \ bits/math-finite.h bits/math-vector.h \ - bits/libm-simd-decl-stubs.h bits/iscanonical.h + bits/libm-simd-decl-stubs.h bits/iscanonical.h \ + bits/flt-eval-method.h # FPU support code. aux := setfpucw fpu_control diff --git a/math/math.h b/math/math.h index 75ccfc3..70bf8e5 100644 --- a/math/math.h +++ b/math/math.h @@ -54,13 +54,51 @@ __BEGIN_DECLS # endif #endif -/* Get the architecture specific values describing the floating-point - evaluation. The following symbols will get defined: +/* Get __GLIBC_FLT_EVAL_METHOD. */ +#include <bits/flt-eval-method.h> + +#ifdef __USE_ISOC99 +/* Define the following typedefs. float_t floating-point type at least as wide as `float' used to evaluate `float' expressions double_t floating-point type at least as wide as `double' used to evaluate `double' expressions +*/ +# if __GLIBC_FLT_EVAL_METHOD == 0 || __GLIBC_FLT_EVAL_METHOD == 16 +typedef float float_t; +typedef double double_t; +# elif __GLIBC_FLT_EVAL_METHOD == 1 +typedef double float_t; +typedef double double_t; +# elif __GLIBC_FLT_EVAL_METHOD == 2 +typedef long double float_t; +typedef long double double_t; +# elif __GLIBC_FLT_EVAL_METHOD == 32 +typedef _Float32 float_t; +typedef double double_t; +# elif __GLIBC_FLT_EVAL_METHOD == 33 +typedef _Float32x float_t; +typedef _Float32x double_t; +# elif __GLIBC_FLT_EVAL_METHOD == 64 +typedef _Float64 float_t; +typedef _Float64 double_t; +# elif __GLIBC_FLT_EVAL_METHOD == 65 +typedef _Float64x float_t; +typedef _Float64x double_t; +# elif __GLIBC_FLT_EVAL_METHOD == 128 +typedef _Float128 float_t; +typedef _Float128 double_t; +# elif __GLIBC_FLT_EVAL_METHOD == 129 +typedef _Float128x float_t; +typedef _Float128x double_t; +# else +# error "Unknown __GLIBC_FLT_EVAL_METHOD" +# endif +#endif + +/* Get the architecture specific values describing the floating-point + evaluation. The following symbols will get defined: FP_FAST_FMA FP_FAST_FMAF |