X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmath%2Ffmaf.c;h=a1c7f4f83df1e3bb0f6c67c37765345db5be4feb;hb=71955b2ff88b40446611142429416536c709c961;hp=0dccf108471875e048b210e31408ef9525a23744;hpb=b69f695acedd4ce2798ef9ea28d834ceccc789bd;p=musl diff --git a/src/math/fmaf.c b/src/math/fmaf.c index 0dccf108..a1c7f4f8 100644 --- a/src/math/fmaf.c +++ b/src/math/fmaf.c @@ -37,6 +37,7 @@ */ float fmaf(float x, float y, float z) { + #pragma STDC FENV_ACCESS ON double xy, result; uint32_t hr, lr; @@ -54,7 +55,9 @@ float fmaf(float x, float y, float z) * If result is inexact, and exactly halfway between two float values, * we need to adjust the low-order bit in the direction of the error. */ +#ifdef FE_TOWARDZERO fesetround(FE_TOWARDZERO); +#endif volatile double vxy = xy; /* XXX work around gcc CSE bug */ double adjusted_result = vxy + z; fesetround(FE_TONEAREST);