summaryrefslogtreecommitdiff
path: root/lib/libm/lgamma_r.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libm/lgamma_r.c')
-rw-r--r--lib/libm/lgamma_r.c66
1 files changed, 24 insertions, 42 deletions
diff --git a/lib/libm/lgamma_r.c b/lib/libm/lgamma_r.c
index d3f901ae..a6345f11 100644
--- a/lib/libm/lgamma_r.c
+++ b/lib/libm/lgamma_r.c
@@ -85,20 +85,20 @@
static const double pi = 3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18
*/
- a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */
- a1 = 3.22467033424113591611e-01, /* 0x3FD4A34C, 0xC4A60FAD */
- a2 = 6.73523010531292681824e-02, /* 0x3FB13E00, 0x1A5562A7 */
- a3 = 2.05808084325167332806e-02, /* 0x3F951322, 0xAC92547B */
- a4 = 7.38555086081402883957e-03, /* 0x3F7E404F, 0xB68FEFE8 */
- a5 = 2.89051383673415629091e-03, /* 0x3F67ADD8, 0xCCB7926B */
- a6 = 1.19270763183362067845e-03, /* 0x3F538A94, 0x116F3F5D */
- a7 = 5.10069792153511336608e-04, /* 0x3F40B6C6, 0x89B99C00 */
- a8 = 2.20862790713908385557e-04, /* 0x3F2CF2EC, 0xED10E54D */
- a9 = 1.08011567247583939954e-04, /* 0x3F1C5088, 0x987DFB07 */
- a10 = 2.52144565451257326939e-05, /* 0x3EFA7074, 0x428CFA52 */
- a11 = 4.48640949618915160150e-05, /* 0x3F07858E, 0x90A45837 */
- tc = 1.46163214496836224576e+00, /* 0x3FF762D8, 0x6356BE3F */
- tf = -1.21486290535849611461e-01, /* 0xBFBF19B9, 0xBCC38A42 */
+ a0 = 7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */
+ a1 = 3.22467033424113591611e-01, /* 0x3FD4A34C, 0xC4A60FAD */
+ a2 = 6.73523010531292681824e-02, /* 0x3FB13E00, 0x1A5562A7 */
+ a3 = 2.05808084325167332806e-02, /* 0x3F951322, 0xAC92547B */
+ a4 = 7.38555086081402883957e-03, /* 0x3F7E404F, 0xB68FEFE8 */
+ a5 = 2.89051383673415629091e-03, /* 0x3F67ADD8, 0xCCB7926B */
+ a6 = 1.19270763183362067845e-03, /* 0x3F538A94, 0x116F3F5D */
+ a7 = 5.10069792153511336608e-04, /* 0x3F40B6C6, 0x89B99C00 */
+ a8 = 2.20862790713908385557e-04, /* 0x3F2CF2EC, 0xED10E54D */
+ a9 = 1.08011567247583939954e-04, /* 0x3F1C5088, 0x987DFB07 */
+ a10 = 2.52144565451257326939e-05, /* 0x3EFA7074, 0x428CFA52 */
+ a11 = 4.48640949618915160150e-05, /* 0x3F07858E, 0x90A45837 */
+ tc = 1.46163214496836224576e+00, /* 0x3FF762D8, 0x6356BE3F */
+ tf = -1.21486290535849611461e-01, /* 0xBFBF19B9, 0xBCC38A42 */
/* tt = -(tail of tf) */
tt = -3.63867699703950536541e-18, /* 0xBC50C7CA, 0xA48A971F */
t0 = 4.83836122723810047042e-01, /* 0x3FDEF72B, 0xC8EE38A2 */
@@ -242,48 +242,32 @@ double __lgamma_r(double x, int *signgamp)
switch (i) {
case 0:
z = y * y;
- p1 = a0 +
- z * (a2 +
- z * (a4 + z * (a6 + z * (a8 + z * a10))));
- p2 = z *
- (a1 +
- z * (a3 +
- z * (a5 + z * (a7 + z * (a9 + z * a11)))));
+ p1 = a0 + z * (a2 + z * (a4 + z * (a6 + z * (a8 + z * a10))));
+ p2 = z * (a1 + z * (a3 + z * (a5 + z * (a7 + z * (a9 + z * a11)))));
p = y * p1 + p2;
r += (p - 0.5 * y);
break;
case 1:
z = y * y;
w = z * y;
- p1 = t0 +
- w * (t3 +
- w * (t6 + w * (t9 + w * t12))); /* parallel
- comp
- */
+ p1 = t0 + w * (t3 + w * (t6 + w * (t9 + w * t12))); /* parallel
+ comp
+ */
p2 = t1 + w * (t4 + w * (t7 + w * (t10 + w * t13)));
p3 = t2 + w * (t5 + w * (t8 + w * (t11 + w * t14)));
p = z * p1 - (tt - w * (p2 + y * p3));
r += tf + p;
break;
case 2:
- p1 = y *
- (u0 +
- y * (u1 +
- y * (u2 + y * (u3 + y * (u4 + y * u5)))));
- p2 = 1.0 +
- y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * v5))));
+ p1 = y * (u0 + y * (u1 + y * (u2 + y * (u3 + y * (u4 + y * u5)))));
+ p2 = 1.0 + y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * v5))));
r += -0.5 * y + p1 / p2;
}
} else if (ix < 0x40200000) { /* x < 8.0 */
i = (int)x;
y = x - (double)i;
- p = y *
- (s0 +
- y * (s1 +
- y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6))))));
- q = 1.0 +
- y * (r1 +
- y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * r6)))));
+ p = y * (s0 + y * (s1 + y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6))))));
+ q = 1.0 + y * (r1 + y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * r6)))));
r = 0.5 * y + p / q;
z = 1.0; /* lgamma(1+s) = log(s) + lgamma(s) */
switch (i) {
@@ -304,9 +288,7 @@ double __lgamma_r(double x, int *signgamp)
t = log(x);
z = 1.0 / x;
y = z * z;
- w = w0 +
- z * (w1 +
- y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * w6)))));
+ w = w0 + z * (w1 + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * w6)))));
r = (x - 0.5) * (t - 1.0) + w;
} else /* 2**58 <= x <= inf */
r = x * (log(x) - 1.0);