double md_compute_e_def_y(int e_type, double L, double q1, double q2,
                          double x) {
  double y = 0.0;
  double xx = 0.0;
  double qa, qb;
  if (q1 == q2) {
    qa = q1;
    qb = 0.0;
  } else {
    qa = q1;
    qb = q2 - q1;
  }
  switch (e_type) {
  case 0:
    y = (qa * x * x * x * x) / 24 - (qa * L * x * x * x) / 12 +
        (qa * L * L * x * x) / 24;
    y += ((qb * x * x) / (120 * L)) *
         (x * x * x - 3 * L * L * x + 2 * L * L * L);
    break;
  case 1:
    y = (qa * x * x * x * x) / 2 - (3 * qa * L * x * x * x) / 48 +
        (qa * L * L * L * x) / 8;
    y += (qb * x * x * x * x) / 24 - (3 * qb * L * x * x * x) / 48 +
         (qb * L * L * L * x) / 48;
    break;
  case 2:
    y = (qa * x * x * x * x) / 2 - (3 * qa * L * x * x * x) / 48 +
        (qa * L * L * L * x) / 8;
    xx = L - x;
    y += (qb * xx * xx * xx * xx) / 24 - (3 * qb * L * xx * xx * xx) / 48 +
         (qb * L * L * L * xx) / 48;
    break;
  case 3:
    y = (qa * x * x * x * x) / 24 - (qa * L * x * x) / 12 +
        (qa * L * L * L * x) / 24;
    y += (qb * x * x * x * x * x) / (120 * L) - (qb * L * x * x * x) / 36 +
         (7 / 360) * qb * L * L * L * x;
    break;
  }
  return (y);
}


x86 assembly (clang, -O0):
<md_compute_e_def_y>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jne    1158 <md_compute_e_def_y+0x58>
jp     1158 <md_compute_e_def_y+0x58>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    1171 <md_compute_e_def_y+0x71>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x20(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x4(%rbp),%eax
mov    %rax,-0x50(%rbp)
sub    $0x3,%rax
ja     15dd <md_compute_e_def_y+0x4dd>
mov    -0x50(%rbp),%rax
lea    0xeb3(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  -0x40(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0xe59(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xe3c(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xe0b(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0xddf(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm3
movsd  0xddf(%rip),%xmm2
mulsd  -0x10(%rbp),%xmm2
mulsd  -0x10(%rbp),%xmm2
mulsd  -0x28(%rbp),%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0xdb9(%rip),%xmm2
mulsd  -0x10(%rbp),%xmm2
mulsd  -0x10(%rbp),%xmm2
movsd  -0x10(%rbp),%xmm3
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    15dd <md_compute_e_def_y+0x4dd>
movsd  -0x40(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0xd6a(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xd4e(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xd25(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xd0c(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0xcbe(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xcca(%rip),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xca1(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xc78(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    15dd <md_compute_e_def_y+0x4dd>
movsd  -0x40(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0xc58(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xc3c(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xc13(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xbfa(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x10(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  0xb9d(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xba9(%rip),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x38(%rbp),%xmm1
mulsd  -0x38(%rbp),%xmm1
mulsd  -0x38(%rbp),%xmm1
movsd  0xb80(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x38(%rbp),%xmm1
movsd  0xb57(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    15dd <md_compute_e_def_y+0x4dd>
movsd  -0x40(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0xb0f(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xaf7(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xac6(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x48(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movsd  0xa8b(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
divsd  %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0xa59(%rip),%xmm2
divsd  %xmm2,%xmm0
subsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
mulsd  -0x48(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<md_compute_e_def_y>:
cmp    $0x3,%edi
ja     11d9 <md_compute_e_def_y+0xd9>
movapd %xmm1,%xmm4
cmpeqsd %xmm2,%xmm4
subsd  %xmm1,%xmm2
andnpd %xmm2,%xmm4
mov    %edi,%eax
lea    0xf4d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
unpcklpd %xmm1,%xmm1
movapd %xmm0,%xmm2
unpcklpd %xmm3,%xmm2
mulpd  %xmm2,%xmm1
movapd %xmm1,%xmm5
mulsd  %xmm3,%xmm5
mulsd  %xmm3,%xmm5
mulsd  %xmm3,%xmm5
divsd  0xeac(%rip),%xmm5
mulpd  %xmm2,%xmm1
movapd %xmm3,%xmm2
unpcklpd %xmm3,%xmm2
mulpd  %xmm2,%xmm1
mulpd  %xmm2,%xmm1
divpd  0xec0(%rip),%xmm1
movapd %xmm1,%xmm2
unpckhpd %xmm1,%xmm2
addsd  %xmm5,%xmm2
addsd  %xmm1,%xmm2
mulsd  %xmm3,%xmm4
mulsd  %xmm3,%xmm4
movsd  0xe78(%rip),%xmm1
mulsd  %xmm0,%xmm1
divsd  %xmm1,%xmm4
movapd %xmm3,%xmm5
mulsd  %xmm3,%xmm5
movsd  0xe80(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm3,%xmm5
addsd  %xmm1,%xmm5
movapd %xmm0,%xmm1
addsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm5,%xmm1
mulsd  %xmm4,%xmm1
jmp    143f <md_compute_e_def_y+0x33f>
xorps  %xmm0,%xmm0
ret
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
movsd  0xe22(%rip),%xmm8
movapd %xmm1,%xmm5
mulsd  %xmm8,%xmm5
mulsd  %xmm0,%xmm5
mulsd  %xmm3,%xmm5
mulsd  %xmm3,%xmm5
mulsd  %xmm3,%xmm5
movsd  0xe09(%rip),%xmm6
divsd  %xmm6,%xmm5
movapd %xmm0,%xmm7
unpcklpd %xmm2,%xmm7
unpcklpd %xmm3,%xmm1
mulpd  %xmm7,%xmm1
movapd %xmm0,%xmm7
unpcklpd %xmm3,%xmm7
mulpd  %xmm7,%xmm1
mulpd  %xmm7,%xmm1
movapd 0xe15(%rip),%xmm2
movsd  %xmm3,%xmm2
mulpd  %xmm1,%xmm2
movsd  0xdd5(%rip),%xmm1
mulsd  %xmm2,%xmm1
unpckhpd %xmm2,%xmm2
subsd  %xmm5,%xmm2
addsd  %xmm1,%xmm2
movapd %xmm4,%xmm5
mulsd  %xmm8,%xmm5
mulsd  %xmm0,%xmm5
mulsd  %xmm3,%xmm5
mulsd  %xmm3,%xmm5
mulsd  %xmm3,%xmm5
divsd  %xmm6,%xmm5
unpcklpd %xmm4,%xmm4
mulpd  %xmm7,%xmm4
mulpd  %xmm7,%xmm4
mulpd  %xmm7,%xmm4
unpcklpd %xmm3,%xmm3
mulpd  %xmm4,%xmm3
divpd  0xdc8(%rip),%xmm3
movapd %xmm3,%xmm1
unpckhpd %xmm3,%xmm1
subsd  %xmm5,%xmm1
addsd  %xmm3,%xmm1
jmp    143f <md_compute_e_def_y+0x33f>
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
movsd  0xd52(%rip),%xmm8
movapd %xmm1,%xmm7
mulsd  %xmm8,%xmm7
mulsd  %xmm0,%xmm7
mulsd  %xmm3,%xmm7
mulsd  %xmm3,%xmm7
mulsd  %xmm3,%xmm7
movsd  0xd39(%rip),%xmm6
divsd  %xmm6,%xmm7
movapd %xmm0,%xmm5
unpcklpd %xmm2,%xmm5
unpcklpd %xmm3,%xmm1
mulpd  %xmm5,%xmm1
movapd %xmm0,%xmm2
unpcklpd %xmm3,%xmm2
mulpd  %xmm2,%xmm1
mulpd  %xmm2,%xmm1
movapd %xmm0,%xmm2
subsd  %xmm3,%xmm2
shufpd $0x2,0xd3c(%rip),%xmm3
mulpd  %xmm1,%xmm3
movsd  0xd00(%rip),%xmm1
mulsd  %xmm3,%xmm1
unpckhpd %xmm3,%xmm3
subsd  %xmm7,%xmm3
addsd  %xmm1,%xmm3
movapd %xmm4,%xmm5
mulsd  %xmm8,%xmm5
mulsd  %xmm0,%xmm5
mulsd  %xmm2,%xmm5
mulsd  %xmm2,%xmm5
mulsd  %xmm2,%xmm5
divsd  %xmm6,%xmm5
unpcklpd %xmm4,%xmm4
unpcklpd %xmm2,%xmm0
mulpd  %xmm0,%xmm4
mulpd  %xmm0,%xmm4
mulpd  %xmm0,%xmm4
unpcklpd %xmm2,%xmm2
mulpd  %xmm4,%xmm2
divpd  0xcef(%rip),%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
subsd  %xmm5,%xmm1
addsd  %xmm2,%xmm1
addsd  %xmm3,%xmm1
movapd %xmm1,%xmm0
ret
unpcklpd %xmm1,%xmm1
movapd %xmm0,%xmm2
unpcklpd %xmm3,%xmm2
mulpd  %xmm2,%xmm1
movapd %xmm1,%xmm5
mulsd  %xmm3,%xmm5
mulsd  %xmm3,%xmm5
divsd  0xc52(%rip),%xmm5
mulpd  %xmm2,%xmm1
mulpd  %xmm2,%xmm1
movapd %xmm3,%xmm6
unpcklpd %xmm3,%xmm6
mulpd  %xmm6,%xmm1
divpd  0xc66(%rip),%xmm1
movapd %xmm1,%xmm2
unpckhpd %xmm1,%xmm2
addsd  %xmm5,%xmm2
addsd  %xmm1,%xmm2
movapd %xmm4,%xmm1
mulsd  %xmm3,%xmm1
movsd  0xc1e(%rip),%xmm5
mulsd  %xmm0,%xmm5
unpcklpd %xmm4,%xmm1
movapd %xmm3,%xmm7
unpcklpd %xmm0,%xmm7
mulpd  %xmm1,%xmm7
mulpd  %xmm6,%xmm7
mulpd  %xmm6,%xmm7
shufpd $0x2,0xc31(%rip),%xmm5
mulpd  %xmm6,%xmm7
divpd  %xmm5,%xmm7
movapd %xmm7,%xmm1
unpckhpd %xmm7,%xmm1
subsd  %xmm1,%xmm7
xorpd  %xmm1,%xmm1
mulsd  %xmm4,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm7,%xmm1
addsd  %xmm2,%xmm1
movapd %xmm1,%xmm0
ret

LLVM IR (-O0):
define double @md_compute_e_def_y(i32 %0, double %1, double %2, double %3, double %4) {
%6 = alloca i32
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
store i32 %0, i32* %6
store double %1, double* %7
store double %2, double* %8
store double %3, double* %9
store double %4, double* %10
store double 0.000000e+00, double* %11
store double 0.000000e+00, double* %12
%15 = load double, double* %8
%16 = load double, double* %9
%17 = fcmp oeq double %15, %16
br i1 %17, label %18, label %20
18: ; preds = %5
%19 = load double, double* %8
store double %19, double* %13
store double 0.000000e+00, double* %14
br label %25
20: ; preds = %5
%21 = load double, double* %8
store double %21, double* %13
%22 = load double, double* %9
%23 = load double, double* %8
%24 = fsub double %22, %23
store double %24, double* %14
br label %25
25: ; preds = %20, %18
%26 = load i32, i32* %6
switch i32 %26, label %297 [
i32 0, label %27
i32 1, label %88
i32 2, label %157
i32 3, label %229
]
27: ; preds = %25
%28 = load double, double* %13
%29 = load double, double* %10
%30 = fmul double %28, %29
%31 = load double, double* %10
%32 = fmul double %30, %31
%33 = load double, double* %10
%34 = fmul double %32, %33
%35 = load double, double* %10
%36 = fmul double %34, %35
%37 = fdiv double %36, 2.400000e+01
%38 = load double, double* %13
%39 = load double, double* %7
%40 = fmul double %38, %39
%41 = load double, double* %10
%42 = fmul double %40, %41
%43 = load double, double* %10
%44 = fmul double %42, %43
%45 = load double, double* %10
%46 = fmul double %44, %45
%47 = fdiv double %46, 1.200000e+01
%48 = fsub double %37, %47
%49 = load double, double* %13
%50 = load double, double* %7
%51 = fmul double %49, %50
%52 = load double, double* %7
%53 = fmul double %51, %52
%54 = load double, double* %10
%55 = fmul double %53, %54
%56 = load double, double* %10
%57 = fmul double %55, %56
%58 = fdiv double %57, 2.400000e+01
%59 = fadd double %48, %58
store double %59, double* %11
%60 = load double, double* %14
%61 = load double, double* %10
%62 = fmul double %60, %61
%63 = load double, double* %10
%64 = fmul double %62, %63
%65 = load double, double* %7
%66 = fmul double 1.200000e+02, %65
%67 = fdiv double %64, %66
%68 = load double, double* %10
%69 = load double, double* %10
%70 = fmul double %68, %69
%71 = load double, double* %10
%72 = load double, double* %7
%73 = fmul double 3.000000e+00, %72
%74 = load double, double* %7
%75 = fmul double %73, %74
%76 = load double, double* %10
%77 = fmul double %75, %76
%78 = fneg double %77
%79 = call double @llvm.fmuladd.f64(double %70, double %71, double %78)
%80 = load double, double* %7
%81 = fmul double 2.000000e+00, %80
%82 = load double, double* %7
%83 = fmul double %81, %82
%84 = load double, double* %7
%85 = call double @llvm.fmuladd.f64(double %83, double %84, double %79)
%86 = load double, double* %11
%87 = call double @llvm.fmuladd.f64(double %67, double %85, double %86)
store double %87, double* %11
br label %297
88: ; preds = %25
%89 = load double, double* %13
%90 = load double, double* %10
%91 = fmul double %89, %90
%92 = load double, double* %10
%93 = fmul double %91, %92
%94 = load double, double* %10
%95 = fmul double %93, %94
%96 = load double, double* %10
%97 = fmul double %95, %96
%98 = fdiv double %97, 2.000000e+00
%99 = load double, double* %13
%100 = fmul double 3.000000e+00, %99
%101 = load double, double* %7
%102 = fmul double %100, %101
%103 = load double, double* %10
%104 = fmul double %102, %103
%105 = load double, double* %10
%106 = fmul double %104, %105
%107 = load double, double* %10
%108 = fmul double %106, %107
%109 = fdiv double %108, 4.800000e+01
%110 = fsub double %98, %109
%111 = load double, double* %13
%112 = load double, double* %7
%113 = fmul double %111, %112
%114 = load double, double* %7
%115 = fmul double %113, %114
%116 = load double, double* %7
%117 = fmul double %115, %116
%118 = load double, double* %10
%119 = fmul double %117, %118
%120 = fdiv double %119, 8.000000e+00
%121 = fadd double %110, %120
store double %121, double* %11
%122 = load double, double* %14
%123 = load double, double* %10
%124 = fmul double %122, %123
%125 = load double, double* %10
%126 = fmul double %124, %125
%127 = load double, double* %10
%128 = fmul double %126, %127
%129 = load double, double* %10
%130 = fmul double %128, %129
%131 = fdiv double %130, 2.400000e+01
%132 = load double, double* %14
%133 = fmul double 3.000000e+00, %132
%134 = load double, double* %7
%135 = fmul double %133, %134
%136 = load double, double* %10
%137 = fmul double %135, %136
%138 = load double, double* %10
%139 = fmul double %137, %138
%140 = load double, double* %10
%141 = fmul double %139, %140
%142 = fdiv double %141, 4.800000e+01
%143 = fsub double %131, %142
%144 = load double, double* %14
%145 = load double, double* %7
%146 = fmul double %144, %145
%147 = load double, double* %7
%148 = fmul double %146, %147
%149 = load double, double* %7
%150 = fmul double %148, %149
%151 = load double, double* %10
%152 = fmul double %150, %151
%153 = fdiv double %152, 4.800000e+01
%154 = fadd double %143, %153
%155 = load double, double* %11
%156 = fadd double %155, %154
store double %156, double* %11
br label %297
157: ; preds = %25
%158 = load double, double* %13
%159 = load double, double* %10
%160 = fmul double %158, %159
%161 = load double, double* %10
%162 = fmul double %160, %161
%163 = load double, double* %10
%164 = fmul double %162, %163
%165 = load double, double* %10
%166 = fmul double %164, %165
%167 = fdiv double %166, 2.000000e+00
%168 = load double, double* %13
%169 = fmul double 3.000000e+00, %168
%170 = load double, double* %7
%171 = fmul double %169, %170
%172 = load double, double* %10
%173 = fmul double %171, %172
%174 = load double, double* %10
%175 = fmul double %173, %174
%176 = load double, double* %10
%177 = fmul double %175, %176
%178 = fdiv double %177, 4.800000e+01
%179 = fsub double %167, %178
%180 = load double, double* %13
%181 = load double, double* %7
%182 = fmul double %180, %181
%183 = load double, double* %7
%184 = fmul double %182, %183
%185 = load double, double* %7
%186 = fmul double %184, %185
%187 = load double, double* %10
%188 = fmul double %186, %187
%189 = fdiv double %188, 8.000000e+00
%190 = fadd double %179, %189
store double %190, double* %11
%191 = load double, double* %7
%192 = load double, double* %10
%193 = fsub double %191, %192
store double %193, double* %12
%194 = load double, double* %14
%195 = load double, double* %12
%196 = fmul double %194, %195
%197 = load double, double* %12
%198 = fmul double %196, %197
%199 = load double, double* %12
%200 = fmul double %198, %199
%201 = load double, double* %12
%202 = fmul double %200, %201
%203 = fdiv double %202, 2.400000e+01
%204 = load double, double* %14
%205 = fmul double 3.000000e+00, %204
%206 = load double, double* %7
%207 = fmul double %205, %206
%208 = load double, double* %12
%209 = fmul double %207, %208
%210 = load double, double* %12
%211 = fmul double %209, %210
%212 = load double, double* %12
%213 = fmul double %211, %212
%214 = fdiv double %213, 4.800000e+01
%215 = fsub double %203, %214
%216 = load double, double* %14
%217 = load double, double* %7
%218 = fmul double %216, %217
%219 = load double, double* %7
%220 = fmul double %218, %219
%221 = load double, double* %7
%222 = fmul double %220, %221
%223 = load double, double* %12
%224 = fmul double %222, %223
%225 = fdiv double %224, 4.800000e+01
%226 = fadd double %215, %225
%227 = load double, double* %11
%228 = fadd double %227, %226
store double %228, double* %11
br label %297
229: ; preds = %25
%230 = load double, double* %13
%231 = load double, double* %10
%232 = fmul double %230, %231
%233 = load double, double* %10
%234 = fmul double %232, %233
%235 = load double, double* %10
%236 = fmul double %234, %235
%237 = load double, double* %10
%238 = fmul double %236, %237
%239 = fdiv double %238, 2.400000e+01
%240 = load double, double* %13
%241 = load double, double* %7
%242 = fmul double %240, %241
%243 = load double, double* %10
%244 = fmul double %242, %243
%245 = load double, double* %10
%246 = fmul double %244, %245
%247 = fdiv double %246, 1.200000e+01
%248 = fsub double %239, %247
%249 = load double, double* %13
%250 = load double, double* %7
%251 = fmul double %249, %250
%252 = load double, double* %7
%253 = fmul double %251, %252
%254 = load double, double* %7
%255 = fmul double %253, %254
%256 = load double, double* %10
%257 = fmul double %255, %256
%258 = fdiv double %257, 2.400000e+01
%259 = fadd double %248, %258
store double %259, double* %11
%260 = load double, double* %14
%261 = load double, double* %10
%262 = fmul double %260, %261
%263 = load double, double* %10
%264 = fmul double %262, %263
%265 = load double, double* %10
%266 = fmul double %264, %265
%267 = load double, double* %10
%268 = fmul double %266, %267
%269 = load double, double* %10
%270 = fmul double %268, %269
%271 = load double, double* %7
%272 = fmul double 1.200000e+02, %271
%273 = fdiv double %270, %272
%274 = load double, double* %14
%275 = load double, double* %7
%276 = fmul double %274, %275
%277 = load double, double* %10
%278 = fmul double %276, %277
%279 = load double, double* %10
%280 = fmul double %278, %279
%281 = load double, double* %10
%282 = fmul double %280, %281
%283 = fdiv double %282, 3.600000e+01
%284 = fsub double %273, %283
%285 = load double, double* %14
%286 = fmul double 0.000000e+00, %285
%287 = load double, double* %7
%288 = fmul double %286, %287
%289 = load double, double* %7
%290 = fmul double %288, %289
%291 = load double, double* %7
%292 = fmul double %290, %291
%293 = load double, double* %10
%294 = call double @llvm.fmuladd.f64(double %292, double %293, double %284)
%295 = load double, double* %11
%296 = fadd double %295, %294
store double %296, double* %11
br label %297
297: ; preds = %25, %229, %157, %88, %27
%298 = load double, double* %11
ret double %298
}

LLVM IR (-O2):
define double @md_compute_e_def_y(i32 %0, double %1, double %2, double %3, double %4) {
%6 = fcmp oeq double %2, %3
%7 = fsub double %3, %2
%8 = select i1 %6, double 0.000000e+00, double %7
switch i32 %0, label %171 [
i32 0, label %9
i32 1, label %43
i32 2, label %86
i32 3, label %131
]
9: ; preds = %5
%10 = insertelement <2 x double> poison, double %2, i64 0
%11 = shufflevector <2 x double> %10, <2 x double> poison, <2 x i32> zeroinitializer
%12 = insertelement <2 x double> poison, double %1, i64 0
%13 = insertelement <2 x double> %12, double %4, i64 1
%14 = fmul <2 x double> %11, %13
%15 = extractelement <2 x double> %14, i64 0
%16 = fmul double %15, %4
%17 = fmul double %16, %4
%18 = fmul double %17, %4
%19 = fdiv double %18, 1.200000e+01
%20 = fmul <2 x double> %14, %13
%21 = insertelement <2 x double> poison, double %4, i64 0
%22 = shufflevector <2 x double> %21, <2 x double> poison, <2 x i32> zeroinitializer
%23 = fmul <2 x double> %20, %22
%24 = fmul <2 x double> %23, %22
%25 = fdiv <2 x double> %24, <double 2.400000e+01, double 2.400000e+01>
%26 = extractelement <2 x double> %25, i64 1
%27 = fsub double %26, %19
%28 = extractelement <2 x double> %25, i64 0
%29 = fadd double %28, %27
%30 = fmul double %8, %4
%31 = fmul double %30, %4
%32 = fmul double %1, 1.200000e+02
%33 = fdiv double %31, %32
%34 = fmul double %4, %4
%35 = fmul double %1, -3.000000e+00
%36 = fmul double %35, %1
%37 = fmul double %36, %4
%38 = tail call double @llvm.fmuladd.f64(double %34, double %4, double %37)
%39 = fmul double %1, 2.000000e+00
%40 = fmul double %39, %1
%41 = tail call double @llvm.fmuladd.f64(double %40, double %1, double %38)
%42 = tail call double @llvm.fmuladd.f64(double %33, double %41, double %29)
br label %171
43: ; preds = %5
%44 = fmul double %2, %4
%45 = fmul double %2, 3.000000e+00
%46 = fmul double %45, %1
%47 = fmul double %46, %4
%48 = fmul double %47, %4
%49 = fmul double %48, %4
%50 = fdiv double %49, 4.800000e+01
%51 = insertelement <2 x double> poison, double %1, i64 0
%52 = insertelement <2 x double> %51, double %44, i64 1
%53 = insertelement <2 x double> poison, double %2, i64 0
%54 = insertelement <2 x double> %53, double %4, i64 1
%55 = fmul <2 x double> %52, %54
%56 = insertelement <2 x double> %51, double %4, i64 1
%57 = fmul <2 x double> %55, %56
%58 = fmul <2 x double> %57, %56
%59 = insertelement <2 x double> <double poison, double 5.000000e-01>, double %4, i64 0
%60 = fmul <2 x double> %58, %59
%61 = extractelement <2 x double> %60, i64 0
%62 = fmul double %61, 1.250000e-01
%63 = extractelement <2 x double> %60, i64 1
%64 = fsub double %63, %50
%65 = fadd double %62, %64
%66 = fmul double %8, 3.000000e+00
%67 = fmul double %66, %1
%68 = fmul double %67, %4
%69 = fmul double %68, %4
%70 = fmul double %69, %4
%71 = fdiv double %70, 4.800000e+01
%72 = insertelement <2 x double> poison, double %8, i64 0
%73 = shufflevector <2 x double> %72, <2 x double> poison, <2 x i32> zeroinitializer
%74 = fmul <2 x double> %73, %56
%75 = fmul <2 x double> %74, %56
%76 = fmul <2 x double> %75, %56
%77 = insertelement <2 x double> poison, double %4, i64 0
%78 = shufflevector <2 x double> %77, <2 x double> poison, <2 x i32> zeroinitializer
%79 = fmul <2 x double> %76, %78
%80 = fdiv <2 x double> %79, <double 4.800000e+01, double 2.400000e+01>
%81 = extractelement <2 x double> %80, i64 1
%82 = fsub double %81, %71
%83 = extractelement <2 x double> %80, i64 0
%84 = fadd double %83, %82
%85 = fadd double %65, %84
br label %171
86: ; preds = %5
%87 = fmul double %2, %4
%88 = fmul double %2, 3.000000e+00
%89 = fmul double %88, %1
%90 = fmul double %89, %4
%91 = fmul double %90, %4
%92 = fmul double %91, %4
%93 = fdiv double %92, 4.800000e+01
%94 = insertelement <2 x double> poison, double %1, i64 0
%95 = insertelement <2 x double> %94, double %87, i64 1
%96 = insertelement <2 x double> poison, double %2, i64 0
%97 = insertelement <2 x double> %96, double %4, i64 1
%98 = fmul <2 x double> %95, %97
%99 = insertelement <2 x double> %94, double %4, i64 1
%100 = fmul <2 x double> %98, %99
%101 = fmul <2 x double> %100, %99
%102 = insertelement <2 x double> <double poison, double 5.000000e-01>, double %4, i64 0
%103 = fmul <2 x double> %101, %102
%104 = extractelement <2 x double> %103, i64 0
%105 = fmul double %104, 1.250000e-01
%106 = extractelement <2 x double> %103, i64 1
%107 = fsub double %106, %93
%108 = fadd double %105, %107
%109 = fsub double %1, %4
%110 = fmul double %8, 3.000000e+00
%111 = fmul double %110, %1
%112 = fmul double %109, %111
%113 = fmul double %109, %112
%114 = fmul double %109, %113
%115 = fdiv double %114, 4.800000e+01
%116 = insertelement <2 x double> poison, double %8, i64 0
%117 = shufflevector <2 x double> %116, <2 x double> poison, <2 x i32> zeroinitializer
%118 = insertelement <2 x double> %94, double %109, i64 1
%119 = fmul <2 x double> %117, %118
%120 = fmul <2 x double> %119, %118
%121 = fmul <2 x double> %120, %118
%122 = insertelement <2 x double> poison, double %109, i64 0
%123 = shufflevector <2 x double> %122, <2 x double> poison, <2 x i32> zeroinitializer
%124 = fmul <2 x double> %123, %121
%125 = fdiv <2 x double> %124, <double 4.800000e+01, double 2.400000e+01>
%126 = extractelement <2 x double> %125, i64 1
%127 = fsub double %126, %115
%128 = extractelement <2 x double> %125, i64 0
%129 = fadd double %128, %127
%130 = fadd double %108, %129
br label %171
131: ; preds = %5
%132 = insertelement <2 x double> poison, double %2, i64 0
%133 = shufflevector <2 x double> %132, <2 x double> poison, <2 x i32> zeroinitializer
%134 = insertelement <2 x double> poison, double %1, i64 0
%135 = insertelement <2 x double> %134, double %4, i64 1
%136 = fmul <2 x double> %133, %135
%137 = extractelement <2 x double> %136, i64 0
%138 = fmul double %137, %4
%139 = fmul double %138, %4
%140 = fdiv double %139, 1.200000e+01
%141 = fmul <2 x double> %136, %135
%142 = fmul <2 x double> %141, %135
%143 = insertelement <2 x double> poison, double %4, i64 0
%144 = shufflevector <2 x double> %143, <2 x double> poison, <2 x i32> zeroinitializer
%145 = fmul <2 x double> %142, %144
%146 = fdiv <2 x double> %145, <double 2.400000e+01, double 2.400000e+01>
%147 = extractelement <2 x double> %146, i64 1
%148 = fsub double %147, %140
%149 = extractelement <2 x double> %146, i64 0
%150 = fadd double %149, %148
%151 = fmul double %8, %4
%152 = fmul double %1, 1.200000e+02
%153 = insertelement <2 x double> poison, double %151, i64 0
%154 = insertelement <2 x double> %153, double %8, i64 1
%155 = insertelement <2 x double> %143, double %1, i64 1
%156 = fmul <2 x double> %154, %155
%157 = fmul <2 x double> %156, %144
%158 = fmul <2 x double> %157, %144
%159 = fmul <2 x double> %158, %144
%160 = insertelement <2 x double> <double poison, double 3.600000e+01>, double %152, i64 0
%161 = fdiv <2 x double> %159, %160
%162 = shufflevector <2 x double> %161, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%163 = fsub <2 x double> %161, %162
%164 = extractelement <2 x double> %163, i64 0
%165 = fmul double %8, 0.000000e+00
%166 = fmul double %165, %1
%167 = fmul double %166, %1
%168 = fmul double %167, %1
%169 = tail call double @llvm.fmuladd.f64(double %168, double %4, double %164)
%170 = fadd double %150, %169
br label %171
171: ; preds = %5, %131, %86, %43, %9
%172 = phi double [ 0.000000e+00, %5 ], [ %170, %131 ], [ %130, %86 ], [ %85, %43 ], [ %42, %9 ]
ret double %172
}