// File: /workspace/github_c_makefile_star2_O3/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 0x6819(%rip), %xmm4     # 0x238b8
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 0x1d175
ucomisd %xmm0, %xmm5
movsd 0x6c2e(%rip), %xmm0     # 0x23d10
mulsd %xmm3, %xmm0
addsd 0x6c2a(%rip), %xmm0     # 0x23d18
mulsd %xmm3, %xmm0
addsd 0x6c26(%rip), %xmm0     # 0x23d20
mulsd %xmm3, %xmm0
addsd 0x6c22(%rip), %xmm0     # 0x23d28
mulsd %xmm3, %xmm0
addsd 0x6c1e(%rip), %xmm0     # 0x23d30
mulsd %xmm3, %xmm0
addsd 0x6c1a(%rip), %xmm0     # 0x23d38
mulsd %xmm3, %xmm0
addsd 0x6c16(%rip), %xmm0     # 0x23d40
mulsd %xmm3, %xmm0
addsd 0x6c12(%rip), %xmm0     # 0x23d48
mulsd %xmm3, %xmm0
addsd 0x6c0e(%rip), %xmm0     # 0x23d50
movsd 0x6c0e(%rip), %xmm4     # 0x23d58
mulsd %xmm3, %xmm4
addsd 0x6c0a(%rip), %xmm4     # 0x23d60
mulsd %xmm3, %xmm4
addsd 0x54fe(%rip), %xmm4     # 0x22660
divsd %xmm4, %xmm0
jbe 0x1d17e
mulsd %xmm0, %xmm2
divsd %xmm1, %xmm2
movapd %xmm2, %xmm0
retq
ucomisd %xmm0, %xmm3
jne 0x1d193
jp 0x1d193
retq
movsd 0x5092(%rip), %xmm2     # 0x22218
addsd %xmm2, %xmm0
addsd %xmm2, %xmm0
jmp 0x1d236
ucomisd %xmm0, %xmm5
movsd 0x6b21(%rip), %xmm0     # 0x23cc0
mulsd %xmm3, %xmm0
addsd 0x6b1d(%rip), %xmm0     # 0x23cc8
mulsd %xmm3, %xmm0
addsd 0x6b19(%rip), %xmm0     # 0x23cd0
mulsd %xmm3, %xmm0
addsd 0x6b15(%rip), %xmm0     # 0x23cd8
mulsd %xmm3, %xmm0
addsd 0x6b11(%rip), %xmm0     # 0x23ce0
mulsd %xmm3, %xmm0
addsd 0x6b0d(%rip), %xmm0     # 0x23ce8
mulsd %xmm3, %xmm0
addsd 0x67e1(%rip), %xmm0     # 0x239c8
movsd 0x6b01(%rip), %xmm5     # 0x23cf0
mulsd %xmm3, %xmm5
addsd 0x6afd(%rip), %xmm5     # 0x23cf8
mulsd %xmm3, %xmm5
addsd 0x6af9(%rip), %xmm5     # 0x23d00
mulsd %xmm3, %xmm5
addsd 0x6af5(%rip), %xmm5     # 0x23d08
mulsd %xmm3, %xmm5
addsd 0x5441(%rip), %xmm5     # 0x22660
divsd %xmm5, %xmm0
jbe 0x1d236
divsd %xmm1, %xmm2
addsd %xmm4, %xmm0
addsd %xmm4, %xmm0
mulsd %xmm2, %xmm0
retq
mulsd %xmm1, %xmm0
retq