double interp2_k_lagrange7(double x) {
  double result = 0.0;
  if ((x >= 0.0) & (x < 0.5)) {
    result = ((-1.0 / 36.0) * x * x * x * x * x * x) +
             ((14.0 / 36.0) * x * x * x * x) + ((-49.0 / 36.0) * x * x) + 1.0;
  } else if ((x >= 0.5) & (x < 1.5)) {
    result = ((1.0 / 48.0) * x * x * x * x * x * x) +
             ((-7.0 / 48.0) * x * x * x * x * x) +
             ((7.0 / 48.0) * x * x * x * x) + ((35.0 / 48.0) * x * x * x) +
             ((-56.0 / 48.0) * x * x) + ((-29.0 / 48.0) * x) + 1.0;
  } else if ((x >= 1.5) & (x < 2.5)) {
    result = ((-1.0 / 120.0) * x * x * x * x * x * x) +
             ((14.0 / 120.0) * x * x * x * x * x) +
             ((-70.0 / 120.0) * x * x * x * x) + ((140.0 / 120.0) * x * x * x) +
             ((-49.0 / 120.0) * x * x) + ((-154.0 / 120.0) * x) + 1.0;
  } else if ((x >= 2.5) & (x < 3.5)) {
    result = ((1.0 / 720.0) * x * x * x * x * x * x) +
             ((-21.0 / 720.0) * x * x * x * x * x) +
             ((175.0 / 720.0) * x * x * x * x) +
             ((-735.0 / 720.0) * x * x * x) + ((1624.0 / 720.0) * x * x) +
             ((-1764.0 / 720.0) * x) + 1.0;
  }
  return result;
}


x86 assembly (clang, -O0):
<interp2_k_lagrange7>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
movsd  0xed3(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
seta   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     11c0 <interp2_k_lagrange7+0xc0>
movsd  0xf7a(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm2
movsd  0xf4c(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xf20(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe6e(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14fd <interp2_k_lagrange7+0x3fd>
movsd  -0x8(%rbp),%xmm0
movsd  0xe33(%rip),%xmm1
ucomisd %xmm1,%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
movsd  0xe27(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
seta   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     12d1 <interp2_k_lagrange7+0x1d1>
movsd  0xeae(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm2
movsd  0xe80(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe4f(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xe23(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xdfc(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  0xdd5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xd5d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14f8 <interp2_k_lagrange7+0x3f8>
movsd  -0x8(%rbp),%xmm0
movsd  0xd2a(%rip),%xmm1
ucomisd %xmm1,%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
movsd  0xd1e(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
seta   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     13e2 <interp2_k_lagrange7+0x2e2>
movsd  0xd6d(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm2
movsd  0xd3f(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xd0e(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xce2(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xcbb(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  0xc94(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xc4c(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14f3 <interp2_k_lagrange7+0x3f3>
movsd  -0x8(%rbp),%xmm0
movsd  0xc21(%rip),%xmm1
ucomisd %xmm1,%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
movsd  0xc15(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
seta   %cl
and    $0x1,%cl
movzbl %cl,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     14ee <interp2_k_lagrange7+0x3ee>
movsd  0xc2c(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm2
movsd  0xbfe(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xbcd(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xba1(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xb7a(%rip),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x8(%rbp),%xmm0
movsd  0xb53(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xb3b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
jmp    14f3 <interp2_k_lagrange7+0x3f3>
jmp    14f8 <interp2_k_lagrange7+0x3f8>
jmp    14fd <interp2_k_lagrange7+0x3fd>
movsd  -0x10(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<interp2_k_lagrange7>:
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1175 <interp2_k_lagrange7+0x75>
movsd  0xeee(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1175 <interp2_k_lagrange7+0x75>
movsd  0xf98(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
movsd  0xf84(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  0xf6c(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
addsd  0xee0(%rip),%xmm1
movapd %xmm1,%xmm0
ret
ucomisd 0xe83(%rip),%xmm0
jb     1226 <interp2_k_lagrange7+0x126>
movsd  0xe7d(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1226 <interp2_k_lagrange7+0x126>
movsd  0xeeb(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xed7(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  0xebb(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  0xea7(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  0xe97(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  0xe8f(%rip),%xmm0
jmp    1387 <interp2_k_lagrange7+0x287>
ucomisd 0xdda(%rip),%xmm0
jb     12d7 <interp2_k_lagrange7+0x1d7>
movsd  0xdd4(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    12d7 <interp2_k_lagrange7+0x1d7>
movsd  0xe0a(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xdf6(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  0xdda(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  0xdc6(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  0xdb6(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  0xdae(%rip),%xmm0
jmp    1387 <interp2_k_lagrange7+0x287>
ucomisd 0xd31(%rip),%xmm0
xorpd  %xmm1,%xmm1
jb     139b <interp2_k_lagrange7+0x29b>
movsd  0xd27(%rip),%xmm2
ucomisd %xmm0,%xmm2
jbe    139b <interp2_k_lagrange7+0x29b>
movsd  0xd1d(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xd09(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  0xced(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  0xcd9(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
movsd  0xcc9(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  0xcc1(%rip),%xmm0
addsd  %xmm1,%xmm2
addsd  %xmm2,%xmm0
addsd  0xcb9(%rip),%xmm0
movapd %xmm0,%xmm1
movapd %xmm1,%xmm0
ret

LLVM IR (-O0):
define double @interp2_k_lagrange7(double %0) {
%2 = alloca double
%3 = alloca double
store double %0, double* %2
store double 0.000000e+00, double* %3
%4 = load double, double* %2
%5 = fcmp oge double %4, 0.000000e+00
%6 = zext i1 %5 to i32
%7 = load double, double* %2
%8 = fcmp olt double %7, 5.000000e-01
%9 = zext i1 %8 to i32
%10 = and i32 %6, %9
%11 = icmp ne i32 %10, 0
br i1 %11, label %12, label %38
12: ; preds = %1
%13 = load double, double* %2
%14 = fmul double 0xBF9C71C71C71C71C, %13
%15 = load double, double* %2
%16 = fmul double %14, %15
%17 = load double, double* %2
%18 = fmul double %16, %17
%19 = load double, double* %2
%20 = fmul double %18, %19
%21 = load double, double* %2
%22 = fmul double %20, %21
%23 = load double, double* %2
%24 = load double, double* %2
%25 = fmul double 0x3FD8E38E38E38E39, %24
%26 = load double, double* %2
%27 = fmul double %25, %26
%28 = load double, double* %2
%29 = fmul double %27, %28
%30 = load double, double* %2
%31 = fmul double %29, %30
%32 = call double @llvm.fmuladd.f64(double %22, double %23, double %31)
%33 = load double, double* %2
%34 = fmul double 0xBFF5C71C71C71C72, %33
%35 = load double, double* %2
%36 = call double @llvm.fmuladd.f64(double %34, double %35, double %32)
%37 = fadd double %36, 1.000000e+00
store double %37, double* %3
br label %200
38: ; preds = %1
%39 = load double, double* %2
%40 = fcmp oge double %39, 5.000000e-01
%41 = zext i1 %40 to i32
%42 = load double, double* %2
%43 = fcmp olt double %42, 1.500000e+00
%44 = zext i1 %43 to i32
%45 = and i32 %41, %44
%46 = icmp ne i32 %45, 0
br i1 %46, label %47, label %91
47: ; preds = %38
%48 = load double, double* %2
%49 = fmul double 0x3F95555555555555, %48
%50 = load double, double* %2
%51 = fmul double %49, %50
%52 = load double, double* %2
%53 = fmul double %51, %52
%54 = load double, double* %2
%55 = fmul double %53, %54
%56 = load double, double* %2
%57 = fmul double %55, %56
%58 = load double, double* %2
%59 = load double, double* %2
%60 = fmul double 0xBFC2AAAAAAAAAAAB, %59
%61 = load double, double* %2
%62 = fmul double %60, %61
%63 = load double, double* %2
%64 = fmul double %62, %63
%65 = load double, double* %2
%66 = fmul double %64, %65
%67 = load double, double* %2
%68 = fmul double %66, %67
%69 = call double @llvm.fmuladd.f64(double %57, double %58, double %68)
%70 = load double, double* %2
%71 = fmul double 0x3FC2AAAAAAAAAAAB, %70
%72 = load double, double* %2
%73 = fmul double %71, %72
%74 = load double, double* %2
%75 = fmul double %73, %74
%76 = load double, double* %2
%77 = call double @llvm.fmuladd.f64(double %75, double %76, double %69)
%78 = load double, double* %2
%79 = fmul double 0x3FE7555555555555, %78
%80 = load double, double* %2
%81 = fmul double %79, %80
%82 = load double, double* %2
%83 = call double @llvm.fmuladd.f64(double %81, double %82, double %77)
%84 = load double, double* %2
%85 = fmul double 0xBFF2AAAAAAAAAAAB, %84
%86 = load double, double* %2
%87 = call double @llvm.fmuladd.f64(double %85, double %86, double %83)
%88 = load double, double* %2
%89 = call double @llvm.fmuladd.f64(double 0xBFE3555555555555, double %88, double %87)
%90 = fadd double %89, 1.000000e+00
store double %90, double* %3
br label %199
91: ; preds = %38
%92 = load double, double* %2
%93 = fcmp oge double %92, 1.500000e+00
%94 = zext i1 %93 to i32
%95 = load double, double* %2
%96 = fcmp olt double %95, 2.500000e+00
%97 = zext i1 %96 to i32
%98 = and i32 %94, %97
%99 = icmp ne i32 %98, 0
br i1 %99, label %100, label %144
100: ; preds = %91
%101 = load double, double* %2
%102 = fmul double 0xBF81111111111111, %101
%103 = load double, double* %2
%104 = fmul double %102, %103
%105 = load double, double* %2
%106 = fmul double %104, %105
%107 = load double, double* %2
%108 = fmul double %106, %107
%109 = load double, double* %2
%110 = fmul double %108, %109
%111 = load double, double* %2
%112 = load double, double* %2
%113 = fmul double 0x3FBDDDDDDDDDDDDE, %112
%114 = load double, double* %2
%115 = fmul double %113, %114
%116 = load double, double* %2
%117 = fmul double %115, %116
%118 = load double, double* %2
%119 = fmul double %117, %118
%120 = load double, double* %2
%121 = fmul double %119, %120
%122 = call double @llvm.fmuladd.f64(double %110, double %111, double %121)
%123 = load double, double* %2
%124 = fmul double 0xBFE2AAAAAAAAAAAB, %123
%125 = load double, double* %2
%126 = fmul double %124, %125
%127 = load double, double* %2
%128 = fmul double %126, %127
%129 = load double, double* %2
%130 = call double @llvm.fmuladd.f64(double %128, double %129, double %122)
%131 = load double, double* %2
%132 = fmul double 0x3FF2AAAAAAAAAAAB, %131
%133 = load double, double* %2
%134 = fmul double %132, %133
%135 = load double, double* %2
%136 = call double @llvm.fmuladd.f64(double %134, double %135, double %130)
%137 = load double, double* %2
%138 = fmul double 0xBFDA222222222222, %137
%139 = load double, double* %2
%140 = call double @llvm.fmuladd.f64(double %138, double %139, double %136)
%141 = load double, double* %2
%142 = call double @llvm.fmuladd.f64(double 0xBFF4888888888889, double %141, double %140)
%143 = fadd double %142, 1.000000e+00
store double %143, double* %3
br label %198
144: ; preds = %91
%145 = load double, double* %2
%146 = fcmp oge double %145, 2.500000e+00
%147 = zext i1 %146 to i32
%148 = load double, double* %2
%149 = fcmp olt double %148, 3.500000e+00
%150 = zext i1 %149 to i32
%151 = and i32 %147, %150
%152 = icmp ne i32 %151, 0
br i1 %152, label %153, label %197
153: ; preds = %144
%154 = load double, double* %2
%155 = fmul double 0x3F56C16C16C16C17, %154
%156 = load double, double* %2
%157 = fmul double %155, %156
%158 = load double, double* %2
%159 = fmul double %157, %158
%160 = load double, double* %2
%161 = fmul double %159, %160
%162 = load double, double* %2
%163 = fmul double %161, %162
%164 = load double, double* %2
%165 = load double, double* %2
%166 = fmul double 0xBF9DDDDDDDDDDDDE, %165
%167 = load double, double* %2
%168 = fmul double %166, %167
%169 = load double, double* %2
%170 = fmul double %168, %169
%171 = load double, double* %2
%172 = fmul double %170, %171
%173 = load double, double* %2
%174 = fmul double %172, %173
%175 = call double @llvm.fmuladd.f64(double %163, double %164, double %174)
%176 = load double, double* %2
%177 = fmul double 0x3FCF1C71C71C71C7, %176
%178 = load double, double* %2
%179 = fmul double %177, %178
%180 = load double, double* %2
%181 = fmul double %179, %180
%182 = load double, double* %2
%183 = call double @llvm.fmuladd.f64(double %181, double %182, double %175)
%184 = load double, double* %2
%185 = fmul double 0xBFF0555555555555, %184
%186 = load double, double* %2
%187 = fmul double %185, %186
%188 = load double, double* %2
%189 = call double @llvm.fmuladd.f64(double %187, double %188, double %183)
%190 = load double, double* %2
%191 = fmul double 0x40020B60B60B60B6, %190
%192 = load double, double* %2
%193 = call double @llvm.fmuladd.f64(double %191, double %192, double %189)
%194 = load double, double* %2
%195 = call double @llvm.fmuladd.f64(double -2.450000e+00, double %194, double %193)
%196 = fadd double %195, 1.000000e+00
store double %196, double* %3
br label %197
197: ; preds = %153, %144
br label %198
198: ; preds = %197, %100
br label %199
199: ; preds = %198, %47
br label %200
200: ; preds = %199, %12
%201 = load double, double* %3
ret double %201
}

LLVM IR (-O2):
define double @interp2_k_lagrange7(double %0) {
%2 = fcmp oge double %0, 0.000000e+00
%3 = fcmp olt double %0, 5.000000e-01
%4 = and i1 %2, %3
br i1 %4, label %5, label %19
5: ; preds = %1
%6 = fmul double %0, 0xBF9C71C71C71C71C
%7 = fmul double %6, %0
%8 = fmul double %7, %0
%9 = fmul double %8, %0
%10 = fmul double %9, %0
%11 = fmul double %0, 0x3FD8E38E38E38E39
%12 = fmul double %11, %0
%13 = fmul double %12, %0
%14 = fmul double %13, %0
%15 = tail call double @llvm.fmuladd.f64(double %10, double %0, double %14)
%16 = fmul double %0, 0xBFF5C71C71C71C72
%17 = tail call double @llvm.fmuladd.f64(double %16, double %0, double %15)
%18 = fadd double %17, 1.000000e+00
br label %100
19: ; preds = %1
%20 = fcmp oge double %0, 5.000000e-01
%21 = fcmp olt double %0, 1.500000e+00
%22 = and i1 %20, %21
br i1 %22, label %23, label %46
23: ; preds = %19
%24 = fmul double %0, 0x3F95555555555555
%25 = fmul double %24, %0
%26 = fmul double %25, %0
%27 = fmul double %26, %0
%28 = fmul double %27, %0
%29 = fmul double %0, 0xBFC2AAAAAAAAAAAB
%30 = fmul double %29, %0
%31 = fmul double %30, %0
%32 = fmul double %31, %0
%33 = fmul double %32, %0
%34 = tail call double @llvm.fmuladd.f64(double %28, double %0, double %33)
%35 = fmul double %0, 0x3FC2AAAAAAAAAAAB
%36 = fmul double %35, %0
%37 = fmul double %36, %0
%38 = tail call double @llvm.fmuladd.f64(double %37, double %0, double %34)
%39 = fmul double %0, 0x3FE7555555555555
%40 = fmul double %39, %0
%41 = tail call double @llvm.fmuladd.f64(double %40, double %0, double %38)
%42 = fmul double %0, 0xBFF2AAAAAAAAAAAB
%43 = tail call double @llvm.fmuladd.f64(double %42, double %0, double %41)
%44 = tail call double @llvm.fmuladd.f64(double %0, double 0xBFE3555555555555, double %43)
%45 = fadd double %44, 1.000000e+00
br label %100
46: ; preds = %19
%47 = fcmp oge double %0, 1.500000e+00
%48 = fcmp olt double %0, 2.500000e+00
%49 = and i1 %47, %48
br i1 %49, label %50, label %73
50: ; preds = %46
%51 = fmul double %0, 0xBF81111111111111
%52 = fmul double %51, %0
%53 = fmul double %52, %0
%54 = fmul double %53, %0
%55 = fmul double %54, %0
%56 = fmul double %0, 0x3FBDDDDDDDDDDDDE
%57 = fmul double %56, %0
%58 = fmul double %57, %0
%59 = fmul double %58, %0
%60 = fmul double %59, %0
%61 = tail call double @llvm.fmuladd.f64(double %55, double %0, double %60)
%62 = fmul double %0, 0xBFE2AAAAAAAAAAAB
%63 = fmul double %62, %0
%64 = fmul double %63, %0
%65 = tail call double @llvm.fmuladd.f64(double %64, double %0, double %61)
%66 = fmul double %0, 0x3FF2AAAAAAAAAAAB
%67 = fmul double %66, %0
%68 = tail call double @llvm.fmuladd.f64(double %67, double %0, double %65)
%69 = fmul double %0, 0xBFDA222222222222
%70 = tail call double @llvm.fmuladd.f64(double %69, double %0, double %68)
%71 = tail call double @llvm.fmuladd.f64(double %0, double 0xBFF4888888888889, double %70)
%72 = fadd double %71, 1.000000e+00
br label %100
73: ; preds = %46
%74 = fcmp oge double %0, 2.500000e+00
%75 = fcmp olt double %0, 3.500000e+00
%76 = and i1 %74, %75
br i1 %76, label %77, label %100
77: ; preds = %73
%78 = fmul double %0, 0x3F56C16C16C16C17
%79 = fmul double %78, %0
%80 = fmul double %79, %0
%81 = fmul double %80, %0
%82 = fmul double %81, %0
%83 = fmul double %0, 0xBF9DDDDDDDDDDDDE
%84 = fmul double %83, %0
%85 = fmul double %84, %0
%86 = fmul double %85, %0
%87 = fmul double %86, %0
%88 = tail call double @llvm.fmuladd.f64(double %82, double %0, double %87)
%89 = fmul double %0, 0x3FCF1C71C71C71C7
%90 = fmul double %89, %0
%91 = fmul double %90, %0
%92 = tail call double @llvm.fmuladd.f64(double %91, double %0, double %88)
%93 = fmul double %0, 0xBFF0555555555555
%94 = fmul double %93, %0
%95 = tail call double @llvm.fmuladd.f64(double %94, double %0, double %92)
%96 = fmul double %0, 0x40020B60B60B60B6
%97 = tail call double @llvm.fmuladd.f64(double %96, double %0, double %95)
%98 = tail call double @llvm.fmuladd.f64(double %0, double -2.450000e+00, double %97)
%99 = fadd double %98, 1.000000e+00
br label %100
100: ; preds = %23, %73, %77, %50, %5
%101 = phi double [ %18, %5 ], [ %45, %23 ], [ %72, %50 ], [ %99, %77 ], [ 0.000000e+00, %73 ]
ret double %101
}