#define INFINITY __builtin_inff()
#else
#define NAN (0.0f/0.0f)
-#define INFINITY 1e40f
+#define INFINITY 1e5000f
#endif
#define HUGE_VALF INFINITY
#define MATH_ERREXCEPT 2
#define math_errhandling 2
-#define FP_ILOGBNAN (-1-(int)(((unsigned)-1)>>1))
+#define FP_ILOGBNAN (-1-0x7fffffff)
#define FP_ILOGB0 FP_ILOGBNAN
#define FP_NAN 0
#define FP_SUBNORMAL 3
#define FP_NORMAL 4
+#ifdef __FP_FAST_FMA
+#define FP_FAST_FMA 1
+#endif
+
+#ifdef __FP_FAST_FMAF
+#define FP_FAST_FMAF 1
+#endif
+
+#ifdef __FP_FAST_FMAL
+#define FP_FAST_FMAL 1
+#endif
+
int __fpclassify(double);
int __fpclassifyf(float);
int __fpclassifyl(long double);
static __inline unsigned __FLOAT_BITS(float __f)
{
- union {float __f; unsigned __i;} __u = {__f};
+ union {float __f; unsigned __i;} __u;
+ __u.__f = __f;
return __u.__i;
}
static __inline unsigned long long __DOUBLE_BITS(double __f)
{
- union {double __f; unsigned long long __i;} __u = {__f};
+ union {double __f; unsigned long long __i;} __u;
+ __u.__f = __f;
return __u.__i;
}
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define HUGE 3.40282346638528859812e+38F
+double drem(double, double);
+float dremf(float, float);
+
+int finite(double);
+int finitef(float);
+
double scalb(double, double);
float scalbf(float, float);