double gsw_hill_ratio_at_sp2(double t) {
  double a0 = 0.0080e0, a1 = -0.1692e0, a2 = 25.3851e0, a3 = 14.0941e0,
         a4 = -7.0261e0, a5 = 2.7081e0, b0 = 0.0005e0, b1 = -0.0056e0,
         b2 = -0.0066e0, b3 = -0.0375e0, b4 = 0.0636e0, b5 = -0.0144e0,
         g0 = 2.641463563366498e-1, g1 = 2.007883247811176e-4,
         g2 = -4.107694432853053e-6, g3 = 8.401670882091225e-8,
         g4 = -1.711392021989210e-9, g5 = 3.374193893377380e-11,
         g6 = -5.923731174730784e-13, g7 = 8.057771569962299e-15,
         g8 = -7.054313817447962e-17, g9 = 2.859992717347235e-19, rk = 0.0162e0,
         sp2 = 2e0;
  double t68, ft68, rtx0, dsp_drtx, sp_est, rtx, rtxm, x, part1, part2;
  double sqrty, sp_hill_raw_at_sp2;
  t68 = t * 1.00024;
  ft68 = (t68 - 15.0) / (1.0 + rk * (t68 - 15.0));
  rtx0 =
      g0 +
      t68 *
          (g1 +
           t68 *
               (g2 +
                t68 * (g3 +
                       t68 * (g4 +
                              t68 * (g5 +
                                     t68 * (g6 +
                                            t68 * (g7 +
                                                   t68 * (g8 + t68 * g9))))))));
  dsp_drtx =
      a1 + (2 * a2 + (3 * a3 + (4 * a4 + 5 * a5 * rtx0) * rtx0) * rtx0) * rtx0 +
      ft68 *
          (b1 +
           (2 * b2 + (3 * b3 + (4 * b4 + 5 * b5 * rtx0) * rtx0) * rtx0) * rtx0);
  sp_est =
      a0 + (a1 + (a2 + (a3 + (a4 + a5 * rtx0) * rtx0) * rtx0) * rtx0) * rtx0 +
      ft68 * (b0 + (b1 + (b2 + (b3 + (b4 + b5 * rtx0) * rtx0) * rtx0) * rtx0) *
                       rtx0);
  rtx = rtx0 - (sp_est - sp2) / dsp_drtx;
  rtxm = 0.5 * (rtx + rtx0);
  dsp_drtx =
      a1 + (2 * a2 + (3 * a3 + (4 * a4 + 5 * a5 * rtxm) * rtxm) * rtxm) * rtxm +
      ft68 *
          (b1 +
           (2 * b2 + (3 * b3 + (4 * b4 + 5 * b5 * rtxm) * rtxm) * rtxm) * rtxm);
  rtx = rtx0 - (sp_est - sp2) / dsp_drtx;
  x = 400.0 * rtx * rtx;
  sqrty = 10.0 * rtx;
  part1 = 1.0 + x * (1.5 + x);
  part2 = 1.0 + sqrty * (1.0 + sqrty * (1.0 + sqrty));
  sp_hill_raw_at_sp2 = sp2 - a0 / part1 - b0 * ft68 / part2;
  return (2.0 / sp_hill_raw_at_sp2);
}


x86 assembly (clang, -O0):
<gsw_hill_ratio_at_sp2>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  0xff0(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xfdb(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xfc6(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xfb1(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xf9c(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xf87(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xf72(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xf5d(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xf48(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xf33(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xf1e(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xf09(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0xef4(%rip),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xedf(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0xeca(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xeb5(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xe9d(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xe85(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xe6d(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xe55(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0xe3d(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xe25(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0xe0d(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xda5(%rip),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xde5(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  0xdc0(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  0xda4(%rip),%xmm3
subsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd54(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x78(%rbp),%xmm3
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x80(%rbp),%xmm5
movsd  -0xd0(%rbp),%xmm4
ff
movsd  -0x88(%rbp),%xmm7
ff
movsd  -0xd0(%rbp),%xmm6
ff
movsd  -0x90(%rbp),%xmm9
ff ff
movsd  -0xd0(%rbp),%xmm8
ff ff
movsd  -0x98(%rbp),%xmm11
ff ff
movsd  -0xd0(%rbp),%xmm10
ff ff
movsd  -0xa0(%rbp),%xmm13
ff ff
movsd  -0xd0(%rbp),%xmm12
ff ff
movsd  -0xa8(%rbp),%xmm15
ff ff
movsd  -0xd0(%rbp),%xmm14
ff ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  -0x140(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  -0x138(%rbp),%xmm1
ff
mulsd  %xmm0,%xmm14
movsd  -0x130(%rbp),%xmm0
ff
addsd  %xmm15,%xmm14
mulsd  %xmm14,%xmm12
addsd  %xmm13,%xmm12
mulsd  %xmm12,%xmm10
addsd  %xmm11,%xmm10
mulsd  %xmm10,%xmm8
addsd  %xmm9,%xmm8
mulsd  %xmm8,%xmm6
addsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm3
movsd  0xc38(%rip),%xmm4
mulsd  -0x38(%rbp),%xmm4
mulsd  -0xe0(%rbp),%xmm4
ff
movsd  0xc1b(%rip),%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  -0xe0(%rbp),%xmm3
ff
movsd  0xbfb(%rip),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  -0xe0(%rbp),%xmm2
ff
addsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movsd  -0x58(%rbp),%xmm4
movsd  -0x60(%rbp),%xmm5
movsd  0xbbf(%rip),%xmm6
mulsd  -0x68(%rbp),%xmm6
mulsd  -0xe0(%rbp),%xmm6
ff
movsd  0xba2(%rip),%xmm7
mulsd  %xmm7,%xmm5
addsd  %xmm6,%xmm5
mulsd  -0xe0(%rbp),%xmm5
ff
movsd  0xb82(%rip),%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  -0xe0(%rbp),%xmm4
ff
addsd  %xmm2,%xmm2
addsd  %xmm4,%xmm2
movsd  -0xe0(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm3
movsd  -0x28(%rbp),%xmm4
movsd  -0x30(%rbp),%xmm5
movsd  -0x38(%rbp),%xmm1
movsd  -0xe0(%rbp),%xmm6
ff
mulsd  %xmm6,%xmm1
addsd  %xmm5,%xmm1
movsd  -0xe0(%rbp),%xmm5
ff
mulsd  %xmm5,%xmm1
addsd  %xmm4,%xmm1
movsd  -0xe0(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm1
addsd  %xmm3,%xmm1
movsd  -0xe0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0x40(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm4
movsd  -0x50(%rbp),%xmm5
movsd  -0x58(%rbp),%xmm6
movsd  -0x60(%rbp),%xmm7
movsd  -0x68(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm8
ff ff
mulsd  %xmm8,%xmm2
addsd  %xmm7,%xmm2
movsd  -0xe0(%rbp),%xmm7
ff
mulsd  %xmm7,%xmm2
addsd  %xmm6,%xmm2
movsd  -0xe0(%rbp),%xmm6
ff
mulsd  %xmm6,%xmm2
addsd  %xmm5,%xmm2
movsd  -0xe0(%rbp),%xmm5
ff
mulsd  %xmm5,%xmm2
addsd  %xmm4,%xmm2
movsd  -0xe0(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm1
ff
subsd  -0xc8(%rbp),%xmm1
ff
divsd  -0xe8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xf8(%rbp),%xmm1
ff
addsd  -0xe0(%rbp),%xmm1
ff
movsd  0xa28(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm3
movsd  0x9f8(%rip),%xmm4
mulsd  -0x38(%rbp),%xmm4
mulsd  -0x100(%rbp),%xmm4
ff
movsd  0x9db(%rip),%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  -0x100(%rbp),%xmm3
ff
movsd  0x9bb(%rip),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  -0x100(%rbp),%xmm2
ff
addsd  %xmm1,%xmm1
addsd  %xmm2,%xmm1
movsd  -0x100(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movsd  -0x58(%rbp),%xmm4
movsd  -0x60(%rbp),%xmm5
movsd  0x97f(%rip),%xmm6
mulsd  -0x68(%rbp),%xmm6
mulsd  -0x100(%rbp),%xmm6
ff
movsd  0x962(%rip),%xmm7
mulsd  %xmm7,%xmm5
addsd  %xmm6,%xmm5
mulsd  -0x100(%rbp),%xmm5
ff
movsd  0x942(%rip),%xmm6
mulsd  %xmm6,%xmm4
addsd  %xmm5,%xmm4
mulsd  -0x100(%rbp),%xmm4
ff
addsd  %xmm2,%xmm2
addsd  %xmm4,%xmm2
movsd  -0x100(%rbp),%xmm4
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm1
ff
subsd  -0xc8(%rbp),%xmm1
ff
divsd  -0xe8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0x8ce(%rip),%xmm0
mulsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0x8a6(%rip),%xmm0
mulsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  0x87e(%rip),%xmm1
addsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x862(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm1
ff
movsd  0x83e(%rip),%xmm2
addsd  -0x120(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
movsd  0x82a(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x81a(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
divsd  -0x110(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
divsd  -0x118(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  0x7c4(%rip),%xmm0
divsd  -0x128(%rbp),%xmm0
ff
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gsw_hill_ratio_at_sp2>:
mulsd  0xef8(%rip),%xmm0
movsd  0xf10(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xf0c(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xf08(%rip),%xmm2
movsd  0xed7(%rip),%xmm8
mulsd  %xmm0,%xmm2
addsd  0xefb(%rip),%xmm2
addsd  %xmm0,%xmm8
mulsd  %xmm0,%xmm2
addsd  0xef2(%rip),%xmm2
movsd  0xeba(%rip),%xmm1
mulsd  %xmm0,%xmm2
addsd  0xee6(%rip),%xmm2
mulsd  %xmm8,%xmm1
mulsd  %xmm0,%xmm2
addsd  0xedd(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  0xed9(%rip),%xmm2
addsd  0xe91(%rip),%xmm1
mulsd  %xmm0,%xmm2
addsd  0xecd(%rip),%xmm2
divsd  %xmm1,%xmm8
mulsd  %xmm0,%xmm2
addsd  0xec4(%rip),%xmm2
movsd  0xec4(%rip),%xmm3
movapd %xmm2,%xmm6
mulsd  %xmm3,%xmm6
addsd  0xebc(%rip),%xmm6
mulsd  %xmm2,%xmm6
movsd  0xeb7(%rip),%xmm10
addsd  %xmm10,%xmm6
mulsd  %xmm2,%xmm6
movsd  0xead(%rip),%xmm11
addsd  %xmm11,%xmm6
mulsd  %xmm2,%xmm6
movsd  0xea3(%rip),%xmm14
addsd  %xmm14,%xmm6
movsd  0xe9d(%rip),%xmm9
movapd %xmm2,%xmm0
mulsd  %xmm9,%xmm0
movsd  0xe94(%rip),%xmm5
movapd %xmm5,%xmm4
subsd  %xmm0,%xmm4
mulsd  %xmm2,%xmm4
movsd  0xe87(%rip),%xmm12
addsd  %xmm12,%xmm4
mulsd  %xmm2,%xmm4
movsd  0xe7d(%rip),%xmm13
addsd  %xmm13,%xmm4
mulsd  %xmm2,%xmm4
movsd  0xe7c(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xe78(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xe74(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  0xe70(%rip),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm14,%xmm0
mulsd  %xmm2,%xmm0
addsd  0xe63(%rip),%xmm0
movsd  0xe63(%rip),%xmm7
mulsd  %xmm2,%xmm7
addsd  0xe5f(%rip),%xmm7
movsd  0xe1e(%rip),%xmm15
addsd  %xmm15,%xmm4
mulsd  %xmm2,%xmm7
addsd  0xe4d(%rip),%xmm7
mulsd  %xmm8,%xmm4
mulsd  %xmm2,%xmm7
addsd  0xe44(%rip),%xmm7
addsd  %xmm6,%xmm4
mulsd  %xmm2,%xmm7
addsd  %xmm15,%xmm7
mulsd  %xmm2,%xmm7
movsd  0xe33(%rip),%xmm6
addsd  %xmm6,%xmm7
mulsd  %xmm8,%xmm7
addsd  %xmm0,%xmm7
addsd  0xe26(%rip),%xmm7
movapd %xmm7,%xmm1
divsd  %xmm4,%xmm1
movapd %xmm2,%xmm0
subsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
mulsd  0xe12(%rip),%xmm0
mulsd  %xmm0,%xmm3
addsd  0xd66(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm10,%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm11,%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm14,%xmm3
mulsd  %xmm0,%xmm9
subsd  %xmm9,%xmm5
mulsd  %xmm0,%xmm5
addsd  %xmm12,%xmm5
mulsd  %xmm0,%xmm5
addsd  %xmm13,%xmm5
mulsd  %xmm0,%xmm5
addsd  %xmm15,%xmm5
mulsd  %xmm8,%xmm5
addsd  %xmm3,%xmm5
divsd  %xmm5,%xmm7
subsd  %xmm7,%xmm2
movsd  0xdb5(%rip),%xmm0
mulsd  %xmm2,%xmm0
unpcklpd %xmm2,%xmm2
shufpd $0x2,0xdc4(%rip),%xmm0
mulpd  %xmm2,%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
movapd %xmm1,%xmm2
movsd  0xc84(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm3,%xmm2
movsd  0xd80(%rip),%xmm1
addsd  %xmm0,%xmm1
unpcklpd %xmm2,%xmm1
mulpd  %xmm0,%xmm1
addpd  0xd94(%rip),%xmm1
mulsd  %xmm6,%xmm8
movapd 0xd97(%rip),%xmm2
unpcklpd %xmm8,%xmm2
divpd  %xmm1,%xmm2
movsd  0xd56(%rip),%xmm0
movapd %xmm0,%xmm1
subsd  %xmm2,%xmm1
unpckhpd %xmm2,%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
ret

LLVM IR (-O0):
define double @gsw_hill_ratio_at_sp2(double %0) {
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca 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* %2
store double 8.000000e-03, double* %3
store double -1.692000e-01, double* %4
store double 2.538510e+01, double* %5
store double 1.409410e+01, double* %6
store double -7.026100e+00, double* %7
store double 2.708100e+00, double* %8
store double 5.000000e-04, double* %9
store double -5.600000e-03, double* %10
store double -6.600000e-03, double* %11
store double -3.750000e-02, double* %12
store double 6.360000e-02, double* %13
store double -1.440000e-02, double* %14
store double 0x3FD0E7C61E74B3C9, double* %15
store double 0x3F2A515693A312CC, double* %16
store double 0xBED13A9A72B49871, double* %17
store double 0x3E768D959289EBE8, double* %18
store double 0xBE1D66C81E3DB16D, double* %19
store double 0x3DC28CC17807F1A1, double* %20
store double 0xBD64D79F6969DA0F, double* %21
store double 0x3D0224FD331BDF7F, double* %22
store double 0xBC94552A348B0781, double* %23
store double 0x3C151A5F9DAFD6F5, double* %24
store double 1.620000e-02, double* %25
store double 2.000000e+00, double* %26
%39 = load double, double* %2
%40 = fmul double %39, 1.000240e+00
store double %40, double* %27
%41 = load double, double* %27
%42 = fsub double %41, 1.500000e+01
%43 = load double, double* %25
%44 = load double, double* %27
%45 = fsub double %44, 1.500000e+01
%46 = call double @llvm.fmuladd.f64(double %43, double %45, double 1.000000e+00)
%47 = fdiv double %42, %46
store double %47, double* %28
%48 = load double, double* %15
%49 = load double, double* %27
%50 = load double, double* %16
%51 = load double, double* %27
%52 = load double, double* %17
%53 = load double, double* %27
%54 = load double, double* %18
%55 = load double, double* %27
%56 = load double, double* %19
%57 = load double, double* %27
%58 = load double, double* %20
%59 = load double, double* %27
%60 = load double, double* %21
%61 = load double, double* %27
%62 = load double, double* %22
%63 = load double, double* %27
%64 = load double, double* %23
%65 = load double, double* %27
%66 = load double, double* %24
%67 = call double @llvm.fmuladd.f64(double %65, double %66, double %64)
%68 = call double @llvm.fmuladd.f64(double %63, double %67, double %62)
%69 = call double @llvm.fmuladd.f64(double %61, double %68, double %60)
%70 = call double @llvm.fmuladd.f64(double %59, double %69, double %58)
%71 = call double @llvm.fmuladd.f64(double %57, double %70, double %56)
%72 = call double @llvm.fmuladd.f64(double %55, double %71, double %54)
%73 = call double @llvm.fmuladd.f64(double %53, double %72, double %52)
%74 = call double @llvm.fmuladd.f64(double %51, double %73, double %50)
%75 = call double @llvm.fmuladd.f64(double %49, double %74, double %48)
store double %75, double* %29
%76 = load double, double* %4
%77 = load double, double* %5
%78 = load double, double* %6
%79 = load double, double* %7
%80 = load double, double* %8
%81 = fmul double 5.000000e+00, %80
%82 = load double, double* %29
%83 = fmul double %81, %82
%84 = call double @llvm.fmuladd.f64(double 4.000000e+00, double %79, double %83)
%85 = load double, double* %29
%86 = fmul double %84, %85
%87 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %78, double %86)
%88 = load double, double* %29
%89 = fmul double %87, %88
%90 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %77, double %89)
%91 = load double, double* %29
%92 = call double @llvm.fmuladd.f64(double %90, double %91, double %76)
%93 = load double, double* %28
%94 = load double, double* %10
%95 = load double, double* %11
%96 = load double, double* %12
%97 = load double, double* %13
%98 = load double, double* %14
%99 = fmul double 5.000000e+00, %98
%100 = load double, double* %29
%101 = fmul double %99, %100
%102 = call double @llvm.fmuladd.f64(double 4.000000e+00, double %97, double %101)
%103 = load double, double* %29
%104 = fmul double %102, %103
%105 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %96, double %104)
%106 = load double, double* %29
%107 = fmul double %105, %106
%108 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %95, double %107)
%109 = load double, double* %29
%110 = call double @llvm.fmuladd.f64(double %108, double %109, double %94)
%111 = call double @llvm.fmuladd.f64(double %93, double %110, double %92)
store double %111, double* %30
%112 = load double, double* %3
%113 = load double, double* %4
%114 = load double, double* %5
%115 = load double, double* %6
%116 = load double, double* %7
%117 = load double, double* %8
%118 = load double, double* %29
%119 = call double @llvm.fmuladd.f64(double %117, double %118, double %116)
%120 = load double, double* %29
%121 = call double @llvm.fmuladd.f64(double %119, double %120, double %115)
%122 = load double, double* %29
%123 = call double @llvm.fmuladd.f64(double %121, double %122, double %114)
%124 = load double, double* %29
%125 = call double @llvm.fmuladd.f64(double %123, double %124, double %113)
%126 = load double, double* %29
%127 = call double @llvm.fmuladd.f64(double %125, double %126, double %112)
%128 = load double, double* %28
%129 = load double, double* %9
%130 = load double, double* %10
%131 = load double, double* %11
%132 = load double, double* %12
%133 = load double, double* %13
%134 = load double, double* %14
%135 = load double, double* %29
%136 = call double @llvm.fmuladd.f64(double %134, double %135, double %133)
%137 = load double, double* %29
%138 = call double @llvm.fmuladd.f64(double %136, double %137, double %132)
%139 = load double, double* %29
%140 = call double @llvm.fmuladd.f64(double %138, double %139, double %131)
%141 = load double, double* %29
%142 = call double @llvm.fmuladd.f64(double %140, double %141, double %130)
%143 = load double, double* %29
%144 = call double @llvm.fmuladd.f64(double %142, double %143, double %129)
%145 = call double @llvm.fmuladd.f64(double %128, double %144, double %127)
store double %145, double* %31
%146 = load double, double* %29
%147 = load double, double* %31
%148 = load double, double* %26
%149 = fsub double %147, %148
%150 = load double, double* %30
%151 = fdiv double %149, %150
%152 = fsub double %146, %151
store double %152, double* %32
%153 = load double, double* %32
%154 = load double, double* %29
%155 = fadd double %153, %154
%156 = fmul double 5.000000e-01, %155
store double %156, double* %33
%157 = load double, double* %4
%158 = load double, double* %5
%159 = load double, double* %6
%160 = load double, double* %7
%161 = load double, double* %8
%162 = fmul double 5.000000e+00, %161
%163 = load double, double* %33
%164 = fmul double %162, %163
%165 = call double @llvm.fmuladd.f64(double 4.000000e+00, double %160, double %164)
%166 = load double, double* %33
%167 = fmul double %165, %166
%168 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %159, double %167)
%169 = load double, double* %33
%170 = fmul double %168, %169
%171 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %158, double %170)
%172 = load double, double* %33
%173 = call double @llvm.fmuladd.f64(double %171, double %172, double %157)
%174 = load double, double* %28
%175 = load double, double* %10
%176 = load double, double* %11
%177 = load double, double* %12
%178 = load double, double* %13
%179 = load double, double* %14
%180 = fmul double 5.000000e+00, %179
%181 = load double, double* %33
%182 = fmul double %180, %181
%183 = call double @llvm.fmuladd.f64(double 4.000000e+00, double %178, double %182)
%184 = load double, double* %33
%185 = fmul double %183, %184
%186 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %177, double %185)
%187 = load double, double* %33
%188 = fmul double %186, %187
%189 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %176, double %188)
%190 = load double, double* %33
%191 = call double @llvm.fmuladd.f64(double %189, double %190, double %175)
%192 = call double @llvm.fmuladd.f64(double %174, double %191, double %173)
store double %192, double* %30
%193 = load double, double* %29
%194 = load double, double* %31
%195 = load double, double* %26
%196 = fsub double %194, %195
%197 = load double, double* %30
%198 = fdiv double %196, %197
%199 = fsub double %193, %198
store double %199, double* %32
%200 = load double, double* %32
%201 = fmul double 4.000000e+02, %200
%202 = load double, double* %32
%203 = fmul double %201, %202
store double %203, double* %34
%204 = load double, double* %32
%205 = fmul double 1.000000e+01, %204
store double %205, double* %37
%206 = load double, double* %34
%207 = load double, double* %34
%208 = fadd double 1.500000e+00, %207
%209 = call double @llvm.fmuladd.f64(double %206, double %208, double 1.000000e+00)
store double %209, double* %35
%210 = load double, double* %37
%211 = load double, double* %37
%212 = load double, double* %37
%213 = fadd double 1.000000e+00, %212
%214 = call double @llvm.fmuladd.f64(double %211, double %213, double 1.000000e+00)
%215 = call double @llvm.fmuladd.f64(double %210, double %214, double 1.000000e+00)
store double %215, double* %36
%216 = load double, double* %26
%217 = load double, double* %3
%218 = load double, double* %35
%219 = fdiv double %217, %218
%220 = fsub double %216, %219
%221 = load double, double* %9
%222 = load double, double* %28
%223 = fmul double %221, %222
%224 = load double, double* %36
%225 = fdiv double %223, %224
%226 = fsub double %220, %225
store double %226, double* %38
%227 = load double, double* %38
%228 = fdiv double 2.000000e+00, %227
ret double %228
}

LLVM IR (-O2):
define double @gsw_hill_ratio_at_sp2(double %0) {
%2 = fmul double %0, 1.000240e+00
%3 = fadd double %2, -1.500000e+01
%4 = tail call double @llvm.fmuladd.f64(double %3, double 1.620000e-02, double 1.000000e+00)
%5 = fdiv double %3, %4
%6 = tail call double @llvm.fmuladd.f64(double %2, double 0x3C151A5F9DAFD6F5, double 0xBC94552A348B0781)
%7 = tail call double @llvm.fmuladd.f64(double %2, double %6, double 0x3D0224FD331BDF7F)
%8 = tail call double @llvm.fmuladd.f64(double %2, double %7, double 0xBD64D79F6969DA0F)
%9 = tail call double @llvm.fmuladd.f64(double %2, double %8, double 0x3DC28CC17807F1A1)
%10 = tail call double @llvm.fmuladd.f64(double %2, double %9, double 0xBE1D66C81E3DB16D)
%11 = tail call double @llvm.fmuladd.f64(double %2, double %10, double 0x3E768D959289EBE8)
%12 = tail call double @llvm.fmuladd.f64(double %2, double %11, double 0xBED13A9A72B49871)
%13 = tail call double @llvm.fmuladd.f64(double %2, double %12, double 0x3F2A515693A312CC)
%14 = tail call double @llvm.fmuladd.f64(double %2, double %13, double 0x3FD0E7C61E74B3C9)
%15 = fmul double %14, 1.354050e+01
%16 = fadd double %15, -2.810440e+01
%17 = fmul double %14, %16
%18 = fadd double %17, 4.228230e+01
%19 = fmul double %14, %18
%20 = fadd double %19, 5.077020e+01
%21 = tail call double @llvm.fmuladd.f64(double %20, double %14, double -1.692000e-01)
%22 = fmul double %14, 0x3FB26E978D4FDF3B
%23 = fsub double 2.544000e-01, %22
%24 = fmul double %14, %23
%25 = fadd double %24, 0xBFBCCCCCCCCCCCCC
%26 = fmul double %14, %25
%27 = fadd double %26, -1.320000e-02
%28 = tail call double @llvm.fmuladd.f64(double %27, double %14, double -5.600000e-03)
%29 = tail call double @llvm.fmuladd.f64(double %5, double %28, double %21)
%30 = tail call double @llvm.fmuladd.f64(double %14, double 2.708100e+00, double -7.026100e+00)
%31 = tail call double @llvm.fmuladd.f64(double %30, double %14, double 1.409410e+01)
%32 = tail call double @llvm.fmuladd.f64(double %31, double %14, double 2.538510e+01)
%33 = tail call double @llvm.fmuladd.f64(double %32, double %14, double -1.692000e-01)
%34 = tail call double @llvm.fmuladd.f64(double %33, double %14, double 8.000000e-03)
%35 = tail call double @llvm.fmuladd.f64(double %14, double -1.440000e-02, double 6.360000e-02)
%36 = tail call double @llvm.fmuladd.f64(double %35, double %14, double -3.750000e-02)
%37 = tail call double @llvm.fmuladd.f64(double %36, double %14, double -6.600000e-03)
%38 = tail call double @llvm.fmuladd.f64(double %37, double %14, double -5.600000e-03)
%39 = tail call double @llvm.fmuladd.f64(double %38, double %14, double 5.000000e-04)
%40 = tail call double @llvm.fmuladd.f64(double %5, double %39, double %34)
%41 = fadd double %40, -2.000000e+00
%42 = fdiv double %41, %29
%43 = fsub double %14, %42
%44 = fadd double %14, %43
%45 = fmul double %44, 5.000000e-01
%46 = fmul double %45, 1.354050e+01
%47 = fadd double %46, -2.810440e+01
%48 = fmul double %45, %47
%49 = fadd double %48, 4.228230e+01
%50 = fmul double %45, %49
%51 = fadd double %50, 5.077020e+01
%52 = tail call double @llvm.fmuladd.f64(double %51, double %45, double -1.692000e-01)
%53 = fmul double %45, 0x3FB26E978D4FDF3B
%54 = fsub double 2.544000e-01, %53
%55 = fmul double %45, %54
%56 = fadd double %55, 0xBFBCCCCCCCCCCCCC
%57 = fmul double %45, %56
%58 = fadd double %57, -1.320000e-02
%59 = tail call double @llvm.fmuladd.f64(double %58, double %45, double -5.600000e-03)
%60 = tail call double @llvm.fmuladd.f64(double %5, double %59, double %52)
%61 = fdiv double %41, %60
%62 = fsub double %14, %61
%63 = fmul double %62, 4.000000e+02
%64 = insertelement <2 x double> poison, double %62, i64 0
%65 = shufflevector <2 x double> %64, <2 x double> poison, <2 x i32> zeroinitializer
%66 = insertelement <2 x double> <double poison, double 1.000000e+01>, double %63, i64 0
%67 = fmul <2 x double> %65, %66
%68 = extractelement <2 x double> %67, i64 0
%69 = fadd double %68, 1.500000e+00
%70 = extractelement <2 x double> %67, i64 1
%71 = fadd double %70, 1.000000e+00
%72 = tail call double @llvm.fmuladd.f64(double %70, double %71, double 1.000000e+00)
%73 = insertelement <2 x double> poison, double %69, i64 0
%74 = insertelement <2 x double> %73, double %72, i64 1
%75 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %67, <2 x double> %74, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
%76 = fmul double %5, 5.000000e-04
%77 = insertelement <2 x double> <double 8.000000e-03, double poison>, double %76, i64 1
%78 = fdiv <2 x double> %77, %75
%79 = extractelement <2 x double> %78, i64 0
%80 = fsub double 2.000000e+00, %79
%81 = extractelement <2 x double> %78, i64 1
%82 = fsub double %80, %81
%83 = fdiv double 2.000000e+00, %82
ret double %83
}