double cdflib_gam1(const double *a) {
  static const double s1 = .273076135303957e+00;
  static const double s2 = .559398236957378e-01;
  static const double p[7] = {.577215664901533e+00,  -.409078193005776e+00,
                              -.230975380857675e+00, .597275330452234e-01,
                              .766968181649490e-02,  -.514889771323592e-02,
                              .589597428611429e-03};
  static const double q[5] = {.100000000000000e+01, .427569613095214e+00,
                              .158451672430138e+00, .261132021441447e-01,
                              .423244297896961e-02};
  static const double r[9] = {
      -.422784335098468e+00, -.771330383816272e+00, -.244757765222226e+00,
      .118378989872749e+00,  .930357293360349e-03,  -.118290993445146e-01,
      .223047661158249e-02,  .266505979058923e-03,  -.132674909766242e-03};
  double gam1, bot, d, t, top, w, T1;
  t = *a;
  d = *a - 0.5e0;
  if (d > 0.0e0) {
    t = d - 0.5e0;
  }
  T1 = t;
  if (T1 < 0) {
    goto S40;
  } else if (T1 == 0) {
    goto S10;
  } else {
    goto S20;
  }
S10:
  gam1 = 0.0e0;
  return gam1;
S20:
  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.0e0;
  w = top / bot;
  if (d > 0.0e0) {
    goto S30;
  }
  gam1 = *a * w;
  return gam1;
S30:
  gam1 = t / *a * (w - 0.5e0 - 0.5e0);
  return gam1;
S40:
  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.0e0;
  w = top / bot;
  if (d > 0.0e0) {
    goto S50;
  }
  gam1 = *a * (w + 0.5e0 + 0.5e0);
  return gam1;
S50:
  gam1 = t * w / *a;
  return gam1;
}


x86 assembly (clang, -O0):
<cdflib_gam1>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xedb(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1156 <cdflib_gam1+0x56>
movsd  -0x28(%rbp),%xmm0
movsd  0xeb3(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x48(%rbp),%xmm0
jbe    1173 <cdflib_gam1+0x73>
jmp    1321 <cdflib_gam1+0x221>
movsd  -0x48(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1190 <cdflib_gam1+0x90>
jp     1190 <cdflib_gam1+0x90>
jmp    1195 <cdflib_gam1+0x95>
jmp    11ac <cdflib_gam1+0xac>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    148d <cdflib_gam1+0x38d>
movsd  0xeac(%rip),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe97(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe7a(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe5d(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe40(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe23(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe06(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe51(%rip),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe3c(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe1f(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xe02(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd79(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    12be <cdflib_gam1+0x1be>
jmp    12df <cdflib_gam1+0x1df>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    148d <cdflib_gam1+0x38d>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
divsd  (%rax),%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  0xd07(%rip),%xmm2
subsd  %xmm2,%xmm1
movsd  0xcfb(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    148d <cdflib_gam1+0x38d>
movsd  0xdb7(%rip),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xda2(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xd85(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xd68(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xd4b(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xd2e(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xd11(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xcf4(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xcd7(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xc2d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc29(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc04(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1433 <cdflib_gam1+0x333>
jmp    146c <cdflib_gam1+0x36c>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xbbd(%rip),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  0xbb0(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    148d <cdflib_gam1+0x38d>
movsd  -0x30(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<cdflib_gam1>:
movsd  (%rdi),%xmm1
movsd  0xef4(%rip),%xmm3
movapd %xmm1,%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 <cdflib_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 <cdflib_gam1+0xe8>
mulsd  %xmm2,%xmm0
divsd  %xmm1,%xmm0
jmp    11e7 <cdflib_gam1+0xe7>
ucomisd %xmm0,%xmm2
jne    11fd <cdflib_gam1+0xfd>
jp     11fd <cdflib_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 <cdflib_gam1+0x1a4>
divsd  %xmm1,%xmm2
addsd  %xmm3,%xmm0
addsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm0
ret
mulsd  %xmm1,%xmm0
ret

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

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