X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=inline;f=src%2Fmath%2Ffmal.c;h=87e30fcf65394f71b34027081feb9cab0f013ca4;hb=1e5eb73545ca6cfe8b918798835aaf6e07af5beb;hp=be64f145bbaeee42d5f29b63ce87f31251c15942;hpb=2786c7d21611b9fa3b2fe356542cf213e7dd0ba4;p=musl diff --git a/src/math/fmal.c b/src/math/fmal.c index be64f145..87e30fcf 100644 --- a/src/math/fmal.c +++ b/src/math/fmal.c @@ -162,6 +162,7 @@ static inline struct dd dd_mul(long double a, long double b) */ long double fmal(long double x, long double y, long double z) { + #pragma STDC FENV_ACCESS ON long double xs, ys, zs, adj; struct dd xy, r; int oround; @@ -261,6 +262,8 @@ long double fmal(long double x, long double y, long double z) /* * There is no need to worry about double rounding in directed * rounding modes. + * TODO: underflow is not raised correctly, example in downward rounding: + * fmal(0x1.0000000001p-16000L, 0x1.0000000001p-400L, -0x1p-16440L) */ fesetround(oround); adj = r.lo + xy.lo;