189{
190
191 double const T = k / 1236.85;
192 double const T2 = T * T;
193 double const T3 = T2 * T;
194 double const T4 = T3 * T;
195
196
197 double const JDE = 2451550.09766 + 29.530588861 * k + 0.00015437 * T2
198 - 0.000000150 * T3 + 0.00000000073 * T4;
199
200
201 double const E = 1.0 - 0.002516 * T - 0.0000074 * T2;
202 double const E2 = E * E;
203
204
205 double const M = 2.5534 + 29.10535670 * k - 0.0000014 * T2 - 0.00000011 * T3;
206
207
208 double const MPrime = 201.5643 + 385.81693528 * k + 0.0107582 * T2
209 + 0.00001238 * T3 - 0.000000058 * T4;
210
211
212 double const F = 160.7108 + 390.67050284 * k - 0.0016118 * T2
213 - 0.00000227 * T3 + 0.000000011 * T4;
214
215
216 double const Omega = 124.7746 - 1.56375588 * k + 0.0020672 * T2 + 0.00000215 * T3;
217
218
219 double correction =
220 - 0.40720 *
sind(MPrime)
221 + 0.17241 * E *
sind(M)
222 + 0.01608 *
sind(2 * MPrime)
223 + 0.01039 *
sind(2 * F)
224 + 0.00739 * E *
sind(MPrime - M)
225 - 0.00514 * E *
sind(MPrime + M)
226 + 0.00208 * E2 *
sind(2 * M)
227 - 0.00111 *
sind(MPrime - 2 * F)
228 - 0.00057 *
sind(MPrime + 2 * F)
229 + 0.00056 * E *
sind(2 * MPrime + M)
230 - 0.00042 *
sind(3 * MPrime)
231 + 0.00042 * E *
sind(M + 2 * F)
232 + 0.00038 * E *
sind(M - 2 * F)
233 - 0.00024 * E *
sind(2 * MPrime - M)
234 - 0.00017 *
sind(Omega);
235
236
237 double const A1 = 299.77 + 0.107408 * k - 0.009173 * T2;
238 double const A2 = 251.88 + 0.016321 * k;
239 double const A3 = 251.83 + 26.651886 * k;
240 double const A4 = 349.42 + 36.412478 * k;
241 double const A5 = 84.66 + 18.206239 * k;
242 double const A6 = 141.74 + 53.303771 * k;
243 double const A7 = 207.14 + 2.453732 * k;
244 double const A8 = 154.84 + 7.306860 * k;
245 double const A9 = 34.52 + 27.261239 * k;
246 double const A10 = 207.19 + 0.121824 * k;
247 double const A11 = 291.34 + 1.844379 * k;
248 double const A12 = 161.72 + 24.198154 * k;
249 double const A13 = 239.56 + 25.513099 * k;
250 double const A14 = 331.55 + 3.592518 * k;
251
252 correction += 0.000325 *
sind(A1) + 0.000165 *
sind(A2) + 0.000164 *
sind(A3)
253 + 0.000126 *
sind(A4) + 0.000110 *
sind(A5) + 0.000062 *
sind(A6)
254 + 0.000060 *
sind(A7) + 0.000056 *
sind(A8) + 0.000047 *
sind(A9)
255 + 0.000042 *
sind(A10) + 0.000040 *
sind(A11) + 0.000037 *
sind(A12)
256 + 0.000035 *
sind(A13) + 0.000023 *
sind(A14);
257
258 return JDE + correction;
259}
double sind(double deg)
Definition HolidayDateCalculator.cpp:27