user: Demonstrate the C code that generates the assembly output below:

```asm
<deltaT>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x24(%rbp)
  mov    %esi,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x24(%rbp),%xmm1
  movsd  -0x18(%rbp),%xmm0
  movsd  D254(%rip),%xmm2
  subsd  %xmm2,%xmm0
  movsd  D45(%rip),%xmm2
  divsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  cmpl   $0xfffffe0c,-0x24(%rbp)
  jge    L169
  mov    -0x24(%rbp),%eax
  sub    $0x71c,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D145(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D175(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D92(%rip),%xmm1
  subsd  %xmm1,%xmm0
  jmp    L38
L169:
  cmpl   $0x1f3,-0x24(%rbp)
  jg     L183
  movsd  -0x10(%rbp),%xmm0
  movsd  D145(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D533(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D418(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D667(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D53(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D312(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D872(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D13(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L183:
  cmpl   $0x63f,-0x24(%rbp)
  jg     L133
  movsd  -0x10(%rbp),%xmm0
  movsd  D616(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  D145(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D697(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D882(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D76(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D354(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D871(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D434(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D653(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L133:
  cmpl   $0x6a3,-0x24(%rbp)
  jg     L228
  movsd  -0x10(%rbp),%xmm0
  movsd  D762(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D513(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  D839(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D874(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D761(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L228:
  cmpl   $0x707,-0x24(%rbp)
  jg     L55
  movsd  -0x10(%rbp),%xmm0
  movsd  D519(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D819(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  D677(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D400(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D404(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D645(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L55:
  cmpl   $0x743,-0x24(%rbp)
  jg     L110
  movsd  -0x10(%rbp),%xmm0
  movsd  D683(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D223(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D562(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D103(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D461(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D488(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D19(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D196(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D788(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L110:
  cmpl   $0x76b,-0x24(%rbp)
  jg     L236
  movsd  -0x10(%rbp),%xmm0
  movsd  D32(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D408(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  D598(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D688(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D100(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D799(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D276(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L236:
  cmpl   $0x77f,-0x24(%rbp)
  jg     L83
  movsd  -0x10(%rbp),%xmm0
  movsd  D399(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D675(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D14(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D451(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D848(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D22(%rip),%xmm1
  subsd  %xmm1,%xmm0
  jmp    L38
L83:
  cmpl   $0x794,-0x24(%rbp)
  jg     L195
  movsd  -0x10(%rbp),%xmm0
  movsd  D749(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D52(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D544(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D650(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D794(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L195:
  cmpl   $0x7a8,-0x24(%rbp)
  jg     L152
  movsd  -0x10(%rbp),%xmm0
  movsd  D592(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D578(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  D356(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D333(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D595(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L152:
  cmpl   $0x7c1,-0x24(%rbp)
  jg     L39
  movsd  -0x10(%rbp),%xmm0
  movsd  D612(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D753(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  D20(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D635(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D193(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L39:
  cmpl   $0x7d4,-0x24(%rbp)
  jg     L190
  movsd  -0x10(%rbp),%xmm0
  movsd  D627(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D402(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D828(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D161(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D729(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D320(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D903(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L190:
  cmpl   $0x801,-0x24(%rbp)
  jg     L199
  movsd  -0x10(%rbp),%xmm0
  movsd  D627(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D338(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D139(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  D494(%rip),%xmm0
  addsd  %xmm1,%xmm0
  jmp    L38
L199:
  cmpl   $0x865,-0x24(%rbp)
  jg     L170
  movsd  -0x10(%rbp),%xmm0
  movsd  D439(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  D145(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D175(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D92(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  D3(%rip),%xmm1
  movapd %xmm1,%xmm2
  subsd  -0x10(%rbp),%xmm2
  movsd  D504(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  jmp    L38
L170:
  movsd  -0x10(%rbp),%xmm0
  movsd  D439(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  D145(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm1
  movsd  D175(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movsd  D92(%rip),%xmm1
  subsd  %xmm1,%xmm0
L38:
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: label: D254
type: f64
name: retrieve_data
arguments: label: D45
type: f64
name: retrieve_data
arguments: label: D145
type: f64
name: retrieve_data
arguments: label: D175
type: byte[8]
name: retrieve_data
arguments: label: D92
type: byte[8]
name: retrieve_data
arguments: label: D533
type: f64
name: retrieve_data
arguments: label: D418
type: f64
name: retrieve_data
arguments: label: D667
type: f64
name: retrieve_data
arguments: label: D53
type: f64
name: retrieve_data
arguments: label: D312
type: f64
name: retrieve_data
arguments: label: D872
type: f64
name: retrieve_data
arguments: label: D13
type: f64
name: retrieve_data
arguments: label: D616
type: byte[8]
name: retrieve_data
arguments: label: D697
type: f64
name: retrieve_data
arguments: label: D882
type: f64
name: retrieve_data
arguments: label: D76
type: f64
name: retrieve_data
arguments: label: D354
type: f64
name: retrieve_data
arguments: label: D871
type: f64
name: retrieve_data
arguments: label: D434
type: f64
name: retrieve_data
arguments: label: D653
type: f64
name: retrieve_data
arguments: label: D762
type: byte[8]
name: retrieve_data
arguments: label: D513
type: byte[8]
name: retrieve_data
arguments: label: D839
type: f64
name: retrieve_data
arguments: label: D874
type: f64
name: retrieve_data
arguments: label: D761
type: byte[8]
name: retrieve_data
arguments: label: D519
type: byte[8]
name: retrieve_data
arguments: label: D819
type: byte[8]
name: retrieve_data
arguments: label: D677
type: f64
name: retrieve_data
arguments: label: D400
type: f64
name: retrieve_data
arguments: label: D404
type: f64
name: retrieve_data
arguments: label: D645
type: f64
name: retrieve_data
arguments: label: D683
type: byte[8]
name: retrieve_data
arguments: label: D223
type: f64
name: retrieve_data
arguments: label: D562
type: f64
name: retrieve_data
arguments: label: D103
type: f64
name: retrieve_data
arguments: label: D461
type: f64
name: retrieve_data
arguments: label: D488
type: f64
name: retrieve_data
arguments: label: D19
type: f64
name: retrieve_data
arguments: label: D196
type: f64
name: retrieve_data
arguments: label: D788
type: f64
name: retrieve_data
arguments: label: D32
type: byte[8]
name: retrieve_data
arguments: label: D408
type: byte[8]
name: retrieve_data
arguments: label: D598
type: f64
name: retrieve_data
arguments: label: D688
type: f64
name: retrieve_data
arguments: label: D100
type: f64
name: retrieve_data
arguments: label: D799
type: f64
name: retrieve_data
arguments: label: D276
type: f64
name: retrieve_data
arguments: label: D399
type: byte[8]
name: retrieve_data
arguments: label: D675
type: byte[8]
name: retrieve_data
arguments: label: D14
type: f64
name: retrieve_data
arguments: label: D451
type: f64
name: retrieve_data
arguments: label: D848
type: f64
name: retrieve_data
arguments: label: D22
type: f64
name: retrieve_data
arguments: label: D749
type: byte[8]
name: retrieve_data
arguments: label: D52
type: f64
name: retrieve_data
arguments: label: D544
type: f64
name: retrieve_data
arguments: label: D650
type: f64
name: retrieve_data
arguments: label: D794
type: f64
name: retrieve_data
arguments: label: D592
type: byte[8]
name: retrieve_data
arguments: label: D578
type: byte[8]
name: retrieve_data
arguments: label: D356
type: byte[8]
name: retrieve_data
arguments: label: D333
type: f64
name: retrieve_data
arguments: label: D595
type: f64
name: retrieve_data
arguments: label: D612
type: byte[8]
name: retrieve_data
arguments: label: D753
type: byte[8]
name: retrieve_data
arguments: label: D20
type: byte[8]
name: retrieve_data
arguments: label: D635
type: f64
name: retrieve_data
arguments: label: D193
type: f64
name: retrieve_data
arguments: label: D627
type: byte[8]
name: retrieve_data
arguments: label: D402
type: f64
name: retrieve_data
arguments: label: D828
type: f64
name: retrieve_data
arguments: label: D161
type: f64
name: retrieve_data
arguments: label: D729
type: f64
name: retrieve_data
arguments: label: D320
type: f64
name: retrieve_data
arguments: label: D903
type: f64
name: retrieve_data
arguments: label: D338
type: f64
name: retrieve_data
arguments: label: D139
type: f64
name: retrieve_data
arguments: label: D494
type: f64
name: retrieve_data
arguments: label: D439
type: f64
name: retrieve_data
arguments: label: D3
type: byte[8]
name: retrieve_data
arguments: label: D504
type: f64

tool: D254: 0.5

tool: D45: 12

tool: D145: 100

tool: {"D175": [0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40]}

tool: {"D92": [0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x40]}

tool: D533: 0.0090316521

tool: D418: 0.022174192

tool: D667: 0.1798452

tool: D53: 5.952053

tool: D312: 33.78311

tool: D872: 1014.41

tool: D13: 10583.6

tool: {"D616": [0x00,0x00,0x00,0x00,0x00,0x40,0x8f,0x40]}

tool: D697: 0.0083572073

tool: D882: 0.005050998

tool: D76: 0.8503463

tool: D354: 0.319781

tool: D871: 71.23472

tool: D434: 556.01

tool: D653: 1574.2

tool: {"D762": [0x00,0x00,0x00,0x00,0x00,0x00,0x99,0x40]}

tool: {"D513": [0x00,0x00,0x00,0x00,0x00,0xd9,0xbb,0x40]}

tool: D839: 0.01532

tool: D874: 0.9808

tool: {"D761": [0x00,0x00,0x00,0x00,0x00,0x00,0x5e,0x40]}

tool: {"D519": [0x00,0x00,0x00,0x00,0x00,0x90,0x9a,0x40]}

tool: {"D819": [0x00,0x00,0x00,0x00,0xf0,0xe9,0x31,0xc1]}

tool: D677: 0.00013336

tool: D400: 0.0059285

tool: D404: 0.1603

tool: D645: 8.83

tool: {"D683": [0x00,0x00,0x00,0x00,0x00,0x20,0x9c,0x40]}

tool: D223: 8.75e-10

tool: D562: 1.699e-07

tool: D103: 1.21272e-05

tool: D461: 0.00037436

tool: D488: 0.0041116

tool: D19: 0.0068612

tool: D196: 0.332447

tool: D788: 13.72

tool: {"D32": [0x00,0x00,0x00,0x00,0x00,0x10,0x9d,0x40]}

tool: {"D408": [0x00,0x00,0x00,0x00,0xb0,0x76,0x0c,0x41]}

tool: D598: 0.0004473624

tool: D688: 0.01680668

tool: D100: 0.251754

tool: D799: 0.5737

tool: D276: 7.62

tool: {"D399": [0x00,0x00,0x00,0x00,0x00,0xb0,0x9d,0x40]}

tool: {"D675": [0x9b,0xff,0x57,0x1d,0x39,0xd2,0x29,0xbf]}

tool: D14: 0.0061966

tool: D451: 0.0598939

tool: D848: 1.494119

tool: D22: 2.79

tool: {"D749": [0x00,0x00,0x00,0x00,0x00,0x00,0x9e,0x40]}

tool: D52: 0.0020936

tool: D544: 0.0761

tool: D650: 0.84493

tool: D794: 21.2

tool: {"D592": [0x00,0x00,0x00,0x00,0x00,0x78,0x9e,0x40]}

tool: {"D578": [0x00,0x00,0x00,0x00,0x00,0xe6,0xa3,0x40]}

tool: {"D356": [0x9c,0xa2,0x8c,0x80,0x53,0x94,0x71,0x3f]}

tool: D333: 0.407

tool: D595: 29.07

tool: {"D612": [0x00,0x00,0x00,0x00,0x00,0xdc,0x9e,0x40]}

tool: {"D753": [0x00,0x00,0x00,0x00,0x00,0x70,0x86,0xc0]}

tool: {"D20": [0x20,0xf8,0x81,0x1f,0xf8,0x81,0x6f,0x3f]}

tool: D635: 1.067

tool: D193: 45.45

tool: {"D627": [0x00,0x00,0x00,0x00,0x00,0x40,0x9f,0x40]}

tool: D402: 2.373599e-05

tool: D828: 0.000651814

tool: D161: 0.0017275

tool: D729: 0.060374

tool: D320: 0.3345

tool: D903: 63.86

tool: D338: 0.005589

tool: D139: 0.32217

tool: D494: 62.92

tool: D439: 1820

tool: {"D3": [0x00,0x00,0x00,0x00,0x00,0xcc,0xa0,0x40]}

tool: D504: 0.5628

assistant: ```c
double deltaT(int year, int month) {
  double y, m, u;
  m = (double)month;
  y = year + (m - 0.5) / 12.0;
  if (year < -500) {
    u = (year - 1820) / 100.0;
    return -20 + 32 * u * u;
  } else if (year < 500) {
    u = y / 100.0;
    return 10583.6 + u * (-1014.41 + u * (33.78311 + u * (-5.952053 + u * (-0.1798452 + u * (0.022174192 + u * 0.0090316521)))));
  } else if (year < 1600) {
    u = (y - 1000) / 100.0;
    return 1574.2 + u * (-556.01 + u * (71.23472 + u * (0.319781 + u * (-0.8503463 + u * (-0.005050998 + u * 0.0083572073)))));
  } else if (year < 1700) {
    u = y - 1600;
    return 120 + u * (-0.9808 + u * (-0.01532 + u / 7129));
  } else if (year < 1800) {
    u = y - 1700;
    return 8.83 + u * (0.1603 + u * (-0.0059285 + u * (0.00013336 + u / -1174000)));
  } else if (year < 1860) {
    u = y - 1800;
    return 13.72 + u * (-0.332447 + u * (0.0068612 + u * (0.0041116 + u * (-0.00037436 + u * (0.0000121272 + u * (-0.0000001699 + u * 0.000000000875))))));
  } else if (year < 1900) {
    u = y - 1860;
    return 7.62 + u * (0.5737 + u * (-0.251754 + u * (0.01680668 + u * (-0.0004473624 + u / 233174))));
  } else if (year < 1920) {
    u = y - 1900;
    return -2.79 + u * (1.494119 + u * (-0.0598939 + u * (0.0061966 + u * -0.000197)));
  } else if (year < 1941) {
    u = y - 1920;
    return 21.20 + u * (0.84493 + u * (-0.076100 + u * 0.0020936));
  } else if (year < 1961) {
    u = y - 1950;
    return 29.07 + u * (0.407 + u * (-1.0 / 233 + u / 2547));
  } else if (year < 1986) {
    u = y - 1975;
    return 45.45 + u * (1.067 + u * (-1.0 / 260 + u / -718));
  } else if (year < 2005) {
    u = y - 2000;
    return 63.86 + u * (0.3345 + u * (-0.060374 + u * (0.0017275 + u * (0.000651814 + u * 0.00002373599))));
  } else if (year < 2050) {
    u = y - 2000;
    return 62.92 + u * (0.32217 + u * 0.005589);
  } else if (year < 2150) {
    u = (y - 1820.0) / 100.0;
    return -20 + 32 * u * u - 0.5628 * (2150 - y);
  } else {
    u = (y - 1820.0) / 100.0;
    return -20 + 32 * u * u;
  }
}
```