void initialize(f1, f2, n, Q, x1, x2) int n;
double f1, f2, Q, *x1, *x2;
{
  int i;
  double q, omega, *tau_epsilon, *tau_sigma;
  double exp1, exp2, dexp, expo;
  double *dvector();
  void free_dvector();
  tau_epsilon = dvector(1, n);
  tau_sigma = dvector(1, n);
  if (n > 1) {
    exp1 = log10(f1);
    exp2 = log10(f2);
    dexp = (exp2 - exp1) / ((double)(n - 1));
    q = 1.0 / ((n - 1.0) * Q);
    for (i = 1, expo = exp1; i <= n; i++, expo += dexp) {
      omega = 6.28318530717958 * pow(10.0, expo);
      tau_sigma[i] = 1.0 / omega;
      tau_epsilon[i] = tau_sigma[i] * (1.0 + q) / (1.0 - q);
    }
  } else {
    q = 1.0 / Q;
    exp1 = log10(f1);
    exp2 = log10(f2);
    expo = (exp1 + exp2) / 2.0;
    omega = 6.28318530717958 * pow(10.0, expo);
    tau_sigma[1] = 1.0 / omega;
    tau_epsilon[1] = tau_sigma[1] * (1.0 + q) / (1.0 - q);
  }
  for (i = 1; i <= n; i++) {
    x1[i] = tau_epsilon[i] - tau_sigma[i];
    x2[i] = tau_sigma[i];
  }
  free_dvector(tau_epsilon, 1, n);
  free_dvector(tau_sigma, 1, n);
}


x86 assembly (clang, -O0):
<initialize>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
mov    %edi,-0x14(%rbp)
movsd  %xmm2,-0x20(%rbp)
mov    %rsi,-0x28(%rbp)
mov    %rdx,-0x30(%rbp)
mov    -0x14(%rbp),%esi
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <dvector@plt>
mov    %rax,-0x50(%rbp)
mov    -0x14(%rbp),%esi
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <dvector@plt>
mov    %rax,-0x58(%rbp)
cmpl   $0x1,-0x14(%rbp)
jle    12b2 <initialize+0x172>
movsd  -0x8(%rbp),%xmm0
call   1060 <log10@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1060 <log10@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
subsd  -0x60(%rbp),%xmm0
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
cvtsi2sdl -0x14(%rbp),%xmm1
movsd  0xe23(%rip),%xmm0
subsd  %xmm0,%xmm1
mulsd  -0x20(%rbp),%xmm1
movsd  0xe12(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movl   $0x1,-0x34(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     12ad <initialize+0x16d>
movsd  -0x78(%rbp),%xmm1
movsd  0xdef(%rip),%xmm0
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xdd7(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xdbe(%rip),%xmm0
divsd  -0x48(%rbp),%xmm0
mov    -0x58(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x58(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xd97(%rip),%xmm1
addsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd86(%rip),%xmm1
subsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1208 <initialize+0xc8>
jmp    136d <initialize+0x22d>
movsd  0xd46(%rip),%xmm0
divsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm0
call   1060 <log10@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1060 <log10@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  0xd24(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm1
movsd  0xd06(%rip),%xmm0
call   1050 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xcee(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xcd5(%rip),%xmm0
divsd  -0x48(%rbp),%xmm0
mov    -0x58(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xcb6(%rip),%xmm1
addsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xca5(%rip),%xmm1
subsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     13cf <initialize+0x28f>
mov    -0x50(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x58(%rbp),%rax
movslq -0x34(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x58(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1374 <initialize+0x234>
mov    -0x50(%rbp),%rdi
mov    -0x14(%rbp),%edx
mov    $0x1,%esi
mov    $0x0,%al
call   1040 <free_dvector@plt>
mov    -0x58(%rbp),%rdi
mov    -0x14(%rbp),%edx
mov    $0x1,%esi
mov    $0x0,%al
call   1040 <free_dvector@plt>
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<initialize>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %rdx,%r15
mov    %rsi,%r12
movsd  %xmm2,0x10(%rsp)
mov    %edi,%ebp
movsd  %xmm1,0x20(%rsp)
movsd  %xmm0,0x8(%rsp)
mov    $0x1,%edi
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <dvector@plt>
mov    %rax,%r13
mov    $0x1,%edi
mov    %ebp,%esi
xor    %eax,%eax
call   1030 <dvector@plt>
mov    %rax,%rbx
cmp    $0x2,%ebp
mov    %rbp,0x18(%rsp)
jl     127e <initialize+0x13e>
movsd  0x8(%rsp),%xmm0
call   1060 <log10@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x20(%rsp),%xmm0
call   1060 <log10@plt>
movsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm2
subsd  %xmm1,%xmm0
lea    -0x1(%rbp),%eax
cvtsi2sd %eax,%xmm3
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
divsd  %xmm3,%xmm0
movsd  %xmm0,0x20(%rsp)
addsd  0xe3e(%rip),%xmm1
mulsd  0x10(%rsp),%xmm1
movsd  0xe10(%rip),%xmm0
movapd %xmm0,%xmm3
divsd  %xmm1,%xmm3
movapd %xmm0,%xmm1
subsd  %xmm3,%xmm1
movsd  %xmm1,0x28(%rsp)
addsd  %xmm0,%xmm3
movsd  %xmm3,0x10(%rsp)
add    $0x1,%ebp
mov    $0x1,%r14d
nopl   0x0(%rax)
movsd  0xde8(%rip),%xmm0
movapd %xmm2,%xmm1
movsd  %xmm2,0x8(%rsp)
call   1050 <pow@plt>
mulsd  0xdd9(%rip),%xmm0
movsd  0xdb9(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,(%rbx,%r14,8)
mulsd  0x10(%rsp),%xmm1
divsd  0x28(%rsp),%xmm1
movsd  %xmm1,0x0(%r13,%r14,8)
add    $0x1,%r14
movsd  0x8(%rsp),%xmm2
addsd  0x20(%rsp),%xmm2
cmp    %r14,%rbp
jne    1220 <initialize+0xe0>
jmp    130a <initialize+0x1ca>
movsd  0xd7a(%rip),%xmm0
divsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1060 <log10@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x20(%rsp),%xmm0
call   1060 <log10@plt>
movsd  0x8(%rsp),%xmm1
addsd  %xmm0,%xmm1
mulsd  0xd48(%rip),%xmm1
movsd  0xd48(%rip),%xmm0
call   1050 <pow@plt>
mulsd  0xd43(%rip),%xmm0
movsd  0xd23(%rip),%xmm2
movapd %xmm2,%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rbx)
movsd  0x10(%rsp),%xmm3
movapd %xmm3,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm0
movsd  %xmm0,0x8(%r13)
mov    0x18(%rsp),%rbp
test   %ebp,%ebp
jle    14c7 <initialize+0x387>
mov    %ebp,%edx
lea    0x1(%rdx),%rax
mov    $0x1,%ecx
cmp    $0x4,%ebp
jb     144f <initialize+0x30f>
mov    %rdx,0x30(%rsp)
lea    0x8(%r12),%rsi
lea    (%r12,%rax,8),%rdi
lea    0x8(%r15),%rbp
lea    (%r15,%rax,8),%r14
lea    0x0(,%rax,8),%r8
add    %r13,%r8
mov    %r13,%rdx
add    $0x8,%rdx
lea    (%rbx,%rax,8),%r10
mov    %rbx,%r9
add    $0x8,%r9
cmp    %r14,%rsi
setb   0x8(%rsp)
cmp    %rdi,%rbp
setb   0x20(%rsp)
cmp    %r8,%rsi
setb   %r11b
cmp    %rdi,%rdx
setb   0x10(%rsp)
cmp    %r10,%rsi
setb   %sil
cmp    %rdi,%r9
setb   0x28(%rsp)
cmp    %r8,%rbp
setb   %dil
cmp    %r14,%rdx
setb   0x7(%rsp)
cmp    %r10,%rbp
setb   %r8b
cmp    %r14,%r9
setb   %bpl
mov    0x20(%rsp),%dl
test   %dl,0x8(%rsp)
jne    144a <initialize+0x30a>
and    0x10(%rsp),%r11b
jne    144a <initialize+0x30a>
and    0x28(%rsp),%sil
jne    144a <initialize+0x30a>
and    0x7(%rsp),%dil
jne    144a <initialize+0x30a>
and    %bpl,%r8b
mov    0x18(%rsp),%rbp
jne    144f <initialize+0x30f>
mov    0x30(%rsp),%rdx
mov    %edx,%esi
and    $0xfffffffc,%esi
lea    0x1(%rsi),%rcx
xor    %edi,%edi
xchg   %ax,%ax
movupd 0x8(%r13,%rdi,8),%xmm0
movupd 0x18(%r13,%rdi,8),%xmm1
movupd 0x8(%rbx,%rdi,8),%xmm2
subpd  %xmm2,%xmm0
movupd 0x18(%rbx,%rdi,8),%xmm2
subpd  %xmm2,%xmm1
movupd %xmm0,0x8(%r12,%rdi,8)
movupd %xmm1,0x18(%r12,%rdi,8)
movupd 0x8(%rbx,%rdi,8),%xmm0
movupd 0x18(%rbx,%rdi,8),%xmm1
movupd %xmm0,0x8(%r15,%rdi,8)
movupd %xmm1,0x18(%r15,%rdi,8)
add    $0x4,%rdi
cmp    %rdi,%rsi
jne    13f0 <initialize+0x2b0>
cmp    %rsi,%rdx
jne    144f <initialize+0x30f>
jmp    14c7 <initialize+0x387>
mov    0x18(%rsp),%rbp
mov    %rcx,%rdx
not    %rdx
test   $0x1,%al
jne    147a <initialize+0x33a>
movsd  0x0(%r13,%rcx,8),%xmm0
subsd  (%rbx,%rcx,8),%xmm0
movsd  %xmm0,(%r12,%rcx,8)
movsd  (%rbx,%rcx,8),%xmm0
movsd  %xmm0,(%r15,%rcx,8)
add    $0x1,%rcx
add    %rax,%rdx
je     14c7 <initialize+0x387>
nop
movsd  0x0(%r13,%rcx,8),%xmm0
subsd  (%rbx,%rcx,8),%xmm0
movsd  %xmm0,(%r12,%rcx,8)
movsd  (%rbx,%rcx,8),%xmm0
movsd  %xmm0,(%r15,%rcx,8)
movsd  0x8(%r13,%rcx,8),%xmm0
subsd  0x8(%rbx,%rcx,8),%xmm0
movsd  %xmm0,0x8(%r12,%rcx,8)
movsd  0x8(%rbx,%rcx,8),%xmm0
movsd  %xmm0,0x8(%r15,%rcx,8)
add    $0x2,%rcx
cmp    %rcx,%rax
jne    1480 <initialize+0x340>
mov    %r13,%rdi
mov    $0x1,%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1040 <free_dvector@plt>
mov    %rbx,%rdi
mov    $0x1,%esi
mov    %ebp,%edx
xor    %eax,%eax
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <free_dvector@plt>

LLVM IR (-O0):
define void @initialize(double %0, double %1, i32 %2, double %3, double* %4, double* %5) {
%7 = alloca double
%8 = alloca double
%9 = alloca i32
%10 = alloca double
%11 = alloca double*
%12 = alloca double*
%13 = alloca i32
%14 = alloca double
%15 = alloca double
%16 = alloca double*
%17 = alloca double*
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
store double %0, double* %7
store double %1, double* %8
store i32 %2, i32* %9
store double %3, double* %10
store double* %4, double** %11
store double* %5, double** %12
%22 = load i32, i32* %9
%23 = call double* (i32, i32, ...) bitcast (double* (...)* @dvector to double* (i32, i32, ...)*)(i32 1, i32 %22)
store double* %23, double** %16
%24 = load i32, i32* %9
%25 = call double* (i32, i32, ...) bitcast (double* (...)* @dvector to double* (i32, i32, ...)*)(i32 1, i32 %24)
store double* %25, double** %17
%26 = load i32, i32* %9
%27 = icmp sgt i32 %26, 1
br i1 %27, label %28, label %83
28: ; preds = %6
%29 = load double, double* %7
%30 = call double @log10(double %29)
store double %30, double* %18
%31 = load double, double* %8
%32 = call double @log10(double %31)
store double %32, double* %19
%33 = load double, double* %19
%34 = load double, double* %18
%35 = fsub double %33, %34
%36 = load i32, i32* %9
%37 = sub nsw i32 %36, 1
%38 = sitofp i32 %37 to double
%39 = fdiv double %35, %38
store double %39, double* %20
%40 = load i32, i32* %9
%41 = sitofp i32 %40 to double
%42 = fsub double %41, 1.000000e+00
%43 = load double, double* %10
%44 = fmul double %42, %43
%45 = fdiv double 1.000000e+00, %44
store double %45, double* %14
store i32 1, i32* %13
%46 = load double, double* %18
store double %46, double* %21
br label %47
47: ; preds = %76, %28
%48 = load i32, i32* %13
%49 = load i32, i32* %9
%50 = icmp sle i32 %48, %49
br i1 %50, label %51, label %82
51: ; preds = %47
%52 = load double, double* %21
%53 = call double @pow(double 1.000000e+01, double %52)
%54 = fmul double 0x401921FB54442D11, %53
store double %54, double* %15
%55 = load double, double* %15
%56 = fdiv double 1.000000e+00, %55
%57 = load double*, double** %17
%58 = load i32, i32* %13
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds double, double* %57, i64 %59
store double %56, double* %60
%61 = load double*, double** %17
%62 = load i32, i32* %13
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds double, double* %61, i64 %63
%65 = load double, double* %64
%66 = load double, double* %14
%67 = fadd double 1.000000e+00, %66
%68 = fmul double %65, %67
%69 = load double, double* %14
%70 = fsub double 1.000000e+00, %69
%71 = fdiv double %68, %70
%72 = load double*, double** %16
%73 = load i32, i32* %13
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds double, double* %72, i64 %74
store double %71, double* %75
br label %76
76: ; preds = %51
%77 = load i32, i32* %13
%78 = add nsw i32 %77, 1
store i32 %78, i32* %13
%79 = load double, double* %20
%80 = load double, double* %21
%81 = fadd double %80, %79
store double %81, double* %21
br label %47
82: ; preds = %47
br label %112
83: ; preds = %6
%84 = load double, double* %10
%85 = fdiv double 1.000000e+00, %84
store double %85, double* %14
%86 = load double, double* %7
%87 = call double @log10(double %86)
store double %87, double* %18
%88 = load double, double* %8
%89 = call double @log10(double %88)
store double %89, double* %19
%90 = load double, double* %18
%91 = load double, double* %19
%92 = fadd double %90, %91
%93 = fdiv double %92, 2.000000e+00
store double %93, double* %21
%94 = load double, double* %21
%95 = call double @pow(double 1.000000e+01, double %94)
%96 = fmul double 0x401921FB54442D11, %95
store double %96, double* %15
%97 = load double, double* %15
%98 = fdiv double 1.000000e+00, %97
%99 = load double*, double** %17
%100 = getelementptr inbounds double, double* %99, i64 1
store double %98, double* %100
%101 = load double*, double** %17
%102 = getelementptr inbounds double, double* %101, i64 1
%103 = load double, double* %102
%104 = load double, double* %14
%105 = fadd double 1.000000e+00, %104
%106 = fmul double %103, %105
%107 = load double, double* %14
%108 = fsub double 1.000000e+00, %107
%109 = fdiv double %106, %108
%110 = load double*, double** %16
%111 = getelementptr inbounds double, double* %110, i64 1
store double %109, double* %111
br label %112
112: ; preds = %83, %82
store i32 1, i32* %13
br label %113
113: ; preds = %142, %112
%114 = load i32, i32* %13
%115 = load i32, i32* %9
%116 = icmp sle i32 %114, %115
br i1 %116, label %117, label %145
117: ; preds = %113
%118 = load double*, double** %16
%119 = load i32, i32* %13
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds double, double* %118, i64 %120
%122 = load double, double* %121
%123 = load double*, double** %17
%124 = load i32, i32* %13
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds double, double* %123, i64 %125
%127 = load double, double* %126
%128 = fsub double %122, %127
%129 = load double*, double** %11
%130 = load i32, i32* %13
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds double, double* %129, i64 %131
store double %128, double* %132
%133 = load double*, double** %17
%134 = load i32, i32* %13
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds double, double* %133, i64 %135
%137 = load double, double* %136
%138 = load double*, double** %12
%139 = load i32, i32* %13
%140 = sext i32 %139 to i64
%141 = getelementptr inbounds double, double* %138, i64 %140
store double %137, double* %141
br label %142
142: ; preds = %117
%143 = load i32, i32* %13
%144 = add nsw i32 %143, 1
store i32 %144, i32* %13
br label %113
145: ; preds = %113
%146 = load double*, double** %16
%147 = load i32, i32* %9
%148 = load double*, double** %17
%149 = load i32, i32* %9
ret void
}

LLVM IR (-O2):
define void @initialize(double %0, double %1, i32 %2, double %3, double* nocapture writeonly %4, double* nocapture writeonly %5) {
%7 = tail call double* (i32, i32, ...) bitcast (double* (...)* @dvector to double* (i32, i32, ...)*)(i32 1, i32 %2)
%8 = tail call double* (i32, i32, ...) bitcast (double* (...)* @dvector to double* (i32, i32, ...)*)(i32 1, i32 %2)
%9 = icmp sgt i32 %2, 1
br i1 %9, label %10, label %38
10: ; preds = %6
%11 = tail call double @log10(double %0)
%12 = tail call double @log10(double %1)
%13 = fsub double %12, %11
%14 = add nsw i32 %2, -1
%15 = sitofp i32 %14 to double
%16 = fdiv double %13, %15
%17 = sitofp i32 %2 to double
%18 = fadd double %17, -1.000000e+00
%19 = fmul double %18, %3
%20 = fdiv double 1.000000e+00, %19
%21 = fadd double %20, 1.000000e+00
%22 = fsub double 1.000000e+00, %20
%23 = add nuw i32 %2, 1
%24 = zext i32 %23 to i64
br label %25
25: ; preds = %10, %25
%26 = phi i64 [ 1, %10 ], [ %35, %25 ]
%27 = phi double [ %11, %10 ], [ %36, %25 ]
%28 = tail call double @pow(double 1.000000e+01, double %27)
%29 = fmul double %28, 0x401921FB54442D11
%30 = fdiv double 1.000000e+00, %29
%31 = getelementptr inbounds double, double* %8, i64 %26
store double %30, double* %31
%32 = fmul double %21, %30
%33 = fdiv double %32, %22
%34 = getelementptr inbounds double, double* %7, i64 %26
store double %33, double* %34
%35 = add nuw nsw i64 %26, 1
%36 = fadd double %16, %27
%37 = icmp eq i64 %35, %24
br i1 %37, label %53, label %25
38: ; preds = %6
%39 = fdiv double 1.000000e+00, %3
%40 = tail call double @log10(double %0)
%41 = tail call double @log10(double %1)
%42 = fadd double %40, %41
%43 = fmul double %42, 5.000000e-01
%44 = tail call double @pow(double 1.000000e+01, double %43)
%45 = fmul double %44, 0x401921FB54442D11
%46 = fdiv double 1.000000e+00, %45
%47 = getelementptr inbounds double, double* %8, i64 1
store double %46, double* %47
%48 = fadd double %39, 1.000000e+00
%49 = fmul double %48, %46
%50 = fsub double 1.000000e+00, %39
%51 = fdiv double %49, %50
%52 = getelementptr inbounds double, double* %7, i64 1
store double %51, double* %52
br label %53
53: ; preds = %25, %38
%54 = icmp slt i32 %2, 1
br i1 %54, label %164, label %55
55: ; preds = %53
%56 = add nuw i32 %2, 1
%57 = zext i32 %56 to i64
%58 = add nsw i64 %57, -1
%59 = icmp ult i64 %58, 4
br i1 %59, label %124, label %60
60: ; preds = %55
%61 = getelementptr double, double* %4, i64 1
%62 = getelementptr double, double* %4, i64 %57
%63 = getelementptr double, double* %5, i64 1
%64 = getelementptr double, double* %5, i64 %57
%65 = getelementptr double, double* %7, i64 1
%66 = getelementptr double, double* %7, i64 %57
%67 = getelementptr double, double* %8, i64 1
%68 = getelementptr double, double* %8, i64 %57
%69 = icmp ult double* %61, %64
%70 = icmp ult double* %63, %62
%71 = and i1 %69, %70
%72 = icmp ult double* %61, %66
%73 = icmp ult double* %65, %62
%74 = and i1 %72, %73
%75 = or i1 %71, %74
%76 = icmp ult double* %61, %68
%77 = icmp ult double* %67, %62
%78 = and i1 %76, %77
%79 = or i1 %75, %78
%80 = icmp ult double* %63, %66
%81 = icmp ult double* %65, %64
%82 = and i1 %80, %81
%83 = or i1 %79, %82
%84 = icmp ult double* %63, %68
%85 = icmp ult double* %67, %64
%86 = and i1 %84, %85
%87 = or i1 %83, %86
br i1 %87, label %124, label %88
88: ; preds = %60
%89 = and i64 %58, -4
%90 = or i64 %89, 1
br label %91
91: ; preds = %91, %88
%92 = phi i64 [ 0, %88 ], [ %120, %91 ]
%93 = or i64 %92, 1
%94 = getelementptr inbounds double, double* %7, i64 %93
%95 = bitcast double* %94 to <2 x double>*
%96 = load <2 x double>, <2 x double>* %95
%97 = getelementptr inbounds double, double* %94, i64 2
%98 = bitcast double* %97 to <2 x double>*
%99 = load <2 x double>, <2 x double>* %98
%100 = getelementptr inbounds double, double* %8, i64 %93
%101 = bitcast double* %100 to <2 x double>*
%102 = load <2 x double>, <2 x double>* %101
%103 = getelementptr inbounds double, double* %100, i64 2
%104 = bitcast double* %103 to <2 x double>*
%105 = load <2 x double>, <2 x double>* %104
%106 = fsub <2 x double> %96, %102
%107 = fsub <2 x double> %99, %105
%108 = getelementptr inbounds double, double* %4, i64 %93
%109 = bitcast double* %108 to <2 x double>*
store <2 x double> %106, <2 x double>* %109
%110 = getelementptr inbounds double, double* %108, i64 2
%111 = bitcast double* %110 to <2 x double>*
store <2 x double> %107, <2 x double>* %111
%112 = bitcast double* %100 to <2 x double>*
%113 = load <2 x double>, <2 x double>* %112
%114 = bitcast double* %103 to <2 x double>*
%115 = load <2 x double>, <2 x double>* %114
%116 = getelementptr inbounds double, double* %5, i64 %93
%117 = bitcast double* %116 to <2 x double>*
store <2 x double> %113, <2 x double>* %117
%118 = getelementptr inbounds double, double* %116, i64 2
%119 = bitcast double* %118 to <2 x double>*
store <2 x double> %115, <2 x double>* %119
%120 = add nuw i64 %92, 4
%121 = icmp eq i64 %120, %89
br i1 %121, label %122, label %91
122: ; preds = %91
%123 = icmp eq i64 %58, %89
br i1 %123, label %164, label %124
124: ; preds = %60, %55, %122
%125 = phi i64 [ 1, %60 ], [ 1, %55 ], [ %90, %122 ]
%126 = xor i64 %125, -1
%127 = and i64 %57, 1
%128 = icmp eq i64 %127, 0
br i1 %128, label %129, label %139
129: ; preds = %124
%130 = getelementptr inbounds double, double* %7, i64 %125
%131 = load double, double* %130
%132 = getelementptr inbounds double, double* %8, i64 %125
%133 = load double, double* %132
%134 = fsub double %131, %133
%135 = getelementptr inbounds double, double* %4, i64 %125
store double %134, double* %135
%136 = load double, double* %132
%137 = getelementptr inbounds double, double* %5, i64 %125
store double %136, double* %137
%138 = add nuw nsw i64 %125, 1
br label %139
139: ; preds = %129, %124
%140 = phi i64 [ %125, %124 ], [ %138, %129 ]
%141 = sub nsw i64 0, %57
%142 = icmp eq i64 %126, %141
br i1 %142, label %164, label %143
143: ; preds = %139, %143
%144 = phi i64 [ %162, %143 ], [ %140, %139 ]
%145 = getelementptr inbounds double, double* %7, i64 %144
%146 = load double, double* %145
%147 = getelementptr inbounds double, double* %8, i64 %144
%148 = load double, double* %147
%149 = fsub double %146, %148
%150 = getelementptr inbounds double, double* %4, i64 %144
store double %149, double* %150
%151 = load double, double* %147
%152 = getelementptr inbounds double, double* %5, i64 %144
store double %151, double* %152
%153 = add nuw nsw i64 %144, 1
%154 = getelementptr inbounds double, double* %7, i64 %153
%155 = load double, double* %154
%156 = getelementptr inbounds double, double* %8, i64 %153
%157 = load double, double* %156
%158 = fsub double %155, %157
%159 = getelementptr inbounds double, double* %4, i64 %153
store double %158, double* %159
%160 = load double, double* %156
%161 = getelementptr inbounds double, double* %5, i64 %153
store double %160, double* %161
%162 = add nuw nsw i64 %144, 2
%163 = icmp eq i64 %162, %57
br i1 %163, label %164, label %143
164: ; preds = %139, %143, %122, %53
tail call void (double*, i32, i32, ...) bitcast (void (...)* @free_dvector to void (double*, i32, i32, ...)*)(double* %7, i32 1, i32 %2)
tail call void (double*, i32, i32, ...) bitcast (void (...)* @free_dvector to void (double*, i32, i32, ...)*)(double* %8, i32 1, i32 %2)
ret void
}