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.
*/
*** 42,88 ****
*/
#define HFMAX 5.948657476786158825428796633140035080982e+4931L
#define DBMIN 6.724206286224187012525355634643505205196e-4932L
! static const long double
! zero = 0.0L,
half = 0.5L,
hfmax = HFMAX, /* half of the maximum number */
dbmin = DBMIN; /* double of the minimum (normal) number */
long double
! remainderl(long double x, long double p) {
long double hp;
int sx;
if (isnanl(p))
return (x + p);
if (!finitel(x))
return (x - x);
p = fabsl(p);
if (p <= hfmax)
x = fmodl(x, p + p);
sx = signbitl(x);
x = fabsl(x);
if (p < dbmin) {
if (x + x > p) {
if (x == p)
x = zero;
else
x -= p; /* avoid x-x=-0 in RM mode */
if (x + x >= p)
x -= p;
}
} else {
hp = half * p;
if (x > hp) {
if (x == p)
x = zero;
else
x -= p; /* avoid x-x=-0 in RM mode */
if (x >= hp)
x -= p;
}
}
return (sx == 0 ? x : -x);
}
--- 43,98 ----
*/
#define HFMAX 5.948657476786158825428796633140035080982e+4931L
#define DBMIN 6.724206286224187012525355634643505205196e-4932L
! static const long double zero = 0.0L,
half = 0.5L,
hfmax = HFMAX, /* half of the maximum number */
dbmin = DBMIN; /* double of the minimum (normal) number */
long double
! remainderl(long double x, long double p)
! {
long double hp;
int sx;
if (isnanl(p))
return (x + p);
+
if (!finitel(x))
return (x - x);
+
p = fabsl(p);
+
if (p <= hfmax)
x = fmodl(x, p + p);
+
sx = signbitl(x);
x = fabsl(x);
+
if (p < dbmin) {
if (x + x > p) {
if (x == p)
x = zero;
else
x -= p; /* avoid x-x=-0 in RM mode */
+
if (x + x >= p)
x -= p;
}
} else {
hp = half * p;
+
if (x > hp) {
if (x == p)
x = zero;
else
x -= p; /* avoid x-x=-0 in RM mode */
+
if (x >= hp)
x -= p;
}
}
+
return (sx == 0 ? x : -x);
}