double dcs_bremsstrahlung_SSR(double Z, double A, double m, double K,
                              double q) {
  if ((Z <= 0) || (A <= 0) || (m <= 0) || (K <= 0) || (q <= 0))
    return 0.;
  const double z13 = pow(Z, 1. / 3.);
  if (q >= K + m * (1. - 0.75 * 1.648721270700128 * z13))
    return 0.;
  const double a[3] = {-0.00349, 148.84, -987.531};
  const double b[4] = {0.1642, 132.573, -585.361, 1407.77};
  const double c[6] = {-2.8922, -19.0156, 57.698, -63.418, 14.1166, 1.84206};
  const double d[6] = {2134.19, 581.823, -2708.85, 4767.05, 1.52918, 0.361933};
  const double energy = (K + m) * 1E+03;
  const double v = q * 1E+03 / energy;
  m *= 1E+03;
  const double Z13 = 1. / z13;
  const double rad_log = radiation_logarithm(Z);
  const double rad_log_inel = (Z == 1.) ? 446. : 1429.;
  const double Dn = 1.54 * pow(A, 0.27);
  const double mu_qc = m / (105.6583745 * exp(1.) / Dn);
  const double rho = sqrt(1. + 4. * mu_qc * mu_qc);
  const double log_rho = log((rho + 1.) / (rho - 1.));
  const double delta1 = log(mu_qc) + 0.5 * rho * log_rho;
  const double delta2 = log(mu_qc) +
                        0.25 * (3. * rho - rho * rho * rho) * log_rho +
                        2. * mu_qc * mu_qc;
  const double delta = m * m * v / (2. * energy * (1. - v));
  double phi1 = log(rad_log * Z13 * (m / 0.5109989461) /
                    (1. + rad_log * Z13 * exp(0.5) * delta / 0.5109989461));
  double phi2 = log(rad_log * Z13 * exp(-1. / 6.) * (m / 0.5109989461) /
                    (1. + rad_log * Z13 * exp(1. / 3.) * delta / 0.5109989461));
  phi1 -= delta1 * (1. - 1. / Z);
  phi2 -= delta2 * (1. - 1. / Z);
  const double s_atomic_1 =
      log(m / delta /
          (m * delta / (0.5109989461 * 0.5109989461) + 1.648721270700128));
  const double s_atomic_2 =
      log(1. + 0.5109989461 /
                   (delta * rad_log_inel * Z13 * Z13 * 1.648721270700128));
  const double s_atomic =
      (4. / 3. * (1. - v) + v * v) * (s_atomic_1 - s_atomic_2);
  double s_rad;
  if (v < .0 || v > 1.) {
    s_rad = 0.;
  } else if (v < 0.02) {
    s_rad = a[0] + a[1] * v + a[2] * v * v;
  } else if (v >= 0.02 && v < 0.1) {
    s_rad = b[0] + b[1] * v + b[2] * v * v + b[3] * v * v * v;
  } else if (v >= 0.01 && v < 0.9) {
    s_rad = c[0] + c[1] * v + c[2] * v * v;
    const double tmp = log(1. - v);
    s_rad += c[3] * v * log(v) + c[4] * tmp + c[5] * tmp * tmp;
  } else {
    s_rad = d[0] + d[1] * v + d[2] * v * v;
    const double tmp = log(1. - v);
    s_rad += d[3] * v * log(v) + d[4] * tmp + d[5] * tmp * tmp;
  }
  const double result =
      ((2. - 2. * v + v * v) * phi1 - 2. / 3. * (1. - v) * phi2) +
      1. / Z * s_atomic + 0.25 * 7.2973525693E-03 * phi1 * s_rad;
  if (result <= 0.)
    return 0.;
  const double aux = 2 * (0.5109989461 / m) * 2.8179403227E-13 * Z;
  return aux * aux * (7.2973525693E-03 / q) * result * 1E-04;
}


x86 assembly (clang, -O0):
<dcs_bremsstrahlung_SSR>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1c0,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
movsd  %xmm4,-0x30(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x10(%rbp),%xmm0
jae    11ca <dcs_bremsstrahlung_SSR+0x6a>
xorps  %xmm0,%xmm0
ucomisd -0x18(%rbp),%xmm0
jae    11ca <dcs_bremsstrahlung_SSR+0x6a>
xorps  %xmm0,%xmm0
ucomisd -0x20(%rbp),%xmm0
jae    11ca <dcs_bremsstrahlung_SSR+0x6a>
xorps  %xmm0,%xmm0
ucomisd -0x28(%rbp),%xmm0
jae    11ca <dcs_bremsstrahlung_SSR+0x6a>
xorps  %xmm0,%xmm0
ucomisd -0x30(%rbp),%xmm0
jb     11d7 <dcs_bremsstrahlung_SSR+0x77>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1d4b <dcs_bremsstrahlung_SSR+0xbeb>
movsd  -0x10(%rbp),%xmm0
movsd  0xe2c(%rip),%xmm1
call   1060 <pow@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm3
movsd  0xdf6(%rip),%xmm4
mulsd  %xmm4,%xmm3
movsd  0xdf2(%rip),%xmm4
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jb     1239 <dcs_bremsstrahlung_SSR+0xd9>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1d4b <dcs_bremsstrahlung_SSR+0xbeb>
mov    0xf00(%rip),%rax
mov    %rax,-0x50(%rbp)
mov    0xefd(%rip),%rax
mov    %rax,-0x48(%rbp)
mov    0xefa(%rip),%rax
mov    %rax,-0x40(%rbp)
mov    0xeff(%rip),%rax
mov    %rax,-0x70(%rbp)
mov    0xefc(%rip),%rax
mov    %rax,-0x68(%rbp)
mov    0xef9(%rip),%rax
mov    %rax,-0x60(%rbp)
mov    0xef6(%rip),%rax
mov    %rax,-0x58(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x30,%edx
call   1030 <memset@plt>
movsd  0xe4f(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xe37(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xe1f(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xe07(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xdef(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xdda(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
lea    -0xd0(%rbp),%rdi
xor    %esi,%esi
mov    $0x30,%edx
call   1030 <memset@plt>
movsd  0xdb2(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0xd9a(%rip),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xd82(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xd6a(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0xd52(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xd3a(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  0xd18(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0xd04(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
divsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0xce7(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xc4d(%rip),%xmm0
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
mov    $0x1,%al
call   1080 <radiation_logarithm@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  0xc93(%rip),%xmm3
movsd  0xc93(%rip),%xmm2
movsd  0xc0b(%rip),%xmm1
cmpeqsd %xmm1,%xmm0
movaps %xmm0,%xmm1
andpd  %xmm3,%xmm1
andnpd %xmm2,%xmm0
orpd   %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  0xc52(%rip),%xmm1
call   1060 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xc3a(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  0xbb1(%rip),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm2
movsd  -0x1b0(%rbp),%xmm0
ff
movsd  0xbf9(%rip),%xmm1
mulsd  %xmm2,%xmm1
divsd  -0x100(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0xbd1(%rip),%xmm0
mulsd  -0x108(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xb5d(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1070 <sqrt@plt>
movsd  %xmm0,-0x110(%rbp)
ff
movsd  0xb44(%rip),%xmm0
addsd  -0x110(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm1
ff
movsd  0xb2c(%rip),%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1050 <log@plt>
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
call   1050 <log@plt>
movaps %xmm0,%xmm1
movsd  0xb37(%rip),%xmm0
mulsd  -0x110(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
call   1050 <log@plt>
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x110(%rbp),%xmm1
ff
mulsd  -0x110(%rbp),%xmm1
ff
mulsd  -0x110(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xae3(%rip),%xmm3
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  0xacb(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  -0x118(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xaa7(%rip),%xmm0
mulsd  -0x108(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
mulsd  -0x20(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  0xa6d(%rip),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
movsd  0xa1d(%rip),%xmm2
subsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  -0x20(%rbp),%xmm1
movsd  0xa00(%rip),%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  0x9f0(%rip),%xmm0
call   1040 <exp@plt>
movsd  -0x1a8(%rbp),%xmm2
ff
movaps %xmm0,%xmm1
movsd  -0x1a0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm2
mulsd  -0x130(%rbp),%xmm2
ff
movsd  0x9a4(%rip),%xmm1
divsd  %xmm1,%xmm2
movsd  0x980(%rip),%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1050 <log@plt>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x198(%rbp)
ff
movsd  0x97b(%rip),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x198(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  0x942(%rip),%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x190(%rbp)
ff
movsd  0x902(%rip),%xmm0
call   1040 <exp@plt>
movsd  -0x190(%rbp),%xmm2
ff
movaps %xmm0,%xmm1
movsd  -0x188(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm2
mulsd  -0x130(%rbp),%xmm2
ff
movsd  0x8e6(%rip),%xmm1
divsd  %xmm1,%xmm2
movsd  0x8c2(%rip),%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1050 <log@plt>
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  0x89d(%rip),%xmm1
divsd  -0x10(%rbp),%xmm1
movsd  0x890(%rip),%xmm2
subsd  %xmm1,%xmm2
movsd  -0x138(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  0x84d(%rip),%xmm1
divsd  -0x10(%rbp),%xmm1
movsd  0x840(%rip),%xmm2
subsd  %xmm1,%xmm2
movsd  -0x140(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x130(%rbp),%xmm0
ff
movsd  -0x20(%rbp),%xmm1
mulsd  -0x130(%rbp),%xmm1
ff
movsd  0x813(%rip),%xmm2
divsd  %xmm2,%xmm1
movsd  0x7ff(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1050 <log@plt>
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  0x7c2(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x7ae(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  0x78a(%rip),%xmm0
addsd  %xmm1,%xmm0
call   1050 <log@plt>
movsd  %xmm0,-0x150(%rbp)
ff
movsd  0x771(%rip),%xmm0
subsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0xe0(%rbp),%xmm1
ff
movsd  0x761(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x148(%rbp),%xmm1
ff
subsd  -0x150(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xe0(%rbp),%xmm0
ff
ja     1906 <dcs_bremsstrahlung_SSR+0x7a6>
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0x70c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1916 <dcs_bremsstrahlung_SSR+0x7b6>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
jmp    1c01 <dcs_bremsstrahlung_SSR+0xaa1>
movsd  0x7da(%rip),%xmm0
ucomisd -0xe0(%rbp),%xmm0
ff
jbe    1970 <dcs_bremsstrahlung_SSR+0x810>
movsd  -0x50(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
jmp    1bfc <dcs_bremsstrahlung_SSR+0xa9c>
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0x778(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1a09 <dcs_bremsstrahlung_SSR+0x8a9>
movsd  0x76e(%rip),%xmm0
ucomisd -0xe0(%rbp),%xmm0
ff
jbe    1a09 <dcs_bremsstrahlung_SSR+0x8a9>
movsd  -0x70(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm0
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
mulsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x58(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
jmp    1bf7 <dcs_bremsstrahlung_SSR+0xa97>
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0x6ef(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1b15 <dcs_bremsstrahlung_SSR+0x9b5>
movsd  0x6e5(%rip),%xmm0
ucomisd -0xe0(%rbp),%xmm0
ff
jbe    1b15 <dcs_bremsstrahlung_SSR+0x9b5>
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  0x57f(%rip),%xmm0
subsd  -0xe0(%rbp),%xmm0
ff
call   1050 <log@plt>
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1050 <log@plt>
movsd  -0x1b8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x80(%rbp),%xmm0
mulsd  -0x168(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
mulsd  -0x168(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
jmp    1bf2 <dcs_bremsstrahlung_SSR+0xa92>
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  0x4a3(%rip),%xmm0
subsd  -0xe0(%rbp),%xmm0
ff
call   1050 <log@plt>
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1050 <log@plt>
movsd  -0x1c0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
movsd  -0x170(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
jmp    1bf7 <dcs_bremsstrahlung_SSR+0xa97>
jmp    1bfc <dcs_bremsstrahlung_SSR+0xa9c>
jmp    1c01 <dcs_bremsstrahlung_SSR+0xaa1>
movsd  -0xe0(%rbp),%xmm0
ff
addsd  %xmm0,%xmm0
movsd  0x433(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x138(%rbp),%xmm2
ff
movsd  0x3c7(%rip),%xmm3
subsd  -0xe0(%rbp),%xmm3
ff
movsd  0x4cf(%rip),%xmm1
mulsd  %xmm3,%xmm1
mulsd  -0x140(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x384(%rip),%xmm1
divsd  -0x10(%rbp),%xmm1
movsd  -0x158(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x477(%rip),%xmm0
mulsd  -0x138(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0x178(%rbp),%xmm0
ff
jb     1cdf <dcs_bremsstrahlung_SSR+0xb7f>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1d4b <dcs_bremsstrahlung_SSR+0xbeb>
movsd  0x339(%rip),%xmm1
divsd  -0x20(%rbp),%xmm1
movsd  0x354(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  0x438(%rip),%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x180(%rbp),%xmm0
ff
movsd  0x407(%rip),%xmm1
divsd  -0x30(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x178(%rbp),%xmm0
ff
movsd  0x3e6(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x1c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dcs_bremsstrahlung_SSR>:
push   %rbx
sub    $0xa0,%rsp
movapd %xmm0,%xmm5
xorpd  %xmm0,%xmm0
ucomisd %xmm5,%xmm0
jae    1875 <dcs_bremsstrahlung_SSR+0x735>
xorpd  %xmm6,%xmm6
ucomisd %xmm1,%xmm6
jae    1875 <dcs_bremsstrahlung_SSR+0x735>
ucomisd %xmm2,%xmm6
jae    1875 <dcs_bremsstrahlung_SSR+0x735>
xorpd  %xmm6,%xmm6
ucomisd %xmm3,%xmm6
jae    1875 <dcs_bremsstrahlung_SSR+0x735>
movsd  %xmm1,0x30(%rsp)
ucomisd %xmm4,%xmm6
jae    1875 <dcs_bremsstrahlung_SSR+0x735>
movsd  0xe68(%rip),%xmm1
movapd %xmm5,%xmm0
movsd  %xmm4,0x48(%rsp)
movsd  %xmm5,0x28(%rsp)
movsd  %xmm2,(%rsp)
movsd  %xmm3,0x10(%rsp)
call   1040 <pow@plt>
movsd  0x10(%rsp),%xmm5
movsd  (%rsp),%xmm4
movsd  0x48(%rsp),%xmm3
movapd %xmm0,%xmm1
movsd  0xe33(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xe2f(%rip),%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm5,%xmm2
xorpd  %xmm0,%xmm0
ucomisd %xmm2,%xmm3
movsd  0x28(%rsp),%xmm2
jae    1875 <dcs_bremsstrahlung_SSR+0x735>
addsd  %xmm4,%xmm5
movsd  0xe0f(%rip),%xmm0
mulsd  %xmm0,%xmm5
mulsd  %xmm0,%xmm3
movsd  %xmm5,0x10(%rsp)
divsd  %xmm5,%xmm3
movapd %xmm3,0x50(%rsp)
mulsd  %xmm0,%xmm4
movsd  %xmm4,(%rsp)
movsd  0xdde(%rip),%xmm3
movapd %xmm3,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x70(%rsp)
movapd %xmm2,%xmm0
cmpeqsd %xmm3,%xmm0
movq   %xmm0,%rbx
and    $0x1,%ebx
movapd %xmm2,%xmm0
mov    $0x1,%al
call   1060 <radiation_logarithm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
lea    0xed0(%rip),%rax
movsd  (%rax,%rbx,8),%xmm0
movsd  %xmm0,0x80(%rsp)
movsd  0xd9a(%rip),%xmm1
movsd  0x30(%rsp),%xmm0
call   1040 <pow@plt>
mulsd  0xd8f(%rip),%xmm0
movsd  0xd8f(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  (%rsp),%xmm2
divsd  %xmm1,%xmm2
movsd  0xd82(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  %xmm2,0x30(%rsp)
mulsd  %xmm2,%xmm0
addsd  0xd44(%rip),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     12dc <dcs_bremsstrahlung_SSR+0x19c>
sqrtsd %xmm0,%xmm0
jmp    12e1 <dcs_bremsstrahlung_SSR+0x1a1>
call   1050 <sqrt@plt>
movapd %xmm0,%xmm2
movsd  %xmm0,0x18(%rsp)
movsd  0xd1d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xd41(%rip),%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1030 <log@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x30(%rsp),%xmm0
call   1030 <log@plt>
movsd  0xd23(%rip),%xmm1
mulsd  0x18(%rsp),%xmm1
mulsd  0x20(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x68(%rsp)
movsd  0x30(%rsp),%xmm0
call   1030 <log@plt>
movsd  0x18(%rsp),%xmm2
movapd %xmm2,%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm1
mulsd  0xcf0(%rip),%xmm2
subsd  %xmm1,%xmm2
mulsd  0xcec(%rip),%xmm2
mulsd  0x20(%rsp),%xmm2
addsd  %xmm0,%xmm2
movsd  0x30(%rsp),%xmm1
movapd %xmm1,%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,0x98(%rsp)
movsd  (%rsp),%xmm0
movapd %xmm0,%xmm2
movapd %xmm0,%xmm4
mulsd  %xmm0,%xmm2
movapd 0x50(%rsp),%xmm1
mulsd  %xmm1,%xmm2
movapd %xmm2,%xmm5
movsd  0x10(%rsp),%xmm0
addsd  %xmm0,%xmm0
movsd  0xc4a(%rip),%xmm2
movapd %xmm2,%xmm3
subsd  %xmm1,%xmm3
movsd  %xmm3,0x20(%rsp)
mulsd  %xmm3,%xmm0
divsd  %xmm0,%xmm5
movsd  %xmm5,0x30(%rsp)
movsd  0x8(%rsp),%xmm6
mulsd  0x70(%rsp),%xmm6
movsd  %xmm6,0x8(%rsp)
movsd  0xc64(%rip),%xmm3
movapd %xmm4,%xmm0
divsd  %xmm3,%xmm0
movsd  %xmm0,0x18(%rsp)
mulsd  %xmm6,%xmm0
movsd  0xc52(%rip),%xmm1
mulsd  %xmm6,%xmm1
mulsd  %xmm5,%xmm1
divsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1030 <log@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0xc33(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  %xmm1,%xmm0
mulsd  0x18(%rsp),%xmm0
mulsd  0xc23(%rip),%xmm1
mulsd  0x30(%rsp),%xmm1
divsd  0xbfd(%rip),%xmm1
addsd  0xba5(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1030 <log@plt>
movsd  0xb94(%rip),%xmm2
movapd %xmm2,%xmm1
divsd  0x28(%rsp),%xmm1
movsd  %xmm1,0x18(%rsp)
subsd  %xmm1,%xmm2
movsd  0x68(%rsp),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x10(%rsp),%xmm3
subsd  %xmm1,%xmm3
movsd  %xmm3,0x10(%rsp)
mulsd  0x98(%rsp),%xmm2
subsd  %xmm2,%xmm0
movsd  %xmm0,0x68(%rsp)
movsd  (%rsp),%xmm1
movapd %xmm1,%xmm0
movsd  0x30(%rsp),%xmm2
mulsd  %xmm2,%xmm1
divsd  0xba8(%rip),%xmm1
divsd  %xmm2,%xmm0
addsd  0xba4(%rip),%xmm1
divsd  %xmm1,%xmm0
call   1030 <log@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x80(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
movsd  0x70(%rsp),%xmm0
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  0xb70(%rip),%xmm1
movsd  0xb40(%rip),%xmm0
divsd  %xmm1,%xmm0
addsd  0xae4(%rip),%xmm0
call   1030 <log@plt>
movsd  0x8(%rsp),%xmm5
movsd  0x20(%rsp),%xmm7
movapd 0x50(%rsp),%xmm4
movapd %xmm4,%xmm6
mulsd  %xmm4,%xmm6
movsd  0xb3d(%rip),%xmm1
mulsd  %xmm7,%xmm1
addsd  %xmm6,%xmm1
subsd  %xmm0,%xmm5
mulsd  %xmm1,%xmm5
xorpd  %xmm2,%xmm2
ucomisd %xmm4,%xmm2
ja     15ca <dcs_bremsstrahlung_SSR+0x48a>
ucomisd 0xa9b(%rip),%xmm4
movsd  0x48(%rsp),%xmm8
movsd  0x28(%rsp),%xmm10
movsd  (%rsp),%xmm9
ja     17de <dcs_bremsstrahlung_SSR+0x69e>
movsd  0xb01(%rip),%xmm0
ucomisd %xmm4,%xmm0
jbe    15e3 <dcs_bremsstrahlung_SSR+0x4a3>
movsd  0xb53(%rip),%xmm0
mulsd  %xmm4,%xmm0
addsd  0xb4f(%rip),%xmm0
movsd  0xb4f(%rip),%xmm2
mulsd  %xmm4,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm0,%xmm2
jmp    17de <dcs_bremsstrahlung_SSR+0x69e>
movsd  0x48(%rsp),%xmm8
movsd  0x28(%rsp),%xmm10
movsd  (%rsp),%xmm9
jmp    17de <dcs_bremsstrahlung_SSR+0x69e>
ucomisd 0xaad(%rip),%xmm4
jb     1640 <dcs_bremsstrahlung_SSR+0x500>
movsd  0xaab(%rip),%xmm0
ucomisd %xmm4,%xmm0
jbe    1640 <dcs_bremsstrahlung_SSR+0x500>
movsd  0xad5(%rip),%xmm0
mulsd  %xmm4,%xmm0
addsd  0xad1(%rip),%xmm0
movsd  0xad1(%rip),%xmm1
mulsd  %xmm4,%xmm1
mulsd  %xmm4,%xmm1
addsd  %xmm0,%xmm1
movsd  0xac5(%rip),%xmm2
mulsd  %xmm4,%xmm2
mulsd  %xmm4,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm1,%xmm2
jmp    17de <dcs_bremsstrahlung_SSR+0x69e>
ucomisd 0xa60(%rip),%xmm4
movsd  %xmm5,0x8(%rsp)
movapd %xmm6,0x30(%rsp)
jb     1718 <dcs_bremsstrahlung_SSR+0x5d8>
movsd  0xa4e(%rip),%xmm0
ucomisd %xmm4,%xmm0
jbe    1718 <dcs_bremsstrahlung_SSR+0x5d8>
movapd %xmm7,%xmm0
call   1030 <log@plt>
movapd %xmm0,0x80(%rsp)
movsd  0xa42(%rip),%xmm0
mulsd  0x50(%rsp),%xmm0
movapd %xmm0,0x70(%rsp)
movapd 0x50(%rsp),%xmm0
call   1030 <log@plt>
movapd 0x30(%rsp),%xmm6
movsd  0x8(%rsp),%xmm5
movsd  0x20(%rsp),%xmm7
movapd 0x50(%rsp),%xmm4
movsd  (%rsp),%xmm9
movsd  0x48(%rsp),%xmm8
movapd %xmm4,%xmm1
movapd 0x80(%rsp),%xmm2
unpcklpd %xmm2,%xmm1
mulsd  0x9f5(%rip),%xmm2
movapd %xmm2,%xmm10
movapd %xmm4,%xmm2
unpcklpd 0x70(%rsp),%xmm2
movapd 0xa8e(%rip),%xmm3
unpcklpd %xmm0,%xmm3
mulpd  %xmm2,%xmm3
movapd 0xa8e(%rip),%xmm0
unpcklpd %xmm10,%xmm0
addpd  %xmm3,%xmm0
movapd 0xa8d(%rip),%xmm3
jmp    17bf <dcs_bremsstrahlung_SSR+0x67f>
movapd %xmm7,%xmm0
call   1030 <log@plt>
movapd %xmm0,0x80(%rsp)
movsd  0x986(%rip),%xmm0
mulsd  0x50(%rsp),%xmm0
movapd %xmm0,0x70(%rsp)
movapd 0x50(%rsp),%xmm0
call   1030 <log@plt>
movapd 0x30(%rsp),%xmm6
movsd  0x8(%rsp),%xmm5
movsd  0x20(%rsp),%xmm7
movapd 0x50(%rsp),%xmm4
movsd  (%rsp),%xmm9
movsd  0x48(%rsp),%xmm8
movapd %xmm4,%xmm1
movapd 0x80(%rsp),%xmm2
unpcklpd %xmm2,%xmm1
mulsd  0x939(%rip),%xmm2
movapd %xmm2,%xmm10
movapd %xmm4,%xmm2
unpcklpd 0x70(%rsp),%xmm2
movapd 0x9b2(%rip),%xmm3
unpcklpd %xmm0,%xmm3
mulpd  %xmm2,%xmm3
movapd 0x9b2(%rip),%xmm0
unpcklpd %xmm10,%xmm0
addpd  %xmm3,%xmm0
movapd 0x9b1(%rip),%xmm3
mulpd  %xmm1,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm0,%xmm3
movapd %xmm3,%xmm2
unpckhpd %xmm3,%xmm2
addsd  %xmm3,%xmm2
movsd  0x28(%rsp),%xmm10
addsd  %xmm4,%xmm4
movsd  0x926(%rip),%xmm0
subsd  %xmm4,%xmm0
addsd  %xmm0,%xmm6
mulsd  0x91e(%rip),%xmm7
mulsd  0x68(%rsp),%xmm7
movsd  0x10(%rsp),%xmm3
mulsd  %xmm3,%xmm6
addsd  %xmm7,%xmm6
movsd  0x18(%rsp),%xmm0
mulsd  %xmm5,%xmm0
addsd  %xmm6,%xmm0
mulsd  0x8fc(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm0,%xmm3
xorpd  %xmm0,%xmm0
ucomisd %xmm3,%xmm0
jae    1875 <dcs_bremsstrahlung_SSR+0x735>
movsd  0x822(%rip),%xmm1
divsd  %xmm9,%xmm1
addsd  %xmm1,%xmm1
mulsd  0x8d9(%rip),%xmm1
mulsd  %xmm10,%xmm1
mulsd  %xmm1,%xmm1
movsd  0x8d0(%rip),%xmm0
divsd  %xmm8,%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm3,%xmm0
mulsd  0x8c3(%rip),%xmm0
add    $0xa0,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@__const.dcs_bremsstrahlung_SSR.a = [3 x double] [double -3.490000e-03, double 1.488400e+02, double 0xC08EDC3F7CED9168]
@__const.dcs_bremsstrahlung_SSR.b = [4 x double] [double 1.642000e-01, double 1.325730e+02, double 0xC0824AE353F7CED9, double 1.407770e+03]
define double @dcs_bremsstrahlung_SSR(double %0, double %1, double %2, double %3, double %4) {
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca [3 x double]
%14 = alloca [4 x double]
%15 = alloca [6 x double]
%16 = alloca [6 x double]
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = 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
%39 = load double, double* %7
%40 = fcmp ole double %39, 0.000000e+00
br i1 %40, label %53, label %41
41: ; preds = %5
%42 = load double, double* %8
%43 = fcmp ole double %42, 0.000000e+00
br i1 %43, label %53, label %44
44: ; preds = %41
%45 = load double, double* %9
%46 = fcmp ole double %45, 0.000000e+00
br i1 %46, label %53, label %47
47: ; preds = %44
%48 = load double, double* %10
%49 = fcmp ole double %48, 0.000000e+00
br i1 %49, label %53, label %50
50: ; preds = %47
%51 = load double, double* %11
%52 = fcmp ole double %51, 0.000000e+00
br i1 %52, label %53, label %54
53: ; preds = %50, %47, %44, %41, %5
store double 0.000000e+00, double* %6
br label %407
54: ; preds = %50
%55 = load double, double* %7
%56 = call double @pow(double %55, double 0x3FD5555555555555)
store double %56, double* %12
%57 = load double, double* %11
%58 = load double, double* %10
%59 = load double, double* %9
%60 = load double, double* %12
%61 = call double @llvm.fmuladd.f64(double 0xBFF3C8DF2A9684F4, double %60, double 1.000000e+00)
%62 = call double @llvm.fmuladd.f64(double %59, double %61, double %58)
%63 = fcmp oge double %57, %62
br i1 %63, label %64, label %65
64: ; preds = %54
store double 0.000000e+00, double* %6
br label %407
65: ; preds = %54
%66 = bitcast [3 x double]* %13 to i8*
%67 = bitcast [4 x double]* %14 to i8*
%68 = bitcast [6 x double]* %15 to i8*
%69 = bitcast i8* %68 to [6 x double]*
%70 = getelementptr inbounds [6 x double], [6 x double]* %69, i32 0, i32 0
store double -2.892200e+00, double* %70
%71 = getelementptr inbounds [6 x double], [6 x double]* %69, i32 0, i32 1
store double -1.901560e+01, double* %71
%72 = getelementptr inbounds [6 x double], [6 x double]* %69, i32 0, i32 2
store double 5.769800e+01, double* %72
%73 = getelementptr inbounds [6 x double], [6 x double]* %69, i32 0, i32 3
store double 0xC04FB5810624DD2F, double* %73
%74 = getelementptr inbounds [6 x double], [6 x double]* %69, i32 0, i32 4
store double 1.411660e+01, double* %74
%75 = getelementptr inbounds [6 x double], [6 x double]* %69, i32 0, i32 5
store double 1.842060e+00, double* %75
%76 = bitcast [6 x double]* %16 to i8*
%77 = bitcast i8* %76 to [6 x double]*
%78 = getelementptr inbounds [6 x double], [6 x double]* %77, i32 0, i32 0
store double 2.134190e+03, double* %78
%79 = getelementptr inbounds [6 x double], [6 x double]* %77, i32 0, i32 1
store double 0x40822E95810624DD, double* %79
%80 = getelementptr inbounds [6 x double], [6 x double]* %77, i32 0, i32 2
store double -2.708850e+03, double* %80
%81 = getelementptr inbounds [6 x double], [6 x double]* %77, i32 0, i32 3
store double 4.767050e+03, double* %81
%82 = getelementptr inbounds [6 x double], [6 x double]* %77, i32 0, i32 4
store double 1.529180e+00, double* %82
%83 = getelementptr inbounds [6 x double], [6 x double]* %77, i32 0, i32 5
store double 3.619330e-01, double* %83
%84 = load double, double* %10
%85 = load double, double* %9
%86 = fadd double %84, %85
%87 = fmul double %86, 1.000000e+03
store double %87, double* %17
%88 = load double, double* %11
%89 = fmul double %88, 1.000000e+03
%90 = load double, double* %17
%91 = fdiv double %89, %90
store double %91, double* %18
%92 = load double, double* %9
%93 = fmul double %92, 1.000000e+03
store double %93, double* %9
%94 = load double, double* %12
%95 = fdiv double 1.000000e+00, %94
store double %95, double* %19
%96 = load double, double* %7
%97 = call i32 (double, ...) bitcast (i32 (...)* @radiation_logarithm to i32 (double, ...)*)(double %96)
%98 = sitofp i32 %97 to double
store double %98, double* %20
%99 = load double, double* %7
%100 = fcmp oeq double %99, 1.000000e+00
%101 = zext i1 %100 to i64
%102 = select i1 %100, double 4.460000e+02, double 1.429000e+03
store double %102, double* %21
%103 = load double, double* %8
%104 = call double @pow(double %103, double 2.700000e-01)
%105 = fmul double 1.540000e+00, %104
store double %105, double* %22
%106 = load double, double* %9
%107 = call double @exp(double 1.000000e+00)
%108 = fmul double 0x405A6A22CECC814D, %107
%109 = load double, double* %22
%110 = fdiv double %108, %109
%111 = fdiv double %106, %110
store double %111, double* %23
%112 = load double, double* %23
%113 = fmul double 4.000000e+00, %112
%114 = load double, double* %23
%115 = call double @llvm.fmuladd.f64(double %113, double %114, double 1.000000e+00)
%116 = call double @sqrt(double %115)
store double %116, double* %24
%117 = load double, double* %24
%118 = fadd double %117, 1.000000e+00
%119 = load double, double* %24
%120 = fsub double %119, 1.000000e+00
%121 = fdiv double %118, %120
%122 = call double @log(double %121)
store double %122, double* %25
%123 = load double, double* %23
%124 = call double @log(double %123)
%125 = load double, double* %24
%126 = fmul double 5.000000e-01, %125
%127 = load double, double* %25
%128 = call double @llvm.fmuladd.f64(double %126, double %127, double %124)
store double %128, double* %26
%129 = load double, double* %23
%130 = call double @log(double %129)
%131 = load double, double* %24
%132 = load double, double* %24
%133 = load double, double* %24
%134 = fmul double %132, %133
%135 = load double, double* %24
%136 = fmul double %134, %135
%137 = fneg double %136
%138 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %131, double %137)
%139 = fmul double 2.500000e-01, %138
%140 = load double, double* %25
%141 = call double @llvm.fmuladd.f64(double %139, double %140, double %130)
%142 = load double, double* %23
%143 = fmul double 2.000000e+00, %142
%144 = load double, double* %23
%145 = call double @llvm.fmuladd.f64(double %143, double %144, double %141)
store double %145, double* %27
%146 = load double, double* %9
%147 = load double, double* %9
%148 = fmul double %146, %147
%149 = load double, double* %18
%150 = fmul double %148, %149
%151 = load double, double* %17
%152 = fmul double 2.000000e+00, %151
%153 = load double, double* %18
%154 = fsub double 1.000000e+00, %153
%155 = fmul double %152, %154
%156 = fdiv double %150, %155
store double %156, double* %28
%157 = load double, double* %20
%158 = load double, double* %19
%159 = fmul double %157, %158
%160 = load double, double* %9
%161 = fdiv double %160, 0x3FE05A1A76394768
%162 = fmul double %159, %161
%163 = load double, double* %20
%164 = load double, double* %19
%165 = fmul double %163, %164
%166 = call double @exp(double 5.000000e-01)
%167 = fmul double %165, %166
%168 = load double, double* %28
%169 = fmul double %167, %168
%170 = fdiv double %169, 0x3FE05A1A76394768
%171 = fadd double 1.000000e+00, %170
%172 = fdiv double %162, %171
%173 = call double @log(double %172)
store double %173, double* %29
%174 = load double, double* %20
%175 = load double, double* %19
%176 = fmul double %174, %175
%177 = call double @exp(double 0xBFC5555555555555)
%178 = fmul double %176, %177
%179 = load double, double* %9
%180 = fdiv double %179, 0x3FE05A1A76394768
%181 = fmul double %178, %180
%182 = load double, double* %20
%183 = load double, double* %19
%184 = fmul double %182, %183
%185 = call double @exp(double 0x3FD5555555555555)
%186 = fmul double %184, %185
%187 = load double, double* %28
%188 = fmul double %186, %187
%189 = fdiv double %188, 0x3FE05A1A76394768
%190 = fadd double 1.000000e+00, %189
%191 = fdiv double %181, %190
%192 = call double @log(double %191)
store double %192, double* %30
%193 = load double, double* %26
%194 = load double, double* %7
%195 = fdiv double 1.000000e+00, %194
%196 = fsub double 1.000000e+00, %195
%197 = load double, double* %29
%198 = fneg double %193
%199 = call double @llvm.fmuladd.f64(double %198, double %196, double %197)
store double %199, double* %29
%200 = load double, double* %27
%201 = load double, double* %7
%202 = fdiv double 1.000000e+00, %201
%203 = fsub double 1.000000e+00, %202
%204 = load double, double* %30
%205 = fneg double %200
%206 = call double @llvm.fmuladd.f64(double %205, double %203, double %204)
store double %206, double* %30
%207 = load double, double* %9
%208 = load double, double* %28
%209 = fdiv double %207, %208
%210 = load double, double* %9
%211 = load double, double* %28
%212 = fmul double %210, %211
%213 = fdiv double %212, 0x3FD0B630565056D7
%214 = fadd double %213, 0x3FFA61298E1E069B
%215 = fdiv double %209, %214
%216 = call double @log(double %215)
store double %216, double* %31
%217 = load double, double* %28
%218 = load double, double* %21
%219 = fmul double %217, %218
%220 = load double, double* %19
%221 = fmul double %219, %220
%222 = load double, double* %19
%223 = fmul double %221, %222
%224 = fmul double %223, 0x3FFA61298E1E069B
%225 = fdiv double 0x3FE05A1A76394768, %224
%226 = fadd double 1.000000e+00, %225
%227 = call double @log(double %226)
store double %227, double* %32
%228 = load double, double* %18
%229 = fsub double 1.000000e+00, %228
%230 = load double, double* %18
%231 = load double, double* %18
%232 = fmul double %230, %231
%233 = call double @llvm.fmuladd.f64(double 0x3FF5555555555555, double %229, double %232)
%234 = load double, double* %31
%235 = load double, double* %32
%236 = fsub double %234, %235
%237 = fmul double %233, %236
store double %237, double* %33
%238 = load double, double* %18
%239 = fcmp olt double %238, 0.000000e+00
br i1 %239, label %243, label %240
240: ; preds = %65
%241 = load double, double* %18
%242 = fcmp ogt double %241, 1.000000e+00
br i1 %242, label %243, label %244
243: ; preds = %240, %65
store double 0.000000e+00, double* %34
br label %366
244: ; preds = %240
%245 = load double, double* %18
%246 = fcmp olt double %245, 2.000000e-02
br i1 %246, label %247, label %260
247: ; preds = %244
%248 = getelementptr inbounds [3 x double], [3 x double]* %13, i64 0, i64 0
%249 = load double, double* %248
%250 = getelementptr inbounds [3 x double], [3 x double]* %13, i64 0, i64 1
%251 = load double, double* %250
%252 = load double, double* %18
%253 = call double @llvm.fmuladd.f64(double %251, double %252, double %249)
%254 = getelementptr inbounds [3 x double], [3 x double]* %13, i64 0, i64 2
%255 = load double, double* %254
%256 = load double, double* %18
%257 = fmul double %255, %256
%258 = load double, double* %18
%259 = call double @llvm.fmuladd.f64(double %257, double %258, double %253)
store double %259, double* %34
br label %365
260: ; preds = %244
%261 = load double, double* %18
%262 = fcmp oge double %261, 2.000000e-02
br i1 %262, label %263, label %287
263: ; preds = %260
%264 = load double, double* %18
%265 = fcmp olt double %264, 1.000000e-01
br i1 %265, label %266, label %287
266: ; preds = %263
%267 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 0
%268 = load double, double* %267
%269 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 1
%270 = load double, double* %269
%271 = load double, double* %18
%272 = call double @llvm.fmuladd.f64(double %270, double %271, double %268)
%273 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 2
%274 = load double, double* %273
%275 = load double, double* %18
%276 = fmul double %274, %275
%277 = load double, double* %18
%278 = call double @llvm.fmuladd.f64(double %276, double %277, double %272)
%279 = getelementptr inbounds [4 x double], [4 x double]* %14, i64 0, i64 3
%280 = load double, double* %279
%281 = load double, double* %18
%282 = fmul double %280, %281
%283 = load double, double* %18
%284 = fmul double %282, %283
%285 = load double, double* %18
%286 = call double @llvm.fmuladd.f64(double %284, double %285, double %278)
store double %286, double* %34
br label %364
287: ; preds = %263, %260
%288 = load double, double* %18
%289 = fcmp oge double %288, 1.000000e-02
br i1 %289, label %290, label %328
290: ; preds = %287
%291 = load double, double* %18
%292 = fcmp olt double %291, 9.000000e-01
br i1 %292, label %293, label %328
293: ; preds = %290
%294 = getelementptr inbounds [6 x double], [6 x double]* %15, i64 0, i64 0
%295 = load double, double* %294
%296 = getelementptr inbounds [6 x double], [6 x double]* %15, i64 0, i64 1
%297 = load double, double* %296
%298 = load double, double* %18
%299 = call double @llvm.fmuladd.f64(double %297, double %298, double %295)
%300 = getelementptr inbounds [6 x double], [6 x double]* %15, i64 0, i64 2
%301 = load double, double* %300
%302 = load double, double* %18
%303 = fmul double %301, %302
%304 = load double, double* %18
%305 = call double @llvm.fmuladd.f64(double %303, double %304, double %299)
store double %305, double* %34
%306 = load double, double* %18
%307 = fsub double 1.000000e+00, %306
%308 = call double @log(double %307)
store double %308, double* %35
%309 = getelementptr inbounds [6 x double], [6 x double]* %15, i64 0, i64 3
%310 = load double, double* %309
%311 = load double, double* %18
%312 = fmul double %310, %311
%313 = load double, double* %18
%314 = call double @log(double %313)
%315 = getelementptr inbounds [6 x double], [6 x double]* %15, i64 0, i64 4
%316 = load double, double* %315
%317 = load double, double* %35
%318 = fmul double %316, %317
%319 = call double @llvm.fmuladd.f64(double %312, double %314, double %318)
%320 = getelementptr inbounds [6 x double], [6 x double]* %15, i64 0, i64 5
%321 = load double, double* %320
%322 = load double, double* %35
%323 = fmul double %321, %322
%324 = load double, double* %35
%325 = call double @llvm.fmuladd.f64(double %323, double %324, double %319)
%326 = load double, double* %34
%327 = fadd double %326, %325
store double %327, double* %34
br label %363
328: ; preds = %290, %287
%329 = getelementptr inbounds [6 x double], [6 x double]* %16, i64 0, i64 0
%330 = load double, double* %329
%331 = getelementptr inbounds [6 x double], [6 x double]* %16, i64 0, i64 1
%332 = load double, double* %331
%333 = load double, double* %18
%334 = call double @llvm.fmuladd.f64(double %332, double %333, double %330)
%335 = getelementptr inbounds [6 x double], [6 x double]* %16, i64 0, i64 2
%336 = load double, double* %335
%337 = load double, double* %18
%338 = fmul double %336, %337
%339 = load double, double* %18
%340 = call double @llvm.fmuladd.f64(double %338, double %339, double %334)
store double %340, double* %34
%341 = load double, double* %18
%342 = fsub double 1.000000e+00, %341
%343 = call double @log(double %342)
store double %343, double* %36
%344 = getelementptr inbounds [6 x double], [6 x double]* %16, i64 0, i64 3
%345 = load double, double* %344
%346 = load double, double* %18
%347 = fmul double %345, %346
%348 = load double, double* %18
%349 = call double @log(double %348)
%350 = getelementptr inbounds [6 x double], [6 x double]* %16, i64 0, i64 4
%351 = load double, double* %350
%352 = load double, double* %36
%353 = fmul double %351, %352
%354 = call double @llvm.fmuladd.f64(double %347, double %349, double %353)
%355 = getelementptr inbounds [6 x double], [6 x double]* %16, i64 0, i64 5
%356 = load double, double* %355
%357 = load double, double* %36
%358 = fmul double %356, %357
%359 = load double, double* %36
%360 = call double @llvm.fmuladd.f64(double %358, double %359, double %354)
%361 = load double, double* %34
%362 = fadd double %361, %360
store double %362, double* %34
br label %363
363: ; preds = %328, %293
br label %364
364: ; preds = %363, %266
br label %365
365: ; preds = %364, %247
br label %366
366: ; preds = %365, %243
%367 = load double, double* %18
%368 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %367, double 2.000000e+00)
%369 = load double, double* %18
%370 = load double, double* %18
%371 = call double @llvm.fmuladd.f64(double %369, double %370, double %368)
%372 = load double, double* %29
%373 = load double, double* %18
%374 = fsub double 1.000000e+00, %373
%375 = fmul double 0x3FE5555555555555, %374
%376 = load double, double* %30
%377 = fmul double %375, %376
%378 = fneg double %377
%379 = call double @llvm.fmuladd.f64(double %371, double %372, double %378)
%380 = load double, double* %7
%381 = fdiv double 1.000000e+00, %380
%382 = load double, double* %33
%383 = call double @llvm.fmuladd.f64(double %381, double %382, double %379)
%384 = load double, double* %29
%385 = fmul double 0x3F5DE3D42A1ED29D, %384
%386 = load double, double* %34
%387 = call double @llvm.fmuladd.f64(double %385, double %386, double %383)
store double %387, double* %37
%388 = load double, double* %37
%389 = fcmp ole double %388, 0.000000e+00
br i1 %389, label %390, label %391
390: ; preds = %366
store double 0.000000e+00, double* %6
br label %407
391: ; preds = %366
%392 = load double, double* %9
%393 = fdiv double 0x3FE05A1A76394768, %392
%394 = fmul double 2.000000e+00, %393
%395 = fmul double %394, 0x3D53D45999442158
%396 = load double, double* %7
%397 = fmul double %395, %396
store double %397, double* %38
%398 = load double, double* %38
%399 = load double, double* %38
%400 = fmul double %398, %399
%401 = load double, double* %11
%402 = fdiv double 0x3F7DE3D42A1ED29D, %401
%403 = fmul double %400, %402
%404 = load double, double* %37
%405 = fmul double %403, %404
%406 = fmul double %405, 1.000000e-04
store double %406, double* %6
br label %407
407: ; preds = %391, %390, %64, %53
%408 = load double, double* %6
ret double %408
}

LLVM IR (-O2):
define double @dcs_bremsstrahlung_SSR(double %0, double %1, double %2, double %3, double %4) {
%6 = fcmp ole double %0, 0.000000e+00
%7 = fcmp ole double %1, 0.000000e+00
%8 = or i1 %6, %7
%9 = fcmp ole double %2, 0.000000e+00
%10 = or i1 %8, %9
%11 = fcmp ole double %3, 0.000000e+00
%12 = or i1 %10, %11
%13 = fcmp ole double %4, 0.000000e+00
%14 = or i1 %12, %13
br i1 %14, label %177, label %15
15: ; preds = %5
%16 = tail call double @pow(double %0, double 0x3FD5555555555555)
%17 = tail call double @llvm.fmuladd.f64(double %16, double 0xBFF3C8DF2A9684F4, double 1.000000e+00)
%18 = tail call double @llvm.fmuladd.f64(double %2, double %17, double %3)
%19 = fcmp ugt double %18, %4
br i1 %19, label %20, label %177
20: ; preds = %15
%21 = fadd double %2, %3
%22 = fmul double %21, 1.000000e+03
%23 = fmul double %4, 1.000000e+03
%24 = fdiv double %23, %22
%25 = fmul double %2, 1.000000e+03
%26 = fdiv double 1.000000e+00, %16
%27 = tail call i32 (double, ...) bitcast (i32 (...)* @radiation_logarithm to i32 (double, ...)*)(double %0)
%28 = sitofp i32 %27 to double
%29 = fcmp oeq double %0, 1.000000e+00
%30 = select i1 %29, double 4.460000e+02, double 1.429000e+03
%31 = tail call double @pow(double %1, double 2.700000e-01)
%32 = fmul double %31, 1.540000e+00
%33 = fdiv double 0x4071F3590B713BCD, %32
%34 = fdiv double %25, %33
%35 = fmul double %34, 4.000000e+00
%36 = tail call double @llvm.fmuladd.f64(double %35, double %34, double 1.000000e+00)
%37 = tail call double @sqrt(double %36)
%38 = fadd double %37, 1.000000e+00
%39 = fadd double %37, -1.000000e+00
%40 = fdiv double %38, %39
%41 = tail call double @log(double %40)
%42 = tail call double @log(double %34)
%43 = fmul double %37, 5.000000e-01
%44 = tail call double @llvm.fmuladd.f64(double %43, double %41, double %42)
%45 = tail call double @log(double %34)
%46 = fneg double %37
%47 = fmul double %37, %46
%48 = fmul double %37, %47
%49 = tail call double @llvm.fmuladd.f64(double %37, double 3.000000e+00, double %48)
%50 = fmul double %49, 2.500000e-01
%51 = tail call double @llvm.fmuladd.f64(double %50, double %41, double %45)
%52 = fmul double %34, 2.000000e+00
%53 = tail call double @llvm.fmuladd.f64(double %52, double %34, double %51)
%54 = fmul double %25, %25
%55 = fmul double %54, %24
%56 = fmul double %22, 2.000000e+00
%57 = fsub double 1.000000e+00, %24
%58 = fmul double %56, %57
%59 = fdiv double %55, %58
%60 = fmul double %26, %28
%61 = fdiv double %25, 0x3FE05A1A76394768
%62 = fmul double %61, %60
%63 = fmul double %60, 0x3FFA61298E1E069C
%64 = fmul double %59, %63
%65 = fdiv double %64, 0x3FE05A1A76394768
%66 = fadd double %65, 1.000000e+00
%67 = fdiv double %62, %66
%68 = tail call double @log(double %67)
%69 = fmul double %60, 0x3FEB1660D7A223B1
%70 = fmul double %61, %69
%71 = fmul double %60, 0x3FF6546DB1BA2D13
%72 = fmul double %59, %71
%73 = fdiv double %72, 0x3FE05A1A76394768
%74 = fadd double %73, 1.000000e+00
%75 = fdiv double %70, %74
%76 = tail call double @log(double %75)
%77 = fdiv double 1.000000e+00, %0
%78 = fsub double 1.000000e+00, %77
%79 = fneg double %44
%80 = tail call double @llvm.fmuladd.f64(double %79, double %78, double %68)
%81 = fneg double %53
%82 = tail call double @llvm.fmuladd.f64(double %81, double %78, double %76)
%83 = fdiv double %25, %59
%84 = fmul double %25, %59
%85 = fdiv double %84, 0x3FD0B630565056D7
%86 = fadd double %85, 0x3FFA61298E1E069B
%87 = fdiv double %83, %86
%88 = tail call double @log(double %87)
%89 = fmul double %30, %59
%90 = fmul double %89, %26
%91 = fmul double %26, %90
%92 = fmul double %91, 0x3FFA61298E1E069B
%93 = fdiv double 0x3FE05A1A76394768, %92
%94 = fadd double %93, 1.000000e+00
%95 = tail call double @log(double %94)
%96 = fmul double %24, %24
%97 = tail call double @llvm.fmuladd.f64(double %57, double 0x3FF5555555555555, double %96)
%98 = fsub double %88, %95
%99 = fmul double %97, %98
%100 = fcmp olt double %24, 0.000000e+00
%101 = fcmp ogt double %24, 1.000000e+00
%102 = or i1 %100, %101
br i1 %102, label %156, label %103
103: ; preds = %20
%104 = fcmp olt double %24, 2.000000e-02
br i1 %104, label %105, label %109
105: ; preds = %103
%106 = tail call double @llvm.fmuladd.f64(double %24, double 1.488400e+02, double -3.490000e-03)
%107 = fmul double %24, 0xC08EDC3F7CED9168
%108 = tail call double @llvm.fmuladd.f64(double %107, double %24, double %106)
br label %156
109: ; preds = %103
%110 = fcmp oge double %24, 2.000000e-02
%111 = fcmp olt double %24, 1.000000e-01
%112 = and i1 %110, %111
br i1 %112, label %113, label %120
113: ; preds = %109
%114 = tail call double @llvm.fmuladd.f64(double %24, double 1.325730e+02, double 1.642000e-01)
%115 = fmul double %24, 0xC0824AE353F7CED9
%116 = tail call double @llvm.fmuladd.f64(double %115, double %24, double %114)
%117 = fmul double %24, 1.407770e+03
%118 = fmul double %24, %117
%119 = tail call double @llvm.fmuladd.f64(double %118, double %24, double %116)
br label %156
120: ; preds = %109
%121 = fcmp oge double %24, 1.000000e-02
%122 = fcmp olt double %24, 9.000000e-01
%123 = and i1 %121, %122
br i1 %123, label %124, label %140
124: ; preds = %120
%125 = tail call double @log(double %57)
%126 = fmul double %24, 0xC04FB5810624DD2F
%127 = tail call double @log(double %24)
%128 = fmul double %125, 1.411660e+01
%129 = insertelement <2 x double> poison, double %24, i64 0
%130 = insertelement <2 x double> %129, double %126, i64 1
%131 = insertelement <2 x double> <double -1.901560e+01, double poison>, double %127, i64 1
%132 = insertelement <2 x double> <double -2.892200e+00, double poison>, double %128, i64 1
%133 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %130, <2 x double> %131, <2 x double> %132)
%134 = insertelement <2 x double> %129, double %125, i64 1
%135 = fmul <2 x double> %134, <double 5.769800e+01, double 1.842060e+00>
%136 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %135, <2 x double> %134, <2 x double> %133)
%137 = shufflevector <2 x double> %136, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%138 = fadd <2 x double> %136, %137
%139 = extractelement <2 x double> %138, i64 0
br label %156
140: ; preds = %120
%141 = tail call double @log(double %57)
%142 = fmul double %24, 4.767050e+03
%143 = tail call double @log(double %24)
%144 = fmul double %141, 1.529180e+00
%145 = insertelement <2 x double> poison, double %24, i64 0
%146 = insertelement <2 x double> %145, double %142, i64 1
%147 = insertelement <2 x double> <double 0x40822E95810624DD, double poison>, double %143, i64 1
%148 = insertelement <2 x double> <double 2.134190e+03, double poison>, double %144, i64 1
%149 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %146, <2 x double> %147, <2 x double> %148)
%150 = insertelement <2 x double> %145, double %141, i64 1
%151 = fmul <2 x double> %150, <double -2.708850e+03, double 3.619330e-01>
%152 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %151, <2 x double> %150, <2 x double> %149)
%153 = shufflevector <2 x double> %152, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%154 = fadd <2 x double> %152, %153
%155 = extractelement <2 x double> %154, i64 0
br label %156
156: ; preds = %20, %105, %124, %140, %113
%157 = phi double [ %108, %105 ], [ %119, %113 ], [ %139, %124 ], [ %155, %140 ], [ 0.000000e+00, %20 ]
%158 = tail call double @llvm.fmuladd.f64(double %24, double -2.000000e+00, double 2.000000e+00)
%159 = tail call double @llvm.fmuladd.f64(double %24, double %24, double %158)
%160 = fmul double %57, 0xBFE5555555555555
%161 = fmul double %160, %82
%162 = tail call double @llvm.fmuladd.f64(double %159, double %80, double %161)
%163 = tail call double @llvm.fmuladd.f64(double %77, double %99, double %162)
%164 = fmul double %80, 0x3F5DE3D42A1ED29D
%165 = tail call double @llvm.fmuladd.f64(double %164, double %157, double %163)
%166 = fcmp ugt double %165, 0.000000e+00
br i1 %166, label %167, label %177
167: ; preds = %156
%168 = fdiv double 0x3FE05A1A76394768, %25
%169 = fmul double %168, 2.000000e+00
%170 = fmul double %169, 0x3D53D45999442158
%171 = fmul double %170, %0
%172 = fmul double %171, %171
%173 = fdiv double 0x3F7DE3D42A1ED29D, %4
%174 = fmul double %173, %172
%175 = fmul double %174, %165
%176 = fmul double %175, 1.000000e-04
br label %177
177: ; preds = %15, %156, %167, %5
%178 = phi double [ 0.000000e+00, %5 ], [ 0.000000e+00, %15 ], [ %176, %167 ], [ 0.000000e+00, %156 ]
ret double %178
}