// File: /workspace/github_c_makefile_star2_O2/c-zhou[P]yahs/binomlite.c
// Function: gam1
static double gam1(double a)
{
/*     ------------------------------------------------------------------ */
/*     COMPUTATION OF 1/GAMMA(A+1) - 1  FOR -0.5 <= A <= 1.5 */
/*     ------------------------------------------------------------------ */

    double d, t, w, bot, top;

    t = a;
    d = a - 0.5;
    // t := if(a > 1/2)  a-1  else  a
    if (d > 0.)
    t = d - 0.5;
    if (t < 0.) { /* L30: */
    static double
        r[9] = { -.422784335098468,-.771330383816272,
             -.244757765222226,.118378989872749,9.30357293360349e-4,
             -.0118290993445146,.00223047661158249,2.66505979058923e-4,
             -1.32674909766242e-4 },
        s1 = .273076135303957,
        s2 = .0559398236957378;

    top = (((((((r[8] * t + r[7]) * t + r[6]) * t + r[5]) * t + r[4]
             ) * t + r[3]) * t + r[2]) * t + r[1]) * t + r[0];
    bot = (s2 * t + s1) * t + 1.;
    w = top / bot;
    if (d > 0.)
        return t * w / a;
    else
        return a * (w + 0.5 + 0.5);

    } else if (t == 0) { // L10: a in {0, 1}
    return 0.;

    } else { /* t > 0;  L20: */
    static double
        p[7] = { .577215664901533,-.409078193005776,
             -.230975380857675,.0597275330452234,.0076696818164949,
             -.00514889771323592,5.89597428611429e-4 },
        q[5] = { 1.,.427569613095214,.158451672430138,
             .0261132021441447,.00423244297896961 };

    top = (((((p[6] * t + p[5]) * t + p[4]) * t + p[3]) * t + p[2]
           ) * t + p[1]) * t + p[0];
    bot = (((q[4] * t + q[3]) * t + q[2]) * t + q[1]) * t + 1.;
    w = top / bot;
    if (d > 0.) /* L21: */
        return t / a * (w - 0.5 - 0.5);
    else
        return a * w;
    }
}

// Assembly:
movapd %xmm0, %xmm1
movsd 0x7087(%rip), %xmm4     # 0x1f780
movapd %xmm0, %xmm5
addsd %xmm4, %xmm5
movapd %xmm5, %xmm2
addsd %xmm4, %xmm2
xorpd %xmm0, %xmm0
xorpd %xmm3, %xmm3
cmpltsd %xmm5, %xmm3
movapd %xmm3, %xmm6
andpd %xmm2, %xmm6
andnpd %xmm1, %xmm3
orpd %xmm6, %xmm3
ucomisd %xmm3, %xmm0
jbe 0x187cf
ucomisd %xmm0, %xmm5
movsd 0x74b4(%rip), %xmm0     # 0x1fbf0
mulsd %xmm3, %xmm0
addsd 0x74b0(%rip), %xmm0     # 0x1fbf8
mulsd %xmm3, %xmm0
addsd 0x74ac(%rip), %xmm0     # 0x1fc00
mulsd %xmm3, %xmm0
addsd 0x74a8(%rip), %xmm0     # 0x1fc08
mulsd %xmm3, %xmm0
addsd 0x74a4(%rip), %xmm0     # 0x1fc10
mulsd %xmm3, %xmm0
addsd 0x74a0(%rip), %xmm0     # 0x1fc18
mulsd %xmm3, %xmm0
addsd 0x749c(%rip), %xmm0     # 0x1fc20
mulsd %xmm3, %xmm0
addsd 0x7498(%rip), %xmm0     # 0x1fc28
mulsd %xmm3, %xmm0
addsd 0x7494(%rip), %xmm0     # 0x1fc30
movsd 0x7494(%rip), %xmm4     # 0x1fc38
mulsd %xmm3, %xmm4
addsd 0x7490(%rip), %xmm4     # 0x1fc40
mulsd %xmm3, %xmm4
addsd 0x5e5c(%rip), %xmm4     # 0x1e618
divsd %xmm4, %xmm0
jbe 0x187d8
mulsd %xmm0, %xmm2
divsd %xmm1, %xmm2
movapd %xmm2, %xmm0
retq
ucomisd %xmm0, %xmm3
jne 0x187ed
jp 0x187ed
retq
movsd 0x5a00(%rip), %xmm2     # 0x1e1e0
addsd %xmm2, %xmm0
addsd %xmm2, %xmm0
jmp 0x18890
ucomisd %xmm0, %xmm5
movsd 0x73a7(%rip), %xmm0     # 0x1fba0
mulsd %xmm3, %xmm0
addsd 0x73a3(%rip), %xmm0     # 0x1fba8
mulsd %xmm3, %xmm0
addsd 0x739f(%rip), %xmm0     # 0x1fbb0
mulsd %xmm3, %xmm0
addsd 0x739b(%rip), %xmm0     # 0x1fbb8
mulsd %xmm3, %xmm0
addsd 0x7397(%rip), %xmm0     # 0x1fbc0
mulsd %xmm3, %xmm0
addsd 0x7393(%rip), %xmm0     # 0x1fbc8
mulsd %xmm3, %xmm0
addsd 0x6fcf(%rip), %xmm0     # 0x1f810
movsd 0x7387(%rip), %xmm5     # 0x1fbd0
mulsd %xmm3, %xmm5
addsd 0x7383(%rip), %xmm5     # 0x1fbd8
mulsd %xmm3, %xmm5
addsd 0x737f(%rip), %xmm5     # 0x1fbe0
mulsd %xmm3, %xmm5
addsd 0x737b(%rip), %xmm5     # 0x1fbe8
mulsd %xmm3, %xmm5
addsd 0x5d9f(%rip), %xmm5     # 0x1e618
divsd %xmm5, %xmm0
jbe 0x18890
divsd %xmm1, %xmm2
addsd %xmm4, %xmm0
addsd %xmm4, %xmm0
mulsd %xmm2, %xmm0
retq
mulsd %xmm1, %xmm0
retq