256{
257
258 double const T = k / 1236.85;
259 double const T2 = T * T;
260 double const T3 = T2 * T;
261 double const T4 = T3 * T;
262
263
264 double const JDE = 2451550.09766 + 29.530588861 * k + 0.00015437 * T2
265 - 0.000000150 * T3 + 0.00000000073 * T4;
266
267
268 double const E = 1.0 - 0.002516 * T - 0.0000074 * T2;
269 double const E2 = E * E;
270
271
272 double const M = 2.5534 + 29.10535670 * k - 0.0000014 * T2 - 0.00000011 * T3;
273
274
275 double const MPrime = 201.5643 + 385.81693528 * k + 0.0107582 * T2
276 + 0.00001238 * T3 - 0.000000058 * T4;
277
278
279 double const F = 160.7108 + 390.67050284 * k - 0.0016118 * T2
280 - 0.00000227 * T3 + 0.000000011 * T4;
281
282
283 double const Omega = 124.7746 - 1.56375588 * k + 0.0020672 * T2 + 0.00000215 * T3;
284
285
286 double correction =
287 - 0.40720 *
sind(MPrime)
288 + 0.17241 * E *
sind(M)
289 + 0.01608 *
sind(2 * MPrime)
290 + 0.01039 *
sind(2 * F)
291 + 0.00739 * E *
sind(MPrime - M)
292 - 0.00514 * E *
sind(MPrime + M)
293 + 0.00208 * E2 *
sind(2 * M)
294 - 0.00111 *
sind(MPrime - 2 * F)
295 - 0.00057 *
sind(MPrime + 2 * F)
296 + 0.00056 * E *
sind(2 * MPrime + M)
297 - 0.00042 *
sind(3 * MPrime)
298 + 0.00042 * E *
sind(M + 2 * F)
299 + 0.00038 * E *
sind(M - 2 * F)
300 - 0.00024 * E *
sind(2 * MPrime - M)
301 - 0.00017 *
sind(Omega);
302
303
304 double const A1 = 299.77 + 0.107408 * k - 0.009173 * T2;
305 double const A2 = 251.88 + 0.016321 * k;
306 double const A3 = 251.83 + 26.651886 * k;
307 double const A4 = 349.42 + 36.412478 * k;
308 double const A5 = 84.66 + 18.206239 * k;
309 double const A6 = 141.74 + 53.303771 * k;
310 double const A7 = 207.14 + 2.453732 * k;
311 double const A8 = 154.84 + 7.306860 * k;
312 double const A9 = 34.52 + 27.261239 * k;
313 double const A10 = 207.19 + 0.121824 * k;
314 double const A11 = 291.34 + 1.844379 * k;
315 double const A12 = 161.72 + 24.198154 * k;
316 double const A13 = 239.56 + 25.513099 * k;
317 double const A14 = 331.55 + 3.592518 * k;
318
319 correction += 0.000325 *
sind(A1) + 0.000165 *
sind(A2) + 0.000164 *
sind(A3)
320 + 0.000126 *
sind(A4) + 0.000110 *
sind(A5) + 0.000062 *
sind(A6)
321 + 0.000060 *
sind(A7) + 0.000056 *
sind(A8) + 0.000047 *
sind(A9)
322 + 0.000042 *
sind(A10) + 0.000040 *
sind(A11) + 0.000037 *
sind(A12)
323 + 0.000035 *
sind(A13) + 0.000023 *
sind(A14);
324
325 return JDE + correction;
326}
double sind(double deg)
Definition HolidayDateCalculator.cpp:27