#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(int);
int log(double);
int /*<<< orphan*/ log10(int);
double norm_percent(double);
int pow(int /*<<< orphan*/, int);
double t_lower(double, int const);
double t_percent(const double p, const int df) {
  double f, y1, y2, y3, y4, y5, q, r, u, u2, x, delta;
  int n;
  q = (1.0 - p) / 2;
  f = (double)df;
  u = norm_percent(q);
  u2 = u * u;
  y1 = (u2 + 1) / 4;
  y2 = ((5 * u2 + 16) * u2 + 3) / 96;
  y3 = (((3 * u2 + 19) * u2 + 17) * u2 - 15) / 384;
  y4 = ((((79 * u2 + 776) * u2 + 1482) * u2 - 1920) * u2 - 945) / 92160;
  y5 = (((((27 * u2 + 339) * u2 + 930) * u2 - 1782) * u2 - 765) * u2 + 17955) /
       368640;
  x = u * (1 + (y1 + (y2 + (y3 + (y4 + y5 / f) / f) / f) / f) / f);
  if (df <= pow(log10(1 - q), 2) + 3) {
    r = t_lower(x, df);
    n = df + 1;
    delta =
        (r - (1 - q)) / exp((n * log((double)n / (df + x * x)) +
                             log((double)df / n / 2 / 3.14159265358979323846) -
                             1 + (1.0 / n - 1.0 / df) / 6.0) /
                            2.0);
    x -= delta;
  }
  return (x);
}


x86 assembly (clang, -O0):
<t_percent>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %edi,-0xc(%rbp)
movsd  0xe85(%rip),%xmm0
subsd  -0x8(%rbp),%xmm0
movsd  0xf30(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x48(%rbp),%xmm0
call   1080 <norm_percent@plt>
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xe3f(%rip),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  0xee2(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  0xebc(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xeb8(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe83(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xe87(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  0xe61(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe5d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe38(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe1b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xe07(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  0xde1(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xddd(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdb8(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd9b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd7e(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xd6a(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  0xd44(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd40(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd1b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcfe(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xce1(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcc4(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xcb0(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm3
movsd  -0x38(%rbp),%xmm4
movsd  -0x40(%rbp),%xmm5
divsd  -0x18(%rbp),%xmm5
addsd  %xmm5,%xmm4
divsd  -0x18(%rbp),%xmm4
addsd  %xmm4,%xmm3
divsd  -0x18(%rbp),%xmm3
addsd  %xmm3,%xmm1
divsd  -0x18(%rbp),%xmm1
addsd  %xmm1,%xmm2
divsd  -0x18(%rbp),%xmm2
movsd  0xc50(%rip),%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x78(%rbp)
movsd  0xc35(%rip),%xmm0
subsd  -0x48(%rbp),%xmm0
cvttsd2si %xmm0,%edi
call   1070 <log10@plt>
mov    %eax,%edi
mov    $0x2,%esi
call   1060 <pow@plt>
mov    %eax,%ecx
mov    -0x78(%rbp),%eax
add    $0x3,%ecx
cmp    %ecx,%eax
jg     1515 <t_percent+0x3b5>
movsd  -0x68(%rbp),%xmm0
mov    -0xc(%rbp),%edi
call   1040 <t_lower@plt>
movsd  %xmm0,-0x50(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  0xbe3(%rip),%xmm1
subsd  -0x48(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x74(%rbp),%eax
mov    %eax,-0x88(%rbp)
cvtsi2sdl -0x74(%rbp),%xmm0
cvtsi2sdl -0xc(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1050 <log@plt>
mov    %eax,%ecx
mov    -0x88(%rbp),%eax
imul   %ecx,%eax
mov    %eax,-0x84(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm0
cvtsi2sdl -0x74(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  0xc38(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xc3c(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1050 <log@plt>
mov    %eax,%ecx
mov    -0x84(%rbp),%eax
add    %ecx,%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm0
cvtsi2sdl -0x74(%rbp),%xmm2
movsd  0xb4d(%rip),%xmm1
divsd  %xmm2,%xmm1
cvtsi2sdl -0xc(%rbp),%xmm3
movsd  0xb3c(%rip),%xmm2
divsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
movsd  0xbec(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  0xbd4(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<t_percent>:
push   %rbp
push   %rbx
sub    $0x48,%rsp
mov    %edi,%ebp
movsd  0xe90(%rip),%xmm1
subsd  %xmm0,%xmm1
mulsd  0xe8c(%rip),%xmm1
movsd  %xmm1,0x8(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %edi,%xmm0
movapd %xmm0,0x20(%rsp)
movapd %xmm1,%xmm0
call   1080 <norm_percent@plt>
movapd %xmm0,%xmm3
mulsd  %xmm0,%xmm3
movsd  0xe70(%rip),%xmm1
mulsd  %xmm3,%xmm1
addsd  0xe6c(%rip),%xmm1
mulsd  %xmm3,%xmm1
movsd  0xe68(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm3,%xmm2
addsd  0xe60(%rip),%xmm2
mulsd  %xmm3,%xmm2
addsd  0xe5c(%rip),%xmm2
movsd  0xe64(%rip),%xmm4
mulsd  %xmm3,%xmm4
addsd  0xe60(%rip),%xmm4
mulsd  %xmm3,%xmm4
addsd  0xe5c(%rip),%xmm4
mulsd  %xmm3,%xmm2
mulsd  %xmm3,%xmm4
addsd  0xe54(%rip),%xmm4
movsd  0xe5c(%rip),%xmm5
mulsd  %xmm3,%xmm5
addsd  0xe58(%rip),%xmm5
mulsd  %xmm3,%xmm4
mulsd  %xmm3,%xmm5
addsd  0xe50(%rip),%xmm5
mulsd  %xmm3,%xmm5
addsd  0xe4c(%rip),%xmm5
mulsd  %xmm3,%xmm5
addsd  0xe48(%rip),%xmm5
mulsd  %xmm3,%xmm5
movsd  0xdac(%rip),%xmm6
addsd  %xmm6,%xmm3
mulsd  0xdb0(%rip),%xmm3
addsd  0xdd8(%rip),%xmm2
addsd  0xdf8(%rip),%xmm4
addsd  0xe20(%rip),%xmm5
divsd  0xe20(%rip),%xmm5
unpcklpd %xmm5,%xmm4
movapd 0xe34(%rip),%xmm5
movapd 0x20(%rsp),%xmm7
unpcklpd %xmm7,%xmm5
divpd  %xmm5,%xmm4
movapd %xmm4,%xmm5
unpckhpd %xmm4,%xmm5
addpd  %xmm4,%xmm5
unpcklpd %xmm5,%xmm2
movapd 0xe1e(%rip),%xmm4
unpcklpd %xmm7,%xmm4
divpd  %xmm4,%xmm2
movapd %xmm2,%xmm4
unpckhpd %xmm2,%xmm4
addpd  %xmm2,%xmm4
unpcklpd %xmm4,%xmm1
movapd 0xe0e(%rip),%xmm2
unpcklpd %xmm7,%xmm2
divpd  %xmm2,%xmm1
movapd %xmm1,%xmm2
unpckhpd %xmm1,%xmm2
addsd  %xmm1,%xmm2
divsd  %xmm7,%xmm2
addsd  %xmm3,%xmm2
divsd  %xmm7,%xmm2
movapd %xmm6,%xmm1
addsd  %xmm6,%xmm2
mulsd  %xmm0,%xmm2
movapd %xmm2,0x10(%rsp)
subsd  0x8(%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
cvttsd2si %xmm1,%edi
call   1070 <log10@plt>
mov    %eax,%edi
mov    $0x2,%esi
call   1060 <pow@plt>
add    $0x3,%eax
cmp    %ebp,%eax
jge    1337 <t_percent+0x1d7>
movapd 0x10(%rsp),%xmm0
jmp    1404 <t_percent+0x2a4>
movapd 0x10(%rsp),%xmm0
mov    %ebp,%edi
call   1040 <t_lower@plt>
add    $0x1,%ebp
xorps  %xmm2,%xmm2
cvtsi2sd %ebp,%xmm2
movapd %xmm2,0x30(%rsp)
subsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movapd 0x10(%rsp),%xmm1
mulsd  %xmm1,%xmm1
addsd  0x20(%rsp),%xmm1
movapd %xmm2,%xmm0
divsd  %xmm1,%xmm0
call   1050 <log@plt>
mov    %eax,%ebx
imul   %ebp,%ebx
movapd 0x20(%rsp),%xmm0
divsd  0x30(%rsp),%xmm0
mulsd  0xc72(%rip),%xmm0
divsd  0xd0a(%rip),%xmm0
call   1050 <log@plt>
add    %ebx,%eax
add    $0xffffffff,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd 0x30(%rsp),%xmm2
unpcklpd 0x20(%rsp),%xmm2
movapd 0xd2d(%rip),%xmm1
divpd  %xmm2,%xmm1
movapd %xmm1,%xmm2
unpckhpd %xmm1,%xmm2
subsd  %xmm2,%xmm1
divsd  0xcd5(%rip),%xmm1
addsd  %xmm0,%xmm1
mulsd  0xc21(%rip),%xmm1
cvttsd2si %xmm1,%edi
call   1030 <exp@plt>
movsd  0x8(%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd 0x10(%rsp),%xmm0
subsd  %xmm1,%xmm0
add    $0x48,%rsp
pop    %rbx
pop    %rbp
ret

LLVM IR (-O0):
define double @t_percent(double %0, i32 %1) {
%3 = alloca double
%4 = alloca i32
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca i32
store double %0, double* %3
store i32 %1, i32* %4
%18 = load double, double* %3
%19 = fsub double 1.000000e+00, %18
%20 = fdiv double %19, 2.000000e+00
store double %20, double* %11
%21 = load i32, i32* %4
%22 = sitofp i32 %21 to double
store double %22, double* %5
%23 = load double, double* %11
%24 = call double @norm_percent(double %23)
store double %24, double* %13
%25 = load double, double* %13
%26 = load double, double* %13
%27 = fmul double %25, %26
store double %27, double* %14
%28 = load double, double* %14
%29 = fadd double %28, 1.000000e+00
%30 = fdiv double %29, 4.000000e+00
store double %30, double* %6
%31 = load double, double* %14
%32 = call double @llvm.fmuladd.f64(double 5.000000e+00, double %31, double 1.600000e+01)
%33 = load double, double* %14
%34 = call double @llvm.fmuladd.f64(double %32, double %33, double 3.000000e+00)
%35 = fdiv double %34, 9.600000e+01
store double %35, double* %7
%36 = load double, double* %14
%37 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %36, double 1.900000e+01)
%38 = load double, double* %14
%39 = call double @llvm.fmuladd.f64(double %37, double %38, double 1.700000e+01)
%40 = load double, double* %14
%41 = call double @llvm.fmuladd.f64(double %39, double %40, double -1.500000e+01)
%42 = fdiv double %41, 3.840000e+02
store double %42, double* %8
%43 = load double, double* %14
%44 = call double @llvm.fmuladd.f64(double 7.900000e+01, double %43, double 7.760000e+02)
%45 = load double, double* %14
%46 = call double @llvm.fmuladd.f64(double %44, double %45, double 1.482000e+03)
%47 = load double, double* %14
%48 = call double @llvm.fmuladd.f64(double %46, double %47, double -1.920000e+03)
%49 = load double, double* %14
%50 = call double @llvm.fmuladd.f64(double %48, double %49, double -9.450000e+02)
%51 = fdiv double %50, 9.216000e+04
store double %51, double* %9
%52 = load double, double* %14
%53 = call double @llvm.fmuladd.f64(double 2.700000e+01, double %52, double 3.390000e+02)
%54 = load double, double* %14
%55 = call double @llvm.fmuladd.f64(double %53, double %54, double 9.300000e+02)
%56 = load double, double* %14
%57 = call double @llvm.fmuladd.f64(double %55, double %56, double -1.782000e+03)
%58 = load double, double* %14
%59 = call double @llvm.fmuladd.f64(double %57, double %58, double -7.650000e+02)
%60 = load double, double* %14
%61 = call double @llvm.fmuladd.f64(double %59, double %60, double 1.795500e+04)
%62 = fdiv double %61, 3.686400e+05
store double %62, double* %10
%63 = load double, double* %13
%64 = load double, double* %6
%65 = load double, double* %7
%66 = load double, double* %8
%67 = load double, double* %9
%68 = load double, double* %10
%69 = load double, double* %5
%70 = fdiv double %68, %69
%71 = fadd double %67, %70
%72 = load double, double* %5
%73 = fdiv double %71, %72
%74 = fadd double %66, %73
%75 = load double, double* %5
%76 = fdiv double %74, %75
%77 = fadd double %65, %76
%78 = load double, double* %5
%79 = fdiv double %77, %78
%80 = fadd double %64, %79
%81 = load double, double* %5
%82 = fdiv double %80, %81
%83 = fadd double 1.000000e+00, %82
%84 = fmul double %63, %83
store double %84, double* %15
%85 = load i32, i32* %4
%86 = load double, double* %11
%87 = fsub double 1.000000e+00, %86
%88 = fptosi double %87 to i32
%89 = call i32 @log10(i32 %88)
%90 = call i32 @pow(i32 %89, i32 2)
%91 = add nsw i32 %90, 3
%92 = icmp sle i32 %85, %91
br i1 %92, label %93, label %141
93: ; preds = %2
%94 = load double, double* %15
%95 = load i32, i32* %4
%96 = call double @t_lower(double %94, i32 %95)
store double %96, double* %12
%97 = load i32, i32* %4
%98 = add nsw i32 %97, 1
store i32 %98, i32* %17
%99 = load double, double* %12
%100 = load double, double* %11
%101 = fsub double 1.000000e+00, %100
%102 = fsub double %99, %101
%103 = load i32, i32* %17
%104 = load i32, i32* %17
%105 = sitofp i32 %104 to double
%106 = load i32, i32* %4
%107 = sitofp i32 %106 to double
%108 = load double, double* %15
%109 = load double, double* %15
%110 = call double @llvm.fmuladd.f64(double %108, double %109, double %107)
%111 = fdiv double %105, %110
%112 = call i32 @log(double %111)
%113 = mul nsw i32 %103, %112
%114 = load i32, i32* %4
%115 = sitofp i32 %114 to double
%116 = load i32, i32* %17
%117 = sitofp i32 %116 to double
%118 = fdiv double %115, %117
%119 = fdiv double %118, 2.000000e+00
%120 = fdiv double %119, 0x400921FB54442D18
%121 = call i32 @log(double %120)
%122 = add nsw i32 %113, %121
%123 = sub nsw i32 %122, 1
%124 = sitofp i32 %123 to double
%125 = load i32, i32* %17
%126 = sitofp i32 %125 to double
%127 = fdiv double 1.000000e+00, %126
%128 = load i32, i32* %4
%129 = sitofp i32 %128 to double
%130 = fdiv double 1.000000e+00, %129
%131 = fsub double %127, %130
%132 = fdiv double %131, 6.000000e+00
%133 = fadd double %124, %132
%134 = fdiv double %133, 2.000000e+00
%135 = fptosi double %134 to i32
%136 = call double @exp(i32 %135)
%137 = fdiv double %102, %136
store double %137, double* %16
%138 = load double, double* %16
%139 = load double, double* %15
%140 = fsub double %139, %138
store double %140, double* %15
br label %141
141: ; preds = %93, %2
%142 = load double, double* %15
ret double %142
}

LLVM IR (-O2):
define double @t_percent(double %0, i32 %1) {
%3 = fsub double 1.000000e+00, %0
%4 = fmul double %3, 5.000000e-01
%5 = sitofp i32 %1 to double
%6 = tail call double @norm_percent(double %4)
%7 = fmul double %6, %6
%8 = fadd double %7, 1.000000e+00
%9 = fmul double %8, 2.500000e-01
%10 = tail call double @llvm.fmuladd.f64(double %7, double 5.000000e+00, double 1.600000e+01)
%11 = tail call double @llvm.fmuladd.f64(double %10, double %7, double 3.000000e+00)
%12 = tail call double @llvm.fmuladd.f64(double %7, double 3.000000e+00, double 1.900000e+01)
%13 = tail call double @llvm.fmuladd.f64(double %12, double %7, double 1.700000e+01)
%14 = tail call double @llvm.fmuladd.f64(double %13, double %7, double -1.500000e+01)
%15 = tail call double @llvm.fmuladd.f64(double %7, double 7.900000e+01, double 7.760000e+02)
%16 = tail call double @llvm.fmuladd.f64(double %15, double %7, double 1.482000e+03)
%17 = tail call double @llvm.fmuladd.f64(double %16, double %7, double -1.920000e+03)
%18 = tail call double @llvm.fmuladd.f64(double %17, double %7, double -9.450000e+02)
%19 = tail call double @llvm.fmuladd.f64(double %7, double 2.700000e+01, double 3.390000e+02)
%20 = tail call double @llvm.fmuladd.f64(double %19, double %7, double 9.300000e+02)
%21 = tail call double @llvm.fmuladd.f64(double %20, double %7, double -1.782000e+03)
%22 = tail call double @llvm.fmuladd.f64(double %21, double %7, double -7.650000e+02)
%23 = tail call double @llvm.fmuladd.f64(double %22, double %7, double 1.795500e+04)
%24 = fdiv double %23, 3.686400e+05
%25 = insertelement <2 x double> poison, double %18, i64 0
%26 = insertelement <2 x double> %25, double %24, i64 1
%27 = insertelement <2 x double> <double 9.216000e+04, double poison>, double %5, i64 1
%28 = fdiv <2 x double> %26, %27
%29 = shufflevector <2 x double> %28, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%30 = fadd <2 x double> %28, %29
%31 = insertelement <2 x double> poison, double %14, i64 0
%32 = shufflevector <2 x double> %31, <2 x double> %30, <2 x i32> <i32 0, i32 2>
%33 = insertelement <2 x double> <double 3.840000e+02, double poison>, double %5, i64 1
%34 = fdiv <2 x double> %32, %33
%35 = shufflevector <2 x double> %34, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%36 = fadd <2 x double> %34, %35
%37 = insertelement <2 x double> poison, double %11, i64 0
%38 = shufflevector <2 x double> %37, <2 x double> %36, <2 x i32> <i32 0, i32 2>
%39 = insertelement <2 x double> <double 9.600000e+01, double poison>, double %5, i64 1
%40 = fdiv <2 x double> %38, %39
%41 = shufflevector <2 x double> %40, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%42 = fadd <2 x double> %40, %41
%43 = extractelement <2 x double> %42, i64 0
%44 = fdiv double %43, %5
%45 = fadd double %9, %44
%46 = fdiv double %45, %5
%47 = fadd double %46, 1.000000e+00
%48 = fmul double %6, %47
%49 = fsub double 1.000000e+00, %4
%50 = fptosi double %49 to i32
%51 = tail call i32 @log10(i32 %50)
%52 = tail call i32 @pow(i32 %51, i32 2)
%53 = add nsw i32 %52, 3
%54 = icmp slt i32 %53, %1
br i1 %54, label %84, label %55
55: ; preds = %2
%56 = tail call double @t_lower(double %48, i32 %1)
%57 = add nsw i32 %1, 1
%58 = fsub double %56, %49
%59 = sitofp i32 %57 to double
%60 = tail call double @llvm.fmuladd.f64(double %48, double %48, double %5)
%61 = fdiv double %59, %60
%62 = tail call i32 @log(double %61)
%63 = mul nsw i32 %62, %57
%64 = fdiv double %5, %59
%65 = fmul double %64, 5.000000e-01
%66 = fdiv double %65, 0x400921FB54442D18
%67 = tail call i32 @log(double %66)
%68 = add i32 %67, -1
%69 = add i32 %68, %63
%70 = sitofp i32 %69 to double
%71 = insertelement <2 x double> poison, double %59, i64 0
%72 = insertelement <2 x double> %71, double %5, i64 1
%73 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %72
%74 = shufflevector <2 x double> %73, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%75 = fsub <2 x double> %73, %74
%76 = extractelement <2 x double> %75, i64 0
%77 = fdiv double %76, 6.000000e+00
%78 = fadd double %77, %70
%79 = fmul double %78, 5.000000e-01
%80 = fptosi double %79 to i32
%81 = tail call double @exp(i32 %80)
%82 = fdiv double %58, %81
%83 = fsub double %48, %82
br label %84
84: ; preds = %55, %2
%85 = phi double [ %83, %55 ], [ %48, %2 ]
ret double %85
}