double ecliptic_mean_obliquity(double jme) {
  double u = jme / 10.0;
  return 84381.448 +
         u * (-4680.93 +
              u * (-1.55 +
                   u * (1999.25 +
                        u * (-51.38 +
                             u * (-249.67 +
                                  u * (-39.05 +
                                       u * (7.12 +
                                            u * (27.87 +
                                                 u * (5.79 + u * 2.45)))))))));
}


x86 assembly (clang, -O0):
<ecliptic_mean_obliquity>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xf42(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x10(%rbp),%xmm3
movsd  -0x10(%rbp),%xmm4
movsd  -0x10(%rbp),%xmm5
movsd  -0x10(%rbp),%xmm6
movsd  -0x10(%rbp),%xmm7
movsd  -0x10(%rbp),%xmm8
movsd  -0x10(%rbp),%xmm9
movsd  0xeec(%rip),%xmm10
mulsd  %xmm10,%xmm9
movsd  0xee6(%rip),%xmm10
addsd  %xmm10,%xmm9
mulsd  %xmm9,%xmm8
movsd  0xec3(%rip),%xmm9
addsd  %xmm9,%xmm8
mulsd  %xmm8,%xmm7
movsd  0xea8(%rip),%xmm8
addsd  %xmm8,%xmm7
mulsd  %xmm7,%xmm6
movsd  0xe8f(%rip),%xmm7
addsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm5
movsd  0xe77(%rip),%xmm6
addsd  %xmm6,%xmm5
mulsd  %xmm5,%xmm4
movsd  0xe5f(%rip),%xmm5
addsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm3
movsd  0xe47(%rip),%xmm4
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm2
movsd  0xe2f(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
movsd  0xe17(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdff(%rip),%xmm1
addsd  %xmm1,%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<ecliptic_mean_obliquity>:
divsd  0xef8(%rip),%xmm0
movsd  0xef8(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xef4(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xef0(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xeec(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xee8(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xee4(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xee0(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xedc(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xed8(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xed4(%rip),%xmm1
mulsd  %xmm1,%xmm0
addsd  0xed0(%rip),%xmm0
ret

LLVM IR (-O0):
define double @ecliptic_mean_obliquity(double %0) {
%2 = alloca double
%3 = alloca double
store double %0, double* %2
%4 = load double, double* %2
%5 = fdiv double %4, 1.000000e+01
store double %5, double* %3
%6 = load double, double* %3
%7 = load double, double* %3
%8 = load double, double* %3
%9 = load double, double* %3
%10 = load double, double* %3
%11 = load double, double* %3
%12 = load double, double* %3
%13 = load double, double* %3
%14 = load double, double* %3
%15 = load double, double* %3
%16 = call double @llvm.fmuladd.f64(double %15, double 2.450000e+00, double 5.790000e+00)
%17 = call double @llvm.fmuladd.f64(double %14, double %16, double 2.787000e+01)
%18 = call double @llvm.fmuladd.f64(double %13, double %17, double 7.120000e+00)
%19 = call double @llvm.fmuladd.f64(double %12, double %18, double -3.905000e+01)
%20 = call double @llvm.fmuladd.f64(double %11, double %19, double -2.496700e+02)
%21 = call double @llvm.fmuladd.f64(double %10, double %20, double -5.138000e+01)
%22 = call double @llvm.fmuladd.f64(double %9, double %21, double 1.999250e+03)
%23 = call double @llvm.fmuladd.f64(double %8, double %22, double -1.550000e+00)
%24 = call double @llvm.fmuladd.f64(double %7, double %23, double -4.680930e+03)
%25 = call double @llvm.fmuladd.f64(double %6, double %24, double 0x40F499D72B020C4A)
ret double %25
}

LLVM IR (-O2):
define double @ecliptic_mean_obliquity(double %0) {
%2 = fdiv double %0, 1.000000e+01
%3 = tail call double @llvm.fmuladd.f64(double %2, double 2.450000e+00, double 5.790000e+00)
%4 = tail call double @llvm.fmuladd.f64(double %2, double %3, double 2.787000e+01)
%5 = tail call double @llvm.fmuladd.f64(double %2, double %4, double 7.120000e+00)
%6 = tail call double @llvm.fmuladd.f64(double %2, double %5, double -3.905000e+01)
%7 = tail call double @llvm.fmuladd.f64(double %2, double %6, double -2.496700e+02)
%8 = tail call double @llvm.fmuladd.f64(double %2, double %7, double -5.138000e+01)
%9 = tail call double @llvm.fmuladd.f64(double %2, double %8, double 1.999250e+03)
%10 = tail call double @llvm.fmuladd.f64(double %2, double %9, double -1.550000e+00)
%11 = tail call double @llvm.fmuladd.f64(double %2, double %10, double -4.680930e+03)
%12 = tail call double @llvm.fmuladd.f64(double %2, double %11, double 0x40F499D72B020C4A)
ret double %12
}