double delta_AT(double utc) {
  double dt = 10.0;
  utc -= (2400000.5);
  if (utc >= 41499.0)
    dt = 11.0;
  if (utc >= 41683.0)
    dt = 12.0;
  if (utc >= 42048.0)
    dt = 13.0;
  if (utc >= 42413.0)
    dt = 14.0;
  if (utc >= 42778.0)
    dt = 15.0;
  if (utc >= 43144.0)
    dt = 16.0;
  if (utc >= 43509.0)
    dt = 17.0;
  if (utc >= 43874.0)
    dt = 18.0;
  if (utc >= 44239.0)
    dt = 19.0;
  if (utc >= 44786.0)
    dt = 20.0;
  if (utc >= 45151.0)
    dt = 21.0;
  if (utc >= 45516.0)
    dt = 22.0;
  if (utc >= 46247.0)
    dt = 23.0;
  if (utc >= 47161.0)
    dt = 24.0;
  if (utc >= 47892.0)
    dt = 25.0;
  if (utc >= 48257.0)
    dt = 26.0;
  if (utc >= 48804.0)
    dt = 27.0;
  if (utc >= 49169.0)
    dt = 28.0;
  if (utc >= 49534.0)
    dt = 29.0;
  if (utc >= 50083.0)
    dt = 30.0;
  if (utc >= 50630.0)
    dt = 31.0;
  if (utc >= 51179.0)
    dt = 32.0;
  if (utc >= 53736.0)
    dt = 33.0;
  if (utc >= 54832.0)
    dt = 34.0;
  if (utc >= 56109.0)
    dt = 35.0;
  return (dt);
}


x86 assembly (clang, -O0):
<delta_AT>:
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
movsd  0xeff(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xee5(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xec7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1150 <delta_AT+0x50>
movsd  0xecd(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xec3(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1174 <delta_AT+0x74>
movsd  0xeb9(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xeaf(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1198 <delta_AT+0x98>
movsd  0xea5(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xe9b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     11bc <delta_AT+0xbc>
movsd  0xe91(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xe87(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     11e0 <delta_AT+0xe0>
movsd  0xe7d(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xe73(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1204 <delta_AT+0x104>
movsd  0xe69(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xe5f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1228 <delta_AT+0x128>
movsd  0xe55(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xe4b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     124c <delta_AT+0x14c>
movsd  0xe41(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xe37(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1270 <delta_AT+0x170>
movsd  0xe2d(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xe23(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1294 <delta_AT+0x194>
movsd  0xe19(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xe0f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     12b8 <delta_AT+0x1b8>
movsd  0xe05(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xdfb(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     12dc <delta_AT+0x1dc>
movsd  0xdf1(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xde7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1300 <delta_AT+0x200>
movsd  0xddd(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xdd3(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1324 <delta_AT+0x224>
movsd  0xdc9(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xdbf(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1348 <delta_AT+0x248>
movsd  0xdb5(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xdab(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     136c <delta_AT+0x26c>
movsd  0xda1(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd97(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1390 <delta_AT+0x290>
movsd  0xd8d(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd83(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     13b4 <delta_AT+0x2b4>
movsd  0xd79(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd6f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     13d8 <delta_AT+0x2d8>
movsd  0xd65(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd5b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     13fc <delta_AT+0x2fc>
movsd  0xd51(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd47(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1420 <delta_AT+0x320>
movsd  0xd3d(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd33(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1444 <delta_AT+0x344>
movsd  0xd29(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd1f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1468 <delta_AT+0x368>
movsd  0xd15(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd0b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     148c <delta_AT+0x38c>
movsd  0xd01(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xcf7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     14b0 <delta_AT+0x3b0>
movsd  0xced(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
pop    %rbp
ret

x86 assembly (clang, -O2):
<delta_AT>:
addsd  0xef8(%rip),%xmm0
xor    %eax,%eax
ucomisd 0xef6(%rip),%xmm0
setb   %al
lea    0x1074(%rip),%rcx
movsd  (%rcx,%rax,8),%xmm1
movsd  0xee7(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xede(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xed6(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xecd(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xec5(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xebc(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xeb4(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xeab(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xea3(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xe9a(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xe92(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xe89(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xe81(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xe78(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xe70(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xe67(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xe5f(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xe56(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xe4e(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xe45(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xe3d(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xe34(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xe2c(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xe23(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xe1b(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xe12(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xe0a(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xe01(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xdf9(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xdf0(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xde8(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xddf(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xdd7(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xdce(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xdc6(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xdbd(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xdb5(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xdac(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xda4(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xd9b(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xd93(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xd8a(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xd82(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xd79(%rip),%xmm3
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
movsd  0xd71(%rip),%xmm2
cmpnlesd %xmm0,%xmm2
andpd  %xmm2,%xmm1
movsd  0xd68(%rip),%xmm3
andnpd %xmm3,%xmm2
orpd   %xmm1,%xmm2
movsd  0xd60(%rip),%xmm1
cmpnlesd %xmm0,%xmm1
andpd  %xmm1,%xmm2
movsd  0xd57(%rip),%xmm0
andnpd %xmm0,%xmm1
orpd   %xmm2,%xmm1
movapd %xmm1,%xmm0
ret

LLVM IR (-O0):
define double @delta_AT(double %0) {
%2 = alloca double
%3 = alloca double
store double %0, double* %2
store double 1.000000e+01, double* %3
%4 = load double, double* %2
%5 = fsub double %4, 0x41424F8040000000
store double %5, double* %2
%6 = load double, double* %2
%7 = fcmp oge double %6, 4.149900e+04
br i1 %7, label %8, label %9
8: ; preds = %1
store double 1.100000e+01, double* %3
br label %9
9: ; preds = %8, %1
%10 = load double, double* %2
%11 = fcmp oge double %10, 4.168300e+04
br i1 %11, label %12, label %13
12: ; preds = %9
store double 1.200000e+01, double* %3
br label %13
13: ; preds = %12, %9
%14 = load double, double* %2
%15 = fcmp oge double %14, 4.204800e+04
br i1 %15, label %16, label %17
16: ; preds = %13
store double 1.300000e+01, double* %3
br label %17
17: ; preds = %16, %13
%18 = load double, double* %2
%19 = fcmp oge double %18, 4.241300e+04
br i1 %19, label %20, label %21
20: ; preds = %17
store double 1.400000e+01, double* %3
br label %21
21: ; preds = %20, %17
%22 = load double, double* %2
%23 = fcmp oge double %22, 4.277800e+04
br i1 %23, label %24, label %25
24: ; preds = %21
store double 1.500000e+01, double* %3
br label %25
25: ; preds = %24, %21
%26 = load double, double* %2
%27 = fcmp oge double %26, 4.314400e+04
br i1 %27, label %28, label %29
28: ; preds = %25
store double 1.600000e+01, double* %3
br label %29
29: ; preds = %28, %25
%30 = load double, double* %2
%31 = fcmp oge double %30, 4.350900e+04
br i1 %31, label %32, label %33
32: ; preds = %29
store double 1.700000e+01, double* %3
br label %33
33: ; preds = %32, %29
%34 = load double, double* %2
%35 = fcmp oge double %34, 4.387400e+04
br i1 %35, label %36, label %37
36: ; preds = %33
store double 1.800000e+01, double* %3
br label %37
37: ; preds = %36, %33
%38 = load double, double* %2
%39 = fcmp oge double %38, 4.423900e+04
br i1 %39, label %40, label %41
40: ; preds = %37
store double 1.900000e+01, double* %3
br label %41
41: ; preds = %40, %37
%42 = load double, double* %2
%43 = fcmp oge double %42, 4.478600e+04
br i1 %43, label %44, label %45
44: ; preds = %41
store double 2.000000e+01, double* %3
br label %45
45: ; preds = %44, %41
%46 = load double, double* %2
%47 = fcmp oge double %46, 4.515100e+04
br i1 %47, label %48, label %49
48: ; preds = %45
store double 2.100000e+01, double* %3
br label %49
49: ; preds = %48, %45
%50 = load double, double* %2
%51 = fcmp oge double %50, 4.551600e+04
br i1 %51, label %52, label %53
52: ; preds = %49
store double 2.200000e+01, double* %3
br label %53
53: ; preds = %52, %49
%54 = load double, double* %2
%55 = fcmp oge double %54, 4.624700e+04
br i1 %55, label %56, label %57
56: ; preds = %53
store double 2.300000e+01, double* %3
br label %57
57: ; preds = %56, %53
%58 = load double, double* %2
%59 = fcmp oge double %58, 4.716100e+04
br i1 %59, label %60, label %61
60: ; preds = %57
store double 2.400000e+01, double* %3
br label %61
61: ; preds = %60, %57
%62 = load double, double* %2
%63 = fcmp oge double %62, 4.789200e+04
br i1 %63, label %64, label %65
64: ; preds = %61
store double 2.500000e+01, double* %3
br label %65
65: ; preds = %64, %61
%66 = load double, double* %2
%67 = fcmp oge double %66, 4.825700e+04
br i1 %67, label %68, label %69
68: ; preds = %65
store double 2.600000e+01, double* %3
br label %69
69: ; preds = %68, %65
%70 = load double, double* %2
%71 = fcmp oge double %70, 4.880400e+04
br i1 %71, label %72, label %73
72: ; preds = %69
store double 2.700000e+01, double* %3
br label %73
73: ; preds = %72, %69
%74 = load double, double* %2
%75 = fcmp oge double %74, 4.916900e+04
br i1 %75, label %76, label %77
76: ; preds = %73
store double 2.800000e+01, double* %3
br label %77
77: ; preds = %76, %73
%78 = load double, double* %2
%79 = fcmp oge double %78, 4.953400e+04
br i1 %79, label %80, label %81
80: ; preds = %77
store double 2.900000e+01, double* %3
br label %81
81: ; preds = %80, %77
%82 = load double, double* %2
%83 = fcmp oge double %82, 5.008300e+04
br i1 %83, label %84, label %85
84: ; preds = %81
store double 3.000000e+01, double* %3
br label %85
85: ; preds = %84, %81
%86 = load double, double* %2
%87 = fcmp oge double %86, 5.063000e+04
br i1 %87, label %88, label %89
88: ; preds = %85
store double 3.100000e+01, double* %3
br label %89
89: ; preds = %88, %85
%90 = load double, double* %2
%91 = fcmp oge double %90, 5.117900e+04
br i1 %91, label %92, label %93
92: ; preds = %89
store double 3.200000e+01, double* %3
br label %93
93: ; preds = %92, %89
%94 = load double, double* %2
%95 = fcmp oge double %94, 5.373600e+04
br i1 %95, label %96, label %97
96: ; preds = %93
store double 3.300000e+01, double* %3
br label %97
97: ; preds = %96, %93
%98 = load double, double* %2
%99 = fcmp oge double %98, 5.483200e+04
br i1 %99, label %100, label %101
100: ; preds = %97
store double 3.400000e+01, double* %3
br label %101
101: ; preds = %100, %97
%102 = load double, double* %2
%103 = fcmp oge double %102, 5.610900e+04
br i1 %103, label %104, label %105
104: ; preds = %101
store double 3.500000e+01, double* %3
br label %105
105: ; preds = %104, %101
%106 = load double, double* %3
ret double %106
}

LLVM IR (-O2):
define double @delta_AT(double %0) {
%2 = fadd double %0, 0xC1424F8040000000
%3 = fcmp ult double %2, 4.149900e+04
%4 = select i1 %3, double 1.000000e+01, double 1.100000e+01
%5 = fcmp ult double %2, 4.168300e+04
%6 = select i1 %5, double %4, double 1.200000e+01
%7 = fcmp ult double %2, 4.204800e+04
%8 = select i1 %7, double %6, double 1.300000e+01
%9 = fcmp ult double %2, 4.241300e+04
%10 = select i1 %9, double %8, double 1.400000e+01
%11 = fcmp ult double %2, 4.277800e+04
%12 = select i1 %11, double %10, double 1.500000e+01
%13 = fcmp ult double %2, 4.314400e+04
%14 = select i1 %13, double %12, double 1.600000e+01
%15 = fcmp ult double %2, 4.350900e+04
%16 = select i1 %15, double %14, double 1.700000e+01
%17 = fcmp ult double %2, 4.387400e+04
%18 = select i1 %17, double %16, double 1.800000e+01
%19 = fcmp ult double %2, 4.423900e+04
%20 = select i1 %19, double %18, double 1.900000e+01
%21 = fcmp ult double %2, 4.478600e+04
%22 = select i1 %21, double %20, double 2.000000e+01
%23 = fcmp ult double %2, 4.515100e+04
%24 = select i1 %23, double %22, double 2.100000e+01
%25 = fcmp ult double %2, 4.551600e+04
%26 = select i1 %25, double %24, double 2.200000e+01
%27 = fcmp ult double %2, 4.624700e+04
%28 = select i1 %27, double %26, double 2.300000e+01
%29 = fcmp ult double %2, 4.716100e+04
%30 = select i1 %29, double %28, double 2.400000e+01
%31 = fcmp ult double %2, 4.789200e+04
%32 = select i1 %31, double %30, double 2.500000e+01
%33 = fcmp ult double %2, 4.825700e+04
%34 = select i1 %33, double %32, double 2.600000e+01
%35 = fcmp ult double %2, 4.880400e+04
%36 = select i1 %35, double %34, double 2.700000e+01
%37 = fcmp ult double %2, 4.916900e+04
%38 = select i1 %37, double %36, double 2.800000e+01
%39 = fcmp ult double %2, 4.953400e+04
%40 = select i1 %39, double %38, double 2.900000e+01
%41 = fcmp ult double %2, 5.008300e+04
%42 = select i1 %41, double %40, double 3.000000e+01
%43 = fcmp ult double %2, 5.063000e+04
%44 = select i1 %43, double %42, double 3.100000e+01
%45 = fcmp ult double %2, 5.117900e+04
%46 = select i1 %45, double %44, double 3.200000e+01
%47 = fcmp ult double %2, 5.373600e+04
%48 = select i1 %47, double %46, double 3.300000e+01
%49 = fcmp ult double %2, 5.483200e+04
%50 = select i1 %49, double %48, double 3.400000e+01
%51 = fcmp ult double %2, 5.610900e+04
%52 = select i1 %51, double %50, double 3.500000e+01
ret double %52
}