#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 fabs(double);
double f_up_poly(double x) {
  x = fabs(x);
  if (0.875 < x && x <= 1.)
    return 64. / 3 * (x - 1.) * (x - 1.) * (x - 1.) * (x - 1.);
  if (0.625 < x && x <= 0.875)
    return 0.010416667 * (-353. + 2784. * x - 6528. * x * x +
                          6144. * x * x * x - 2048. * x * x * x * x);
  if (0.5 < x && x <= 0.625)
    return 0.166666667 * (17. - 76. * x + 192. * x * x - 256. * x * x * x +
                          128. * x * x * x * x);
  if (0.375 < x && x <= 0.5)
    return 0.166666667 * (1. + 52. * x - 192. * x * x + 256. * x * x * x -
                          128. * x * x * x * x);
  if (0.125 < x && x <= 0.375)
    return 0.010416667 * (97. - 32. * x + 384. * x * x - 2048. * x * x * x +
                          2048. * x * x * x * x);
  if (0. < x && x <= 0.125)
    return 0.33333333333 * (3. - 64. * x * x * x * x);
  return 0.;
}


x86 assembly (clang, -O0):
<f_up_poly>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movaps 0xfbb(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  0xed5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11ae <f_up_poly+0xae>
movsd  0xecb(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jb     11ae <f_up_poly+0xae>
movsd  -0x10(%rbp),%xmm1
movsd  0xeb3(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  0xf67(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xe96(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xe81(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  0xe6c(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    15a6 <f_up_poly+0x4a6>
movsd  -0x10(%rbp),%xmm0
movsd  0xe55(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1296 <f_up_poly+0x196>
movsd  0xe33(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jb     1296 <f_up_poly+0x196>
movsd  -0x10(%rbp),%xmm0
movsd  0xed3(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xecf(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xeb3(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xe7a(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe03(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xdc0(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    15a6 <f_up_poly+0x4a6>
movsd  -0x10(%rbp),%xmm0
movsd  0xd75(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1367 <f_up_poly+0x267>
movsd  0xd5b(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jb     1367 <f_up_poly+0x267>
movsd  -0x10(%rbp),%xmm0
movsd  0xdcb(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdc7(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xda3(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xd81(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xd43(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xd17(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    15a6 <f_up_poly+0x4a6>
movsd  -0x10(%rbp),%xmm0
movsd  0xcac(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    144f <f_up_poly+0x34f>
movsd  0xc92(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jb     144f <f_up_poly+0x34f>
movsd  -0x10(%rbp),%xmm0
movsd  0xcf2(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc5e(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xcd2(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xc99(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xc72(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xc2f(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    15a6 <f_up_poly+0x4a6>
movsd  -0x10(%rbp),%xmm0
movsd  0xbcc(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1520 <f_up_poly+0x420>
movsd  0xbb2(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jb     1520 <f_up_poly+0x420>
movsd  -0x10(%rbp),%xmm0
movsd  0xbda(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xbd6(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xbba(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xb98(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xb62(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xb36(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    15a6 <f_up_poly+0x4a6>
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    159e <f_up_poly+0x49e>
movsd  0xaee(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jb     159e <f_up_poly+0x49e>
movsd  0xaf3(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm0
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm0,%xmm1
movsd  0xab4(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xaa0(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    15a6 <f_up_poly+0x4a6>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<f_up_poly>:
movapd %xmm0,%xmm1
movapd 0xef4(%rip),%xmm2
andpd  %xmm0,%xmm2
ucomisd 0xef8(%rip),%xmm2
jbe    114d <f_up_poly+0x4d>
movsd  0xef6(%rip),%xmm0
ucomisd %xmm2,%xmm0
jb     114d <f_up_poly+0x4d>
movsd  0xfc8(%rip),%xmm1
addsd  %xmm2,%xmm1
movsd  0xfc4(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
ret
ucomisd 0xecb(%rip),%xmm2
jbe    11ca <f_up_poly+0xca>
movsd  0xeb1(%rip),%xmm0
ucomisd %xmm2,%xmm0
jb     11ca <f_up_poly+0xca>
movsd  0xf63(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xf5f(%rip),%xmm0
movsd  0xf5f(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xf53(%rip),%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm1,%xmm3
movsd  0xf43(%rip),%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm3,%xmm0
mulsd  0xeaf(%rip),%xmm0
ret
ucomisd 0xe56(%rip),%xmm2
jbe    122c <f_up_poly+0x12c>
movsd  0xe44(%rip),%xmm0
ucomisd %xmm2,%xmm0
jb     122c <f_up_poly+0x12c>
movsd  0xebe(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xeba(%rip),%xmm0
movsd  0xeba(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xeae(%rip),%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm1,%xmm3
movsd  0xe9e(%rip),%xmm0
jmp    128c <f_up_poly+0x18c>
ucomisd 0xdfc(%rip),%xmm2
jbe    12a9 <f_up_poly+0x1a9>
movsd  0xdea(%rip),%xmm0
ucomisd %xmm2,%xmm0
jb     12a9 <f_up_poly+0x1a9>
movsd  0xe34(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xdc0(%rip),%xmm0
movsd  0xe28(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xe1c(%rip),%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm1,%xmm3
movsd  0xe0c(%rip),%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm3,%xmm0
mulsd  0xdf8(%rip),%xmm0
ret
ucomisd 0xd87(%rip),%xmm2
jbe    1312 <f_up_poly+0x212>
movsd  0xd75(%rip),%xmm0
ucomisd %xmm2,%xmm0
jb     1312 <f_up_poly+0x212>
movsd  0xd8f(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xd8b(%rip),%xmm0
movsd  0xd8b(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xd7f(%rip),%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
subsd  %xmm0,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  0xd67(%rip),%xmm0
ret
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
je     1352 <f_up_poly+0x252>
movsd  0xd14(%rip),%xmm1
ucomisd %xmm2,%xmm1
jb     1352 <f_up_poly+0x252>
movsd  0xd0e(%rip),%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm0
addsd  0xcfe(%rip),%xmm0
mulsd  0xcfe(%rip),%xmm0
ret

LLVM IR (-O0):
define double @f_up_poly(double %0) {
%2 = alloca double
%3 = alloca double
store double %0, double* %3
%4 = load double, double* %3
%5 = call double @llvm.fabs.f64(double %4)
store double %5, double* %3
%6 = load double, double* %3
%7 = fcmp olt double 8.750000e-01, %6
br i1 %7, label %8, label %24
8: ; preds = %1
%9 = load double, double* %3
%10 = fcmp ole double %9, 1.000000e+00
br i1 %10, label %11, label %24
11: ; preds = %8
%12 = load double, double* %3
%13 = fsub double %12, 1.000000e+00
%14 = fmul double 0x4035555555555555, %13
%15 = load double, double* %3
%16 = fsub double %15, 1.000000e+00
%17 = fmul double %14, %16
%18 = load double, double* %3
%19 = fsub double %18, 1.000000e+00
%20 = fmul double %17, %19
%21 = load double, double* %3
%22 = fsub double %21, 1.000000e+00
%23 = fmul double %20, %22
store double %23, double* %2
br label %160
24: ; preds = %8, %1
%25 = load double, double* %3
%26 = fcmp olt double 6.250000e-01, %25
br i1 %26, label %27, label %54
27: ; preds = %24
%28 = load double, double* %3
%29 = fcmp ole double %28, 8.750000e-01
br i1 %29, label %30, label %54
30: ; preds = %27
%31 = load double, double* %3
%32 = call double @llvm.fmuladd.f64(double 2.784000e+03, double %31, double -3.530000e+02)
%33 = load double, double* %3
%34 = fmul double 6.528000e+03, %33
%35 = load double, double* %3
%36 = fneg double %34
%37 = call double @llvm.fmuladd.f64(double %36, double %35, double %32)
%38 = load double, double* %3
%39 = fmul double 6.144000e+03, %38
%40 = load double, double* %3
%41 = fmul double %39, %40
%42 = load double, double* %3
%43 = call double @llvm.fmuladd.f64(double %41, double %42, double %37)
%44 = load double, double* %3
%45 = fmul double 2.048000e+03, %44
%46 = load double, double* %3
%47 = fmul double %45, %46
%48 = load double, double* %3
%49 = fmul double %47, %48
%50 = load double, double* %3
%51 = fneg double %49
%52 = call double @llvm.fmuladd.f64(double %51, double %50, double %43)
%53 = fmul double 0x3F85555560C95D45, %52
store double %53, double* %2
br label %160
54: ; preds = %27, %24
%55 = load double, double* %3
%56 = fcmp olt double 5.000000e-01, %55
br i1 %56, label %57, label %83
57: ; preds = %54
%58 = load double, double* %3
%59 = fcmp ole double %58, 6.250000e-01
br i1 %59, label %60, label %83
60: ; preds = %57
%61 = load double, double* %3
%62 = call double @llvm.fmuladd.f64(double -7.600000e+01, double %61, double 1.700000e+01)
%63 = load double, double* %3
%64 = fmul double 1.920000e+02, %63
%65 = load double, double* %3
%66 = call double @llvm.fmuladd.f64(double %64, double %65, double %62)
%67 = load double, double* %3
%68 = fmul double 2.560000e+02, %67
%69 = load double, double* %3
%70 = fmul double %68, %69
%71 = load double, double* %3
%72 = fneg double %70
%73 = call double @llvm.fmuladd.f64(double %72, double %71, double %66)
%74 = load double, double* %3
%75 = fmul double 1.280000e+02, %74
%76 = load double, double* %3
%77 = fmul double %75, %76
%78 = load double, double* %3
%79 = fmul double %77, %78
%80 = load double, double* %3
%81 = call double @llvm.fmuladd.f64(double %79, double %80, double %73)
%82 = fmul double 0x3FC55555560C95D4, %81
store double %82, double* %2
br label %160
83: ; preds = %57, %54
%84 = load double, double* %3
%85 = fcmp olt double 3.750000e-01, %84
br i1 %85, label %86, label %113
86: ; preds = %83
%87 = load double, double* %3
%88 = fcmp ole double %87, 5.000000e-01
br i1 %88, label %89, label %113
89: ; preds = %86
%90 = load double, double* %3
%91 = call double @llvm.fmuladd.f64(double 5.200000e+01, double %90, double 1.000000e+00)
%92 = load double, double* %3
%93 = fmul double 1.920000e+02, %92
%94 = load double, double* %3
%95 = fneg double %93
%96 = call double @llvm.fmuladd.f64(double %95, double %94, double %91)
%97 = load double, double* %3
%98 = fmul double 2.560000e+02, %97
%99 = load double, double* %3
%100 = fmul double %98, %99
%101 = load double, double* %3
%102 = call double @llvm.fmuladd.f64(double %100, double %101, double %96)
%103 = load double, double* %3
%104 = fmul double 1.280000e+02, %103
%105 = load double, double* %3
%106 = fmul double %104, %105
%107 = load double, double* %3
%108 = fmul double %106, %107
%109 = load double, double* %3
%110 = fneg double %108
%111 = call double @llvm.fmuladd.f64(double %110, double %109, double %102)
%112 = fmul double 0x3FC55555560C95D4, %111
store double %112, double* %2
br label %160
113: ; preds = %86, %83
%114 = load double, double* %3
%115 = fcmp olt double 1.250000e-01, %114
br i1 %115, label %116, label %142
116: ; preds = %113
%117 = load double, double* %3
%118 = fcmp ole double %117, 3.750000e-01
br i1 %118, label %119, label %142
119: ; preds = %116
%120 = load double, double* %3
%121 = call double @llvm.fmuladd.f64(double -3.200000e+01, double %120, double 9.700000e+01)
%122 = load double, double* %3
%123 = fmul double 3.840000e+02, %122
%124 = load double, double* %3
%125 = call double @llvm.fmuladd.f64(double %123, double %124, double %121)
%126 = load double, double* %3
%127 = fmul double 2.048000e+03, %126
%128 = load double, double* %3
%129 = fmul double %127, %128
%130 = load double, double* %3
%131 = fneg double %129
%132 = call double @llvm.fmuladd.f64(double %131, double %130, double %125)
%133 = load double, double* %3
%134 = fmul double 2.048000e+03, %133
%135 = load double, double* %3
%136 = fmul double %134, %135
%137 = load double, double* %3
%138 = fmul double %136, %137
%139 = load double, double* %3
%140 = call double @llvm.fmuladd.f64(double %138, double %139, double %132)
%141 = fmul double 0x3F85555560C95D45, %140
store double %141, double* %2
br label %160
142: ; preds = %116, %113
%143 = load double, double* %3
%144 = fcmp olt double 0.000000e+00, %143
br i1 %144, label %145, label %159
145: ; preds = %142
%146 = load double, double* %3
%147 = fcmp ole double %146, 1.250000e-01
br i1 %147, label %148, label %159
148: ; preds = %145
%149 = load double, double* %3
%150 = fmul double 6.400000e+01, %149
%151 = load double, double* %3
%152 = fmul double %150, %151
%153 = load double, double* %3
%154 = fmul double %152, %153
%155 = load double, double* %3
%156 = fneg double %154
%157 = call double @llvm.fmuladd.f64(double %156, double %155, double 3.000000e+00)
%158 = fmul double 0x3FD5555555546AC5, %157
store double %158, double* %2
br label %160
159: ; preds = %145, %142
store double 0.000000e+00, double* %2
br label %160
160: ; preds = %159, %148, %119, %89, %60, %30, %11
%161 = load double, double* %2
ret double %161
}

LLVM IR (-O2):
define double @f_up_poly(double %0) {
%2 = tail call double @llvm.fabs.f64(double %0)
%3 = fcmp ogt double %2, 8.750000e-01
%4 = fcmp ole double %2, 1.000000e+00
%5 = and i1 %3, %4
br i1 %5, label %6, label %12
6: ; preds = %1
%7 = fadd double %2, -1.000000e+00
%8 = fmul double %7, 0x4035555555555555
%9 = fmul double %7, %8
%10 = fmul double %7, %9
%11 = fmul double %7, %10
br label %85
12: ; preds = %1
%13 = fcmp ogt double %2, 6.250000e-01
%14 = fcmp ole double %2, 8.750000e-01
%15 = and i1 %13, %14
br i1 %15, label %16, label %28
16: ; preds = %12
%17 = tail call double @llvm.fmuladd.f64(double %2, double 2.784000e+03, double -3.530000e+02)
%18 = fmul double %2, -6.528000e+03
%19 = tail call double @llvm.fmuladd.f64(double %18, double %2, double %17)
%20 = fmul double %2, 6.144000e+03
%21 = fmul double %2, %20
%22 = tail call double @llvm.fmuladd.f64(double %21, double %2, double %19)
%23 = fmul double %2, -2.048000e+03
%24 = fmul double %2, %23
%25 = fmul double %2, %24
%26 = tail call double @llvm.fmuladd.f64(double %25, double %2, double %22)
%27 = fmul double %26, 0x3F85555560C95D45
br label %85
28: ; preds = %12
%29 = fcmp ogt double %2, 5.000000e-01
%30 = fcmp ole double %2, 6.250000e-01
%31 = and i1 %29, %30
br i1 %31, label %32, label %44
32: ; preds = %28
%33 = tail call double @llvm.fmuladd.f64(double %2, double -7.600000e+01, double 1.700000e+01)
%34 = fmul double %2, 1.920000e+02
%35 = tail call double @llvm.fmuladd.f64(double %34, double %2, double %33)
%36 = fmul double %2, -2.560000e+02
%37 = fmul double %2, %36
%38 = tail call double @llvm.fmuladd.f64(double %37, double %2, double %35)
%39 = fmul double %2, 1.280000e+02
%40 = fmul double %2, %39
%41 = fmul double %2, %40
%42 = tail call double @llvm.fmuladd.f64(double %41, double %2, double %38)
%43 = fmul double %42, 0x3FC55555560C95D4
br label %85
44: ; preds = %28
%45 = fcmp ogt double %2, 3.750000e-01
%46 = fcmp ole double %2, 5.000000e-01
%47 = and i1 %45, %46
br i1 %47, label %48, label %60
48: ; preds = %44
%49 = tail call double @llvm.fmuladd.f64(double %2, double 5.200000e+01, double 1.000000e+00)
%50 = fmul double %2, -1.920000e+02
%51 = tail call double @llvm.fmuladd.f64(double %50, double %2, double %49)
%52 = fmul double %2, 2.560000e+02
%53 = fmul double %2, %52
%54 = tail call double @llvm.fmuladd.f64(double %53, double %2, double %51)
%55 = fmul double %2, -1.280000e+02
%56 = fmul double %2, %55
%57 = fmul double %2, %56
%58 = tail call double @llvm.fmuladd.f64(double %57, double %2, double %54)
%59 = fmul double %58, 0x3FC55555560C95D4
br label %85
60: ; preds = %44
%61 = fcmp ogt double %2, 1.250000e-01
%62 = fcmp ole double %2, 3.750000e-01
%63 = and i1 %61, %62
br i1 %63, label %64, label %75
64: ; preds = %60
%65 = tail call double @llvm.fmuladd.f64(double %2, double -3.200000e+01, double 9.700000e+01)
%66 = fmul double %2, 3.840000e+02
%67 = tail call double @llvm.fmuladd.f64(double %66, double %2, double %65)
%68 = fmul double %2, 2.048000e+03
%69 = fmul double %2, %68
%70 = fneg double %69
%71 = tail call double @llvm.fmuladd.f64(double %70, double %2, double %67)
%72 = fmul double %2, %69
%73 = tail call double @llvm.fmuladd.f64(double %72, double %2, double %71)
%74 = fmul double %73, 0x3F85555560C95D45
br label %85
75: ; preds = %60
%76 = fcmp one double %0, 0.000000e+00
%77 = fcmp ole double %2, 1.250000e-01
%78 = select i1 %76, i1 %77, i1 false
br i1 %78, label %79, label %85
79: ; preds = %75
%80 = fmul double %2, -6.400000e+01
%81 = fmul double %2, %80
%82 = fmul double %2, %81
%83 = tail call double @llvm.fmuladd.f64(double %82, double %2, double 3.000000e+00)
%84 = fmul double %83, 0x3FD5555555546AC5
br label %85
85: ; preds = %75, %79, %64, %48, %32, %16, %6
%86 = phi double [ %11, %6 ], [ %27, %16 ], [ %43, %32 ], [ %59, %48 ], [ %74, %64 ], [ %84, %79 ], [ 0.000000e+00, %75 ]
ret double %86
}