#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double exp(double);
double expdev();
double fabs(double);
double gfsr8();
double log(double);
double norm8();
double sqrt(double);
double rgamma(double a, double scale) {
  static double a1 = 0.3333333;
  static double a2 = -0.250003;
  static double a3 = 0.2000062;
  static double a4 = -0.1662921;
  static double a5 = 0.1423657;
  static double a6 = -0.1367177;
  static double a7 = 0.1233795;
  static double e1 = 1.0;
  static double e2 = 0.4999897;
  static double e3 = 0.166829;
  static double e4 = 0.0407753;
  static double e5 = 0.010293;
  static double q1 = 0.04166669;
  static double q2 = 0.02083148;
  static double q3 = 0.00801191;
  static double q4 = 0.00144121;
  static double q5 = -7.388e-5;
  static double q6 = 2.4511e-4;
  static double q7 = 2.424e-4;
  static double sqrt32 = 5.656854;
  static double aa = 0.;
  static double aaa = 0.;
  static double b, c, d, e, p, q, r, s, t, u, v, w, x;
  static double q0, s2, si;
  double ret_val;
  if (a < 1.0) {
    aa = 0.0;
    b = 1.0 + 0.36787944117144232159 * a;
    for (;;) {
      p = b * gfsr8();
      if (p >= 1.0) {
        ret_val = -log((b - p) / a);
        if (expdev() >= (1.0 - a) * log(ret_val))
          break;
      } else {
        ret_val = exp(log(p) / a);
        if (expdev() >= ret_val)
          break;
      }
    }
    return scale * ret_val;
  }
  if (a != aa) {
    aa = a;
    s2 = a - 0.5;
    s = sqrt(s2);
    d = sqrt32 - s * 12.0;
  }
  t = norm8();
  x = s + 0.5 * t;
  ret_val = x * x;
  if (t >= 0.0)
    return scale * ret_val;
  u = gfsr8();
  if (d * u <= t * t * t) {
    return scale * ret_val;
  }
  if (a != aaa) {
    aaa = a;
    r = 1.0 / a;
    q0 = ((((((q7 * r + q6) * r + q5) * r + q4) * r + q3) * r + q2) * r + q1) *
         r;
    if (a <= 3.686) {
      b = 0.463 + s + 0.178 * s2;
      si = 1.235;
      c = 0.195 / s - 0.079 + 0.16 * s;
    } else if (a <= 13.022) {
      b = 1.654 + 0.0076 * s2;
      si = 1.68 / s + 0.275;
      c = 0.062 / s + 0.024;
    } else {
      b = 1.77;
      si = 0.75;
      c = 0.1515 / s;
    }
  }
  if (x > 0.0) {
    v = t / (s + s);
    if (fabs(v) <= 0.25)
      q = q0 +
          0.5 * t * t *
              ((((((a7 * v + a6) * v + a5) * v + a4) * v + a3) * v + a2) * v +
               a1) *
              v;
    else
      q = q0 - s * t + 0.25 * t * t + (s2 + s2) * log(1.0 + v);
    if (log(1.0 - u) <= q)
      return scale * ret_val;
  }
  for (;;) {
    e = expdev();
    u = gfsr8();
    u = u + u - 1.0;
    if (u < 0.0)
      t = b - si * e;
    else
      t = b + si * e;
    if (t >= -0.71874483771719) {
      v = t / (s + s);
      if (fabs(v) <= 0.25)
        q = q0 +
            0.5 * t * t *
                ((((((a7 * v + a6) * v + a5) * v + a4) * v + a3) * v + a2) * v +
                 a1) *
                v;
      else
        q = q0 - s * t + 0.25 * t * t + (s2 + s2) * log(1.0 + v);
      if (q > 0.0) {
        if (q <= 0.5)
          w = ((((e5 * q + e4) * q + e3) * q + e2) * q + e1) * q;
        else
          w = exp(q) - 1.0;
        if (c * fabs(u) <= w * exp(e - 0.5 * t * t))
          break;
      }
    }
  }
  x = s + 0.5 * t;
  return scale * x * x;
}


x86 assembly (clang, -O0):
<rgamma>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  0xe86(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    12cb <rgamma+0x16b>
xorps  %xmm0,%xmm0
movsd  %xmm0,0x2f68(%rip)
movsd  -0x10(%rbp),%xmm0
movsd  0xf13(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe57(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2f53(%rip)
movsd  0x2f4b(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    $0x0,%al
call   1050 <gfsr8@plt>
movaps %xmm0,%xmm1
movsd  -0x28(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x2f4b(%rip)
movsd  0x2f43(%rip),%xmm0
movsd  0xe13(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     127a <rgamma+0x11a>
movsd  0x2f09(%rip),%xmm0
subsd  0x2f21(%rip),%xmm0
divsd  -0x10(%rbp),%xmm0
call   1070 <log@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    $0x0,%al
call   1060 <expdev@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  0xdbf(%rip),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1070 <log@plt>
movsd  -0x38(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x30(%rbp),%xmm0
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jb     1275 <rgamma+0x115>
jmp    12b7 <rgamma+0x157>
jmp    12b2 <rgamma+0x152>
movsd  0x2ea6(%rip),%xmm0
call   1070 <log@plt>
divsd  -0x10(%rbp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0x20(%rbp)
mov    $0x0,%al
call   1060 <expdev@plt>
ucomisd -0x20(%rbp),%xmm0
jb     12ad <rgamma+0x14d>
jmp    12b7 <rgamma+0x157>
jmp    12b2 <rgamma+0x152>
jmp    11b5 <rgamma+0x55>
movsd  -0x18(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1ce2 <rgamma+0xb82>
movsd  -0x10(%rbp),%xmm0
ucomisd 0x2e20(%rip),%xmm0
jne    12e9 <rgamma+0x189>
jp     12e9 <rgamma+0x189>
jmp    1363 <rgamma+0x203>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,0x2e02(%rip)
movsd  -0x10(%rbp),%xmm0
movsd  0xd0d(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x2e69(%rip)
movsd  0x2e61(%rip),%xmm0
call   1080 <sqrt@plt>
movsd  %xmm0,0x2e1c(%rip)
movsd  0x2dbc(%rip),%xmm1
movsd  0x2e0c(%rip),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xcb5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2db5(%rip)
mov    $0x0,%al
call   1030 <norm8@plt>
movsd  %xmm0,0x2dd6(%rip)
movsd  0x2dc6(%rip),%xmm1
movsd  0x2dc6(%rip),%xmm0
movsd  0xc86(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2dce(%rip)
movsd  0x2dc6(%rip),%xmm0
mulsd  0x2dbe(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0x2d91(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     13d8 <rgamma+0x278>
movsd  -0x18(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1ce2 <rgamma+0xb82>
mov    $0x0,%al
call   1050 <gfsr8@plt>
movsd  %xmm0,0x2d69(%rip)
movsd  0x2d29(%rip),%xmm1
mulsd  0x2d59(%rip),%xmm1
movsd  0x2d49(%rip),%xmm0
mulsd  0x2d41(%rip),%xmm0
mulsd  0x2d39(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     142d <rgamma+0x2cd>
movsd  -0x18(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1ce2 <rgamma+0xb82>
movsd  -0x10(%rbp),%xmm0
ucomisd 0x2cc6(%rip),%xmm0
jne    144b <rgamma+0x2eb>
jp     144b <rgamma+0x2eb>
jmp    1673 <rgamma+0x513>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,0x2ca8(%rip)
movsd  0xba0(%rip),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  %xmm0,0x2ccb(%rip)
movsd  0x2c6b(%rip),%xmm0
movsd  0x2cbb(%rip),%xmm2
movsd  0x2c53(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2ca3(%rip),%xmm2
movsd  0x2c33(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2c8b(%rip),%xmm2
movsd  0x2c13(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2c73(%rip),%xmm2
movsd  0x2bf3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2c5b(%rip),%xmm2
movsd  0x2bd3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2c43(%rip),%xmm2
movsd  0x2bb3(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  0x2c2b(%rip),%xmm0
movsd  %xmm0,0x2c5b(%rip)
movsd  0xafb(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jb     15a9 <rgamma+0x449>
movsd  0xb68(%rip),%xmm1
addsd  0x2c08(%rip),%xmm1
movsd  0x2c38(%rip),%xmm0
movsd  0xb48(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2bb0(%rip)
movsd  0xb28(%rip),%xmm0
movsd  %xmm0,0x2c18(%rip)
movsd  0xb10(%rip),%xmm1
divsd  0x2bc8(%rip),%xmm1
movsd  0xaf8(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0x2bb4(%rip),%xmm0
movsd  0xadc(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2b6c(%rip)
jmp    166e <rgamma+0x50e>
movsd  0xa6f(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jb     1631 <rgamma+0x4d1>
movsd  0x2bb4(%rip),%xmm0
movsd  0xa94(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa90(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2b24(%rip)
movsd  0xa6c(%rip),%xmm0
divsd  0x2b4c(%rip),%xmm0
movsd  0xa54(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2b78(%rip)
movsd  0xa38(%rip),%xmm0
divsd  0x2b28(%rip),%xmm0
movsd  0xa20(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2ae4(%rip)
jmp    1669 <rgamma+0x509>
movsd  0x9ff(%rip),%xmm0
movsd  %xmm0,0x2ac7(%rip)
movsd  0x9e7(%rip),%xmm0
movsd  %xmm0,0x2b2f(%rip)
movsd  0x9cf(%rip),%xmm0
divsd  0x2adf(%rip),%xmm0
movsd  %xmm0,0x2aa7(%rip)
jmp    166e <rgamma+0x50e>
jmp    1673 <rgamma+0x513>
movsd  0x2aed(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1890 <rgamma+0x730>
movsd  0x2ab8(%rip),%xmm0
movsd  0x2aa8(%rip),%xmm1
addsd  0x2aa0(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x2aac(%rip)
movsd  0x2aa4(%rip),%xmm1
movaps 0xa05(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x9d9(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     17aa <rgamma+0x64a>
movsd  0x2a97(%rip),%xmm1
movsd  0x92f(%rip),%xmm0
mulsd  0x2a5f(%rip),%xmm0
mulsd  0x2a57(%rip),%xmm0
movsd  0x2987(%rip),%xmm2
movsd  0x2a57(%rip),%xmm4
movsd  0x296f(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x2a3f(%rip),%xmm4
movsd  0x294f(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x2a27(%rip),%xmm4
movsd  0x292f(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x2a0f(%rip),%xmm4
movsd  0x290f(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x29f7(%rip),%xmm4
movsd  0x28ef(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x29df(%rip),%xmm4
movsd  0x28cf(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
movsd  0x29c3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x298b(%rip)
jmp    184d <rgamma+0x6ed>
movsd  0x29be(%rip),%xmm0
movsd  0x2986(%rip),%xmm1
movsd  0x2986(%rip),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x8b7(%rip),%xmm0
mulsd  0x2957(%rip),%xmm0
movsd  0x294f(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0x296a(%rip),%xmm0
addsd  0x2962(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0x7dd(%rip),%xmm0
addsd  0x292d(%rip),%xmm0
call   1070 <log@plt>
movsd  -0x48(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x40(%rbp),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x28e3(%rip)
movsd  0x7ab(%rip),%xmm0
subsd  0x28f3(%rip),%xmm0
call   1070 <log@plt>
movaps %xmm0,%xmm1
movsd  0x28c3(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     188b <rgamma+0x72b>
movsd  -0x18(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1ce2 <rgamma+0xb82>
jmp    1890 <rgamma+0x730>
jmp    1895 <rgamma+0x735>
mov    $0x0,%al
call   1060 <expdev@plt>
movsd  %xmm0,0x287c(%rip)
mov    $0x0,%al
call   1050 <gfsr8@plt>
movsd  %xmm0,0x289d(%rip)
movsd  0x2895(%rip),%xmm0
addsd  0x288d(%rip),%xmm0
movsd  0x735(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x2879(%rip)
xorps  %xmm0,%xmm0
ucomisd 0x286e(%rip),%xmm0
jbe    192c <rgamma+0x7cc>
movsd  0x2818(%rip),%xmm1
movsd  0x2888(%rip),%xmm0
movsd  0x2820(%rip),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x2821(%rip)
jmp    1954 <rgamma+0x7f4>
movsd  0x27d4(%rip),%xmm1
movsd  0x2844(%rip),%xmm0
movsd  0x27dc(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x27f4(%rip)
movsd  0x27ec(%rip),%xmm0
movsd  0x744(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1c9b <rgamma+0xb3b>
movsd  0x27d2(%rip),%xmm0
movsd  0x27c2(%rip),%xmm1
addsd  0x27ba(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,0x27c6(%rip)
movsd  0x27be(%rip),%xmm1
movaps 0x71f(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x6f3(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1a90 <rgamma+0x930>
movsd  0x27b1(%rip),%xmm1
movsd  0x649(%rip),%xmm0
mulsd  0x2779(%rip),%xmm0
mulsd  0x2771(%rip),%xmm0
movsd  0x26a1(%rip),%xmm2
movsd  0x2771(%rip),%xmm4
movsd  0x2689(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x2759(%rip),%xmm4
movsd  0x2669(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x2741(%rip),%xmm4
movsd  0x2649(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x2729(%rip),%xmm4
movsd  0x2629(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x2711(%rip),%xmm4
movsd  0x2609(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movsd  0x26f9(%rip),%xmm4
movsd  0x25e9(%rip),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
movsd  0x26dd(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x26a5(%rip)
jmp    1b33 <rgamma+0x9d3>
movsd  0x26d8(%rip),%xmm0
movsd  0x26a0(%rip),%xmm1
movsd  0x26a0(%rip),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x5d1(%rip),%xmm0
mulsd  0x2671(%rip),%xmm0
movsd  0x2669(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0x2684(%rip),%xmm0
addsd  0x267c(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0x4f7(%rip),%xmm0
addsd  0x2647(%rip),%xmm0
call   1070 <log@plt>
movsd  -0x58(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x50(%rbp),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x25fd(%rip)
movsd  0x25f5(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1c96 <rgamma+0xb36>
movsd  0x4c0(%rip),%xmm0
ucomisd 0x25d8(%rip),%xmm0
jb     1bdb <rgamma+0xa7b>
movsd  0x2542(%rip),%xmm0
movsd  0x25c2(%rip),%xmm2
movsd  0x252a(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x25aa(%rip),%xmm2
movsd  0x250a(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x2592(%rip),%xmm2
movsd  0x24ea(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x257a(%rip),%xmm2
movsd  0x24ca(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  0x2562(%rip),%xmm0
movsd  %xmm0,0x258a(%rip)
jmp    1bfc <rgamma+0xa9c>
movsd  0x254d(%rip),%xmm0
call   1040 <exp@plt>
movsd  0x410(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x2564(%rip)
movsd  0x250c(%rip),%xmm0
movsd  0x2544(%rip),%xmm1
movaps 0x4ad(%rip),%xmm2
pand   %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0x2538(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x24eb(%rip),%xmm1
movsd  0x3d3(%rip),%xmm0
mulsd  0x2503(%rip),%xmm0
movsd  0x24fb(%rip),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1040 <exp@plt>
movsd  -0x68(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x60(%rbp),%xmm0
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jb     1c91 <rgamma+0xb31>
jmp    1ca0 <rgamma+0xb40>
jmp    1c96 <rgamma+0xb36>
jmp    1c9b <rgamma+0xb3b>
jmp    1895 <rgamma+0x735>
movsd  0x2498(%rip),%xmm1
movsd  0x2498(%rip),%xmm0
movsd  0x358(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x24a0(%rip)
movsd  -0x18(%rbp),%xmm0
mulsd  0x2493(%rip),%xmm0
mulsd  0x248b(%rip),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rgamma>:
sub    $0x48,%rsp
movapd %xmm0,%xmm2
movsd  0xe90(%rip),%xmm0
ucomisd %xmm2,%xmm0
movsd  %xmm1,0x18(%rsp)
movsd  %xmm2,0x20(%rsp)
jbe    1269 <rgamma+0x109>
movq   $0x0,0x2ec7(%rip)
movsd  0xfa7(%rip),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  %xmm1,0x2eba(%rip)
subsd  %xmm2,%xmm0
movsd  %xmm0,0x40(%rsp)
jmp    11f8 <rgamma+0x98>
nopw   0x0(%rax,%rax,1)
call   1070 <log@plt>
divsd  0x20(%rsp),%xmm0
call   1040 <exp@plt>
movapd %xmm0,(%rsp)
xor    %eax,%eax
call   1060 <expdev@plt>
movapd (%rsp),%xmm2
ucomisd %xmm2,%xmm0
jae    1426 <rgamma+0x2c6>
movsd  0x2e75(%rip),%xmm0
movsd  %xmm0,(%rsp)
xor    %eax,%eax
call   1050 <gfsr8@plt>
mulsd  (%rsp),%xmm0
ucomisd 0xdf4(%rip),%xmm0
jb     11c0 <rgamma+0x60>
movsd  0x2e52(%rip),%xmm1
subsd  %xmm0,%xmm1
divsd  0x20(%rsp),%xmm1
movapd %xmm1,%xmm0
call   1070 <log@plt>
xorpd  0xf2f(%rip),%xmm0
movapd %xmm0,(%rsp)
xor    %eax,%eax
call   1060 <expdev@plt>
movsd  %xmm0,0x38(%rsp)
movapd (%rsp),%xmm0
call   1070 <log@plt>
movapd (%rsp),%xmm2
mulsd  0x40(%rsp),%xmm0
movsd  0x38(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jb     11eb <rgamma+0x8b>
jmp    1426 <rgamma+0x2c6>
movsd  0x2de7(%rip),%xmm0
ucomisd %xmm2,%xmm0
jne    1279 <rgamma+0x119>
jnp    12ca <rgamma+0x16a>
movsd  %xmm2,0x2dd7(%rip)
movsd  0xd7f(%rip),%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,0x2e23(%rip)
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     12a5 <rgamma+0x145>
sqrtsd %xmm0,%xmm0
jmp    12aa <rgamma+0x14a>
call   1080 <sqrt@plt>
movsd  %xmm0,0x2dde(%rip)
mulsd  0xd56(%rip),%xmm0
addsd  0xd56(%rip),%xmm0
movsd  %xmm0,0x2dae(%rip)
xor    %eax,%eax
call   1030 <norm8@plt>
movsd  %xmm0,0x2dbf(%rip)
movsd  0xd3f(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0x2da3(%rip),%xmm2
movsd  %xmm2,0x2db3(%rip)
mulsd  %xmm2,%xmm2
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jae    1426 <rgamma+0x2c6>
movapd %xmm2,(%rsp)
xor    %eax,%eax
call   1050 <gfsr8@plt>
movsd  %xmm0,0x2d85(%rip)
movsd  0x2d55(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x2d69(%rip),%xmm3
movapd %xmm3,%xmm2
mulsd  %xmm3,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm1,%xmm2
jae    163e <rgamma+0x4de>
movsd  0x2d13(%rip),%xmm1
movsd  0x20(%rsp),%xmm4
ucomisd %xmm4,%xmm1
jne    135f <rgamma+0x1ff>
jnp    14f8 <rgamma+0x398>
movsd  0xc99(%rip),%xmm1
divsd  %xmm4,%xmm1
movsd  0xcb5(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xcb1(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xcad(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xca9(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xca5(%rip),%xmm2
movsd  %xmm4,0x2cb5(%rip)
mulsd  %xmm1,%xmm2
addsd  0xc99(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xc95(%rip),%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,0x2ce1(%rip)
movsd  0xc89(%rip),%xmm1
ucomisd %xmm4,%xmm1
jae    1435 <rgamma+0x2d5>
movsd  0xcab(%rip),%xmm1
ucomisd %xmm4,%xmm1
jae    1498 <rgamma+0x338>
movabs $0x3ffc51eb851eb852,%rax
51 fc 3f
mov    %rax,0x2c68(%rip)
movabs $0x3fe8000000000000,%rax
mov    %rax,0x2caf(%rip)
movsd  0xcaf(%rip),%xmm1
divsd  0x2c6f(%rip),%xmm1
jmp    14f0 <rgamma+0x390>
mulsd  0x18(%rsp),%xmm2
movapd %xmm2,%xmm0
add    $0x48,%rsp
ret
movsd  0x2c53(%rip),%xmm1
movsd  0xc23(%rip),%xmm2
movsd  0x2c6b(%rip),%xmm4
mulsd  0xc1b(%rip),%xmm4
addsd  %xmm1,%xmm2
addsd  %xmm2,%xmm4
movsd  %xmm4,0x2c03(%rip)
movabs $0x3ff3c28f5c28f5c3,%rax
c2 f3 3f
movsd  0xc01(%rip),%xmm2
divsd  %xmm1,%xmm2
addsd  0xbfd(%rip),%xmm2
mov    %rax,0x2c36(%rip)
mulsd  0xbf6(%rip),%xmm1
addsd  %xmm2,%xmm1
jmp    14f0 <rgamma+0x390>
movsd  0x2c18(%rip),%xmm1
mulsd  0xbf0(%rip),%xmm1
addsd  0xbf0(%rip),%xmm1
movsd  %xmm1,0x2bb0(%rip)
movsd  0x2bd0(%rip),%xmm2
movsd  0xbe0(%rip),%xmm1
divsd  %xmm2,%xmm1
addsd  0xbdc(%rip),%xmm1
movsd  %xmm1,0x2be4(%rip)
movsd  0xbd4(%rip),%xmm1
divsd  %xmm2,%xmm1
addsd  0xbd0(%rip),%xmm1
movsd  %xmm1,0x2b78(%rip)
movsd  0x2ba8(%rip),%xmm1
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm1
jbe    16b8 <rgamma+0x558>
movsd  0x2b7a(%rip),%xmm2
movapd %xmm2,%xmm4
addsd  %xmm2,%xmm4
movapd %xmm3,%xmm1
divsd  %xmm4,%xmm1
movapd 0xc22(%rip),%xmm4
andpd  %xmm1,%xmm4
movsd  0xb96(%rip),%xmm5
ucomisd %xmm4,%xmm5
movsd  0x2b6a(%rip),%xmm4
jae    15a7 <rgamma+0x447>
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm4
movsd  0xb78(%rip),%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm4,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x2b46(%rip),%xmm0
addsd  %xmm0,%xmm0
movsd  %xmm0,0x38(%rsp)
addsd  0xa7c(%rip),%xmm1
movapd %xmm1,%xmm0
call   1070 <log@plt>
movapd %xmm0,%xmm2
mulsd  0x38(%rsp),%xmm2
addsd  0x20(%rsp),%xmm2
movsd  0x2afb(%rip),%xmm0
jmp    1613 <rgamma+0x4b3>
movsd  0xb29(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xb25(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xb21(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xb1d(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xb19(%rip),%xmm2
movsd  0xa39(%rip),%xmm5
mulsd  %xmm1,%xmm2
addsd  0xb0d(%rip),%xmm2
mulsd  %xmm3,%xmm5
mulsd  %xmm1,%xmm2
addsd  0xb05(%rip),%xmm2
mulsd  %xmm3,%xmm5
mulsd  %xmm5,%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm4,%xmm2
movsd  %xmm2,0x2a6d(%rip)
movsd  0x9dd(%rip),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
call   1070 <log@plt>
movsd  0x2a50(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     16b8 <rgamma+0x558>
movapd (%rsp),%xmm2
mulsd  0x18(%rsp),%xmm2
jmp    142c <rgamma+0x2cc>
movapd %xmm1,%xmm0
call   1040 <exp@plt>
addsd  0xab1(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x2a34(%rip),%xmm0
andpd  0xadc(%rip),%xmm0
mulsd  0x29f4(%rip),%xmm0
movapd %xmm0,0x20(%rsp)
movsd  0x2a0e(%rip),%xmm1
movsd  0x976(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  0x29de(%rip),%xmm0
call   1040 <exp@plt>
mulsd  (%rsp),%xmm0
ucomisd 0x20(%rsp),%xmm0
jae    1895 <rgamma+0x735>
xor    %eax,%eax
call   1060 <expdev@plt>
movsd  %xmm0,0x29b9(%rip)
xor    %eax,%eax
call   1050 <gfsr8@plt>
addsd  %xmm0,%xmm0
addsd  0xa36(%rip),%xmm0
movsd  %xmm0,0x29be(%rip)
movsd  0x29d6(%rip),%xmm1
movapd 0xa6e(%rip),%xmm2
xorpd  %xmm1,%xmm2
cmpltsd 0xa49(%rip),%xmm0
andpd  %xmm0,%xmm2
andnpd %xmm1,%xmm0
orpd   %xmm2,%xmm0
mulsd  0x296d(%rip),%xmm0
addsd  0x294d(%rip),%xmm0
movsd  %xmm0,0x2975(%rip)
ucomisd 0x9ed(%rip),%xmm0
jb     16b8 <rgamma+0x558>
movsd  0x295b(%rip),%xmm1
movapd %xmm1,%xmm3
addsd  %xmm1,%xmm3
movapd %xmm0,%xmm2
divsd  %xmm3,%xmm2
movapd 0xa03(%rip),%xmm3
andpd  %xmm2,%xmm3
movsd  0x977(%rip),%xmm4
ucomisd %xmm3,%xmm4
movsd  0x294b(%rip),%xmm3
jae    17c0 <rgamma+0x660>
mulsd  %xmm0,%xmm1
subsd  %xmm1,%xmm3
movsd  0x959(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm3,%xmm1
movsd  %xmm1,(%rsp)
movsd  0x2928(%rip),%xmm0
addsd  %xmm0,%xmm0
movsd  %xmm0,0x20(%rsp)
addsd  0x85e(%rip),%xmm2
movapd %xmm2,%xmm0
call   1070 <log@plt>
movapd %xmm0,%xmm1
mulsd  0x20(%rsp),%xmm1
addsd  (%rsp),%xmm1
jmp    182c <rgamma+0x6cc>
nopl   0x0(%rax)
movsd  0x910(%rip),%xmm1
mulsd  %xmm2,%xmm1
addsd  0x90c(%rip),%xmm1
mulsd  %xmm2,%xmm1
addsd  0x908(%rip),%xmm1
mulsd  %xmm2,%xmm1
addsd  0x904(%rip),%xmm1
mulsd  %xmm2,%xmm1
addsd  0x900(%rip),%xmm1
movsd  0x820(%rip),%xmm4
mulsd  %xmm2,%xmm1
addsd  0x8f4(%rip),%xmm1
mulsd  %xmm0,%xmm4
mulsd  %xmm2,%xmm1
addsd  0x8ec(%rip),%xmm1
mulsd  %xmm0,%xmm4
mulsd  %xmm4,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm3,%xmm1
movsd  %xmm1,0x2854(%rip)
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jbe    16b8 <rgamma+0x558>
movsd  0x7d6(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     164e <rgamma+0x4ee>
movsd  0x8c4(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0x8c0(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0x8bc(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0x8b8(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0x774(%rip),%xmm0
mulsd  %xmm1,%xmm0
jmp    165f <rgamma+0x4ff>
movsd  0x27fb(%rip),%xmm0
mulsd  0x77b(%rip),%xmm0
addsd  0x27e3(%rip),%xmm0
movsd  %xmm0,0x27f3(%rip)
movsd  0x18(%rsp),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
jmp    142c <rgamma+0x2cc>

LLVM IR (-O0):
@rgamma.a1 = internal global double 0x3FD55555318ABC87
@rgamma.a2 = internal global double -2.500030e-01
@rgamma.a3 = internal global double 0x3FC999CD9BFFA567
@rgamma.a4 = internal global double 0xBFC5490F3D8AA50A
@rgamma.a5 = internal global double 0x3FC2390A0CC93C1F
@rgamma.a6 = internal global double 0xBFC17FF73124653A
@rgamma.a7 = internal global double 0x3FBF95CC857F3062
@rgamma.e1 = internal global double 1.000000e+00
@rgamma.e2 = internal global double 0x3FDFFFD4CC758EF8
@rgamma.e3 = internal global double 1.668290e-01
@rgamma.e4 = internal global double 4.077530e-02
@rgamma.e5 = internal global double 1.029300e-02
@rgamma.q1 = internal global double 0x3FA555561DC3E03F
@rgamma.q2 = internal global double 0x3F9554D8F54F21FC
@rgamma.q3 = internal global double 8.011910e-03
@rgamma.q4 = internal global double 1.441210e-03
@rgamma.q5 = internal global double -7.388000e-05
@rgamma.q6 = internal global double 2.451100e-04
@rgamma.q7 = internal global double 2.424000e-04
@rgamma.sqrt32 = internal global double 0x4016A09E55C0FCB5
@rgamma.aa = internal global double 0.000000e+00
@rgamma.aaa = internal global double 0.000000e+00
@rgamma.b = internal global double 0.000000e+00
@rgamma.c = internal global double 0.000000e+00
@rgamma.d = internal global double 0.000000e+00
@rgamma.e = internal global double 0.000000e+00
@rgamma.p = internal global double 0.000000e+00
@rgamma.q = internal global double 0.000000e+00
@rgamma.r = internal global double 0.000000e+00
@rgamma.s = internal global double 0.000000e+00
@rgamma.t = internal global double 0.000000e+00
@rgamma.u = internal global double 0.000000e+00
@rgamma.v = internal global double 0.000000e+00
@rgamma.w = internal global double 0.000000e+00
@rgamma.x = internal global double 0.000000e+00
@rgamma.q0 = internal global double 0.000000e+00
@rgamma.s2 = internal global double 0.000000e+00
@rgamma.si = internal global double 0.000000e+00
define double @rgamma(double %0, double %1) {
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
store double %0, double* %4
store double %1, double* %5
%7 = load double, double* %4
%8 = fcmp olt double %7, 1.000000e+00
br i1 %8, label %9, label %51
9: ; preds = %2
store double 0.000000e+00, double* @rgamma.aa
%10 = load double, double* %4
%11 = call double @llvm.fmuladd.f64(double 0x3FD78B56362CEF38, double %10, double 1.000000e+00)
store double %11, double* @rgamma.b
br label %12
12: ; preds = %46, %9
%13 = load double, double* @rgamma.b
%14 = call double (...) @gfsr8()
%15 = fmul double %13, %14
store double %15, double* @rgamma.p
%16 = load double, double* @rgamma.p
%17 = fcmp oge double %16, 1.000000e+00
br i1 %17, label %18, label %35
18: ; preds = %12
%19 = load double, double* @rgamma.b
%20 = load double, double* @rgamma.p
%21 = fsub double %19, %20
%22 = load double, double* %4
%23 = fdiv double %21, %22
%24 = call double @log(double %23)
%25 = fneg double %24
store double %25, double* %6
%26 = call double (...) @expdev()
%27 = load double, double* %4
%28 = fsub double 1.000000e+00, %27
%29 = load double, double* %6
%30 = call double @log(double %29)
%31 = fmul double %28, %30
%32 = fcmp oge double %26, %31
br i1 %32, label %33, label %34
33: ; preds = %18
br label %47
34: ; preds = %18
br label %46
35: ; preds = %12
%36 = load double, double* @rgamma.p
%37 = call double @log(double %36)
%38 = load double, double* %4
%39 = fdiv double %37, %38
%40 = call double @exp(double %39)
store double %40, double* %6
%41 = call double (...) @expdev()
%42 = load double, double* %6
%43 = fcmp oge double %41, %42
br i1 %43, label %44, label %45
44: ; preds = %35
br label %47
45: ; preds = %35
br label %46
46: ; preds = %45, %34
br label %12
47: ; preds = %44, %33
%48 = load double, double* %5
%49 = load double, double* %6
%50 = fmul double %48, %49
store double %50, double* %3
br label %352
51: ; preds = %2
%52 = load double, double* %4
%53 = load double, double* @rgamma.aa
%54 = fcmp une double %52, %53
br i1 %54, label %55, label %65
55: ; preds = %51
%56 = load double, double* %4
store double %56, double* @rgamma.aa
%57 = load double, double* %4
%58 = fsub double %57, 5.000000e-01
store double %58, double* @rgamma.s2
%59 = load double, double* @rgamma.s2
%60 = call double @sqrt(double %59)
store double %60, double* @rgamma.s
%61 = load double, double* @rgamma.sqrt32
%62 = load double, double* @rgamma.s
%63 = fneg double %62
%64 = call double @llvm.fmuladd.f64(double %63, double 1.200000e+01, double %61)
store double %64, double* @rgamma.d
br label %65
65: ; preds = %55, %51
%66 = call double (...) @norm8()
store double %66, double* @rgamma.t
%67 = load double, double* @rgamma.s
%68 = load double, double* @rgamma.t
%69 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %68, double %67)
store double %69, double* @rgamma.x
%70 = load double, double* @rgamma.x
%71 = load double, double* @rgamma.x
%72 = fmul double %70, %71
store double %72, double* %6
%73 = load double, double* @rgamma.t
%74 = fcmp oge double %73, 0.000000e+00
br i1 %74, label %75, label %79
75: ; preds = %65
%76 = load double, double* %5
%77 = load double, double* %6
%78 = fmul double %76, %77
store double %78, double* %3
br label %352
79: ; preds = %65
%80 = call double (...) @gfsr8()
store double %80, double* @rgamma.u
%81 = load double, double* @rgamma.d
%82 = load double, double* @rgamma.u
%83 = fmul double %81, %82
%84 = load double, double* @rgamma.t
%85 = load double, double* @rgamma.t
%86 = fmul double %84, %85
%87 = load double, double* @rgamma.t
%88 = fmul double %86, %87
%89 = fcmp ole double %83, %88
br i1 %89, label %90, label %94
90: ; preds = %79
%91 = load double, double* %5
%92 = load double, double* %6
%93 = fmul double %91, %92
store double %93, double* %3
br label %352
94: ; preds = %79
%95 = load double, double* %4
%96 = load double, double* @rgamma.aaa
%97 = fcmp une double %95, %96
br i1 %97, label %98, label %152
98: ; preds = %94
%99 = load double, double* %4
store double %99, double* @rgamma.aaa
%100 = load double, double* %4
%101 = fdiv double 1.000000e+00, %100
store double %101, double* @rgamma.r
%102 = load double, double* @rgamma.q7
%103 = load double, double* @rgamma.r
%104 = load double, double* @rgamma.q6
%105 = call double @llvm.fmuladd.f64(double %102, double %103, double %104)
%106 = load double, double* @rgamma.r
%107 = load double, double* @rgamma.q5
%108 = call double @llvm.fmuladd.f64(double %105, double %106, double %107)
%109 = load double, double* @rgamma.r
%110 = load double, double* @rgamma.q4
%111 = call double @llvm.fmuladd.f64(double %108, double %109, double %110)
%112 = load double, double* @rgamma.r
%113 = load double, double* @rgamma.q3
%114 = call double @llvm.fmuladd.f64(double %111, double %112, double %113)
%115 = load double, double* @rgamma.r
%116 = load double, double* @rgamma.q2
%117 = call double @llvm.fmuladd.f64(double %114, double %115, double %116)
%118 = load double, double* @rgamma.r
%119 = load double, double* @rgamma.q1
%120 = call double @llvm.fmuladd.f64(double %117, double %118, double %119)
%121 = load double, double* @rgamma.r
%122 = fmul double %120, %121
store double %122, double* @rgamma.q0
%123 = load double, double* %4
%124 = fcmp ole double %123, 3.686000e+00
br i1 %124, label %125, label %135
125: ; preds = %98
%126 = load double, double* @rgamma.s
%127 = fadd double 4.630000e-01, %126
%128 = load double, double* @rgamma.s2
%129 = call double @llvm.fmuladd.f64(double 1.780000e-01, double %128, double %127)
store double %129, double* @rgamma.b
store double 1.235000e+00, double* @rgamma.si
%130 = load double, double* @rgamma.s
%131 = fdiv double 1.950000e-01, %130
%132 = fsub double %131, 7.900000e-02
%133 = load double, double* @rgamma.s
%134 = call double @llvm.fmuladd.f64(double 1.600000e-01, double %133, double %132)
store double %134, double* @rgamma.c
br label %151
135: ; preds = %98
%136 = load double, double* %4
%137 = fcmp ole double %136, 1.302200e+01
br i1 %137, label %138, label %147
138: ; preds = %135
%139 = load double, double* @rgamma.s2
%140 = call double @llvm.fmuladd.f64(double 0x3F7F212D77318FC5, double %139, double 1.654000e+00)
store double %140, double* @rgamma.b
%141 = load double, double* @rgamma.s
%142 = fdiv double 1.680000e+00, %141
%143 = fadd double %142, 2.750000e-01
store double %143, double* @rgamma.si
%144 = load double, double* @rgamma.s
%145 = fdiv double 6.200000e-02, %144
%146 = fadd double %145, 2.400000e-02
store double %146, double* @rgamma.c
br label %150
147: ; preds = %135
store double 1.770000e+00, double* @rgamma.b
store double 7.500000e-01, double* @rgamma.si
%148 = load double, double* @rgamma.s
%149 = fdiv double 1.515000e-01, %148
store double %149, double* @rgamma.c
br label %150
150: ; preds = %147, %138
br label %151
151: ; preds = %150, %125
br label %152
152: ; preds = %151, %94
%153 = load double, double* @rgamma.x
%154 = fcmp ogt double %153, 0.000000e+00
br i1 %154, label %155, label %220
155: ; preds = %152
%156 = load double, double* @rgamma.t
%157 = load double, double* @rgamma.s
%158 = load double, double* @rgamma.s
%159 = fadd double %157, %158
%160 = fdiv double %156, %159
store double %160, double* @rgamma.v
%161 = load double, double* @rgamma.v
%162 = call double @llvm.fabs.f64(double %161)
%163 = fcmp ole double %162, 2.500000e-01
br i1 %163, label %164, label %192
164: ; preds = %155
%165 = load double, double* @rgamma.q0
%166 = load double, double* @rgamma.t
%167 = fmul double 5.000000e-01, %166
%168 = load double, double* @rgamma.t
%169 = fmul double %167, %168
%170 = load double, double* @rgamma.a7
%171 = load double, double* @rgamma.v
%172 = load double, double* @rgamma.a6
%173 = call double @llvm.fmuladd.f64(double %170, double %171, double %172)
%174 = load double, double* @rgamma.v
%175 = load double, double* @rgamma.a5
%176 = call double @llvm.fmuladd.f64(double %173, double %174, double %175)
%177 = load double, double* @rgamma.v
%178 = load double, double* @rgamma.a4
%179 = call double @llvm.fmuladd.f64(double %176, double %177, double %178)
%180 = load double, double* @rgamma.v
%181 = load double, double* @rgamma.a3
%182 = call double @llvm.fmuladd.f64(double %179, double %180, double %181)
%183 = load double, double* @rgamma.v
%184 = load double, double* @rgamma.a2
%185 = call double @llvm.fmuladd.f64(double %182, double %183, double %184)
%186 = load double, double* @rgamma.v
%187 = load double, double* @rgamma.a1
%188 = call double @llvm.fmuladd.f64(double %185, double %186, double %187)
%189 = fmul double %169, %188
%190 = load double, double* @rgamma.v
%191 = call double @llvm.fmuladd.f64(double %189, double %190, double %165)
store double %191, double* @rgamma.q
br label %209
192: ; preds = %155
%193 = load double, double* @rgamma.q0
%194 = load double, double* @rgamma.s
%195 = load double, double* @rgamma.t
%196 = fneg double %194
%197 = call double @llvm.fmuladd.f64(double %196, double %195, double %193)
%198 = load double, double* @rgamma.t
%199 = fmul double 2.500000e-01, %198
%200 = load double, double* @rgamma.t
%201 = call double @llvm.fmuladd.f64(double %199, double %200, double %197)
%202 = load double, double* @rgamma.s2
%203 = load double, double* @rgamma.s2
%204 = fadd double %202, %203
%205 = load double, double* @rgamma.v
%206 = fadd double 1.000000e+00, %205
%207 = call double @log(double %206)
%208 = call double @llvm.fmuladd.f64(double %204, double %207, double %201)
store double %208, double* @rgamma.q
br label %209
209: ; preds = %192, %164
%210 = load double, double* @rgamma.u
%211 = fsub double 1.000000e+00, %210
%212 = call double @log(double %211)
%213 = load double, double* @rgamma.q
%214 = fcmp ole double %212, %213
br i1 %214, label %215, label %219
215: ; preds = %209
%216 = load double, double* %5
%217 = load double, double* %6
%218 = fmul double %216, %217
store double %218, double* %3
br label %352
219: ; preds = %209
br label %220
220: ; preds = %219, %152
br label %221
221: ; preds = %342, %220
%222 = call double (...) @expdev()
store double %222, double* @rgamma.e
%223 = call double (...) @gfsr8()
store double %223, double* @rgamma.u
%224 = load double, double* @rgamma.u
%225 = load double, double* @rgamma.u
%226 = fadd double %224, %225
%227 = fsub double %226, 1.000000e+00
store double %227, double* @rgamma.u
%228 = load double, double* @rgamma.u
%229 = fcmp olt double %228, 0.000000e+00
br i1 %229, label %230, label %236
230: ; preds = %221
%231 = load double, double* @rgamma.b
%232 = load double, double* @rgamma.si
%233 = load double, double* @rgamma.e
%234 = fneg double %232
%235 = call double @llvm.fmuladd.f64(double %234, double %233, double %231)
store double %235, double* @rgamma.t
br label %241
236: ; preds = %221
%237 = load double, double* @rgamma.b
%238 = load double, double* @rgamma.si
%239 = load double, double* @rgamma.e
%240 = call double @llvm.fmuladd.f64(double %238, double %239, double %237)
store double %240, double* @rgamma.t
br label %241
241: ; preds = %236, %230
%242 = load double, double* @rgamma.t
%243 = fcmp oge double %242, 0xBFE6FFF52C8540C9
br i1 %243, label %244, label %342
244: ; preds = %241
%245 = load double, double* @rgamma.t
%246 = load double, double* @rgamma.s
%247 = load double, double* @rgamma.s
%248 = fadd double %246, %247
%249 = fdiv double %245, %248
store double %249, double* @rgamma.v
%250 = load double, double* @rgamma.v
%251 = call double @llvm.fabs.f64(double %250)
%252 = fcmp ole double %251, 2.500000e-01
br i1 %252, label %253, label %281
253: ; preds = %244
%254 = load double, double* @rgamma.q0
%255 = load double, double* @rgamma.t
%256 = fmul double 5.000000e-01, %255
%257 = load double, double* @rgamma.t
%258 = fmul double %256, %257
%259 = load double, double* @rgamma.a7
%260 = load double, double* @rgamma.v
%261 = load double, double* @rgamma.a6
%262 = call double @llvm.fmuladd.f64(double %259, double %260, double %261)
%263 = load double, double* @rgamma.v
%264 = load double, double* @rgamma.a5
%265 = call double @llvm.fmuladd.f64(double %262, double %263, double %264)
%266 = load double, double* @rgamma.v
%267 = load double, double* @rgamma.a4
%268 = call double @llvm.fmuladd.f64(double %265, double %266, double %267)
%269 = load double, double* @rgamma.v
%270 = load double, double* @rgamma.a3
%271 = call double @llvm.fmuladd.f64(double %268, double %269, double %270)
%272 = load double, double* @rgamma.v
%273 = load double, double* @rgamma.a2
%274 = call double @llvm.fmuladd.f64(double %271, double %272, double %273)
%275 = load double, double* @rgamma.v
%276 = load double, double* @rgamma.a1
%277 = call double @llvm.fmuladd.f64(double %274, double %275, double %276)
%278 = fmul double %258, %277
%279 = load double, double* @rgamma.v
%280 = call double @llvm.fmuladd.f64(double %278, double %279, double %254)
store double %280, double* @rgamma.q
br label %298
281: ; preds = %244
%282 = load double, double* @rgamma.q0
%283 = load double, double* @rgamma.s
%284 = load double, double* @rgamma.t
%285 = fneg double %283
%286 = call double @llvm.fmuladd.f64(double %285, double %284, double %282)
%287 = load double, double* @rgamma.t
%288 = fmul double 2.500000e-01, %287
%289 = load double, double* @rgamma.t
%290 = call double @llvm.fmuladd.f64(double %288, double %289, double %286)
%291 = load double, double* @rgamma.s2
%292 = load double, double* @rgamma.s2
%293 = fadd double %291, %292
%294 = load double, double* @rgamma.v
%295 = fadd double 1.000000e+00, %294
%296 = call double @log(double %295)
%297 = call double @llvm.fmuladd.f64(double %293, double %296, double %290)
store double %297, double* @rgamma.q
br label %298
298: ; preds = %281, %253
%299 = load double, double* @rgamma.q
%300 = fcmp ogt double %299, 0.000000e+00
br i1 %300, label %301, label %341
301: ; preds = %298
%302 = load double, double* @rgamma.q
%303 = fcmp ole double %302, 5.000000e-01
br i1 %303, label %304, label %320
304: ; preds = %301
%305 = load double, double* @rgamma.e5
%306 = load double, double* @rgamma.q
%307 = load double, double* @rgamma.e4
%308 = call double @llvm.fmuladd.f64(double %305, double %306, double %307)
%309 = load double, double* @rgamma.q
%310 = load double, double* @rgamma.e3
%311 = call double @llvm.fmuladd.f64(double %308, double %309, double %310)
%312 = load double, double* @rgamma.q
%313 = load double, double* @rgamma.e2
%314 = call double @llvm.fmuladd.f64(double %311, double %312, double %313)
%315 = load double, double* @rgamma.q
%316 = load double, double* @rgamma.e1
%317 = call double @llvm.fmuladd.f64(double %314, double %315, double %316)
%318 = load double, double* @rgamma.q
%319 = fmul double %317, %318
store double %319, double* @rgamma.w
br label %324
320: ; preds = %301
%321 = load double, double* @rgamma.q
%322 = call double @exp(double %321)
%323 = fsub double %322, 1.000000e+00
store double %323, double* @rgamma.w
br label %324
324: ; preds = %320, %304
%325 = load double, double* @rgamma.c
%326 = load double, double* @rgamma.u
%327 = call double @llvm.fabs.f64(double %326)
%328 = fmul double %325, %327
%329 = load double, double* @rgamma.w
%330 = load double, double* @rgamma.e
%331 = load double, double* @rgamma.t
%332 = fmul double 5.000000e-01, %331
%333 = load double, double* @rgamma.t
%334 = fneg double %332
%335 = call double @llvm.fmuladd.f64(double %334, double %333, double %330)
%336 = call double @exp(double %335)
%337 = fmul double %329, %336
%338 = fcmp ole double %328, %337
br i1 %338, label %339, label %340
339: ; preds = %324
br label %343
340: ; preds = %324
br label %341
341: ; preds = %340, %298
br label %342
342: ; preds = %341, %241
br label %221
343: ; preds = %339
%344 = load double, double* @rgamma.s
%345 = load double, double* @rgamma.t
%346 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %345, double %344)
store double %346, double* @rgamma.x
%347 = load double, double* %5
%348 = load double, double* @rgamma.x
%349 = fmul double %347, %348
%350 = load double, double* @rgamma.x
%351 = fmul double %349, %350
store double %351, double* %3
br label %352
352: ; preds = %343, %215, %90, %75, %47
%353 = load double, double* %3
ret double %353
}

LLVM IR (-O2):
@rgamma.aa = internal unnamed_addr global double 0.000000e+00
@rgamma.aaa = internal unnamed_addr global double 0.000000e+00
@rgamma.b = internal unnamed_addr global double 0.000000e+00
@rgamma.c = internal unnamed_addr global double 0.000000e+00
@rgamma.d = internal unnamed_addr global double 0.000000e+00
@rgamma.e = internal unnamed_addr global double 0.000000e+00
@rgamma.q = internal unnamed_addr global double 0.000000e+00
@rgamma.s = internal unnamed_addr global double 0.000000e+00
@rgamma.t = internal unnamed_addr global double 0.000000e+00
@rgamma.u = internal unnamed_addr global double 0.000000e+00
@rgamma.x = internal unnamed_addr global double 0.000000e+00
@rgamma.q0 = internal unnamed_addr global double 0.000000e+00
@rgamma.s2 = internal unnamed_addr global double 0.000000e+00
@rgamma.si = internal unnamed_addr global double 0.000000e+00
define double @rgamma(double %0, double %1) {
%3 = fcmp olt double %0, 1.000000e+00
br i1 %3, label %4, label %33
4: ; preds = %2
store double 0.000000e+00, double* @rgamma.aa
%5 = tail call double @llvm.fmuladd.f64(double %0, double 0x3FD78B56362CEF38, double 1.000000e+00)
store double %5, double* @rgamma.b
%6 = fsub double 1.000000e+00, %0
br label %7
7: ; preds = %28, %4
%8 = phi double [ %29, %28 ], [ %5, %4 ]
%9 = tail call double (...) @gfsr8()
%10 = fmul double %8, %9
%11 = fcmp ult double %10, 1.000000e+00
br i1 %11, label %22, label %12
12: ; preds = %7
%13 = load double, double* @rgamma.b
%14 = fsub double %13, %10
%15 = fdiv double %14, %0
%16 = tail call double @log(double %15)
%17 = fneg double %16
%18 = tail call double (...) @expdev()
%19 = tail call double @log(double %17)
%20 = fmul double %6, %19
%21 = fcmp ult double %18, %20
br i1 %21, label %28, label %30
22: ; preds = %7
%23 = tail call double @log(double %10)
%24 = fdiv double %23, %0
%25 = tail call double @exp(double %24)
%26 = tail call double (...) @expdev()
%27 = fcmp ult double %26, %25
br i1 %27, label %28, label %30
28: ; preds = %22, %12
%29 = load double, double* @rgamma.b
br label %7
30: ; preds = %22, %12
%31 = phi double [ %17, %12 ], [ %25, %22 ]
%32 = fmul double %31, %1
br label %212
33: ; preds = %2
%34 = load double, double* @rgamma.aa
%35 = fcmp une double %34, %0
br i1 %35, label %36, label %41
36: ; preds = %33
store double %0, double* @rgamma.aa
%37 = fadd double %0, -5.000000e-01
store double %37, double* @rgamma.s2
%38 = tail call double @sqrt(double %37)
store double %38, double* @rgamma.s
%39 = fneg double %38
%40 = tail call double @llvm.fmuladd.f64(double %39, double 1.200000e+01, double 0x4016A09E55C0FCB5)
store double %40, double* @rgamma.d
br label %41
41: ; preds = %36, %33
%42 = tail call double (...) @norm8()
store double %42, double* @rgamma.t
%43 = load double, double* @rgamma.s
%44 = tail call double @llvm.fmuladd.f64(double %42, double 5.000000e-01, double %43)
store double %44, double* @rgamma.x
%45 = fmul double %44, %44
%46 = fcmp ult double %42, 0.000000e+00
br i1 %46, label %49, label %47
47: ; preds = %41
%48 = fmul double %45, %1
br label %212
49: ; preds = %41
%50 = tail call double (...) @gfsr8()
store double %50, double* @rgamma.u
%51 = load double, double* @rgamma.d
%52 = fmul double %50, %51
%53 = load double, double* @rgamma.t
%54 = fmul double %53, %53
%55 = fmul double %53, %54
%56 = fcmp ugt double %52, %55
br i1 %56, label %59, label %57
57: ; preds = %49
%58 = fmul double %45, %1
br label %212
59: ; preds = %49
%60 = load double, double* @rgamma.aaa
%61 = fcmp une double %60, %0
br i1 %61, label %62, label %95
62: ; preds = %59
store double %0, double* @rgamma.aaa
%63 = fdiv double 1.000000e+00, %0
%64 = tail call double @llvm.fmuladd.f64(double %63, double 2.424000e-04, double 2.451100e-04)
%65 = tail call double @llvm.fmuladd.f64(double %64, double %63, double -7.388000e-05)
%66 = tail call double @llvm.fmuladd.f64(double %65, double %63, double 1.441210e-03)
%67 = tail call double @llvm.fmuladd.f64(double %66, double %63, double 8.011910e-03)
%68 = tail call double @llvm.fmuladd.f64(double %67, double %63, double 0x3F9554D8F54F21FC)
%69 = tail call double @llvm.fmuladd.f64(double %68, double %63, double 0x3FA555561DC3E03F)
%70 = fmul double %63, %69
store double %70, double* @rgamma.q0
%71 = fcmp ugt double %0, 3.686000e+00
br i1 %71, label %80, label %72
72: ; preds = %62
%73 = load double, double* @rgamma.s
%74 = fadd double %73, 4.630000e-01
%75 = load double, double* @rgamma.s2
%76 = tail call double @llvm.fmuladd.f64(double %75, double 1.780000e-01, double %74)
store double %76, double* @rgamma.b
store double 1.235000e+00, double* @rgamma.si
%77 = fdiv double 1.950000e-01, %73
%78 = fadd double %77, -7.900000e-02
%79 = tail call double @llvm.fmuladd.f64(double %73, double 1.600000e-01, double %78)
br label %93
80: ; preds = %62
%81 = fcmp ugt double %0, 1.302200e+01
br i1 %81, label %90, label %82
82: ; preds = %80
%83 = load double, double* @rgamma.s2
%84 = tail call double @llvm.fmuladd.f64(double %83, double 0x3F7F212D77318FC5, double 1.654000e+00)
store double %84, double* @rgamma.b
%85 = load double, double* @rgamma.s
%86 = fdiv double 1.680000e+00, %85
%87 = fadd double %86, 2.750000e-01
store double %87, double* @rgamma.si
%88 = fdiv double 6.200000e-02, %85
%89 = fadd double %88, 2.400000e-02
br label %93
90: ; preds = %80
store double 1.770000e+00, double* @rgamma.b
store double 7.500000e-01, double* @rgamma.si
%91 = load double, double* @rgamma.s
%92 = fdiv double 1.515000e-01, %91
br label %93
93: ; preds = %82, %90, %72
%94 = phi double [ %79, %72 ], [ %92, %90 ], [ %89, %82 ]
store double %94, double* @rgamma.c
br label %95
95: ; preds = %93, %59
%96 = load double, double* @rgamma.x
%97 = fcmp ogt double %96, 0.000000e+00
br i1 %97, label %99, label %98
98: ; preds = %128, %95
br label %137
99: ; preds = %95
%100 = load double, double* @rgamma.s
%101 = fadd double %100, %100
%102 = fdiv double %53, %101
%103 = tail call double @llvm.fabs.f64(double %102)
%104 = fcmp ugt double %103, 2.500000e-01
%105 = load double, double* @rgamma.q0
br i1 %104, label %117, label %106
106: ; preds = %99
%107 = fmul double %53, 5.000000e-01
%108 = fmul double %53, %107
%109 = tail call double @llvm.fmuladd.f64(double %102, double 0x3FBF95CC857F3062, double 0xBFC17FF73124653A)
%110 = tail call double @llvm.fmuladd.f64(double %109, double %102, double 0x3FC2390A0CC93C1F)
%111 = tail call double @llvm.fmuladd.f64(double %110, double %102, double 0xBFC5490F3D8AA50A)
%112 = tail call double @llvm.fmuladd.f64(double %111, double %102, double 0x3FC999CD9BFFA567)
%113 = tail call double @llvm.fmuladd.f64(double %112, double %102, double -2.500030e-01)
%114 = tail call double @llvm.fmuladd.f64(double %113, double %102, double 0x3FD55555318ABC87)
%115 = fmul double %108, %114
%116 = tail call double @llvm.fmuladd.f64(double %115, double %102, double %105)
br label %128
117: ; preds = %99
%118 = fneg double %100
%119 = tail call double @llvm.fmuladd.f64(double %118, double %53, double %105)
%120 = fmul double %53, 2.500000e-01
%121 = tail call double @llvm.fmuladd.f64(double %120, double %53, double %119)
%122 = load double, double* @rgamma.s2
%123 = fadd double %122, %122
%124 = fadd double %102, 1.000000e+00
%125 = tail call double @log(double %124)
%126 = tail call double @llvm.fmuladd.f64(double %123, double %125, double %121)
%127 = load double, double* @rgamma.u
br label %128
128: ; preds = %117, %106
%129 = phi double [ %127, %117 ], [ %50, %106 ]
%130 = phi double [ %126, %117 ], [ %116, %106 ]
store double %130, double* @rgamma.q
%131 = fsub double 1.000000e+00, %129
%132 = tail call double @log(double %131)
%133 = load double, double* @rgamma.q
%134 = fcmp ugt double %132, %133
br i1 %134, label %98, label %135
135: ; preds = %128
%136 = fmul double %45, %1
br label %212
137: ; preds = %181, %98
%138 = tail call double (...) @expdev()
store double %138, double* @rgamma.e
%139 = tail call double (...) @gfsr8()
%140 = fadd double %139, %139
%141 = fadd double %140, -1.000000e+00
store double %141, double* @rgamma.u
%142 = fcmp olt double %141, 0.000000e+00
%143 = load double, double* @rgamma.b
%144 = load double, double* @rgamma.si
%145 = load double, double* @rgamma.e
%146 = fneg double %144
%147 = select i1 %142, double %146, double %144
%148 = tail call double @llvm.fmuladd.f64(double %147, double %145, double %143)
store double %148, double* @rgamma.t
%149 = fcmp ult double %148, 0xBFE6FFF52C8540C9
br i1 %149, label %181, label %150
150: ; preds = %137
%151 = load double, double* @rgamma.s
%152 = fadd double %151, %151
%153 = fdiv double %148, %152
%154 = tail call double @llvm.fabs.f64(double %153)
%155 = fcmp ugt double %154, 2.500000e-01
%156 = load double, double* @rgamma.q0
br i1 %155, label %168, label %157
157: ; preds = %150
%158 = fmul double %148, 5.000000e-01
%159 = fmul double %148, %158
%160 = tail call double @llvm.fmuladd.f64(double %153, double 0x3FBF95CC857F3062, double 0xBFC17FF73124653A)
%161 = tail call double @llvm.fmuladd.f64(double %160, double %153, double 0x3FC2390A0CC93C1F)
%162 = tail call double @llvm.fmuladd.f64(double %161, double %153, double 0xBFC5490F3D8AA50A)
%163 = tail call double @llvm.fmuladd.f64(double %162, double %153, double 0x3FC999CD9BFFA567)
%164 = tail call double @llvm.fmuladd.f64(double %163, double %153, double -2.500030e-01)
%165 = tail call double @llvm.fmuladd.f64(double %164, double %153, double 0x3FD55555318ABC87)
%166 = fmul double %159, %165
%167 = tail call double @llvm.fmuladd.f64(double %166, double %153, double %156)
br label %178
168: ; preds = %150
%169 = fneg double %151
%170 = tail call double @llvm.fmuladd.f64(double %169, double %148, double %156)
%171 = fmul double %148, 2.500000e-01
%172 = tail call double @llvm.fmuladd.f64(double %171, double %148, double %170)
%173 = load double, double* @rgamma.s2
%174 = fadd double %173, %173
%175 = fadd double %153, 1.000000e+00
%176 = tail call double @log(double %175)
%177 = tail call double @llvm.fmuladd.f64(double %174, double %176, double %172)
br label %178
178: ; preds = %168, %157
%179 = phi double [ %177, %168 ], [ %167, %157 ]
store double %179, double* @rgamma.q
%180 = fcmp ogt double %179, 0.000000e+00
br i1 %180, label %182, label %181
181: ; preds = %178, %193, %137
br label %137
182: ; preds = %178
%183 = fcmp ugt double %179, 5.000000e-01
br i1 %183, label %190, label %184
184: ; preds = %182
%185 = tail call double @llvm.fmuladd.f64(double %179, double 1.029300e-02, double 4.077530e-02)
%186 = tail call double @llvm.fmuladd.f64(double %185, double %179, double 1.668290e-01)
%187 = tail call double @llvm.fmuladd.f64(double %186, double %179, double 0x3FDFFFD4CC758EF8)
%188 = tail call double @llvm.fmuladd.f64(double %187, double %179, double 1.000000e+00)
%189 = fmul double %179, %188
br label %193
190: ; preds = %182
%191 = tail call double @exp(double %179)
%192 = fadd double %191, -1.000000e+00
br label %193
193: ; preds = %190, %184
%194 = phi double [ %192, %190 ], [ %189, %184 ]
%195 = load double, double* @rgamma.c
%196 = load double, double* @rgamma.u
%197 = tail call double @llvm.fabs.f64(double %196)
%198 = fmul double %195, %197
%199 = load double, double* @rgamma.e
%200 = load double, double* @rgamma.t
%201 = fmul double %200, -5.000000e-01
%202 = tail call double @llvm.fmuladd.f64(double %201, double %200, double %199)
%203 = tail call double @exp(double %202)
%204 = fmul double %194, %203
%205 = fcmp ugt double %198, %204
br i1 %205, label %181, label %206
206: ; preds = %193
%207 = load double, double* @rgamma.s
%208 = load double, double* @rgamma.t
%209 = tail call double @llvm.fmuladd.f64(double %208, double 5.000000e-01, double %207)
store double %209, double* @rgamma.x
%210 = fmul double %209, %1
%211 = fmul double %209, %210
br label %212
212: ; preds = %206, %135, %57, %47, %30
%213 = phi double [ %32, %30 ], [ %48, %47 ], [ %58, %57 ], [ %136, %135 ], [ %211, %206 ]
ret double %213
}