double gam1(double a) {
  static double p[7] = {.577215664901533,   -.409078193005776,
                        -.230975380857675,  .0597275330452234,
                        .0076696818164949,  -.00514889771323592,
                        5.89597428611429e-4};
  static double q[5] = {1., .427569613095214, .158451672430138,
                        .0261132021441447, .00423244297896961};
  static double r__[9] = {
      -.422784335098468,  -.771330383816272,   -.244757765222226,
      .118378989872749,   9.30357293360349e-4, -.0118290993445146,
      .00223047661158249, 2.66505979058923e-4, -1.32674909766242e-4};
  static double s1 = .273076135303957;
  static double s2 = .0559398236957378;
  double ret_val;
  double d__, t, w, bot, top;
  t = a;
  d__ = a - 0.5;
  if (d__ > 0.0) {
    t = d__ - 0.5;
  }
  if (t < 0.0) {
    goto L30;
  } else if (t == 0) {
    goto L10;
  } else {
    goto L20;
  }
L10:
  ret_val = 0.0;
  return ret_val;
L20:
  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.0;
  w = top / bot;
  if (d__ > 0.0) {
    goto L21;
  }
  ret_val = a * w;
  return ret_val;
L21:
  ret_val = t / a * (w - 0.5 - 0.5);
  return ret_val;
L30:
  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.0;
  w = top / bot;
  if (d__ > 0.0) {
    goto L31;
  }
  ret_val = a * (w + 0.5 + 0.5);
  return ret_val;
L31:
  ret_val = t * w / a;
  return ret_val;
}


x86 assembly (clang, -O0):
<gam1>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  0xee0(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1151 <gam1+0x51>
movsd  -0x20(%rbp),%xmm0
movsd  0xeb8(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x28(%rbp),%xmm0
jbe    1164 <gam1+0x64>
jmp    130c <gam1+0x20c>
movsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1181 <gam1+0x81>
jp     1181 <gam1+0x81>
jmp    1186 <gam1+0x86>
jmp    119d <gam1+0x9d>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1472 <gam1+0x372>
movsd  0x2ebb(%rip),%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2ea6(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2e89(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2e6c(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2e4f(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2e32(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2e15(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0x2e60(%rip),%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2e4b(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2e2e(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2e11(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd88(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    12af <gam1+0x1af>
jmp    12cd <gam1+0x1cd>
movsd  -0x10(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1472 <gam1+0x372>
movsd  -0x28(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  0xd1c(%rip),%xmm2
subsd  %xmm2,%xmm1
movsd  0xd10(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1472 <gam1+0x372>
movsd  0x2dcc(%rip),%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2db7(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2d9a(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2d7d(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2d60(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2d43(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2d26(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2d09(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2cec(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0x2d27(%rip),%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  0x2d12(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc19(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    141e <gam1+0x31e>
jmp    1454 <gam1+0x354>
movsd  -0x10(%rbp),%xmm0
movsd  0xbd5(%rip),%xmm1
addsd  -0x30(%rbp),%xmm1
movsd  0xbc8(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1472 <gam1+0x372>
movsd  -0x28(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<gam1>:
movapd %xmm0,%xmm1
movsd  0xef4(%rip),%xmm3
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    11df <gam1+0xdf>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
movsd  0xf19(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf15(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf11(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf0d(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf09(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf05(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf01(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xefd(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xef9(%rip),%xmm0
movsd  0xef9(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xef5(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  0xe91(%rip),%xmm3
divsd  %xmm3,%xmm0
jbe    11e8 <gam1+0xe8>
mulsd  %xmm2,%xmm0
divsd  %xmm1,%xmm0
jmp    11e7 <gam1+0xe7>
ucomisd %xmm0,%xmm2
jne    11fd <gam1+0xfd>
jp     11fd <gam1+0xfd>
ret
movsd  0xed0(%rip),%xmm2
addsd  %xmm2,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
ret
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
movsd  0xdfb(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdf7(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdf3(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdef(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdeb(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xde7(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xde3(%rip),%xmm0
movsd  0xde3(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xddf(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xddb(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xdd7(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  0xdd3(%rip),%xmm4
divsd  %xmm4,%xmm0
jbe    12a4 <gam1+0x1a4>
divsd  %xmm1,%xmm2
addsd  %xmm3,%xmm0
addsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm0
ret
mulsd  %xmm1,%xmm0
ret

LLVM IR (-O0):
@gam1.p = internal global [7 x double] [double 0x3FE2788CFC6FB61A, double 0xBFDA2E564D1DDC83, double 0xBFCD9099ED7B807C, double 0x3FAE949B72333263, double 0x3F7F6A3E892940B3, double 0xBF751702B49EEA17, double 0x3F4351E6D63B8846]
@gam1.q = internal global [5 x double] [double 1.000000e+00, double 0x3FDB5D4CF04077E4, double 0x3FC44824F78ABECB, double 0x3F9ABD6B54CFCF21, double 0x3F715609C2D46A68]
@gam1.r__ = internal global [9 x double] [double 0xBFDB0EE6072093DE, double 0xBFE8AEBD0E9CDD50, double 0xBFCF5438F2892723, double 0x3FBE4E15E2097702, double 0x3F4E7C67130498BA, double 0xBF8839DAD69B4A44, double 0x3F6245A6033D5B04, double 0x3F31773A76D8DC66, double 0xBF2163D4CC01152C]
@gam1.s1 = internal global double 0x3FD17A14539CB550
@gam1.s2 = internal global double 0x3FACA42502A26800
define double @gam1(double %0) {
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
store double %0, double* %3
%10 = load double, double* %3
store double %10, double* %6
%11 = load double, double* %3
%12 = fsub double %11, 5.000000e-01
store double %12, double* %5
%13 = load double, double* %5
%14 = fcmp ogt double %13, 0.000000e+00
br i1 %14, label %15, label %18
15: ; preds = %1
%16 = load double, double* %5
%17 = fsub double %16, 5.000000e-01
store double %17, double* %6
br label %18
18: ; preds = %15, %1
%19 = load double, double* %6
%20 = fcmp olt double %19, 0.000000e+00
br i1 %20, label %21, label %22
21: ; preds = %18
br label %81
22: ; preds = %18
%23 = load double, double* %6
%24 = fcmp oeq double %23, 0.000000e+00
br i1 %24, label %25, label %26
25: ; preds = %22
br label %27
26: ; preds = %22
br label %29
27: ; preds = %25
store double 0.000000e+00, double* %4
%28 = load double, double* %4
store double %28, double* %2
br label %133
29: ; preds = %26
%30 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 6)
%31 = load double, double* %6
%32 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 5)
%33 = call double @llvm.fmuladd.f64(double %30, double %31, double %32)
%34 = load double, double* %6
%35 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 4)
%36 = call double @llvm.fmuladd.f64(double %33, double %34, double %35)
%37 = load double, double* %6
%38 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 3)
%39 = call double @llvm.fmuladd.f64(double %36, double %37, double %38)
%40 = load double, double* %6
%41 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 2)
%42 = call double @llvm.fmuladd.f64(double %39, double %40, double %41)
%43 = load double, double* %6
%44 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 1)
%45 = call double @llvm.fmuladd.f64(double %42, double %43, double %44)
%46 = load double, double* %6
%47 = load double, double* getelementptr inbounds ([7 x double], [7 x double]* @gam1.p, i64 0, i64 0)
%48 = call double @llvm.fmuladd.f64(double %45, double %46, double %47)
store double %48, double* %9
%49 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @gam1.q, i64 0, i64 4)
%50 = load double, double* %6
%51 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @gam1.q, i64 0, i64 3)
%52 = call double @llvm.fmuladd.f64(double %49, double %50, double %51)
%53 = load double, double* %6
%54 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @gam1.q, i64 0, i64 2)
%55 = call double @llvm.fmuladd.f64(double %52, double %53, double %54)
%56 = load double, double* %6
%57 = load double, double* getelementptr inbounds ([5 x double], [5 x double]* @gam1.q, i64 0, i64 1)
%58 = call double @llvm.fmuladd.f64(double %55, double %56, double %57)
%59 = load double, double* %6
%60 = call double @llvm.fmuladd.f64(double %58, double %59, double 1.000000e+00)
store double %60, double* %8
%61 = load double, double* %9
%62 = load double, double* %8
%63 = fdiv double %61, %62
store double %63, double* %7
%64 = load double, double* %5
%65 = fcmp ogt double %64, 0.000000e+00
br i1 %65, label %66, label %67
66: ; preds = %29
br label %72
67: ; preds = %29
%68 = load double, double* %3
%69 = load double, double* %7
%70 = fmul double %68, %69
store double %70, double* %4
%71 = load double, double* %4
store double %71, double* %2
br label %133
72: ; preds = %66
%73 = load double, double* %6
%74 = load double, double* %3
%75 = fdiv double %73, %74
%76 = load double, double* %7
%77 = fsub double %76, 5.000000e-01
%78 = fsub double %77, 5.000000e-01
%79 = fmul double %75, %78
store double %79, double* %4
%80 = load double, double* %4
store double %80, double* %2
br label %133
81: ; preds = %21
%82 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r__, i64 0, i64 8)
%83 = load double, double* %6
%84 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r__, i64 0, i64 7)
%85 = call double @llvm.fmuladd.f64(double %82, double %83, double %84)
%86 = load double, double* %6
%87 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r__, i64 0, i64 6)
%88 = call double @llvm.fmuladd.f64(double %85, double %86, double %87)
%89 = load double, double* %6
%90 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r__, i64 0, i64 5)
%91 = call double @llvm.fmuladd.f64(double %88, double %89, double %90)
%92 = load double, double* %6
%93 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r__, i64 0, i64 4)
%94 = call double @llvm.fmuladd.f64(double %91, double %92, double %93)
%95 = load double, double* %6
%96 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r__, i64 0, i64 3)
%97 = call double @llvm.fmuladd.f64(double %94, double %95, double %96)
%98 = load double, double* %6
%99 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r__, i64 0, i64 2)
%100 = call double @llvm.fmuladd.f64(double %97, double %98, double %99)
%101 = load double, double* %6
%102 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r__, i64 0, i64 1)
%103 = call double @llvm.fmuladd.f64(double %100, double %101, double %102)
%104 = load double, double* %6
%105 = load double, double* getelementptr inbounds ([9 x double], [9 x double]* @gam1.r__, i64 0, i64 0)
%106 = call double @llvm.fmuladd.f64(double %103, double %104, double %105)
store double %106, double* %9
%107 = load double, double* @gam1.s2
%108 = load double, double* %6
%109 = load double, double* @gam1.s1
%110 = call double @llvm.fmuladd.f64(double %107, double %108, double %109)
%111 = load double, double* %6
%112 = call double @llvm.fmuladd.f64(double %110, double %111, double 1.000000e+00)
store double %112, double* %8
%113 = load double, double* %9
%114 = load double, double* %8
%115 = fdiv double %113, %114
store double %115, double* %7
%116 = load double, double* %5
%117 = fcmp ogt double %116, 0.000000e+00
br i1 %117, label %118, label %119
118: ; preds = %81
br label %126
119: ; preds = %81
%120 = load double, double* %3
%121 = load double, double* %7
%122 = fadd double %121, 5.000000e-01
%123 = fadd double %122, 5.000000e-01
%124 = fmul double %120, %123
store double %124, double* %4
%125 = load double, double* %4
store double %125, double* %2
br label %133
126: ; preds = %118
%127 = load double, double* %6
%128 = load double, double* %7
%129 = fmul double %127, %128
%130 = load double, double* %3
%131 = fdiv double %129, %130
store double %131, double* %4
%132 = load double, double* %4
store double %132, double* %2
br label %133
133: ; preds = %126, %119, %72, %67, %27
%134 = load double, double* %2
ret double %134
}

LLVM IR (-O2):
define double @gam1(double %0) {
%2 = fadd double %0, -5.000000e-01
%3 = fcmp ogt double %2, 0.000000e+00
%4 = fadd double %2, -5.000000e-01
%5 = select i1 %3, double %4, double %0
%6 = fcmp olt double %5, 0.000000e+00
br i1 %6, label %28, label %7
7: ; preds = %1
%8 = fcmp oeq double %5, 0.000000e+00
br i1 %8, label %47, label %9
9: ; preds = %7
%10 = tail call double @llvm.fmuladd.f64(double %5, double 0x3F4351E6D63B8846, double 0xBF751702B49EEA17)
%11 = tail call double @llvm.fmuladd.f64(double %10, double %5, double 0x3F7F6A3E892940B3)
%12 = tail call double @llvm.fmuladd.f64(double %11, double %5, double 0x3FAE949B72333263)
%13 = tail call double @llvm.fmuladd.f64(double %12, double %5, double 0xBFCD9099ED7B807C)
%14 = tail call double @llvm.fmuladd.f64(double %13, double %5, double 0xBFDA2E564D1DDC83)
%15 = tail call double @llvm.fmuladd.f64(double %14, double %5, double 0x3FE2788CFC6FB61A)
%16 = tail call double @llvm.fmuladd.f64(double %5, double 0x3F715609C2D46A68, double 0x3F9ABD6B54CFCF21)
%17 = tail call double @llvm.fmuladd.f64(double %16, double %5, double 0x3FC44824F78ABECB)
%18 = tail call double @llvm.fmuladd.f64(double %17, double %5, double 0x3FDB5D4CF04077E4)
%19 = tail call double @llvm.fmuladd.f64(double %18, double %5, double 1.000000e+00)
%20 = fdiv double %15, %19
br i1 %3, label %23, label %21
21: ; preds = %9
%22 = fmul double %20, %0
br label %47
23: ; preds = %9
%24 = fdiv double %5, %0
%25 = fadd double %20, -5.000000e-01
%26 = fadd double %25, -5.000000e-01
%27 = fmul double %24, %26
br label %47
28: ; preds = %1
%29 = tail call double @llvm.fmuladd.f64(double %5, double 0xBF2163D4CC01152C, double 0x3F31773A76D8DC66)
%30 = tail call double @llvm.fmuladd.f64(double %29, double %5, double 0x3F6245A6033D5B04)
%31 = tail call double @llvm.fmuladd.f64(double %30, double %5, double 0xBF8839DAD69B4A44)
%32 = tail call double @llvm.fmuladd.f64(double %31, double %5, double 0x3F4E7C67130498BA)
%33 = tail call double @llvm.fmuladd.f64(double %32, double %5, double 0x3FBE4E15E2097702)
%34 = tail call double @llvm.fmuladd.f64(double %33, double %5, double 0xBFCF5438F2892723)
%35 = tail call double @llvm.fmuladd.f64(double %34, double %5, double 0xBFE8AEBD0E9CDD50)
%36 = tail call double @llvm.fmuladd.f64(double %35, double %5, double 0xBFDB0EE6072093DE)
%37 = tail call double @llvm.fmuladd.f64(double %5, double 0x3FACA42502A26800, double 0x3FD17A14539CB550)
%38 = tail call double @llvm.fmuladd.f64(double %37, double %5, double 1.000000e+00)
%39 = fdiv double %36, %38
br i1 %3, label %44, label %40
40: ; preds = %28
%41 = fadd double %39, 5.000000e-01
%42 = fadd double %41, 5.000000e-01
%43 = fmul double %42, %0
br label %47
44: ; preds = %28
%45 = fmul double %5, %39
%46 = fdiv double %45, %0
br label %47
47: ; preds = %7, %44, %40, %23, %21
%48 = phi double [ %46, %44 ], [ %43, %40 ], [ %27, %23 ], [ %22, %21 ], [ 0.000000e+00, %7 ]
ret double %48
}