#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 */
int /*<<< orphan*/ error2(char *);
double exp(double);
int fabs(double);
double sqrt(double);
double p01t_BDSEquation6Stadler2010(double t, double lambda, double mu,
                                    double rho, double psi, double *p0t) {
  double c1, c2, e, r, p1t;
  if (fabs(lambda - mu) < 1e-20 && psi == 0) {
    r = 1 / (1 / rho + lambda * t);
    *p0t = 1 - r;
    p1t = r * r / rho;
  } else if (fabs(lambda - mu) > 1e-20 && psi == 0) {
    e = exp((mu - lambda) * t);
    r = rho * (lambda - mu) / (rho * lambda + (lambda - mu - rho * lambda) * e);
    *p0t = 1 - r;
    p1t = r * r / rho * e;
  } else {
    c1 = sqrt(((lambda - mu - psi) * (lambda - mu - psi)) + 4 * lambda * psi);
    if (c1 == 0)
      error2("c1==0");
    c2 = -(lambda - mu - 2 * lambda * rho - psi) / c1;
    e = exp(-c1 * t);
    r = (e * (1 - c2) - (1 + c2)) / (e * (1 - c2) + (1 + c2));
    *p0t = (lambda + mu + psi + c1 * r) / (2 * lambda);
    p1t = 4 * rho /
          (2 * (1 - c2 * c2) + e * ((1 - c2) * (1 - c2)) +
           ((1 + c2) * (1 + c2)) / e);
  }
  return (p1t);
}


x86 assembly (clang, -O0):
<p01t_BDSEquation6Stadler2010>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
mov    %rdi,-0x30(%rbp)
movsd  -0x10(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
call   1040 <fabs@plt>
cvtsi2sd %eax,%xmm1
movsd  0xe80(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1200 <p01t_BDSEquation6Stadler2010+0xc0>
movsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1200 <p01t_BDSEquation6Stadler2010+0xc0>
jp     1200 <p01t_BDSEquation6Stadler2010+0xc0>
movsd  0xe66(%rip),%xmm0
divsd  -0x20(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xe47(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xe36(%rip),%xmm0
subsd  -0x50(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    152b <p01t_BDSEquation6Stadler2010+0x3eb>
movsd  -0x10(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
call   1040 <fabs@plt>
cvtsi2sd %eax,%xmm0
movsd  0xde5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12ef <p01t_BDSEquation6Stadler2010+0x1af>
movsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12ef <p01t_BDSEquation6Stadler2010+0x1af>
jp     12ef <p01t_BDSEquation6Stadler2010+0x1af>
movsd  -0x18(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0x48(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
subsd  -0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm3
movsd  -0x10(%rbp),%xmm4
subsd  -0x18(%rbp),%xmm4
movsd  -0x20(%rbp),%xmm2
movsd  -0x10(%rbp),%xmm5
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm5,%xmm2
addsd  %xmm4,%xmm2
mulsd  -0x48(%rbp),%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xd4c(%rip),%xmm0
subsd  -0x50(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1526 <p01t_BDSEquation6Stadler2010+0x3e6>
movsd  -0x10(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
subsd  -0x18(%rbp),%xmm2
subsd  -0x28(%rbp),%xmm2
movsd  0xcf3(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1355 <p01t_BDSEquation6Stadler2010+0x215>
jp     1355 <p01t_BDSEquation6Stadler2010+0x215>
lea    0xcd0(%rip),%rdi
call   1030 <error2@plt>
movsd  -0x10(%rbp),%xmm1
subsd  -0x18(%rbp),%xmm1
movsd  0xcb1(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
subsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x8(%rbp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  0xc22(%rip),%xmm2
subsd  -0x40(%rbp),%xmm2
movsd  0xc15(%rip),%xmm1
addsd  -0x40(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  0xbe4(%rip),%xmm3
subsd  -0x40(%rbp),%xmm3
movsd  0xbd7(%rip),%xmm2
addsd  -0x40(%rbp),%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm1
addsd  -0x18(%rbp),%xmm1
addsd  -0x28(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xba0(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0xb77(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0xb4d(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  -0x48(%rbp),%xmm2
movsd  0xb3c(%rip),%xmm3
subsd  -0x40(%rbp),%xmm3
movsd  0xb2f(%rip),%xmm4
subsd  -0x40(%rbp),%xmm4
mulsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
movsd  0xb12(%rip),%xmm2
addsd  -0x40(%rbp),%xmm2
movsd  0xb05(%rip),%xmm3
addsd  -0x40(%rbp),%xmm3
mulsd  %xmm3,%xmm2
divsd  -0x48(%rbp),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    152b <p01t_BDSEquation6Stadler2010+0x3eb>
movsd  -0x58(%rbp),%xmm0
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<p01t_BDSEquation6Stadler2010>:
push   %rbx
sub    $0x50,%rsp
mov    %rdi,%rbx
movsd  %xmm4,0x8(%rsp)
movsd  %xmm3,0x10(%rsp)
movsd  %xmm0,0x18(%rsp)
movsd  %xmm1,(%rsp)
movapd %xmm1,%xmm0
movsd  %xmm2,0x30(%rsp)
subsd  %xmm2,%xmm0
movapd %xmm0,0x20(%rsp)
call   1040 <fabs@plt>
xorpd  %xmm0,%xmm0
movsd  0x8(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jne    11d4 <p01t_BDSEquation6Stadler2010+0x94>
jp     11d4 <p01t_BDSEquation6Stadler2010+0x94>
test   %eax,%eax
jg     11d4 <p01t_BDSEquation6Stadler2010+0x94>
movsd  0xe72(%rip),%xmm0
movapd %xmm0,%xmm1
movsd  0x10(%rsp),%xmm2
divsd  %xmm2,%xmm1
movsd  (%rsp),%xmm3
mulsd  0x18(%rsp),%xmm3
addsd  %xmm1,%xmm3
movapd %xmm0,%xmm1
divsd  %xmm3,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rbx)
mulsd  %xmm1,%xmm1
divsd  %xmm2,%xmm1
movapd %xmm1,%xmm0
jmp    13a1 <p01t_BDSEquation6Stadler2010+0x261>
movaps 0x20(%rsp),%xmm0
call   1040 <fabs@plt>
movsd  0x8(%rsp),%xmm0
ucomisd 0xe24(%rip),%xmm0
jne    125c <p01t_BDSEquation6Stadler2010+0x11c>
jp     125c <p01t_BDSEquation6Stadler2010+0x11c>
test   %eax,%eax
jle    125c <p01t_BDSEquation6Stadler2010+0x11c>
movsd  0x30(%rsp),%xmm0
subsd  (%rsp),%xmm0
mulsd  0x18(%rsp),%xmm0
call   1050 <exp@plt>
movapd 0x20(%rsp),%xmm2
movapd %xmm2,%xmm1
movsd  0x10(%rsp),%xmm3
mulsd  %xmm3,%xmm1
movsd  (%rsp),%xmm4
mulsd  %xmm3,%xmm4
subsd  %xmm4,%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm4,%xmm2
divsd  %xmm2,%xmm1
movsd  0xdc9(%rip),%xmm2
subsd  %xmm1,%xmm2
movsd  %xmm2,(%rbx)
mulsd  %xmm1,%xmm1
divsd  %xmm3,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
jmp    13a1 <p01t_BDSEquation6Stadler2010+0x261>
movapd 0x20(%rsp),%xmm0
movsd  0x8(%rsp),%xmm2
subsd  %xmm2,%xmm0
movsd  0xd8c(%rip),%xmm1
mulsd  (%rsp),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1295 <p01t_BDSEquation6Stadler2010+0x155>
sqrtsd %xmm0,%xmm0
jmp    129e <p01t_BDSEquation6Stadler2010+0x15e>
call   1060 <sqrt@plt>
xorpd  %xmm1,%xmm1
movapd %xmm0,0x40(%rsp)
ucomisd %xmm1,%xmm0
jne    12b8 <p01t_BDSEquation6Stadler2010+0x178>
jp     12b8 <p01t_BDSEquation6Stadler2010+0x178>
lea    0xd7d(%rip),%rdi
call   1030 <error2@plt>
movsd  (%rsp),%xmm0
addsd  %xmm0,%xmm0
movsd  %xmm0,0x38(%rsp)
mulsd  0x10(%rsp),%xmm0
movapd 0x20(%rsp),%xmm1
subsd  %xmm0,%xmm1
subsd  0x8(%rsp),%xmm1
movapd 0xd3b(%rip),%xmm0
xorpd  %xmm0,%xmm1
movapd 0x40(%rsp),%xmm2
divsd  %xmm2,%xmm1
movapd %xmm1,0x20(%rsp)
xorpd  %xmm2,%xmm0
mulsd  0x18(%rsp),%xmm0
call   1050 <exp@plt>
movsd  0xcf8(%rip),%xmm1
movapd %xmm1,%xmm3
movapd 0x20(%rsp),%xmm4
subsd  %xmm4,%xmm3
movapd %xmm4,%xmm2
movapd %xmm4,%xmm6
addsd  %xmm1,%xmm2
movapd %xmm0,%xmm4
mulsd  %xmm3,%xmm4
movapd %xmm4,%xmm5
subsd  %xmm2,%xmm5
addsd  %xmm2,%xmm4
divsd  %xmm4,%xmm5
movsd  0x30(%rsp),%xmm4
addsd  (%rsp),%xmm4
addsd  0x8(%rsp),%xmm4
mulsd  0x40(%rsp),%xmm5
addsd  %xmm4,%xmm5
divsd  0x38(%rsp),%xmm5
movsd  %xmm5,(%rbx)
movsd  0x10(%rsp),%xmm4
mulsd  0xc8b(%rip),%xmm4
mulsd  %xmm6,%xmm6
subsd  %xmm6,%xmm1
mulsd  %xmm3,%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm1,%xmm1
addsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm2
divsd  %xmm0,%xmm2
movapd %xmm4,%xmm0
addsd  %xmm1,%xmm2
divsd  %xmm2,%xmm0
add    $0x50,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [6 x i8] c"c1==0\00"
define double @p01t_BDSEquation6Stadler2010(double %0, double %1, double %2, double %3, double %4, double* %5) {
%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 double
store double %0, double* %7
store double %1, double* %8
store double %2, double* %9
store double %3, double* %10
store double %4, double* %11
store double* %5, double** %12
%18 = load double, double* %8
%19 = load double, double* %9
%20 = fsub double %18, %19
%21 = call i32 @fabs(double %20)
%22 = sitofp i32 %21 to double
%23 = fcmp olt double %22, 0x3BC79CA10C924223
br i1 %23, label %24, label %42
24: ; preds = %6
%25 = load double, double* %11
%26 = fcmp oeq double %25, 0.000000e+00
br i1 %26, label %27, label %42
27: ; preds = %24
%28 = load double, double* %10
%29 = fdiv double 1.000000e+00, %28
%30 = load double, double* %8
%31 = load double, double* %7
%32 = call double @llvm.fmuladd.f64(double %30, double %31, double %29)
%33 = fdiv double 1.000000e+00, %32
store double %33, double* %16
%34 = load double, double* %16
%35 = fsub double 1.000000e+00, %34
%36 = load double*, double** %12
store double %35, double* %36
%37 = load double, double* %16
%38 = load double, double* %16
%39 = fmul double %37, %38
%40 = load double, double* %10
%41 = fdiv double %39, %40
store double %41, double* %17
br label %177
42: ; preds = %24, %6
%43 = load double, double* %8
%44 = load double, double* %9
%45 = fsub double %43, %44
%46 = call i32 @fabs(double %45)
%47 = sitofp i32 %46 to double
%48 = fcmp ogt double %47, 0x3BC79CA10C924223
br i1 %48, label %49, label %87
49: ; preds = %42
%50 = load double, double* %11
%51 = fcmp oeq double %50, 0.000000e+00
br i1 %51, label %52, label %87
52: ; preds = %49
%53 = load double, double* %9
%54 = load double, double* %8
%55 = fsub double %53, %54
%56 = load double, double* %7
%57 = fmul double %55, %56
%58 = call double @exp(double %57)
store double %58, double* %15
%59 = load double, double* %10
%60 = load double, double* %8
%61 = load double, double* %9
%62 = fsub double %60, %61
%63 = fmul double %59, %62
%64 = load double, double* %10
%65 = load double, double* %8
%66 = load double, double* %8
%67 = load double, double* %9
%68 = fsub double %66, %67
%69 = load double, double* %10
%70 = load double, double* %8
%71 = fneg double %69
%72 = call double @llvm.fmuladd.f64(double %71, double %70, double %68)
%73 = load double, double* %15
%74 = fmul double %72, %73
%75 = call double @llvm.fmuladd.f64(double %64, double %65, double %74)
%76 = fdiv double %63, %75
store double %76, double* %16
%77 = load double, double* %16
%78 = fsub double 1.000000e+00, %77
%79 = load double*, double** %12
store double %78, double* %79
%80 = load double, double* %16
%81 = load double, double* %16
%82 = fmul double %80, %81
%83 = load double, double* %10
%84 = fdiv double %82, %83
%85 = load double, double* %15
%86 = fmul double %84, %85
store double %86, double* %17
br label %176
87: ; preds = %49, %42
%88 = load double, double* %8
%89 = load double, double* %9
%90 = fsub double %88, %89
%91 = load double, double* %11
%92 = fsub double %90, %91
%93 = load double, double* %8
%94 = load double, double* %9
%95 = fsub double %93, %94
%96 = load double, double* %11
%97 = fsub double %95, %96
%98 = load double, double* %8
%99 = fmul double 4.000000e+00, %98
%100 = load double, double* %11
%101 = fmul double %99, %100
%102 = call double @llvm.fmuladd.f64(double %92, double %97, double %101)
%103 = call double @sqrt(double %102)
store double %103, double* %13
%104 = load double, double* %13
%105 = fcmp oeq double %104, 0.000000e+00
br i1 %105, label %106, label %108
106: ; preds = %87
%107 = call i32 @error2(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
br label %108
108: ; preds = %106, %87
%109 = load double, double* %8
%110 = load double, double* %9
%111 = fsub double %109, %110
%112 = load double, double* %8
%113 = fmul double 2.000000e+00, %112
%114 = load double, double* %10
%115 = fneg double %113
%116 = call double @llvm.fmuladd.f64(double %115, double %114, double %111)
%117 = load double, double* %11
%118 = fsub double %116, %117
%119 = fneg double %118
%120 = load double, double* %13
%121 = fdiv double %119, %120
store double %121, double* %14
%122 = load double, double* %13
%123 = fneg double %122
%124 = load double, double* %7
%125 = fmul double %123, %124
%126 = call double @exp(double %125)
store double %126, double* %15
%127 = load double, double* %15
%128 = load double, double* %14
%129 = fsub double 1.000000e+00, %128
%130 = load double, double* %14
%131 = fadd double 1.000000e+00, %130
%132 = fneg double %131
%133 = call double @llvm.fmuladd.f64(double %127, double %129, double %132)
%134 = load double, double* %15
%135 = load double, double* %14
%136 = fsub double 1.000000e+00, %135
%137 = load double, double* %14
%138 = fadd double 1.000000e+00, %137
%139 = call double @llvm.fmuladd.f64(double %134, double %136, double %138)
%140 = fdiv double %133, %139
store double %140, double* %16
%141 = load double, double* %8
%142 = load double, double* %9
%143 = fadd double %141, %142
%144 = load double, double* %11
%145 = fadd double %143, %144
%146 = load double, double* %13
%147 = load double, double* %16
%148 = call double @llvm.fmuladd.f64(double %146, double %147, double %145)
%149 = load double, double* %8
%150 = fmul double 2.000000e+00, %149
%151 = fdiv double %148, %150
%152 = load double*, double** %12
store double %151, double* %152
%153 = load double, double* %10
%154 = fmul double 4.000000e+00, %153
%155 = load double, double* %14
%156 = load double, double* %14
%157 = fneg double %155
%158 = call double @llvm.fmuladd.f64(double %157, double %156, double 1.000000e+00)
%159 = load double, double* %15
%160 = load double, double* %14
%161 = fsub double 1.000000e+00, %160
%162 = load double, double* %14
%163 = fsub double 1.000000e+00, %162
%164 = fmul double %161, %163
%165 = fmul double %159, %164
%166 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %158, double %165)
%167 = load double, double* %14
%168 = fadd double 1.000000e+00, %167
%169 = load double, double* %14
%170 = fadd double 1.000000e+00, %169
%171 = fmul double %168, %170
%172 = load double, double* %15
%173 = fdiv double %171, %172
%174 = fadd double %166, %173
%175 = fdiv double %154, %174
store double %175, double* %17
br label %176
176: ; preds = %108, %52
br label %177
177: ; preds = %176, %27
%178 = load double, double* %17
ret double %178
}

LLVM IR (-O2):
@.str = [6 x i8] c"c1==0\00"
define double @p01t_BDSEquation6Stadler2010(double %0, double %1, double %2, double %3, double %4, double* nocapture writeonly %5) {
%7 = fsub double %1, %2
%8 = tail call i32 @fabs(double %7)
%9 = icmp slt i32 %8, 1
%10 = fcmp oeq double %4, 0.000000e+00
%11 = and i1 %10, %9
br i1 %11, label %12, label %19
12: ; preds = %6
%13 = fdiv double 1.000000e+00, %3
%14 = tail call double @llvm.fmuladd.f64(double %1, double %0, double %13)
%15 = fdiv double 1.000000e+00, %14
%16 = fsub double 1.000000e+00, %15
store double %16, double* %5
%17 = fmul double %15, %15
%18 = fdiv double %17, %3
br label %76
19: ; preds = %6
%20 = tail call i32 @fabs(double %7)
%21 = icmp sgt i32 %20, 0
%22 = and i1 %10, %21
br i1 %22, label %23, label %37
23: ; preds = %19
%24 = fsub double %2, %1
%25 = fmul double %24, %0
%26 = tail call double @exp(double %25)
%27 = fmul double %7, %3
%28 = fneg double %3
%29 = tail call double @llvm.fmuladd.f64(double %28, double %1, double %7)
%30 = fmul double %29, %26
%31 = tail call double @llvm.fmuladd.f64(double %3, double %1, double %30)
%32 = fdiv double %27, %31
%33 = fsub double 1.000000e+00, %32
store double %33, double* %5
%34 = fmul double %32, %32
%35 = fdiv double %34, %3
%36 = fmul double %26, %35
br label %76
37: ; preds = %19
%38 = fsub double %7, %4
%39 = fmul double %1, 4.000000e+00
%40 = fmul double %39, %4
%41 = tail call double @llvm.fmuladd.f64(double %38, double %38, double %40)
%42 = tail call double @sqrt(double %41)
%43 = fcmp oeq double %42, 0.000000e+00
br i1 %43, label %44, label %46
44: ; preds = %37
%45 = tail call i32 @error2(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
br label %46
46: ; preds = %44, %37
%47 = fmul double %1, 2.000000e+00
%48 = fneg double %47
%49 = tail call double @llvm.fmuladd.f64(double %48, double %3, double %7)
%50 = fsub double %49, %4
%51 = fneg double %50
%52 = fdiv double %51, %42
%53 = fneg double %42
%54 = fmul double %53, %0
%55 = tail call double @exp(double %54)
%56 = fsub double 1.000000e+00, %52
%57 = fadd double %52, 1.000000e+00
%58 = fneg double %57
%59 = tail call double @llvm.fmuladd.f64(double %55, double %56, double %58)
%60 = tail call double @llvm.fmuladd.f64(double %55, double %56, double %57)
%61 = fdiv double %59, %60
%62 = fadd double %1, %2
%63 = fadd double %62, %4
%64 = tail call double @llvm.fmuladd.f64(double %42, double %61, double %63)
%65 = fdiv double %64, %47
store double %65, double* %5
%66 = fmul double %3, 4.000000e+00
%67 = fneg double %52
%68 = tail call double @llvm.fmuladd.f64(double %67, double %52, double 1.000000e+00)
%69 = fmul double %56, %56
%70 = fmul double %69, %55
%71 = tail call double @llvm.fmuladd.f64(double %68, double 2.000000e+00, double %70)
%72 = fmul double %57, %57
%73 = fdiv double %72, %55
%74 = fadd double %73, %71
%75 = fdiv double %66, %74
br label %76
76: ; preds = %23, %46, %12
%77 = phi double [ %18, %12 ], [ %36, %23 ], [ %75, %46 ]
ret double %77
}