projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix error in configure script using >/dev/null in noclobber mode
[musl]
/
src
/
math
/
fmal.c
diff --git
a/src/math/fmal.c
b/src/math/fmal.c
index
cbaf46e
..
ccbe434
100644
(file)
--- a/
src/math/fmal.c
+++ b/
src/math/fmal.c
@@
-115,7
+115,7
@@
static inline long double add_and_denormalize(long double a, long double b, int
if (bits_lost != 1 ^ (int)(u.bits.manl & 1))
sum.hi = nextafterl(sum.hi, INFINITY * sum.lo);
}
if (bits_lost != 1 ^ (int)(u.bits.manl & 1))
sum.hi = nextafterl(sum.hi, INFINITY * sum.lo);
}
- return
(ldexp(sum.hi, scale)
);
+ return
scalbnl(sum.hi, scale
);
}
/*
}
/*
@@
-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)
{
*/
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;
long double xs, ys, zs, adj;
struct dd xy, r;
int oround;
@@
-228,7
+229,7
@@
long double fmal(long double x, long double y, long double z)
}
}
if (spread <= LDBL_MANT_DIG * 2)
}
}
if (spread <= LDBL_MANT_DIG * 2)
- zs =
ldexp
l(zs, -spread);
+ zs =
scalbn
l(zs, -spread);
else
zs = copysignl(LDBL_MIN, zs);
else
zs = copysignl(LDBL_MIN, zs);
@@
-254,7
+255,7
@@
long double fmal(long double x, long double y, long double z)
*/
fesetround(oround);
volatile long double vzs = zs; /* XXX gcc CSE bug workaround */
*/
fesetround(oround);
volatile long double vzs = zs; /* XXX gcc CSE bug workaround */
- return
(xy.hi + vzs + ldexpl(xy.lo, spread)
);
+ return
xy.hi + vzs + scalbnl(xy.lo, spread
);
}
if (oround != FE_TONEAREST) {
}
if (oround != FE_TONEAREST) {
@@
-264,13
+265,13
@@
long double fmal(long double x, long double y, long double z)
*/
fesetround(oround);
adj = r.lo + xy.lo;
*/
fesetround(oround);
adj = r.lo + xy.lo;
- return
(ldexpl(r.hi + adj, spread)
);
+ return
scalbnl(r.hi + adj, spread
);
}
adj = add_adjusted(r.lo, xy.lo);
if (spread + ilogbl(r.hi) > -16383)
}
adj = add_adjusted(r.lo, xy.lo);
if (spread + ilogbl(r.hi) > -16383)
- return
(ldexpl(r.hi + adj, spread)
);
+ return
scalbnl(r.hi + adj, spread
);
else
else
- return
(add_and_denormalize(r.hi, adj, spread)
);
+ return
add_and_denormalize(r.hi, adj, spread
);
}
#endif
}
#endif