// File: /workspace/github_c_makefile_star2_O1/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 0x65a1(%rip), %xmm3     # 0x22888
movapd %xmm0, %xmm4
addsd %xmm3, %xmm4
movapd %xmm4, %xmm5
addsd %xmm3, %xmm5
xorpd %xmm0, %xmm0
xorpd %xmm2, %xmm2
cmpltsd %xmm4, %xmm2
andpd %xmm2, %xmm5
andnpd %xmm1, %xmm2
orpd %xmm5, %xmm2
ucomisd %xmm2, %xmm0
jbe 0x1c3b5
ucomisd %xmm0, %xmm4
movsd 0x6bba(%rip), %xmm0     # 0x22ee0
mulsd %xmm2, %xmm0
addsd 0x6bb6(%rip), %xmm0     # 0x22ee8
mulsd %xmm2, %xmm0
addsd 0x6bb2(%rip), %xmm0     # 0x22ef0
mulsd %xmm2, %xmm0
addsd 0x6bae(%rip), %xmm0     # 0x22ef8
mulsd %xmm2, %xmm0
addsd 0x6baa(%rip), %xmm0     # 0x22f00
mulsd %xmm2, %xmm0
addsd 0x6ba6(%rip), %xmm0     # 0x22f08
mulsd %xmm2, %xmm0
addsd 0x6ba2(%rip), %xmm0     # 0x22f10
mulsd %xmm2, %xmm0
addsd 0x6b9e(%rip), %xmm0     # 0x22f18
mulsd %xmm2, %xmm0
addsd 0x6b9a(%rip), %xmm0     # 0x22f20
movsd 0x6b9a(%rip), %xmm3     # 0x22f28
mulsd %xmm2, %xmm3
addsd 0x6b96(%rip), %xmm3     # 0x22f30
mulsd %xmm2, %xmm3
addsd 0x528a(%rip), %xmm3     # 0x21630
divsd %xmm3, %xmm0
jbe 0x1c3be
mulsd %xmm2, %xmm0
divsd %xmm1, %xmm0
retq
ucomisd %xmm0, %xmm2
jne 0x1c3d3
jp 0x1c3d3
retq
movsd 0x4e32(%rip), %xmm2     # 0x211f8
addsd %xmm2, %xmm0
addsd %xmm2, %xmm0
jmp 0x1c476
ucomisd %xmm0, %xmm4
movsd 0x6ab1(%rip), %xmm0     # 0x22e90
mulsd %xmm2, %xmm0
addsd 0x6aad(%rip), %xmm0     # 0x22e98
mulsd %xmm2, %xmm0
addsd 0x6aa9(%rip), %xmm0     # 0x22ea0
mulsd %xmm2, %xmm0
addsd 0x6aa5(%rip), %xmm0     # 0x22ea8
mulsd %xmm2, %xmm0
addsd 0x6aa1(%rip), %xmm0     # 0x22eb0
mulsd %xmm2, %xmm0
addsd 0x6a9d(%rip), %xmm0     # 0x22eb8
mulsd %xmm2, %xmm0
addsd 0x6599(%rip), %xmm0     # 0x229c0
movsd 0x6a91(%rip), %xmm4     # 0x22ec0
mulsd %xmm2, %xmm4
addsd 0x6a8d(%rip), %xmm4     # 0x22ec8
mulsd %xmm2, %xmm4
addsd 0x6a89(%rip), %xmm4     # 0x22ed0
mulsd %xmm2, %xmm4
addsd 0x6a85(%rip), %xmm4     # 0x22ed8
mulsd %xmm2, %xmm4
addsd 0x51d1(%rip), %xmm4     # 0x21630
divsd %xmm4, %xmm0
jbe 0x1c476
divsd %xmm1, %xmm2
addsd %xmm3, %xmm0
addsd %xmm3, %xmm0
mulsd %xmm2, %xmm0
retq
mulsd %xmm1, %xmm0
retq