diff --git a/arch/arm/bits/float.h b/arch/arm/bits/float.h index 044b516b..75fdc9bc 100644 --- a/arch/arm/bits/float.h +++ b/arch/arm/bits/float.h @@ -1,14 +1,14 @@ #define FLT_ROUNDS 1 -#define FLT_EVAL_METHOD 2 +#define FLT_EVAL_METHOD 0 -#define LDBL_MIN 3.3621031431120935063e-4932L -#define LDBL_MAX 1.1897314953572317650e+4932L -#define LDBL_EPSILON 1.0842021724855044340e-19L +#define LDBL_MIN 2.2250738585072014e-308 +#define LDBL_MAX 1.7976931348623157e+308 +#define LDBL_EPSILON 2.2204460492503131e-16 -#define LDBL_MANT_DIG 64 -#define LDBL_MIN_EXP (-16381) -#define LDBL_MAX_EXP 16384 +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 -#define LDBL_DIG 18 -#define LDBL_MIN_10_EXP (-4931) -#define LDBL_MAX_10_EXP 4932 +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 diff --git a/src/stdlib/frexpl.c b/src/stdlib/frexpl.c index ecfff007..3472bf70 100644 --- a/src/stdlib/frexpl.c +++ b/src/stdlib/frexpl.c @@ -1,5 +1,8 @@ #include #include +#include + +#if LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 /* This version is for 80-bit little endian long double */ @@ -23,3 +26,12 @@ long double frexpl(long double x, int *e) y.hw[4] |= 0x3ffe; return y.ld; } + +#else + +long double frexpl(long double x, int *e) +{ + return frexp(x, e); +} + +#endif