void GetEarthNutationParameter(double dt, double *D, double *M, double *Mp,
                               double *F, double *Omega) {
  double T = dt * 10;
  double T2 = T * T;
  double T3 = T2 * T;
  *D = 297.85036 + 445267.111480 * T - 0.0019142 * T2 + T3 / 189474.0;
  *M = 357.52772 + 35999.050340 * T - 0.0001603 * T2 - T3 / 300000.0;
  *Mp = 134.96298 + 477198.867398 * T + 0.0086972 * T2 + T3 / 56250.0;
  *F = 93.27191 + 483202.017538 * T - 0.0036825 * T2 + T3 / 327270.0;
  *Omega = 125.04452 - 1934.136261 * T + 0.0020708 * T2 + T3 / 450000.0;
}


x86 assembly (clang, -O0):
<GetEarthNutationParameter>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
movsd  0xf7b(%rip),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm1
movsd  0xf36(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xf32(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  0xf11(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  0xef4(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm1
movsd  0xec7(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xec3(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  0xea2(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  0xe85(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm1
movsd  0xe58(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xe54(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  0xe33(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  0xe16(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm1
movsd  0xde9(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xde5(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  0xdc4(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  0xda7(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm1
movsd  0xd7a(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xd76(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  0xd55(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  0xd38(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<GetEarthNutationParameter>:
mulsd  0xef8(%rip),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm0,%xmm2
movsd  0xeec(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xee8(%rip),%xmm3
mulsd  %xmm1,%xmm2
movsd  0xee4(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  %xmm3,%xmm4
movapd %xmm2,%xmm3
divsd  0xed8(%rip),%xmm3
addsd  %xmm4,%xmm3
movsd  %xmm3,(%rdi)
movsd  0xed0(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xecc(%rip),%xmm3
movsd  0xecc(%rip),%xmm4
mulsd  %xmm1,%xmm4
movapd %xmm2,%xmm5
divsd  0xec4(%rip),%xmm5
addsd  %xmm3,%xmm4
addsd  %xmm4,%xmm5
movsd  %xmm5,(%rsi)
movsd  0xeb8(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xeb4(%rip),%xmm3
movsd  0xeb4(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  %xmm3,%xmm4
movapd %xmm2,%xmm3
divsd  0xea8(%rip),%xmm3
addsd  %xmm4,%xmm3
movsd  %xmm3,(%rdx)
movsd  0xea0(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xe9c(%rip),%xmm3
movsd  0xe9c(%rip),%xmm4
mulsd  %xmm1,%xmm4
addsd  %xmm3,%xmm4
movapd %xmm2,%xmm3
divsd  0xe90(%rip),%xmm3
addsd  %xmm4,%xmm3
mulsd  0xe8c(%rip),%xmm0
addsd  0xe8c(%rip),%xmm0
movsd  %xmm3,(%rcx)
mulsd  0xe88(%rip),%xmm1
addsd  %xmm0,%xmm1
divsd  0xe84(%rip),%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,(%r8)
ret

LLVM IR (-O0):
define void @GetEarthNutationParameter(double %0, double* %1, double* %2, double* %3, double* %4, double* %5) {
%7 = alloca double
%8 = alloca double*
%9 = alloca double*
%10 = alloca double*
%11 = alloca double*
%12 = alloca double*
%13 = alloca double
%14 = alloca double
%15 = alloca double
store double %0, double* %7
store double* %1, double** %8
store double* %2, double** %9
store double* %3, double** %10
store double* %4, double** %11
store double* %5, double** %12
%16 = load double, double* %7
%17 = fmul double %16, 1.000000e+01
store double %17, double* %13
%18 = load double, double* %13
%19 = load double, double* %13
%20 = fmul double %18, %19
store double %20, double* %14
%21 = load double, double* %14
%22 = load double, double* %13
%23 = fmul double %21, %22
store double %23, double* %15
%24 = load double, double* %13
%25 = call double @llvm.fmuladd.f64(double 0x411B2D4C7227D029, double %24, double 0x40729D9B13165D3A)
%26 = load double, double* %14
%27 = call double @llvm.fmuladd.f64(double -1.914200e-03, double %26, double %25)
%28 = load double, double* %15
%29 = fdiv double %28, 1.894740e+05
%30 = fadd double %27, %29
%31 = load double*, double** %8
store double %30, double* %31
%32 = load double, double* %13
%33 = call double @llvm.fmuladd.f64(double 0x40E193E19C62A1B6, double %32, double 0x407658718A86D71F)
%34 = load double, double* %14
%35 = call double @llvm.fmuladd.f64(double -1.603000e-04, double %34, double %33)
%36 = load double, double* %15
%37 = fdiv double %36, 3.000000e+05
%38 = fsub double %35, %37
%39 = load double*, double** %9
store double %38, double* %39
%40 = load double, double* %13
%41 = call double @llvm.fmuladd.f64(double 0x411D203B78372E6A, double %40, double 0x4060DED0BB6ED677)
%42 = load double, double* %14
%43 = call double @llvm.fmuladd.f64(double 8.697200e-03, double %42, double %41)
%44 = load double, double* %15
%45 = fdiv double %44, 5.625000e+04
%46 = fadd double %43, %45
%47 = load double*, double** %10
store double %46, double* %47
%48 = load double, double* %13
%49 = call double @llvm.fmuladd.f64(double 0x411D7E0811F57B42, double %48, double 0x40575166F9335D25)
%50 = load double, double* %14
%51 = call double @llvm.fmuladd.f64(double -3.682500e-03, double %50, double %49)
%52 = load double, double* %15
%53 = fdiv double %52, 3.272700e+05
%54 = fadd double %51, %53
%55 = load double*, double** %11
store double %54, double* %55
%56 = load double, double* %13
%57 = call double @llvm.fmuladd.f64(double 0xC09E388B8800EAE2, double %56, double 0x405F42D96A6A0126)
%58 = load double, double* %14
%59 = call double @llvm.fmuladd.f64(double 2.070800e-03, double %58, double %57)
%60 = load double, double* %15
%61 = fdiv double %60, 4.500000e+05
%62 = fadd double %59, %61
%63 = load double*, double** %12
store double %62, double* %63
ret void
}

LLVM IR (-O2):
define void @GetEarthNutationParameter(double %0, double* nocapture writeonly %1, double* nocapture writeonly %2, double* nocapture writeonly %3, double* nocapture writeonly %4, double* nocapture writeonly %5) {
%7 = fmul double %0, 1.000000e+01
%8 = fmul double %7, %7
%9 = fmul double %7, %8
%10 = tail call double @llvm.fmuladd.f64(double %7, double 0x411B2D4C7227D029, double 0x40729D9B13165D3A)
%11 = tail call double @llvm.fmuladd.f64(double %8, double -1.914200e-03, double %10)
%12 = fdiv double %9, 1.894740e+05
%13 = fadd double %11, %12
store double %13, double* %1
%14 = tail call double @llvm.fmuladd.f64(double %7, double 0x40E193E19C62A1B6, double 0x407658718A86D71F)
%15 = tail call double @llvm.fmuladd.f64(double %8, double -1.603000e-04, double %14)
%16 = fdiv double %9, 3.000000e+05
%17 = fsub double %15, %16
store double %17, double* %2
%18 = tail call double @llvm.fmuladd.f64(double %7, double 0x411D203B78372E6A, double 0x4060DED0BB6ED677)
%19 = tail call double @llvm.fmuladd.f64(double %8, double 8.697200e-03, double %18)
%20 = fdiv double %9, 5.625000e+04
%21 = fadd double %19, %20
store double %21, double* %3
%22 = tail call double @llvm.fmuladd.f64(double %7, double 0x411D7E0811F57B42, double 0x40575166F9335D25)
%23 = tail call double @llvm.fmuladd.f64(double %8, double -3.682500e-03, double %22)
%24 = fdiv double %9, 3.272700e+05
%25 = fadd double %23, %24
store double %25, double* %4
%26 = tail call double @llvm.fmuladd.f64(double %7, double 0xC09E388B8800EAE2, double 0x405F42D96A6A0126)
%27 = tail call double @llvm.fmuladd.f64(double %8, double 2.070800e-03, double %26)
%28 = fdiv double %9, 4.500000e+05
%29 = fadd double %27, %28
store double %29, double* %5
ret void
}