summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/math.h14
1 files changed, 8 insertions, 6 deletions
diff --git a/include/math.h b/include/math.h
index 4c46a055..ae84a731 100644
--- a/include/math.h
+++ b/include/math.h
@@ -12,17 +12,18 @@ extern "C" {
#define __NEED___uint64_t
#include <bits/alltypes.h>
-#define __MAKE_FLOAT(i) (((union { int __i; float __f; }){ .__i = i }).__f)
-
-#define NAN __MAKE_FLOAT(0x7fc00000)
-#define INFINITY __MAKE_FLOAT(0x7f800000)
+#if 100*__GNUC__+__GNUC_MINOR__ >= 303
+#define NAN __builtin_nanf("")
+#define INFINITY __builtin_inff()
+#else
+#define NAN (0.0f/0.0f)
+#define INFINITY 1e40f
+#endif
#define HUGE_VALF INFINITY
#define HUGE_VAL ((double)INFINITY)
#define HUGE_VALL ((long double)INFINITY)
-#define MAXFLOAT __MAKE_FLOAT(0x7f7fffff)
-
#define MATH_ERRNO 1
#define MATH_EXCEPT 2
#define math_errhandling 2
@@ -301,6 +302,7 @@ float truncf(float);
long double truncl(long double);
#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+#define MAXFLOAT 3.40282347e+38F
#define M_E 2.7182818284590452354 /* e */
#define M_LOG2E 1.4426950408889634074 /* log_2 e */
#define M_LOG10E 0.43429448190325182765 /* log_10 e */