double lambda0(const double et) {
  double M, lambda;
  M = 357.528 + 35999.050 * T0(et);
  lambda = 280.460 + 36000.772 * T0(et);
  return lambda +
         (1.915 - 0.0048 * T0(et)) *
             sin((M) * (3.14159265358979323846 / 180.0)) +
         0.020 * sin((2 * M) * (3.14159265358979323846 / 180.0));
}


x86 assembly (clang, -O0):
<lambda0>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    $0x1,%al
call   1040 <T0@plt>
cvtsi2sd %eax,%xmm0
movsd  0xef3(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xeef(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    $0x1,%al
call   1040 <T0@plt>
cvtsi2sd %eax,%xmm0
movsd  0xeb6(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xeb2(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x8(%rbp),%xmm0
mov    $0x1,%al
call   1040 <T0@plt>
cvtsi2sd %eax,%xmm0
movsd  0xe6f(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe6b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xe42(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
call   1030 <sin@plt>
movsd  -0x30(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x28(%rbp),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xe1e(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  0xe09(%rip),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <sin@plt>
movsd  -0x20(%rbp),%xmm1
movsd  0xdeb(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<lambda0>:
sub    $0x18,%rsp
movsd  %xmm0,(%rsp)
mov    $0x1,%al
call   1040 <T0@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xec1(%rip),%xmm0
addsd  0xec1(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  (%rsp),%xmm0
mov    $0x1,%al
call   1040 <T0@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xea8(%rip),%xmm0
addsd  0xea8(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
mov    $0x1,%al
call   1040 <T0@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xe8f(%rip),%xmm0
addsd  0xe8f(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  0xe84(%rip),%xmm0
call   1030 <sin@plt>
mulsd  (%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x8(%rsp),%xmm0
addsd  %xmm0,%xmm0
mulsd  0xe5d(%rip),%xmm0
call   1030 <sin@plt>
mulsd  0xe58(%rip),%xmm0
addsd  (%rsp),%xmm0
add    $0x18,%rsp
ret

LLVM IR (-O0):
define double @lambda0(double %0) {
%2 = alloca double
%3 = alloca double
%4 = alloca double
store double %0, double* %2
%5 = load double, double* %2
%6 = call i32 (double, ...) bitcast (i32 (...)* @T0 to i32 (double, ...)*)(double %5)
%7 = sitofp i32 %6 to double
%8 = call double @llvm.fmuladd.f64(double 0x40E193E19999999A, double %7, double 3.575280e+02)
store double %8, double* %3
%9 = load double, double* %2
%10 = call i32 (double, ...) bitcast (i32 (...)* @T0 to i32 (double, ...)*)(double %9)
%11 = sitofp i32 %10 to double
%12 = call double @llvm.fmuladd.f64(double 0x40E19418B4395810, double %11, double 2.804600e+02)
store double %12, double* %4
%13 = load double, double* %4
%14 = load double, double* %2
%15 = call i32 (double, ...) bitcast (i32 (...)* @T0 to i32 (double, ...)*)(double %14)
%16 = sitofp i32 %15 to double
%17 = call double @llvm.fmuladd.f64(double -4.800000e-03, double %16, double 1.915000e+00)
%18 = load double, double* %3
%19 = fmul double %18, 0x3F91DF46A2529D39
%20 = call double @sin(double %19)
%21 = call double @llvm.fmuladd.f64(double %17, double %20, double %13)
%22 = load double, double* %3
%23 = fmul double 2.000000e+00, %22
%24 = fmul double %23, 0x3F91DF46A2529D39
%25 = call double @sin(double %24)
%26 = call double @llvm.fmuladd.f64(double 2.000000e-02, double %25, double %21)
ret double %26
}

LLVM IR (-O2):
define double @lambda0(double %0) {
%2 = tail call i32 (double, ...) bitcast (i32 (...)* @T0 to i32 (double, ...)*)(double %0)
%3 = sitofp i32 %2 to double
%4 = tail call double @llvm.fmuladd.f64(double %3, double 0x40E193E19999999A, double 3.575280e+02)
%5 = tail call i32 (double, ...) bitcast (i32 (...)* @T0 to i32 (double, ...)*)(double %0)
%6 = sitofp i32 %5 to double
%7 = tail call double @llvm.fmuladd.f64(double %6, double 0x40E19418B4395810, double 2.804600e+02)
%8 = tail call i32 (double, ...) bitcast (i32 (...)* @T0 to i32 (double, ...)*)(double %0)
%9 = sitofp i32 %8 to double
%10 = tail call double @llvm.fmuladd.f64(double %9, double -4.800000e-03, double 1.915000e+00)
%11 = fmul double %4, 0x3F91DF46A2529D39
%12 = tail call double @sin(double %11)
%13 = tail call double @llvm.fmuladd.f64(double %10, double %12, double %7)
%14 = fmul double %4, 2.000000e+00
%15 = fmul double %14, 0x3F91DF46A2529D39
%16 = tail call double @sin(double %15)
%17 = tail call double @llvm.fmuladd.f64(double %16, double 2.000000e-02, double %13)
ret double %17
}