diff options
Diffstat (limited to 'lib/libm/fmal.c')
| -rw-r--r-- | lib/libm/fmal.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/libm/fmal.c b/lib/libm/fmal.c index 1eceafd4..8dd0ac61 100644 --- a/lib/libm/fmal.c +++ b/lib/libm/fmal.c @@ -25,16 +25,19 @@ * SUCH DAMAGE. */ -#include "libm.h" +#include "libm.h" // for ldshape, ldshape::(anonymous) + +#include <float.h> // for LDBL_MANT_DIG, LDBL_MAX_EXP, LDBL_MIN +#include <math.h> // for nextafterl, scalbnl, frexpl, INFINITY, ilogbl #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 long double fmal(long double x, long double y, long double z) { return fma(x, y, z); } #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 -#include <fenv.h> +#include <fenv.h> // for feraiseexcept, fesetround, fetestexcept, fecl... #if LDBL_MANT_DIG == 64 -#define LASTBIT(u) (u.i.m & 1) +#define LASTBIT(u) ((u).i.m & 1) #define SPLIT (0x1p32L + 1) #elif LDBL_MANT_DIG == 113 #define LASTBIT(u) (u.i.lo & 1) @@ -288,7 +291,6 @@ long double fmal(long double x, long double y, long double z) adj = add_adjusted(r.lo, xy.lo); if (spread + ilogbl(r.hi) > -16383) return scalbnl(r.hi + adj, spread); - else - return add_and_denormalize(r.hi, adj, spread); + return add_and_denormalize(r.hi, adj, spread); } #endif |
