Print this page
11210 libm should be cstyle(1ONBLD) clean
*** 20,29 ****
--- 20,30 ----
*/
/*
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
*/
+
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
*** 44,102 ****
#define TINY 1.0e-20L /* single: 1e-5, double: 1e-10, quad: 1e-20 */
#define LG10OVT 4933.L /* single: 39, double: 309, quad: 4933 */
#define LG10UFT -4966.L /* single: -45, double: -323, quad: -4966 */
#define M 48
! /* logt2hi : last 32 bits is zero for quad prec */
#define LOGT2HI 0.30102999566398119521373889472420986034688L
#define LOGT2LO 2.831664213089468167896664371953e-31L
! static const long double
! zero = 0.0L,
tiny = TINY * TINY,
one = 1.0L,
lg10 = 3.321928094887362347870319429489390175865e+0000L,
ln10 = 2.302585092994045684017991454684364207601e+0000L,
logt2hi = LOGT2HI,
logt2lo = LOGT2LO,
lg10ovt = LG10OVT,
lg10uft = LG10UFT;
long double
! exp10l(long double x) {
long double t, tenp;
int k;
if (!finitel(x)) {
if (isnanl(x) || x > zero)
return (x + x);
else
return (zero);
}
if (fabsl(x) < tiny)
return (one + x);
! if (x <= lg10ovt)
if (x >= lg10uft) {
! k = (int) x;
tenp = 10.0L;
/* x is a small +integer */
! if (0 <= k && k <= M && (long double) k == x) {
t = one;
if (k & 1)
t *= tenp;
k >>= 1;
while (k) {
tenp *= tenp;
if (k & 1)
t *= tenp;
k >>= 1;
}
return (t);
}
t = anintl(x * lg10);
! return (scalbnl(expl(ln10 * ((x - t * logt2hi) -
! t * logt2lo)), (int) t));
! } else
return (scalbnl(one, -50000)); /* underflow */
! else
return (scalbnl(one, 50000)); /* overflow */
}
--- 45,115 ----
#define TINY 1.0e-20L /* single: 1e-5, double: 1e-10, quad: 1e-20 */
#define LG10OVT 4933.L /* single: 39, double: 309, quad: 4933 */
#define LG10UFT -4966.L /* single: -45, double: -323, quad: -4966 */
#define M 48
! /* logt2hi : last 32 bits is zero for quad prec */
#define LOGT2HI 0.30102999566398119521373889472420986034688L
#define LOGT2LO 2.831664213089468167896664371953e-31L
! static const long double zero = 0.0L,
tiny = TINY * TINY,
one = 1.0L,
lg10 = 3.321928094887362347870319429489390175865e+0000L,
ln10 = 2.302585092994045684017991454684364207601e+0000L,
logt2hi = LOGT2HI,
logt2lo = LOGT2LO,
lg10ovt = LG10OVT,
lg10uft = LG10UFT;
long double
! exp10l(long double x)
! {
long double t, tenp;
int k;
if (!finitel(x)) {
if (isnanl(x) || x > zero)
return (x + x);
else
return (zero);
}
+
if (fabsl(x) < tiny)
return (one + x);
!
! if (x <= lg10ovt) {
if (x >= lg10uft) {
! k = (int)x;
tenp = 10.0L;
+
/* x is a small +integer */
! if (0 <= k && k <= M && (long double)k == x) {
t = one;
+
if (k & 1)
t *= tenp;
+
k >>= 1;
+
while (k) {
tenp *= tenp;
+
if (k & 1)
t *= tenp;
+
k >>= 1;
}
+
return (t);
}
+
t = anintl(x * lg10);
! return (scalbnl(expl(ln10 * ((x - t * logt2hi) - t *
! logt2lo)), (int)t));
! } else {
return (scalbnl(one, -50000)); /* underflow */
! }
! } else {
return (scalbnl(one, 50000)); /* overflow */
+ }
}