File indexing completed on 2024-06-16 05:03:58

0001 /*
0002     SPDX-FileCopyrightText: 2019 - 2022 UnionTech Software Technology Co., Ltd.
0003 
0004     SPDX-License-Identifier: LGPL-3.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <array>
0010 #include <cmath>
0011 #include <cstdint>
0012 #include <numbers>
0013 
0014 namespace SolarUtils
0015 {
0016 constexpr double J2000 = 2451545.0;
0017 struct MoonEclipticParameter {
0018     double Lp;
0019     double D;
0020     double M;
0021     double Mp;
0022     double F;
0023     double E;
0024 };
0025 
0026 struct MoonEclipticLongitudeCoeff {
0027     double D;
0028     double M;
0029     double Mp;
0030     double F;
0031     double EiA;
0032     double ErA;
0033 };
0034 
0035 struct EarthNutationParameter {
0036     double D;
0037     double M;
0038     double Mp;
0039     double F;
0040     double Omega;
0041 };
0042 
0043 struct NuationCoefficient {
0044     double D;
0045     double M;
0046     double Mp;
0047     double F;
0048     double Omega;
0049     double Sine1;
0050     double Sine2;
0051     double Cosine1;
0052     double Cosine2;
0053 };
0054 
0055 constexpr std::array<MoonEclipticLongitudeCoeff, 60> s_moonLongitude{
0056     MoonEclipticLongitudeCoeff{0, 0, 1, 0, 6288744, -20905355},
0057     {2, 0, -1, 0, 1274027, -3699111},
0058     {2, 0, 0, 0, 658314, -2955968},
0059     {0, 0, 2, 0, 213618, -569925},
0060     {0, 1, 0, 0, -185116, 48888},
0061     {0, 0, 0, 2, -114332, -3149},
0062     {2, 0, -2, 0, 58793, 246158},
0063     {2, -1, -1, 0, 57066, -152138},
0064     {2, 0, 1, 0, 53322, -170733},
0065     {2, -1, 0, 0, 45758, -204586},
0066     {0, 1, -1, 0, -40923, -129620},
0067     {1, 0, 0, 0, -34720, 108743},
0068     {0, 1, 1, 0, -30383, 104755},
0069     {2, 0, 0, -2, 15327, 10321},
0070     {0, 0, 1, 2, -12528, 0},
0071     {0, 0, 1, -2, 10980, 79661},
0072     {4, 0, -1, 0, 10675, -34782},
0073     {0, 0, 3, 0, 10034, -23210},
0074     {4, 0, -2, 0, 8548, -21636},
0075     {2, 1, -1, 0, -7888, 24208},
0076     {2, 1, 0, 0, -6766, 30824},
0077     {1, 0, -1, 0, -5163, -8379},
0078     {1, 1, 0, 0, 4987, -16675},
0079     {2, -1, 1, 0, 4036, -12831},
0080     {2, 0, 2, 0, 3994, -10445},
0081     {4, 0, 0, 0, 3861, -11650},
0082     {2, 0, -3, 0, 3665, 14403},
0083     {0, 1, -2, 0, -2689, -7003},
0084     {2, 0, -1, 2, -2602, 0},
0085     {2, -1, -2, 0, 2390, 10056},
0086     {1, 0, 1, 0, -2348, 6322},
0087     {2, -2, 0, 0, 2236, -9884},
0088     {0, 1, 2, 0, -2120, 5751},
0089     {0, 2, 0, 0, -2069, 0},
0090     {2, -2, -1, 0, 2048, -4950},
0091     {2, 0, 1, -2, -1773, 4130},
0092     {2, 0, 0, 2, -1595, 0},
0093     {4, -1, -1, 0, 1215, -3958},
0094     {0, 0, 2, 2, -1110, 0},
0095     {3, 0, -1, 0, -892, 3258},
0096     {2, 1, 1, 0, -810, 2616},
0097     {4, -1, -2, 0, 759, -1897},
0098     {0, 2, -1, 0, -713, -2117},
0099     {2, 2, -1, 0, -700, 2354},
0100     {2, 1, -2, 0, 691, 0},
0101     {2, -1, 0, -2, 596, 0},
0102     {4, 0, 1, 0, 549, -1423},
0103     {0, 0, 4, 0, 537, -1117},
0104     {4, -1, 0, 0, 520, -1571},
0105     {1, 0, -2, 0, -487, -1739},
0106     {2, 1, 0, -2, -399, 0},
0107     {0, 0, 2, -2, -381, -4421},
0108     {1, 1, 1, 0, 351, 0},
0109     {3, 0, -2, 0, -340, 0},
0110     {4, 0, -3, 0, 330, 0},
0111     {2, -1, 2, 0, 327, 0},
0112     {0, 2, 1, 0, -323, 1165},
0113     {1, 1, -1, 0, 299, 0},
0114     {2, 0, 3, 0, 294, 0},
0115     {2, 0, -1, -2, 0, 8752},
0116 };
0117 
0118 constexpr std::array<NuationCoefficient, 63> s_nuation{
0119     NuationCoefficient{0, 0, 0, 0, 1, -171996, -174.2, 92025, 8.9},
0120     NuationCoefficient{-2, 0, 0, 2, 2, -13187, -1.6, 5736, -3.1},
0121     NuationCoefficient{0, 0, 0, 2, 2, -2274, -0.2, 977, -0.5},
0122     NuationCoefficient{0, 0, 0, 0, 2, 2062, 0.2, -895, 0.5},
0123     NuationCoefficient{0, 1, 0, 0, 0, 1426, -3.4, 54, -0.1},
0124     NuationCoefficient{0, 0, 1, 0, 0, 712, 0.1, -7, 0},
0125     NuationCoefficient{-2, 1, 0, 2, 2, -517, 1.2, 224, -0.6},
0126     NuationCoefficient{0, 0, 0, 2, 1, -386, -0.4, 200, 0},
0127     NuationCoefficient{0, 0, 1, 2, 2, -301, 0, 129, -0.1},
0128     NuationCoefficient{-2, -1, 0, 2, 2, 217, -0.5, -95, 0.3},
0129     NuationCoefficient{-2, 0, 1, 0, 0, -158, 0, 0, 0},
0130     NuationCoefficient{-2, 0, 0, 2, 1, 129, 0.1, -70, 0},
0131     NuationCoefficient{0, 0, -1, 2, 2, 123, 0, -53, 0},
0132     NuationCoefficient{2, 0, 0, 0, 0, 63, 0, 0, 0},
0133     NuationCoefficient{0, 0, 1, 0, 1, 63, 0.1, -33, 0},
0134     NuationCoefficient{2, 0, -1, 2, 2, -59, 0, 26, 0},
0135     NuationCoefficient{0, 0, -1, 0, 1, -58, -0.1, 32, 0},
0136     NuationCoefficient{0, 0, 1, 2, 1, -51, 0, 27, 0},
0137     NuationCoefficient{-2, 0, 2, 0, 0, 48, 0, 0, 0},
0138     NuationCoefficient{0, 0, -2, 2, 1, 46, 0, -24, 0},
0139     NuationCoefficient{2, 0, 0, 2, 2, -38, 0, 16, 0},
0140     NuationCoefficient{0, 0, 2, 2, 2, -31, 0, 13, 0},
0141     NuationCoefficient{0, 0, 2, 0, 0, 29, 0, 0, 0},
0142     NuationCoefficient{-2, 0, 1, 2, 2, 29, 0, -12, 0},
0143     NuationCoefficient{0, 0, 0, 2, 0, 26, 0, 0, 0},
0144     NuationCoefficient{-2, 0, 0, 2, 0, -22, 0, 0, 0},
0145     NuationCoefficient{0, 0, -1, 2, 1, 21, 0, -10, 0},
0146     NuationCoefficient{0, 2, 0, 0, 0, 17, -0.1, 0, 0},
0147     NuationCoefficient{2, 0, -1, 0, 1, 16, 0, -8, 0},
0148     NuationCoefficient{-2, 2, 0, 2, 2, -16, 0.1, 7, 0},
0149     NuationCoefficient{0, 1, 0, 0, 1, -15, 0, 9, 0},
0150     NuationCoefficient{-2, 0, 1, 0, 1, -13, 0, 7, 0},
0151     NuationCoefficient{0, -1, 0, 0, 1, -12, 0, 6, 0},
0152     NuationCoefficient{0, 0, 2, -2, 0, 11, 0, 0, 0},
0153     NuationCoefficient{2, 0, -1, 2, 1, -10, 0, 5, 0},
0154     NuationCoefficient{2, 0, 1, 2, 2, -8, 0, 3, 0},
0155     NuationCoefficient{0, 1, 0, 2, 2, 7, 0, -3, 0},
0156     NuationCoefficient{-2, 1, 1, 0, 0, -7, 0, 0, 0},
0157     NuationCoefficient{0, -1, 0, 2, 2, -7, 0, 3, 0},
0158     NuationCoefficient{2, 0, 0, 2, 1, -7, 0, 3, 0},
0159     NuationCoefficient{2, 0, 1, 0, 0, 6, 0, 0, 0},
0160     NuationCoefficient{-2, 0, 2, 2, 2, 6, 0, -3, 0},
0161     NuationCoefficient{-2, 0, 1, 2, 1, 6, 0, -3, 0},
0162     NuationCoefficient{2, 0, -2, 0, 1, -6, 0, 3, 0},
0163     NuationCoefficient{2, 0, 0, 0, 1, -6, 0, 3, 0},
0164     NuationCoefficient{0, -1, 1, 0, 0, 5, 0, 0, 0},
0165     NuationCoefficient{-2, -1, 0, 2, 1, -5, 0, 3, 0},
0166     NuationCoefficient{-2, 0, 0, 0, 1, -5, 0, 3, 0},
0167     NuationCoefficient{0, 0, 2, 2, 1, -5, 0, 3, 0},
0168     NuationCoefficient{-2, 0, 2, 0, 1, 4, 0, 0, 0},
0169     NuationCoefficient{-2, 1, 0, 2, 1, 4, 0, 0, 0},
0170     NuationCoefficient{0, 0, 1, -2, 0, 4, 0, 0, 0},
0171     NuationCoefficient{-1, 0, 1, 0, 0, -4, 0, 0, 0},
0172     NuationCoefficient{-2, 1, 0, 0, 0, -4, 0, 0, 0},
0173     NuationCoefficient{1, 0, 0, 0, 0, -4, 0, 0, 0},
0174     NuationCoefficient{0, 0, 1, 2, 0, 3, 0, 0, 0},
0175     NuationCoefficient{0, 0, -2, 2, 2, -3, 0, 0, 0},
0176     NuationCoefficient{-1, -1, 1, 0, 0, -3, 0, 0, 0},
0177     NuationCoefficient{0, 1, 1, 0, 0, -3, 0, 0, 0},
0178     NuationCoefficient{0, -1, 1, 2, 2, -3, 0, 0, 0},
0179     NuationCoefficient{2, -1, -1, 2, 2, -3, 0, 0, 0},
0180     NuationCoefficient{0, 0, 3, 2, 2, -3, 0, 0, 0},
0181     NuationCoefficient{2, -1, 0, 2, 2, -3, 0, 0, 0},
0182 };
0183 
0184 constexpr double getEarthL0(double t)
0185 {
0186     double result = 0.0;
0187     result += 1.75347045673;
0188     result += 0.03341656456 * std::cos(4.66925680417 + 6283.0758499914 * t);
0189     result += 0.00034894275 * std::cos(4.62610241759 + 12566.1516999828 * t);
0190     result += 3.417571e-05 * std::cos(2.82886579606 + 3.523118349 * t);
0191     result += 3.497056e-05 * std::cos(2.74411800971 + 5753.3848848968 * t);
0192     result += 3.135896e-05 * std::cos(3.62767041758 + 77713.7714681205 * t);
0193     result += 2.676218e-05 * std::cos(4.41808351397 + 7860.4193924392 * t);
0194     result += 2.342687e-05 * std::cos(6.13516237631 + 3930.2096962196 * t);
0195     result += 1.273166e-05 * std::cos(2.03709655772 + 529.6909650946 * t);
0196     result += 1.324292e-05 * std::cos(0.74246356352 + 11506.7697697936 * t);
0197     result += 9.01855e-06 * std::cos(2.04505443513 + 26.2983197998 * t);
0198     result += 1.199167e-05 * std::cos(1.10962944315 + 1577.3435424478 * t);
0199     result += 8.57223e-06 * std::cos(3.50849156957 + 398.1490034082 * t);
0200     result += 7.79786e-06 * std::cos(1.17882652114 + 5223.6939198022 * t);
0201     result += 9.9025e-06 * std::cos(5.23268129594 + 5884.9268465832 * t);
0202     result += 7.53141e-06 * std::cos(2.53339053818 + 5507.5532386674 * t);
0203     result += 5.05264e-06 * std::cos(4.58292563052 + 18849.2275499742 * t);
0204     result += 4.92379e-06 * std::cos(4.20506639861 + 775.522611324 * t);
0205     result += 3.56655e-06 * std::cos(2.91954116867 + 0.0673103028 * t);
0206     result += 2.84125e-06 * std::cos(1.89869034186 + 796.2980068164 * t);
0207     result += 2.4281e-06 * std::cos(0.34481140906 + 5486.777843175 * t);
0208     result += 3.17087e-06 * std::cos(5.84901952218 + 11790.6290886588 * t);
0209     result += 2.71039e-06 * std::cos(0.31488607649 + 10977.078804699 * t);
0210     result += 2.0616e-06 * std::cos(4.80646606059 + 2544.3144198834 * t);
0211     result += 2.05385e-06 * std::cos(1.86947813692 + 5573.1428014331 * t);
0212     result += 2.02261e-06 * std::cos(2.45767795458 + 6069.7767545534 * t);
0213     result += 1.26184e-06 * std::cos(1.0830263021 + 20.7753954924 * t);
0214     result += 1.55516e-06 * std::cos(0.83306073807 + 213.299095438 * t);
0215     result += 1.15132e-06 * std::cos(0.64544911683 + 0.9803210682 * t);
0216     result += 1.02851e-06 * std::cos(0.63599846727 + 4694.0029547076 * t);
0217     result += 1.01724e-06 * std::cos(4.26679821365 + 7.1135470008 * t);
0218     result += 9.9206e-07 * std::cos(6.20992940258 + 2146.1654164752 * t);
0219     result += 1.32212e-06 * std::cos(3.41118275555 + 2942.4634232916 * t);
0220     result += 9.7607e-07 * std::cos(0.6810127227 + 155.4203994342 * t);
0221     result += 8.5128e-07 * std::cos(1.29870743025 + 6275.9623029906 * t);
0222     result += 7.4651e-07 * std::cos(1.75508916159 + 5088.6288397668 * t);
0223     result += 1.01895e-06 * std::cos(0.97569221824 + 15720.8387848784 * t);
0224     result += 8.4711e-07 * std::cos(3.67080093025 + 71430.6956181291 * t);
0225     result += 7.3547e-07 * std::cos(4.67926565481 + 801.8209311238 * t);
0226     result += 7.3874e-07 * std::cos(3.50319443167 + 3154.6870848956 * t);
0227     result += 7.8756e-07 * std::cos(3.03698313141 + 12036.4607348882 * t);
0228     result += 7.9637e-07 * std::cos(1.807913307 + 17260.1546546904 * t);
0229     result += 8.5803e-07 * std::cos(5.98322631256 + 161000.685737674 * t);
0230     result += 5.6963e-07 * std::cos(2.78430398043 + 6286.5989683404 * t);
0231     result += 6.1148e-07 * std::cos(1.81839811024 + 7084.8967811152 * t);
0232     result += 6.9627e-07 * std::cos(0.83297596966 + 9437.762934887 * t);
0233     result += 5.6116e-07 * std::cos(4.38694880779 + 14143.4952424306 * t);
0234     result += 6.2449e-07 * std::cos(3.97763880587 + 8827.3902698748 * t);
0235     result += 5.1145e-07 * std::cos(0.28306864501 + 5856.4776591154 * t);
0236     result += 5.5577e-07 * std::cos(3.47006009062 + 6279.5527316424 * t);
0237     result += 4.1036e-07 * std::cos(5.36817351402 + 8429.2412664666 * t);
0238     result += 5.1605e-07 * std::cos(1.33282746983 + 1748.016413067 * t);
0239     result += 5.1992e-07 * std::cos(0.18914945834 + 12139.5535091068 * t);
0240     result += 4.9e-07 * std::cos(0.48735065033 + 1194.4470102246 * t);
0241     result += 3.92e-07 * std::cos(6.16832995016 + 10447.3878396044 * t);
0242     result += 3.5566e-07 * std::cos(1.77597314691 + 6812.766815086 * t);
0243     result += 3.677e-07 * std::cos(6.04133859347 + 10213.285546211 * t);
0244     result += 3.6596e-07 * std::cos(2.56955238628 + 1059.3819301892 * t);
0245     result += 3.3291e-07 * std::cos(0.59309499459 + 17789.845619785 * t);
0246     result += 3.5954e-07 * std::cos(1.70876111898 + 2352.8661537718 * t);
0247     result += 4.0938e-07 * std::cos(2.39850881707 + 19651.048481098 * t);
0248     result += 3.0047e-07 * std::cos(2.73975123935 + 1349.8674096588 * t);
0249     result += 3.0412e-07 * std::cos(0.44294464135 + 83996.8473181119 * t);
0250     result += 2.3663e-07 * std::cos(0.48473567763 + 8031.0922630584 * t);
0251     result += 2.3574e-07 * std::cos(2.06527720049 + 3340.6124266998 * t);
0252     result += 2.1089e-07 * std::cos(4.14825464101 + 951.7184062506 * t);
0253     result += 2.4738e-07 * std::cos(0.21484762138 + 3.5904286518 * t);
0254     result += 2.5352e-07 * std::cos(3.16470953405 + 4690.4798363586 * t);
0255     result += 2.282e-07 * std::cos(5.22197888032 + 4705.7323075436 * t);
0256     result += 2.1419e-07 * std::cos(1.42563735525 + 16730.4636895958 * t);
0257     result += 2.1891e-07 * std::cos(5.55594302562 + 553.5694028424 * t);
0258     result += 1.7481e-07 * std::cos(4.56052900359 + 135.0650800354 * t);
0259     result += 1.9925e-07 * std::cos(5.22208471269 + 12168.0026965746 * t);
0260     result += 1.986e-07 * std::cos(5.77470167653 + 6309.3741697912 * t);
0261     result += 2.03e-07 * std::cos(0.37133792946 + 283.8593188652 * t);
0262     result += 1.4421e-07 * std::cos(4.19315332546 + 242.728603974 * t);
0263     result += 1.6225e-07 * std::cos(5.98837722564 + 11769.8536931664 * t);
0264     result += 1.5077e-07 * std::cos(4.19567181073 + 6256.7775301916 * t);
0265     result += 1.9124e-07 * std::cos(3.82219996949 + 23581.2581773176 * t);
0266     result += 1.8888e-07 * std::cos(5.38626880969 + 149854.400134808 * t);
0267     result += 1.4346e-07 * std::cos(3.72355084422 + 38.0276726358 * t);
0268     result += 1.7898e-07 * std::cos(2.21490735647 + 13367.9726311066 * t);
0269     result += 1.2054e-07 * std::cos(2.62229588349 + 955.5997416086 * t);
0270     result += 1.1287e-07 * std::cos(0.17739328092 + 4164.311989613 * t);
0271     result += 1.3971e-07 * std::cos(4.40138139996 + 6681.2248533996 * t);
0272     result += 1.3621e-07 * std::cos(1.88934471407 + 7632.9432596502 * t);
0273     result += 1.2503e-07 * std::cos(1.13052412208 + 5.5229243074 * t);
0274     result += 1.0498e-07 * std::cos(5.35909518669 + 1592.5960136328 * t);
0275     result += 9.803e-08 * std::cos(0.99947478995 + 11371.7046897582 * t);
0276     result += 9.22e-08 * std::cos(4.57138609781 + 4292.3308329504 * t);
0277     result += 1.0327e-07 * std::cos(6.19982566125 + 6438.4962494256 * t);
0278     result += 1.2003e-07 * std::cos(1.003514567 + 632.7837393132 * t);
0279     result += 1.0827e-07 * std::cos(0.32734520222 + 103.0927742186 * t);
0280     result += 8.356e-08 * std::cos(4.53902685948 + 25132.3033999656 * t);
0281     result += 1.0005e-07 * std::cos(6.0291496328 + 5746.271337896 * t);
0282     result += 8.409e-08 * std::cos(3.29946744189 + 7234.794256242 * t);
0283     result += 8.006e-08 * std::cos(5.82145271907 + 28.4491874678 * t);
0284     result += 1.0523e-07 * std::cos(0.93871805506 + 11926.2544136688 * t);
0285     result += 7.686e-08 * std::cos(3.12142363172 + 7238.6755916 * t);
0286     result += 9.378e-08 * std::cos(2.62414241032 + 5760.4984318976 * t);
0287     result += 8.127e-08 * std::cos(6.11228001785 + 4732.0306273434 * t);
0288     result += 9.232e-08 * std::cos(0.48343968736 + 522.5774180938 * t);
0289     result += 9.802e-08 * std::cos(5.24413991147 + 27511.4678735372 * t);
0290     result += 7.871e-08 * std::cos(0.99590177926 + 5643.1785636774 * t);
0291     result += 8.123e-08 * std::cos(6.2705301365 + 426.598190876 * t);
0292     result += 9.048e-08 * std::cos(5.33686335897 + 6386.16862421 * t);
0293     result += 8.62e-08 * std::cos(4.16538210888 + 7058.5984613154 * t);
0294     result += 6.297e-08 * std::cos(4.71724819317 + 6836.6452528338 * t);
0295     result += 7.575e-08 * std::cos(3.97382858911 + 11499.6562227928 * t);
0296     result += 7.756e-08 * std::cos(2.95729056763 + 23013.5395395872 * t);
0297     result += 7.314e-08 * std::cos(0.60652505806 + 11513.8833167944 * t);
0298     result += 5.955e-08 * std::cos(2.87641047971 + 6283.14316029419 * t);
0299     result += 6.534e-08 * std::cos(5.79072926033 + 18073.7049386502 * t);
0300     result += 7.188e-08 * std::cos(3.99831508699 + 74.7815985673 * t);
0301     result += 7.346e-08 * std::cos(4.38582365437 + 316.3918696566 * t);
0302     result += 5.413e-08 * std::cos(5.39199024641 + 419.4846438752 * t);
0303     result += 5.127e-08 * std::cos(2.36062848786 + 10973.55568635 * t);
0304     result += 7.056e-08 * std::cos(0.32258441903 + 263.0839233728 * t);
0305     result += 6.625e-08 * std::cos(3.66475158672 + 17298.1823273262 * t);
0306     result += 6.762e-08 * std::cos(5.91132535899 + 90955.5516944961 * t);
0307     result += 4.938e-08 * std::cos(5.73672165674 + 9917.6968745098 * t);
0308     result += 5.547e-08 * std::cos(2.45152597661 + 12352.8526045448 * t);
0309     result += 5.958e-08 * std::cos(3.32051344676 + 6283.0085396886 * t);
0310     result += 4.471e-08 * std::cos(2.06385999536 + 7079.3738568078 * t);
0311     result += 6.153e-08 * std::cos(1.45823331144 + 233141.314404362 * t);
0312     result += 4.348e-08 * std::cos(4.4234217548 + 5216.5803728014 * t);
0313     result += 6.123e-08 * std::cos(1.07494905258 + 19804.8272915828 * t);
0314     result += 4.488e-08 * std::cos(3.6528503715 + 206.1855484372 * t);
0315     result += 4.02e-08 * std::cos(0.83995823171 + 20.3553193988 * t);
0316     result += 5.188e-08 * std::cos(4.06503864016 + 6208.2942514241 * t);
0317     result += 5.307e-08 * std::cos(0.38217636096 + 31441.6775697568 * t);
0318     result += 3.785e-08 * std::cos(2.34369213733 + 3.881335358 * t);
0319     result += 4.497e-08 * std::cos(3.27230796845 + 11015.1064773348 * t);
0320     result += 4.132e-08 * std::cos(0.92128915753 + 3738.761430108 * t);
0321     result += 3.521e-08 * std::cos(5.97844807108 + 3894.1818295422 * t);
0322     result += 4.215e-08 * std::cos(1.90601120623 + 245.8316462294 * t);
0323     result += 3.701e-08 * std::cos(5.03069397926 + 536.8045120954 * t);
0324     result += 3.865e-08 * std::cos(1.82634360607 + 11856.2186514245 * t);
0325     result += 3.652e-08 * std::cos(1.01838584934 + 16200.7727245012 * t);
0326     result += 3.39e-08 * std::cos(0.97785123922 + 8635.9420037632 * t);
0327     result += 3.737e-08 * std::cos(2.95380107829 + 3128.3887650958 * t);
0328     result += 3.507e-08 * std::cos(3.71291946325 + 6290.1893969922 * t);
0329     result += 3.086e-08 * std::cos(3.64646921512 + 10.6366653498 * t);
0330     result += 3.397e-08 * std::cos(1.10590684017 + 14712.317116458 * t);
0331     result += 3.334e-08 * std::cos(0.83684924911 + 6496.3749454294 * t);
0332     result += 2.805e-08 * std::cos(2.58504514144 + 14314.1681130498 * t);
0333     result += 3.65e-08 * std::cos(1.08344142571 + 88860.0570709867 * t);
0334     result += 3.388e-08 * std::cos(3.20185096055 + 5120.6011455836 * t);
0335     result += 3.252e-08 * std::cos(3.47859752062 + 6133.5126528568 * t);
0336     result += 2.553e-08 * std::cos(3.94869034189 + 1990.745017041 * t);
0337     result += 3.52e-08 * std::cos(2.05559692878 + 244287.600007228 * t);
0338     result += 2.565e-08 * std::cos(1.560717849 + 23543.2305046818 * t);
0339     result += 2.621e-08 * std::cos(3.85639359951 + 266.6070417218 * t);
0340     result += 2.955e-08 * std::cos(3.39692949667 + 9225.539273283 * t);
0341     result += 2.876e-08 * std::cos(6.02635617464 + 154717.609887683 * t);
0342     result += 2.395e-08 * std::cos(1.16131956403 + 10984.1923516998 * t);
0343     result += 3.161e-08 * std::cos(1.32798718453 + 10873.9860304804 * t);
0344     result += 3.163e-08 * std::cos(5.08946464629 + 21228.3920235458 * t);
0345     result += 2.361e-08 * std::cos(4.27212906992 + 6040.3472460174 * t);
0346     result += 3.03e-08 * std::cos(1.80209931347 + 35371.8872659764 * t);
0347     result += 2.343e-08 * std::cos(3.576898605 + 10969.9652576982 * t);
0348     result += 2.618e-08 * std::cos(2.57870156528 + 22483.8485744926 * t);
0349     result += 2.113e-08 * std::cos(3.71393780256 + 65147.6197681377 * t);
0350     result += 2.019e-08 * std::cos(0.81393923319 + 170.6728706192 * t);
0351     result += 2.003e-08 * std::cos(0.38091017375 + 6172.869528772 * t);
0352     result += 2.506e-08 * std::cos(3.74379142438 + 10575.4066829418 * t);
0353     result += 2.381e-08 * std::cos(0.10581361289 + 7.046236698 * t);
0354     result += 1.949e-08 * std::cos(4.86892513469 + 36.0278666774 * t);
0355     result += 2.074e-08 * std::cos(4.2279477457 + 5650.2921106782 * t);
0356     result += 1.924e-08 * std::cos(5.5946054986 + 6282.0955289232 * t);
0357     result += 1.949e-08 * std::cos(1.07002512703 + 5230.807466803 * t);
0358     result += 1.988e-08 * std::cos(5.19736046771 + 6262.300454499 * t);
0359     result += 1.887e-08 * std::cos(3.74365662683 + 23.8784377478 * t);
0360     result += 1.787e-08 * std::cos(1.25929682929 + 12559.038152982 * t);
0361     result += 1.883e-08 * std::cos(1.90364058477 + 15.252471185 * t);
0362     result += 1.816e-08 * std::cos(3.68083868442 + 15110.4661198662 * t);
0363     result += 1.701e-08 * std::cos(4.4110589538 + 110.2063212194 * t);
0364     result += 1.99e-08 * std::cos(3.93295788548 + 6206.8097787158 * t);
0365     result += 2.103e-08 * std::cos(0.75354917468 + 13521.7514415914 * t);
0366     result += 1.774e-08 * std::cos(0.48747535361 + 1551.045222648 * t);
0367     result += 1.882e-08 * std::cos(0.86684493432 + 22003.9146348698 * t);
0368     result += 1.924e-08 * std::cos(1.22898324132 + 709.9330485583 * t);
0369     result += 2.009e-08 * std::cos(4.6285092198 + 6037.244203762 * t);
0370     result += 1.924e-08 * std::cos(0.60231842508 + 6284.0561710596 * t);
0371     result += 1.596e-08 * std::cos(3.98332956992 + 13916.0191096416 * t);
0372     result += 1.664e-08 * std::cos(4.41939715469 + 8662.240323563 * t);
0373     result += 1.971e-08 * std::cos(1.04560500503 + 18209.3302636602 * t);
0374     result += 1.942e-08 * std::cos(4.31335979989 + 6244.9428143536 * t);
0375     result += 1.476e-08 * std::cos(0.93271367331 + 2379.1644735716 * t);
0376     result += 1.81e-08 * std::cos(0.49112137707 + 1.4844727083 * t);
0377     result += 1.346e-08 * std::cos(1.51574702235 + 4136.9104335162 * t);
0378     result += 1.528e-08 * std::cos(5.61835711404 + 6127.6554505572 * t);
0379     result += 1.791e-08 * std::cos(3.22187270126 + 39302.096962196 * t);
0380     result += 1.747e-08 * std::cos(3.05638656738 + 18319.5365848796 * t);
0381     result += 1.431e-08 * std::cos(4.51153808594 + 20426.571092422 * t);
0382     result += 1.695e-08 * std::cos(0.22047718414 + 25158.6017197654 * t);
0383     result += 1.242e-08 * std::cos(4.46665769933 + 17256.6315363414 * t);
0384     result += 1.463e-08 * std::cos(4.69242679213 + 14945.3161735544 * t);
0385     result += 1.205e-08 * std::cos(1.86912144659 + 4590.910180489 * t);
0386     result += 1.192e-08 * std::cos(2.74227166898 + 12569.6748183318 * t);
0387     result += 1.222e-08 * std::cos(5.18120087482 + 5333.9002410216 * t);
0388     result += 1.39e-08 * std::cos(5.42894648983 + 143571.324284816 * t);
0389     result += 1.473e-08 * std::cos(1.70479245805 + 11712.9553182308 * t);
0390     result += 1.362e-08 * std::cos(2.61069503292 + 6062.6632075526 * t);
0391     result += 1.148e-08 * std::cos(6.0300180054 + 3634.6210245184 * t);
0392     result += 1.198e-08 * std::cos(5.15294130422 + 10177.2576795336 * t);
0393     result += 1.266e-08 * std::cos(0.11421493643 + 18422.6293590982 * t);
0394     result += 1.411e-08 * std::cos(1.09908857534 + 3496.032826134 * t);
0395     result += 1.349e-08 * std::cos(2.99805109633 + 17654.7805397496 * t);
0396     result += 1.253e-08 * std::cos(2.79850152848 + 167283.761587666 * t);
0397     result += 1.311e-08 * std::cos(1.60942984879 + 5481.2549188676 * t);
0398     result += 1.079e-08 * std::cos(6.20304501787 + 3.2863574178 * t);
0399     result += 1.181e-08 * std::cos(1.20653776978 + 131.5419616864 * t);
0400     result += 1.254e-08 * std::cos(5.45103277798 + 6076.8903015542 * t);
0401     result += 1.035e-08 * std::cos(2.32142722747 + 7342.4577801806 * t);
0402     result += 1.117e-08 * std::cos(0.38838354256 + 949.1756089698 * t);
0403     result += 9.66e-09 * std::cos(3.18341890851 + 11087.2851259184 * t);
0404     result += 1.171e-08 * std::cos(3.39635049962 + 12562.6285816338 * t);
0405     result += 1.121e-08 * std::cos(0.72627490378 + 220.4126424388 * t);
0406     result += 1.024e-08 * std::cos(2.19378315386 + 11403.676995575 * t);
0407     result += 8.88e-09 * std::cos(3.91173199285 + 4686.8894077068 * t);
0408     result += 9.1e-09 * std::cos(1.98802695087 + 735.8765135318 * t);
0409     result += 8.3e-09 * std::cos(0.48984915507 + 24072.9214697764 * t);
0410     result += 1.096e-08 * std::cos(6.17377835617 + 5436.9930152402 * t);
0411     result += 9.08e-09 * std::cos(0.44959639433 + 7477.522860216 * t);
0412     result += 9.74e-09 * std::cos(1.52996238356 + 9623.6882766912 * t);
0413     result += 8.4e-09 * std::cos(1.79543266333 + 5429.8794682394 * t);
0414     result += 7.78e-09 * std::cos(6.17699177946 + 38.1330356378 * t);
0415     result += 7.76e-09 * std::cos(4.09855402433 + 14.2270940016 * t);
0416     result += 1.068e-08 * std::cos(4.64200173735 + 43232.3066584156 * t);
0417     result += 9.54e-09 * std::cos(1.49988435748 + 1162.4747044078 * t);
0418     result += 9.07e-09 * std::cos(0.86986870809 + 10344.2950653858 * t);
0419     result += 9.31e-09 * std::cos(4.06044689031 + 28766.924424484 * t);
0420     result += 7.39e-09 * std::cos(5.04368197372 + 639.897286314 * t);
0421     result += 9.37e-09 * std::cos(3.4688469896 + 1589.0728952838 * t);
0422     result += 7.63e-09 * std::cos(5.86304932998 + 16858.4825329332 * t);
0423     result += 9.53e-09 * std::cos(4.20801492835 + 11190.377900137 * t);
0424     result += 7.08e-09 * std::cos(1.7289998894 + 13095.8426650774 * t);
0425     result += 9.69e-09 * std::cos(1.64439522215 + 29088.811415985 * t);
0426     result += 7.17e-09 * std::cos(0.16688678895 + 11.729352836 * t);
0427     result += 9.62e-09 * std::cos(3.53092337542 + 12416.5885028482 * t);
0428     result += 7.47e-09 * std::cos(5.77866940346 + 12592.4500197826 * t);
0429     result += 6.72e-09 * std::cos(1.91095796194 + 3.9321532631 * t);
0430     result += 6.71e-09 * std::cos(5.46240843677 + 18052.9295431578 * t);
0431     result += 6.75e-09 * std::cos(6.28311558823 + 4535.0594369244 * t);
0432     result += 6.84e-09 * std::cos(0.3997501208 + 5849.3641121146 * t);
0433     result += 7.99e-09 * std::cos(0.29851185294 + 12132.439962106 * t);
0434     result += 7.58e-09 * std::cos(0.96370823331 + 1052.2683831884 * t);
0435     result += 7.82e-09 * std::cos(5.33878339919 + 13517.8701062334 * t);
0436     result += 7.3e-09 * std::cos(1.70106160291 + 17267.2682016912 * t);
0437     result += 7.49e-09 * std::cos(2.59599901875 + 11609.8625440122 * t);
0438     result += 7.34e-09 * std::cos(2.78417782952 + 640.8776073822 * t);
0439     result += 6.88e-09 * std::cos(5.15048287468 + 16496.3613962024 * t);
0440     result += 7.7e-09 * std::cos(1.62469589333 + 4701.1165017084 * t);
0441     result += 6.33e-09 * std::cos(2.20587893893 + 25934.1243310894 * t);
0442     result += 7.6e-09 * std::cos(4.21317219403 + 377.3736079158 * t);
0443     result += 5.84e-09 * std::cos(2.13420121623 + 10557.5941608238 * t);
0444     result += 5.74e-09 * std::cos(0.24250054587 + 9779.1086761254 * t);
0445     result += 5.73e-09 * std::cos(3.16435264609 + 533.2140834436 * t);
0446     result += 6.85e-09 * std::cos(3.19344289472 + 12146.6670561076 * t);
0447     result += 6.75e-09 * std::cos(0.96179233959 + 10454.5013866052 * t);
0448     result += 6.48e-09 * std::cos(1.46327342555 + 6268.8487559898 * t);
0449     result += 5.89e-09 * std::cos(2.50543543638 + 3097.88382272579 * t);
0450     result += 5.51e-09 * std::cos(5.28099026956 + 9388.0059094152 * t);
0451     result += 6.96e-09 * std::cos(3.65342150016 + 4804.209275927 * t);
0452     result += 6.69e-09 * std::cos(2.51030077026 + 2388.8940204492 * t);
0453     result += 5.5e-09 * std::cos(0.06883864342 + 20199.094959633 * t);
0454     result += 6.29e-09 * std::cos(4.13350995675 + 45892.730433157 * t);
0455     result += 6.78e-09 * std::cos(6.09190163533 + 135.62532501 * t);
0456     result += 5.93e-09 * std::cos(1.50136257618 + 226858.23855437 * t);
0457     result += 5.42e-09 * std::cos(3.58573645173 + 6148.010769956 * t);
0458     result += 6.82e-09 * std::cos(5.02203067788 + 17253.0411076896 * t);
0459     result += 5.65e-09 * std::cos(4.2930923861 + 11933.3679606696 * t);
0460     result += 4.86e-09 * std::cos(0.77746204893 + 27.4015560968 * t);
0461     result += 5.03e-09 * std::cos(0.58963565969 + 15671.0817594066 * t);
0462     result += 6.16e-09 * std::cos(4.06539884128 + 227.476132789 * t);
0463     result += 5.83e-09 * std::cos(6.12695541996 + 18875.525869774 * t);
0464     result += 5.37e-09 * std::cos(2.1505644098 + 21954.157609398 * t);
0465     result += 6.69e-09 * std::cos(6.06986269566 + 47162.5163546352 * t);
0466     result += 4.75e-09 * std::cos(0.4034384211 + 6915.8595893046 * t);
0467     result += 5.4e-09 * std::cos(2.83444222174 + 5326.7866940208 * t);
0468     result += 5.3e-09 * std::cos(5.26359885263 + 10988.808157535 * t);
0469     result += 5.82e-09 * std::cos(3.24533095664 + 153.7788104848 * t);
0470     result += 6.41e-09 * std::cos(3.24711791371 + 2107.0345075424 * t);
0471     result += 6.21e-09 * std::cos(3.09698523779 + 33019.0211122046 * t);
0472     result += 4.66e-09 * std::cos(3.14982372198 + 10440.2742926036 * t);
0473     result += 4.66e-09 * std::cos(0.90708835657 + 5966.6839803348 * t);
0474     result += 5.28e-09 * std::cos(0.8192645447 + 813.5502839598 * t);
0475     result += 6.03e-09 * std::cos(3.81378921927 + 316428.228673915 * t);
0476     result += 5.59e-09 * std::cos(1.81894804124 + 17996.0311682222 * t);
0477     result += 4.37e-09 * std::cos(2.28625594435 + 6303.8512454838 * t);
0478     result += 5.18e-09 * std::cos(4.86069178322 + 20597.2439630412 * t);
0479     result += 4.24e-09 * std::cos(6.23520018693 + 6489.2613984286 * t);
0480     result += 5.18e-09 * std::cos(6.17617826756 + 0.2438174835 * t);
0481     result += 4.04e-09 * std::cos(5.72804304258 + 5642.1982426092 * t);
0482     result += 4.58e-09 * std::cos(1.34117773915 + 6287.0080032545 * t);
0483     result += 5.48e-09 * std::cos(5.6845445832 + 155427.542936241 * t);
0484     result += 5.47e-09 * std::cos(1.03391472061 + 3646.3503773544 * t);
0485     result += 4.28e-09 * std::cos(4.69800981138 + 846.0828347512 * t);
0486     result += 4.13e-09 * std::cos(6.02520699406 + 6279.4854213396 * t);
0487     result += 5.34e-09 * std::cos(3.03030638223 + 66567.4858652543 * t);
0488     result += 3.83e-09 * std::cos(1.49056949125 + 19800.9459562248 * t);
0489     result += 4.1e-09 * std::cos(5.28319622279 + 18451.078546566 * t);
0490     result += 3.52e-09 * std::cos(4.68891600359 + 4907.3020501456 * t);
0491     result += 4.8e-09 * std::cos(5.36572651091 + 348.924420448 * t);
0492     result += 3.44e-09 * std::cos(5.89157452896 + 6546.1597733642 * t);
0493     result += 3.4e-09 * std::cos(0.3755742644 + 13119.7211028252 * t);
0494     result += 4.34e-09 * std::cos(4.98417785901 + 6702.5604938666 * t);
0495     result += 3.32e-09 * std::cos(2.68902519126 + 29296.6153895786 * t);
0496     result += 4.48e-09 * std::cos(2.16478480251 + 5905.7022420756 * t);
0497     result += 3.44e-09 * std::cos(2.06546633735 + 49.7570254718 * t);
0498     result += 3.15e-09 * std::cos(1.24023811803 + 4061.2192153944 * t);
0499     result += 3.24e-09 * std::cos(2.30897526929 + 5017.508371365 * t);
0500     result += 4.13e-09 * std::cos(0.17171692962 + 6286.6662786432 * t);
0501     result += 4.31e-09 * std::cos(3.86601101393 + 12489.8856287072 * t);
0502     result += 3.49e-09 * std::cos(4.55372342974 + 4933.2084403326 * t);
0503     result += 3.23e-09 * std::cos(0.41971136084 + 10770.8932562618 * t);
0504     result += 3.41e-09 * std::cos(2.68612860807 + 11.0457002639 * t);
0505     result += 3.16e-09 * std::cos(3.52936906658 + 17782.7320727842 * t);
0506     result += 3.15e-09 * std::cos(5.63357264999 + 568.8218740274 * t);
0507     result += 3.4e-09 * std::cos(3.83571212349 + 10660.6869350424 * t);
0508     result += 2.97e-09 * std::cos(0.62691416712 + 20995.3929664494 * t);
0509     result += 4.05e-09 * std::cos(1.00085779471 + 16460.333529525 * t);
0510     result += 4.14e-09 * std::cos(1.21998752076 + 51092.7260508548 * t);
0511     result += 3.36e-09 * std::cos(4.71465945226 + 6179.9830757728 * t);
0512     result += 3.61e-09 * std::cos(3.71227508354 + 28237.2334593894 * t);
0513     result += 3.85e-09 * std::cos(6.21925225757 + 24356.7807886416 * t);
0514     result += 3.27e-09 * std::cos(1.05606504715 + 11919.140866668 * t);
0515     result += 3.27e-09 * std::cos(6.14222420989 + 6254.6266625236 * t);
0516     result += 2.68e-09 * std::cos(2.47224339737 + 664.75604513 * t);
0517     result += 2.69e-09 * std::cos(1.86207884109 + 23141.5583829246 * t);
0518     result += 3.45e-09 * std::cos(0.93461290184 + 6058.7310542895 * t);
0519     result += 2.96e-09 * std::cos(4.5168755718 + 6418.1409300268 * t);
0520     result += 3.53e-09 * std::cos(4.50033653082 + 36949.2308084242 * t);
0521     result += 2.6e-09 * std::cos(4.04963546305 + 6525.8044539654 * t);
0522     result += 2.98e-09 * std::cos(2.20046722622 + 156137.475984799 * t);
0523     result += 2.53e-09 * std::cos(3.49900838384 + 29864.334027309 * t);
0524     result += 2.54e-09 * std::cos(2.44901693835 + 5331.3574437408 * t);
0525     result += 2.96e-09 * std::cos(0.84347588787 + 5729.506447149 * t);
0526     result += 2.98e-09 * std::cos(1.29194706125 + 22805.7355659936 * t);
0527     result += 2.41e-09 * std::cos(2.00721280805 + 16737.5772365966 * t);
0528     result += 3.11e-09 * std::cos(1.23668016334 + 6281.5913772831 * t);
0529     result += 2.4e-09 * std::cos(2.51650377121 + 6245.0481773556 * t);
0530     result += 3.32e-09 * std::cos(3.55576945724 + 7668.6374249425 * t);
0531     result += 2.64e-09 * std::cos(4.44052061202 + 12964.300703391 * t);
0532     result += 2.57e-09 * std::cos(1.79654471948 + 11080.1715789176 * t);
0533     result += 2.6e-09 * std::cos(3.3307759842 + 5888.4499649322 * t);
0534     result += 2.85e-09 * std::cos(0.3088636143 + 11823.1616394502 * t);
0535     result += 2.9e-09 * std::cos(5.70141882483 + 77.673770428 * t);
0536     result += 2.55e-09 * std::cos(4.0093966444 + 5881.4037282342 * t);
0537     result += 2.53e-09 * std::cos(4.73318493678 + 16723.350142595 * t);
0538     result += 2.28e-09 * std::cos(0.95333661324 + 5540.0857894588 * t);
0539     result += 3.19e-09 * std::cos(1.38633229189 + 163096.180361183 * t);
0540     result += 2.24e-09 * std::cos(1.65156322696 + 10027.9031957292 * t);
0541     result += 2.26e-09 * std::cos(0.34106460604 + 17796.9591667858 * t);
0542     result += 2.36e-09 * std::cos(4.19817431922 + 19.66976089979 * t);
0543     result += 2.8e-09 * std::cos(4.1408026897 + 12539.853380183 * t);
0544     result += 2.75e-09 * std::cos(5.50306930248 + 32.5325507914 * t);
0545     result += 2.23e-09 * std::cos(5.23334210294 + 56.8983749356 * t);
0546     result += 2.17e-09 * std::cos(6.08587881787 + 6805.6532680852 * t);
0547     result += 2.8e-09 * std::cos(4.52472044653 + 6016.4688082696 * t);
0548     result += 2.27e-09 * std::cos(5.06509843737 + 6277.552925684 * t);
0549     result += 2.26e-09 * std::cos(5.17755154305 + 11720.0688652316 * t);
0550     result += 2.45e-09 * std::cos(3.96486270306 + 22.7752014508 * t);
0551     result += 2.2e-09 * std::cos(4.7207808197 + 6.62855890001 * t);
0552     result += 2.07e-09 * std::cos(5.71701403951 + 41.5507909848 * t);
0553     result += 2.04e-09 * std::cos(3.9122741125 + 2699.7348193176 * t);
0554     result += 2.09e-09 * std::cos(0.86881969011 + 6321.1035226272 * t);
0555     result += 2e-09 * std::cos(2.11984445273 + 4274.5183108324 * t);
0556     result += 2e-09 * std::cos(5.39839888163 + 6019.9919266186 * t);
0557     result += 2.09e-09 * std::cos(5.67606291663 + 11293.4706743556 * t);
0558     result += 2.52e-09 * std::cos(1.64965729351 + 9380.9596727172 * t);
0559     result += 2.75e-09 * std::cos(5.04826903506 + 73.297125859 * t);
0560     result += 2.08e-09 * std::cos(1.88207277133 + 11300.5842213564 * t);
0561     result += 2.72e-09 * std::cos(0.74640926842 + 1975.492545856 * t);
0562     result += 1.99e-09 * std::cos(3.30836672397 + 22743.4093795164 * t);
0563     result += 2.69e-09 * std::cos(4.48560812155 + 64471.9912417449 * t);
0564     result += 1.92e-09 * std::cos(2.17464236325 + 5863.5912061162 * t);
0565     result += 2.28e-09 * std::cos(5.85373115869 + 128.0188433374 * t);
0566     result += 2.61e-09 * std::cos(2.64321183295 + 55022.9357470744 * t);
0567     result += 2.2e-09 * std::cos(5.75012110079 + 29.429508536 * t);
0568     result += 1.87e-09 * std::cos(4.03230554718 + 467.9649903544 * t);
0569     result += 2e-09 * std::cos(5.60556112058 + 1066.49547719 * t);
0570     result += 2.31e-09 * std::cos(1.09802712785 + 12341.8069042809 * t);
0571     result += 1.99e-09 * std::cos(0.295006252 + 149.5631971346 * t);
0572     result += 2.49e-09 * std::cos(5.10473210814 + 7875.6718636242 * t);
0573     result += 2.08e-09 * std::cos(0.93013835019 + 14919.0178537546 * t);
0574     result += 1.79e-09 * std::cos(0.87104393079 + 12721.572099417 * t);
0575     result += 2.03e-09 * std::cos(1.56920753653 + 28286.9904848612 * t);
0576     result += 1.79e-09 * std::cos(2.47036386443 + 16062.1845261168 * t);
0577     result += 1.98e-09 * std::cos(3.54061588502 + 30.914125635 * t);
0578     result += 1.71e-09 * std::cos(3.45356518113 + 5327.4761083828 * t);
0579     result += 1.83e-09 * std::cos(0.72325421604 + 6272.0301497275 * t);
0580     result += 2.16e-09 * std::cos(2.97174580686 + 19402.7969528166 * t);
0581     result += 1.68e-09 * std::cos(2.51550550242 + 23937.856389741 * t);
0582     result += 1.95e-09 * std::cos(0.09045393425 + 156.4007205024 * t);
0583     result += 1.79e-09 * std::cos(4.4947179809 + 31415.379249957 * t);
0584     result += 2.16e-09 * std::cos(0.42177594328 + 23539.7073863328 * t);
0585     result += 1.89e-09 * std::cos(0.37542530191 + 9814.6041002912 * t);
0586     result += 2.18e-09 * std::cos(2.36835880025 + 16627.3709153772 * t);
0587     result += 1.66e-09 * std::cos(4.23182968446 + 16840.6700108152 * t);
0588     result += 2e-09 * std::cos(2.02153258098 + 16097.6799502826 * t);
0589     result += 1.69e-09 * std::cos(0.91318727 + 95.9792272178 * t);
0590     result += 2.11e-09 * std::cos(5.73370637657 + 151.8972810852 * t);
0591     result += 2.04e-09 * std::cos(0.42643085174 + 515.463871093 * t);
0592     result += 2.12e-09 * std::cos(3.00233538977 + 12043.574281889 * t);
0593     result += 1.92e-09 * std::cos(5.46153589821 + 6379.0550772092 * t);
0594     result += 1.65e-09 * std::cos(1.38698167064 + 4171.4255366138 * t);
0595     result += 1.6e-09 * std::cos(6.23798383332 + 202.2533951741 * t);
0596     result += 2.15e-09 * std::cos(0.20889073407 + 5621.8429232104 * t);
0597     result += 1.81e-09 * std::cos(4.12439203622 + 13341.6743113068 * t);
0598     result += 1.53e-09 * std::cos(1.24460848836 + 29826.3063546732 * t);
0599     result += 1.5e-09 * std::cos(3.12999753018 + 799.8211251654 * t);
0600     result += 1.75e-09 * std::cos(4.55671604437 + 239424.390254353 * t);
0601     result += 1.92e-09 * std::cos(1.33928820063 + 394.6258850592 * t);
0602     result += 1.49e-09 * std::cos(2.65697593276 + 21.335640467 * t);
0603     result += 1.46e-09 * std::cos(5.58021191726 + 412.3710968744 * t);
0604     result += 1.56e-09 * std::cos(3.75650175503 + 12323.4230960088 * t);
0605     result += 1.43e-09 * std::cos(3.75708566606 + 58864.5439181463 * t);
0606     result += 1.43e-09 * std::cos(3.28248547724 + 29.8214381488 * t);
0607     result += 1.44e-09 * std::cos(1.07862546598 + 1265.5674786264 * t);
0608     result += 1.48e-09 * std::cos(0.23389236655 + 10021.8372800994 * t);
0609     result += 1.93e-09 * std::cos(5.92751083086 + 40879.4405046438 * t);
0610     result += 1.4e-09 * std::cos(4.97612440269 + 158.9435177832 * t);
0611     result += 1.48e-09 * std::cos(2.61640453469 + 17157.0618804718 * t);
0612     result += 1.41e-09 * std::cos(3.66871308723 + 26084.0218062162 * t);
0613     result += 1.47e-09 * std::cos(5.09968173403 + 661.232926781 * t);
0614     result += 1.46e-09 * std::cos(4.96885605695 + 57375.8019008462 * t);
0615     result += 1.42e-09 * std::cos(0.78678347839 + 12779.4507954208 * t);
0616     result += 1.34e-09 * std::cos(4.79432636012 + 111.1866422876 * t);
0617     result += 1.4e-09 * std::cos(1.27748013377 + 107.6635239386 * t);
0618     result += 1.69e-09 * std::cos(2.74893543762 + 26735.9452622132 * t);
0619     result += 1.65e-09 * std::cos(3.95288000638 + 6357.8574485587 * t);
0620     result += 1.83e-09 * std::cos(5.43418358741 + 369.6998159404 * t);
0621     result += 1.34e-09 * std::cos(3.09132862833 + 17.812522118 * t);
0622     result += 1.32e-09 * std::cos(3.05633896779 + 22490.9621214934 * t);
0623     result += 1.34e-09 * std::cos(4.09472795832 + 6599.467719648 * t);
0624     result += 1.81e-09 * std::cos(4.22950689891 + 966.9708774356 * t);
0625     result += 1.52e-09 * std::cos(5.28885894415 + 12669.2444742014 * t);
0626     result += 1.5e-09 * std::cos(5.86819430908 + 97238.6275444875 * t);
0627     result += 1.42e-09 * std::cos(5.87266532526 + 22476.7350274918 * t);
0628     result += 1.45e-09 * std::cos(5.07330784304 + 87.30820453981 * t);
0629     result += 1.33e-09 * std::cos(5.65471067133 + 31.9723058168 * t);
0630     result += 1.24e-09 * std::cos(2.83326217072 + 12566.2190102856 * t);
0631     result += 1.35e-09 * std::cos(3.12861731644 + 32217.2001810808 * t);
0632     result += 1.37e-09 * std::cos(0.86487461904 + 9924.8104215106 * t);
0633     result += 1.72e-09 * std::cos(1.98369595114 + 174242.46596405 * t);
0634     result += 1.7e-09 * std::cos(4.41115280254 + 327574.514276781 * t);
0635     result += 1.51e-09 * std::cos(0.46542099527 + 39609.6545831656 * t);
0636     result += 1.48e-09 * std::cos(2.13439571118 + 491.6632924588 * t);
0637     result += 1.53e-09 * std::cos(3.78801830344 + 17363.247428909 * t);
0638     result += 1.65e-09 * std::cos(5.31654110459 + 16943.7627850338 * t);
0639     result += 1.65e-09 * std::cos(4.06747587817 + 58953.145443294 * t);
0640     result += 1.18e-09 * std::cos(0.63846333239 + 6.0659156298 * t);
0641     result += 1.59e-09 * std::cos(0.86086959274 + 221995.028801495 * t);
0642     result += 1.19e-09 * std::cos(5.96432932413 + 1385.8952763362 * t);
0643     result += 1.14e-09 * std::cos(5.16516114595 + 25685.872802808 * t);
0644     result += 1.12e-09 * std::cos(3.39403722178 + 21393.5419698576 * t);
0645     result += 1.12e-09 * std::cos(4.92889233335 + 56.8032621698 * t);
0646     result += 1.19e-09 * std::cos(2.40637635942 + 18635.9284545362 * t);
0647     result += 1.15e-09 * std::cos(0.23374479051 + 418.9243989006 * t);
0648     result += 1.22e-09 * std::cos(0.93575234049 + 24492.4061136516 * t);
0649     result += 1.15e-09 * std::cos(4.58880032176 + 26709.6469424134 * t);
0650     result += 1.3e-09 * std::cos(4.85539251 + 22345.2603761082 * t);
0651     result += 1.4e-09 * std::cos(1.09413073202 + 44809.6502008634 * t);
0652     result += 1.12e-09 * std::cos(6.05401806281 + 433.7117378768 * t);
0653     result += 1.04e-09 * std::cos(1.54931540602 + 127.9515330346 * t);
0654     result += 1.05e-09 * std::cos(4.82620858888 + 33794.5437235286 * t);
0655     result += 1.02e-09 * std::cos(4.12448497391 + 15664.0355227086 * t);
0656     result += 1.07e-09 * std::cos(4.67919356465 + 77690.7595057385 * t);
0657     result += 1.18e-09 * std::cos(4.5232017012 + 19004.6479494084 * t);
0658     result += 1.07e-09 * std::cos(5.71774478555 + 77736.7834305025 * t);
0659     result += 1.43e-09 * std::cos(1.81201813018 + 4214.0690150848 * t);
0660     result += 1.25e-09 * std::cos(1.14419195615 + 625.6701923124 * t);
0661     result += 1.24e-09 * std::cos(3.27736514057 + 12566.08438968 * t);
0662     result += 1.1e-09 * std::cos(1.08682570828 + 2787.0430238574 * t);
0663     result += 1.05e-09 * std::cos(1.78318141871 + 18139.2945014159 * t);
0664     result += 1.02e-09 * std::cos(4.75119578149 + 12242.6462833254 * t);
0665     result += 1.37e-09 * std::cos(1.43510636754 + 86464.6133168312 * t);
0666     result += 1.01e-09 * std::cos(4.91289409429 + 401.6721217572 * t);
0667     result += 1.29e-09 * std::cos(1.23567904485 + 12029.3471878874 * t);
0668     result += 1.38e-09 * std::cos(2.45654707999 + 7576.560073574 * t);
0669     result += 1.03e-09 * std::cos(0.40004073416 + 90279.9231681033 * t);
0670     result += 1.08e-09 * std::cos(0.9898977494 + 5636.0650166766 * t);
0671     result += 1.17e-09 * std::cos(5.17362872063 + 34520.3093093808 * t);
0672     result += 1e-09 * std::cos(3.95534628189 + 5547.1993364596 * t);
0673     result += 9.8e-10 * std::cos(1.28118280598 + 21548.9623692918 * t);
0674     result += 9.7e-10 * std::cos(3.34717130592 + 16310.9790457206 * t);
0675     result += 9.8e-10 * std::cos(4.37041908717 + 34513.2630726828 * t);
0676     result += 1.25e-09 * std::cos(2.7216443296 + 24065.8079227756 * t);
0677     result += 1.02e-09 * std::cos(0.66938025772 + 10239.5838660108 * t);
0678     result += 1.19e-09 * std::cos(1.21689479331 + 1478.8665740644 * t);
0679     result += 9.4e-10 * std::cos(1.99595224256 + 13362.4497067992 * t);
0680     result += 9.4e-10 * std::cos(4.30965982872 + 26880.3198130326 * t);
0681     result += 9.5e-10 * std::cos(2.89807657534 + 34911.412076091 * t);
0682     result += 1.06e-09 * std::cos(1.0015665359 + 16522.6597160022 * t);
0683     result += 9.7e-10 * std::cos(0.89642320201 + 71980.6335747312 * t);
0684     result += 1.16e-09 * std::cos(4.19967201116 + 206.7007372966 * t);
0685     result += 9.9e-10 * std::cos(1.37437847718 + 1039.0266107904 * t);
0686     result += 1.26e-09 * std::cos(3.21642544972 + 305281.943071049 * t);
0687     result += 9.4e-10 * std::cos(0.6899787606 + 7834.1210726394 * t);
0688     result += 9.4e-10 * std::cos(5.58132218606 + 3104.9300594238 * t);
0689     result += 9.5e-10 * std::cos(3.0382374111 + 8982.810669309 * t);
0690     result += 1.08e-09 * std::cos(0.52696637156 + 276.7457718644 * t);
0691     result += 1.24e-09 * std::cos(3.43899862683 + 172146.97134054 * t);
0692     result += 1.02e-09 * std::cos(1.04031728553 + 95143.1329209781 * t);
0693     result += 1.04e-09 * std::cos(3.39218586218 + 290.972865866 * t);
0694     result += 1.1e-09 * std::cos(3.68205877433 + 22380.755800274 * t);
0695     result += 1.17e-09 * std::cos(0.78475956902 + 83286.9142695536 * t);
0696     result += 8.3e-10 * std::cos(0.18241793425 + 15141.390794312 * t);
0697     result += 8.9e-10 * std::cos(4.45371820659 + 792.7748884674 * t);
0698     result += 8.2e-10 * std::cos(4.80703651241 + 6819.8803620868 * t);
0699     result += 8.7e-10 * std::cos(3.43122851097 + 27707.5424942948 * t);
0700     result += 1.01e-09 * std::cos(5.32081603011 + 2301.58581590939 * t);
0701     result += 8.2e-10 * std::cos(0.87060089842 + 10241.2022911672 * t);
0702     result += 8.6e-10 * std::cos(4.61919461931 + 36147.4098773004 * t);
0703     result += 9.5e-10 * std::cos(2.87032884659 + 23020.653086588 * t);
0704     result += 8.8e-10 * std::cos(3.2113316569 + 33326.5787331742 * t);
0705     result += 8e-10 * std::cos(1.84900424847 + 21424.4666443034 * t);
0706     result += 1.01e-09 * std::cos(4.18796434479 + 30666.1549584328 * t);
0707     result += 1.07e-09 * std::cos(5.77864921649 + 34115.1140692746 * t);
0708     result += 1.04e-09 * std::cos(1.08739495962 + 6288.5987742988 * t);
0709     result += 1.1e-09 * std::cos(3.32898859416 + 72140.6286666874 * t);
0710     result += 8.7e-10 * std::cos(4.40657711727 + 142.1786270362 * t);
0711     result += 1.09e-09 * std::cos(1.94546030825 + 24279.1070182136 * t);
0712     result += 8.7e-10 * std::cos(4.32472045435 + 742.9900605326 * t);
0713     result += 1.07e-09 * std::cos(4.91580912547 + 277.0349937414 * t);
0714     result += 8.8e-10 * std::cos(2.10180220766 + 26482.1708096244 * t);
0715     result += 8.6e-10 * std::cos(4.01887374432 + 12491.3701014155 * t);
0716     result += 1.06e-09 * std::cos(5.49092372854 + 62883.3551395136 * t);
0717     result += 8e-10 * std::cos(6.19781316983 + 6709.6740408674 * t);
0718     result += 8.8e-10 * std::cos(2.09872810657 + 238004.524157236 * t);
0719     result += 8.3e-10 * std::cos(4.90662164029 + 51.28033786241 * t);
0720     result += 9.5e-10 * std::cos(4.13387406591 + 18216.443810661 * t);
0721     result += 7.8e-10 * std::cos(6.0694939168 + 148434.534037691 * t);
0722     result += 7.9e-10 * std::cos(3.03048221644 + 838.9692877504 * t);
0723     result += 7.4e-10 * std::cos(5.49813051211 + 29026.4852295078 * t);
0724     result += 7.3e-10 * std::cos(3.05008665738 + 567.7186377304 * t);
0725     result += 8.4e-10 * std::cos(0.46604373274 + 45.1412196366 * t);
0726     result += 9.3e-10 * std::cos(2.52267536308 + 48739.859897083 * t);
0727     result += 7.6e-10 * std::cos(1.76418124905 + 41654.9631159678 * t);
0728     result += 6.7e-10 * std::cos(5.77851227793 + 6311.5250374592 * t);
0729     result += 6.2e-10 * std::cos(3.32967880172 + 15508.6151232744 * t);
0730     result += 7.9e-10 * std::cos(5.59773841328 + 71960.3865832237 * t);
0731     result += 5.7e-10 * std::cos(3.90629505268 + 5999.2165311262 * t);
0732     result += 6.1e-10 * std::cos(0.05695043232 + 7856.89627409019 * t);
0733     result += 6.1e-10 * std::cos(5.63297958433 + 7863.9425107882 * t);
0734     result += 6.5e-10 * std::cos(3.72178394016 + 12573.2652469836 * t);
0735     result += 5.7e-10 * std::cos(4.18217219541 + 26087.9031415742 * t);
0736     result += 6.6e-10 * std::cos(3.92262333487 + 69853.3520756813 * t);
0737     result += 5.3e-10 * std::cos(5.51119362045 + 77710.2483497715 * t);
0738     result += 5.3e-10 * std::cos(4.88573986961 + 77717.2945864695 * t);
0739     result += 6.2e-10 * std::cos(2.88876342225 + 9411.4646150872 * t);
0740     result += 5.1e-10 * std::cos(1.12657183874 + 82576.9812209953 * t);
0741     result += 4.5e-10 * std::cos(2.95671076719 + 24602.612434871 * t);
0742     result += 4e-10 * std::cos(5.55145719241 + 12565.1713789146 * t);
0743     result += 3.9e-10 * std::cos(1.20838190039 + 18842.1140029734 * t);
0744     result += 4.5e-10 * std::cos(3.18590558749 + 45585.1728121874 * t);
0745     result += 4.9e-10 * std::cos(2.44790934886 + 13613.804277336 * t);
0746     return result;
0747 }
0748 
0749 constexpr double getEarthL1(double t)
0750 {
0751     double result = 0.0;
0752     result += 6283.31966747491;
0753     result += 0.00206058863 * std::cos(2.67823455584 + 6283.0758499914 * t);
0754     result += 4.30343e-05 * std::cos(2.63512650414 + 12566.1516999828 * t);
0755     result += 4.25264e-06 * std::cos(1.59046980729 + 3.523118349 * t);
0756     result += 1.08977e-06 * std::cos(2.96618001993 + 1577.3435424478 * t);
0757     result += 9.3478e-07 * std::cos(2.59212835365 + 18849.2275499742 * t);
0758     result += 1.19261e-06 * std::cos(5.79557487799 + 26.2983197998 * t);
0759     result += 7.2122e-07 * std::cos(1.13846158196 + 529.6909650946 * t);
0760     result += 6.7768e-07 * std::cos(1.87472304791 + 398.1490034082 * t);
0761     result += 6.7327e-07 * std::cos(4.40918235168 + 5507.5532386674 * t);
0762     result += 5.9027e-07 * std::cos(2.8879703846 + 5223.6939198022 * t);
0763     result += 5.5976e-07 * std::cos(2.17471680261 + 155.4203994342 * t);
0764     result += 4.5407e-07 * std::cos(0.39803079805 + 796.2980068164 * t);
0765     result += 3.6369e-07 * std::cos(0.46624739835 + 775.522611324 * t);
0766     result += 2.8958e-07 * std::cos(2.64707383882 + 7.1135470008 * t);
0767     result += 1.9097e-07 * std::cos(1.84628332577 + 5486.777843175 * t);
0768     result += 2.0844e-07 * std::cos(5.34138275149 + 0.9803210682 * t);
0769     result += 1.8508e-07 * std::cos(4.96855124577 + 213.299095438 * t);
0770     result += 1.6233e-07 * std::cos(0.03216483047 + 2544.3144198834 * t);
0771     result += 1.7293e-07 * std::cos(2.99116864949 + 6275.9623029906 * t);
0772     result += 1.5832e-07 * std::cos(1.43049285325 + 2146.1654164752 * t);
0773     result += 1.4615e-07 * std::cos(1.20532366323 + 10977.078804699 * t);
0774     result += 1.1877e-07 * std::cos(3.25804815607 + 5088.6288397668 * t);
0775     result += 1.1514e-07 * std::cos(2.07502418155 + 4694.0029547076 * t);
0776     result += 9.721e-08 * std::cos(4.23925472239 + 1349.8674096588 * t);
0777     result += 9.969e-08 * std::cos(1.30262991097 + 6286.5989683404 * t);
0778     result += 9.452e-08 * std::cos(2.69957062864 + 242.728603974 * t);
0779     result += 1.2461e-07 * std::cos(2.83432285512 + 1748.016413067 * t);
0780     result += 1.1808e-07 * std::cos(5.2737979048 + 1194.4470102246 * t);
0781     result += 8.577e-08 * std::cos(5.64475868067 + 951.7184062506 * t);
0782     result += 1.0641e-07 * std::cos(0.76614199202 + 553.5694028424 * t);
0783     result += 7.576e-08 * std::cos(5.30062664886 + 2352.8661537718 * t);
0784     result += 5.834e-08 * std::cos(1.76649917904 + 1059.3819301892 * t);
0785     result += 6.385e-08 * std::cos(2.65033984967 + 9437.762934887 * t);
0786     result += 5.223e-08 * std::cos(5.66135767624 + 71430.6956181291 * t);
0787     result += 5.305e-08 * std::cos(0.90857521574 + 3154.6870848956 * t);
0788     result += 6.101e-08 * std::cos(4.66632584188 + 4690.4798363586 * t);
0789     result += 4.33e-08 * std::cos(0.24102555403 + 6812.766815086 * t);
0790     result += 5.041e-08 * std::cos(1.42490103709 + 6438.4962494256 * t);
0791     result += 4.259e-08 * std::cos(0.77355900599 + 10447.3878396044 * t);
0792     result += 5.198e-08 * std::cos(1.85353197345 + 801.8209311238 * t);
0793     result += 3.744e-08 * std::cos(2.00119516488 + 8031.0922630584 * t);
0794     result += 3.558e-08 * std::cos(2.42901552681 + 14143.4952424306 * t);
0795     result += 3.372e-08 * std::cos(3.86210700128 + 1592.5960136328 * t);
0796     result += 3.374e-08 * std::cos(0.88776219727 + 12036.4607348882 * t);
0797     result += 3.175e-08 * std::cos(3.18785710594 + 4705.7323075436 * t);
0798     result += 3.221e-08 * std::cos(0.61599835472 + 8429.2412664666 * t);
0799     result += 4.132e-08 * std::cos(5.23992859705 + 7084.8967811152 * t);
0800     result += 2.97e-08 * std::cos(6.07026318493 + 4292.3308329504 * t);
0801     result += 2.9e-08 * std::cos(2.32464208411 + 20.3553193988 * t);
0802     result += 3.504e-08 * std::cos(4.79975694359 + 6279.5527316424 * t);
0803     result += 2.95e-08 * std::cos(1.43108874817 + 5746.271337896 * t);
0804     result += 2.697e-08 * std::cos(4.80368225199 + 7234.794256242 * t);
0805     result += 2.531e-08 * std::cos(6.22290682655 + 6836.6452528338 * t);
0806     result += 2.745e-08 * std::cos(0.93466065396 + 5760.4984318976 * t);
0807     result += 3.25e-08 * std::cos(3.39954640038 + 7632.9432596502 * t);
0808     result += 2.277e-08 * std::cos(5.00277837672 + 17789.845619785 * t);
0809     result += 2.075e-08 * std::cos(3.95534978634 + 10213.285546211 * t);
0810     result += 2.061e-08 * std::cos(2.22411683077 + 5856.4776591154 * t);
0811     result += 2.252e-08 * std::cos(5.67166499885 + 11499.6562227928 * t);
0812     result += 2.148e-08 * std::cos(5.20184578235 + 11513.8833167944 * t);
0813     result += 1.886e-08 * std::cos(0.53198320577 + 3340.6124266998 * t);
0814     result += 1.875e-08 * std::cos(4.73511970207 + 83996.8473181119 * t);
0815     result += 2.06e-08 * std::cos(2.54987293999 + 25132.3033999656 * t);
0816     result += 1.794e-08 * std::cos(1.47435409831 + 4164.311989613 * t);
0817     result += 1.778e-08 * std::cos(3.02473091781 + 5.5229243074 * t);
0818     result += 2.029e-08 * std::cos(0.90960209983 + 6256.7775301916 * t);
0819     result += 2.075e-08 * std::cos(2.26767270157 + 522.5774180938 * t);
0820     result += 1.772e-08 * std::cos(3.02622802353 + 5753.3848848968 * t);
0821     result += 1.569e-08 * std::cos(6.12410242782 + 5216.5803728014 * t);
0822     result += 1.59e-08 * std::cos(4.63713748247 + 3.2863574178 * t);
0823     result += 1.542e-08 * std::cos(4.20004448567 + 13367.9726311066 * t);
0824     result += 1.427e-08 * std::cos(1.19088061711 + 3894.1818295422 * t);
0825     result += 1.375e-08 * std::cos(3.09301252193 + 135.0650800354 * t);
0826     result += 1.359e-08 * std::cos(4.24532506641 + 426.598190876 * t);
0827     result += 1.34e-08 * std::cos(5.76511818622 + 6040.3472460174 * t);
0828     result += 1.284e-08 * std::cos(3.08524663344 + 5643.1785636774 * t);
0829     result += 1.25e-08 * std::cos(3.07748157144 + 11926.2544136688 * t);
0830     result += 1.551e-08 * std::cos(3.07665451458 + 6681.2248533996 * t);
0831     result += 1.268e-08 * std::cos(2.09196018331 + 6290.1893969922 * t);
0832     result += 1.144e-08 * std::cos(3.24444699514 + 12168.0026965746 * t);
0833     result += 1.248e-08 * std::cos(3.44504937285 + 536.8045120954 * t);
0834     result += 1.118e-08 * std::cos(2.31829670425 + 16730.4636895958 * t);
0835     result += 1.105e-08 * std::cos(5.31966001019 + 23.8784377478 * t);
0836     result += 1.051e-08 * std::cos(3.75015946014 + 7860.4193924392 * t);
0837     result += 1.025e-08 * std::cos(2.44688534235 + 1990.745017041 * t);
0838     result += 9.62e-09 * std::cos(0.81771017882 + 3.881335358 * t);
0839     result += 9.1e-09 * std::cos(0.41727865299 + 7079.3738568078 * t);
0840     result += 8.83e-09 * std::cos(5.16833917651 + 11790.6290886588 * t);
0841     result += 9.57e-09 * std::cos(4.07673573735 + 6127.6554505572 * t);
0842     result += 1.11e-08 * std::cos(3.90096793825 + 11506.7697697936 * t);
0843     result += 8.02e-09 * std::cos(3.88778875582 + 10973.55568635 * t);
0844     result += 7.8e-09 * std::cos(2.39934293755 + 1589.0728952838 * t);
0845     result += 7.58e-09 * std::cos(1.30034364248 + 103.0927742186 * t);
0846     result += 7.49e-09 * std::cos(4.962758033 + 6496.3749454294 * t);
0847     result += 7.65e-09 * std::cos(3.36312388424 + 36.0278666774 * t);
0848     result += 9.15e-09 * std::cos(5.41543742089 + 206.1855484372 * t);
0849     result += 7.76e-09 * std::cos(2.57589093871 + 11371.7046897582 * t);
0850     result += 7.72e-09 * std::cos(3.98369209464 + 955.5997416086 * t);
0851     result += 7.49e-09 * std::cos(5.17890001805 + 10969.9652576982 * t);
0852     result += 8.06e-09 * std::cos(0.34218864254 + 9917.6968745098 * t);
0853     result += 7.28e-09 * std::cos(5.20962563787 + 38.0276726358 * t);
0854     result += 6.85e-09 * std::cos(2.77592961854 + 20.7753954924 * t);
0855     result += 6.36e-09 * std::cos(4.28242193632 + 28.4491874678 * t);
0856     result += 6.08e-09 * std::cos(5.63278508906 + 10984.1923516998 * t);
0857     result += 7.04e-09 * std::cos(5.60738823665 + 3738.761430108 * t);
0858     result += 6.85e-09 * std::cos(0.38876148682 + 15.252471185 * t);
0859     result += 6.01e-09 * std::cos(0.73489602442 + 419.4846438752 * t);
0860     result += 7.16e-09 * std::cos(2.65279791438 + 6309.3741697912 * t);
0861     result += 5.84e-09 * std::cos(5.54502568227 + 17298.1823273262 * t);
0862     result += 6.5e-09 * std::cos(1.13379656406 + 7058.5984613154 * t);
0863     result += 6.88e-09 * std::cos(2.59683891779 + 3496.032826134 * t);
0864     result += 4.85e-09 * std::cos(0.44467180946 + 12352.8526045448 * t);
0865     result += 5.28e-09 * std::cos(2.74936967681 + 3930.2096962196 * t);
0866     result += 5.97e-09 * std::cos(5.27668281777 + 10575.4066829418 * t);
0867     result += 5.83e-09 * std::cos(3.1892906781 + 4732.0306273434 * t);
0868     result += 5.26e-09 * std::cos(5.01697321546 + 5884.9268465832 * t);
0869     result += 5.4e-09 * std::cos(1.29175137075 + 640.8776073822 * t);
0870     result += 4.73e-09 * std::cos(5.4995330697 + 5230.807466803 * t);
0871     result += 4.06e-09 * std::cos(5.21248452189 + 220.4126424388 * t);
0872     result += 3.95e-09 * std::cos(1.87474483222 + 16200.7727245012 * t);
0873     result += 3.7e-09 * std::cos(3.84921354713 + 18073.7049386502 * t);
0874     result += 3.67e-09 * std::cos(0.88533542778 + 6283.14316029419 * t);
0875     result += 3.79e-09 * std::cos(0.37983009325 + 10177.2576795336 * t);
0876     result += 3.56e-09 * std::cos(3.84145204913 + 11712.9553182308 * t);
0877     result += 3.74e-09 * std::cos(5.01577520608 + 7.046236698 * t);
0878     result += 3.81e-09 * std::cos(4.30250406634 + 6062.6632075526 * t);
0879     result += 4.71e-09 * std::cos(0.86381834647 + 6069.7767545534 * t);
0880     result += 3.67e-09 * std::cos(1.32943839763 + 6283.0085396886 * t);
0881     result += 4.6e-09 * std::cos(5.19667219575 + 6284.0561710596 * t);
0882     result += 3.33e-09 * std::cos(5.54256205741 + 4686.8894077068 * t);
0883     result += 3.41e-09 * std::cos(4.36522989934 + 7238.6755916 * t);
0884     result += 3.36e-09 * std::cos(4.00205876835 + 3097.88382272579 * t);
0885     result += 3.59e-09 * std::cos(6.22679790284 + 245.8316462294 * t);
0886     result += 3.07e-09 * std::cos(2.35299010924 + 170.6728706192 * t);
0887     result += 3.43e-09 * std::cos(3.77164927143 + 6076.8903015542 * t);
0888     result += 2.96e-09 * std::cos(5.44152227481 + 17260.1546546904 * t);
0889     result += 3.28e-09 * std::cos(0.13837875384 + 11015.1064773348 * t);
0890     result += 2.68e-09 * std::cos(1.1390455063 + 12569.6748183318 * t);
0891     result += 2.63e-09 * std::cos(0.00538633678 + 4136.9104335162 * t);
0892     result += 2.82e-09 * std::cos(5.0439983748 + 7477.522860216 * t);
0893     result += 2.88e-09 * std::cos(3.13401177517 + 12559.038152982 * t);
0894     result += 2.59e-09 * std::cos(0.93882269387 + 5642.1982426092 * t);
0895     result += 2.92e-09 * std::cos(1.98420020514 + 12132.439962106 * t);
0896     result += 2.47e-09 * std::cos(3.84244798532 + 5429.8794682394 * t);
0897     result += 2.45e-09 * std::cos(5.70467521726 + 65147.6197681377 * t);
0898     result += 2.41e-09 * std::cos(0.99480969552 + 3634.6210245184 * t);
0899     result += 2.46e-09 * std::cos(3.06168069935 + 110.2063212194 * t);
0900     result += 2.39e-09 * std::cos(6.11855909114 + 11856.2186514245 * t);
0901     result += 2.63e-09 * std::cos(0.66348415419 + 21228.3920235458 * t);
0902     result += 2.62e-09 * std::cos(1.51070507866 + 12146.6670561076 * t);
0903     result += 2.3e-09 * std::cos(1.75927314884 + 9779.1086761254 * t);
0904     result += 2.23e-09 * std::cos(2.00967043606 + 6172.869528772 * t);
0905     result += 2.46e-09 * std::cos(1.10411690865 + 6282.0955289232 * t);
0906     result += 2.21e-09 * std::cos(3.03945240854 + 8635.9420037632 * t);
0907     result += 2.14e-09 * std::cos(4.03840869663 + 14314.1681130498 * t);
0908     result += 2.36e-09 * std::cos(5.4691507058 + 13916.0191096416 * t);
0909     result += 2.24e-09 * std::cos(4.68408089456 + 24072.9214697764 * t);
0910     result += 2.12e-09 * std::cos(2.13695625494 + 5849.3641121146 * t);
0911     result += 2.07e-09 * std::cos(3.07724246401 + 11.729352836 * t);
0912     result += 2.07e-09 * std::cos(6.10306282747 + 23543.2305046818 * t);
0913     result += 2.66e-09 * std::cos(1.00709566823 + 2388.8940204492 * t);
0914     result += 2.17e-09 * std::cos(6.27837036335 + 17267.2682016912 * t);
0915     result += 2.04e-09 * std::cos(2.34615348695 + 266.6070417218 * t);
0916     result += 1.95e-09 * std::cos(5.55015549753 + 6133.5126528568 * t);
0917     result += 1.88e-09 * std::cos(2.52667166175 + 6525.8044539654 * t);
0918     result += 1.85e-09 * std::cos(0.90960768344 + 18319.5365848796 * t);
0919     result += 1.77e-09 * std::cos(1.73429218289 + 154717.609887683 * t);
0920     result += 1.87e-09 * std::cos(4.76483647432 + 4535.0594369244 * t);
0921     result += 1.86e-09 * std::cos(4.63080493407 + 10440.2742926036 * t);
0922     result += 2.15e-09 * std::cos(2.8125545456 + 7342.4577801806 * t);
0923     result += 1.72e-09 * std::cos(1.45551888559 + 9225.539273283 * t);
0924     result += 1.62e-09 * std::cos(3.30661909388 + 639.897286314 * t);
0925     result += 1.68e-09 * std::cos(2.17671416605 + 27.4015560968 * t);
0926     result += 1.6e-09 * std::cos(1.68164180475 + 15110.4661198662 * t);
0927     result += 1.58e-09 * std::cos(0.13519771874 + 13095.8426650774 * t);
0928     result += 1.83e-09 * std::cos(0.56281322071 + 13517.8701062334 * t);
0929     result += 1.79e-09 * std::cos(3.58450811616 + 87.30820453981 * t);
0930     result += 1.52e-09 * std::cos(2.84070476818 + 5650.2921106782 * t);
0931     result += 1.82e-09 * std::cos(0.44065530624 + 17253.0411076896 * t);
0932     result += 1.6e-09 * std::cos(5.95767264171 + 4701.1165017084 * t);
0933     result += 1.42e-09 * std::cos(1.4629013752 + 11087.2851259184 * t);
0934     result += 1.42e-09 * std::cos(2.04464036087 + 20426.571092422 * t);
0935     result += 1.31e-09 * std::cos(5.40912137746 + 2699.7348193176 * t);
0936     result += 1.44e-09 * std::cos(2.07312090485 + 25158.6017197654 * t);
0937     result += 1.47e-09 * std::cos(6.15106982168 + 9623.6882766912 * t);
0938     result += 1.41e-09 * std::cos(5.55739979498 + 10454.5013866052 * t);
0939     result += 1.35e-09 * std::cos(0.06098110407 + 16723.350142595 * t);
0940     result += 1.24e-09 * std::cos(5.81218025669 + 17256.6315363414 * t);
0941     result += 1.24e-09 * std::cos(2.36293551623 + 4933.2084403326 * t);
0942     result += 1.26e-09 * std::cos(3.47435905118 + 22483.8485744926 * t);
0943     result += 1.59e-09 * std::cos(5.63954754618 + 5729.506447149 * t);
0944     result += 1.23e-09 * std::cos(3.92815963256 + 17996.0311682222 * t);
0945     result += 1.48e-09 * std::cos(3.02509280598 + 1551.045222648 * t);
0946     result += 1.2e-09 * std::cos(5.91904349732 + 6206.8097787158 * t);
0947     result += 1.34e-09 * std::cos(3.11122937825 + 21954.157609398 * t);
0948     result += 1.19e-09 * std::cos(5.5214112345 + 709.9330485583 * t);
0949     result += 1.22e-09 * std::cos(3.00813429479 + 19800.9459562248 * t);
0950     result += 1.27e-09 * std::cos(1.37618620001 + 14945.3161735544 * t);
0951     result += 1.41e-09 * std::cos(2.56889468729 + 1052.2683831884 * t);
0952     result += 1.23e-09 * std::cos(2.83671175442 + 11919.140866668 * t);
0953     result += 1.18e-09 * std::cos(0.81934438215 + 5331.3574437408 * t);
0954     result += 1.51e-09 * std::cos(2.68731829165 + 11769.8536931664 * t);
0955     result += 1.19e-09 * std::cos(5.08835797638 + 5481.2549188676 * t);
0956     result += 1.53e-09 * std::cos(2.46021790779 + 11933.3679606696 * t);
0957     result += 1.08e-09 * std::cos(1.04936452145 + 11403.676995575 * t);
0958     result += 1.28e-09 * std::cos(0.99794735107 + 8827.3902698748 * t);
0959     result += 1.44e-09 * std::cos(2.54869747042 + 227.476132789 * t);
0960     result += 1.5e-09 * std::cos(4.50631437136 + 2379.1644735716 * t);
0961     result += 1.07e-09 * std::cos(1.79272017026 + 13119.7211028252 * t);
0962     result += 1.07e-09 * std::cos(4.43556814486 + 18422.6293590982 * t);
0963     result += 1.09e-09 * std::cos(0.29269062317 + 16737.5772365966 * t);
0964     result += 1.41e-09 * std::cos(3.18979826258 + 6262.300454499 * t);
0965     result += 1.22e-09 * std::cos(4.23040027813 + 29.429508536 * t);
0966     result += 1.11e-09 * std::cos(5.16954029551 + 17782.7320727842 * t);
0967     result += 1e-09 * std::cos(3.52213872761 + 18052.9295431578 * t);
0968     result += 1.08e-09 * std::cos(1.08514212991 + 16858.4825329332 * t);
0969     result += 1.06e-09 * std::cos(1.9608524841 + 74.7815985673 * t);
0970     result += 1.1e-09 * std::cos(2.30582372873 + 16460.333529525 * t);
0971     result += 9.7e-10 * std::cos(3.5091894021 + 5333.9002410216 * t);
0972     result += 9.9e-10 * std::cos(3.56417337974 + 735.8765135318 * t);
0973     result += 9.4e-10 * std::cos(5.01857894228 + 3128.3887650958 * t);
0974     result += 9.7e-10 * std::cos(1.65579893894 + 533.2140834436 * t);
0975     result += 9.2e-10 * std::cos(0.89217162285 + 29296.6153895786 * t);
0976     result += 1.23e-09 * std::cos(3.16062050433 + 9380.9596727172 * t);
0977     result += 1.02e-09 * std::cos(1.20493500565 + 23020.653086588 * t);
0978     result += 8.8e-10 * std::cos(2.21296088224 + 12721.572099417 * t);
0979     result += 8.9e-10 * std::cos(1.5426472031 + 20199.094959633 * t);
0980     result += 1.13e-09 * std::cos(4.8332070787 + 16496.3613962024 * t);
0981     result += 1.21e-09 * std::cos(6.19860353182 + 9388.0059094152 * t);
0982     result += 8.9e-10 * std::cos(4.08082274765 + 22805.7355659936 * t);
0983     result += 9.8e-10 * std::cos(1.0918183283 + 12043.574281889 * t);
0984     result += 8.6e-10 * std::cos(1.13655027605 + 143571.324284816 * t);
0985     result += 8.8e-10 * std::cos(5.96980472191 + 107.6635239386 * t);
0986     result += 8.2e-10 * std::cos(5.01340404594 + 22003.9146348698 * t);
0987     result += 9.4e-10 * std::cos(1.69615700473 + 23006.4259925864 * t);
0988     result += 8.1e-10 * std::cos(3.00657814365 + 2118.7638603784 * t);
0989     result += 9.8e-10 * std::cos(1.39215287161 + 8662.240323563 * t);
0990     result += 7.7e-10 * std::cos(3.3355519084 + 15720.8387848784 * t);
0991     result += 8.2e-10 * std::cos(5.86880116464 + 2787.0430238574 * t);
0992     result += 7.6e-10 * std::cos(5.67183650604 + 14.2270940016 * t);
0993     result += 8.1e-10 * std::cos(6.16619455699 + 1039.0266107904 * t);
0994     result += 7.6e-10 * std::cos(3.21449884756 + 111.1866422876 * t);
0995     result += 7.8e-10 * std::cos(1.37531518377 + 21947.1113727 * t);
0996     result += 7.4e-10 * std::cos(3.58814195051 + 11609.8625440122 * t);
0997     result += 7.7e-10 * std::cos(4.84846488388 + 22743.4093795164 * t);
0998     result += 9e-10 * std::cos(1.48869013606 + 15671.0817594066 * t);
0999     result += 8.2e-10 * std::cos(3.48618399109 + 29088.811415985 * t);
1000     result += 6.9e-10 * std::cos(3.55746476593 + 4590.910180489 * t);
1001     result += 6.9e-10 * std::cos(1.93625656075 + 135.62532501 * t);
1002     result += 7e-10 * std::cos(2.66548322237 + 18875.525869774 * t);
1003     result += 6.9e-10 * std::cos(5.41478093731 + 26735.9452622132 * t);
1004     result += 7.9e-10 * std::cos(5.15154513662 + 12323.4230960088 * t);
1005     result += 9.4e-10 * std::cos(3.62899392448 + 77713.7714681205 * t);
1006     result += 7.8e-10 * std::cos(4.17011182047 + 1066.49547719 * t);
1007     result += 7.1e-10 * std::cos(3.89435637865 + 22779.4372461938 * t);
1008     result += 6.3e-10 * std::cos(4.53968787714 + 8982.810669309 * t);
1009     result += 6.9e-10 * std::cos(0.96028230548 + 14919.0178537546 * t);
1010     result += 7.6e-10 * std::cos(3.29092216589 + 2942.4634232916 * t);
1011     result += 6.3e-10 * std::cos(4.09167842893 + 16062.1845261168 * t);
1012     result += 6.5e-10 * std::cos(3.34580407184 + 51.28033786241 * t);
1013     result += 6.5e-10 * std::cos(5.75757544877 + 52670.0695933026 * t);
1014     result += 6.8e-10 * std::cos(5.75884067555 + 21424.4666443034 * t);
1015     result += 5.7e-10 * std::cos(5.4512239985 + 12592.4500197826 * t);
1016     result += 5.7e-10 * std::cos(5.25043362558 + 20995.3929664494 * t);
1017     result += 7.3e-10 * std::cos(0.53299090807 + 2301.58581590939 * t);
1018     result += 7e-10 * std::cos(4.31243357502 + 19402.7969528166 * t);
1019     result += 6.7e-10 * std::cos(2.53852336668 + 377.3736079158 * t);
1020     result += 5.6e-10 * std::cos(3.20816844695 + 24889.5747959916 * t);
1021     result += 5.3e-10 * std::cos(3.17816599142 + 18451.078546566 * t);
1022     result += 5.3e-10 * std::cos(3.61529270216 + 77.673770428 * t);
1023     result += 5.3e-10 * std::cos(0.45467549335 + 30666.1549584328 * t);
1024     result += 6.1e-10 * std::cos(0.14807288453 + 23013.5395395872 * t);
1025     result += 5.1e-10 * std::cos(3.32803972907 + 56.8983749356 * t);
1026     result += 5.2e-10 * std::cos(3.41177624177 + 23141.5583829246 * t);
1027     result += 5.8e-10 * std::cos(3.13638677202 + 309.2783226558 * t);
1028     result += 7e-10 * std::cos(2.50592323465 + 31415.379249957 * t);
1029     result += 5.2e-10 * std::cos(5.10673376738 + 17796.9591667858 * t);
1030     result += 6.7e-10 * std::cos(6.27917920454 + 22345.2603761082 * t);
1031     result += 5e-10 * std::cos(0.42577644151 + 25685.872802808 * t);
1032     result += 4.8e-10 * std::cos(0.70204553333 + 1162.4747044078 * t);
1033     result += 6.6e-10 * std::cos(3.64350022359 + 15265.8865193004 * t);
1034     result += 5e-10 * std::cos(5.7438291744 + 19.66976089979 * t);
1035     result += 5e-10 * std::cos(4.69825387775 + 28237.2334593894 * t);
1036     result += 4.7e-10 * std::cos(5.74015846442 + 12139.5535091068 * t);
1037     result += 5.4e-10 * std::cos(1.97301333704 + 23581.2581773176 * t);
1038     result += 4.9e-10 * std::cos(4.98223579027 + 10021.8372800994 * t);
1039     result += 4.6e-10 * std::cos(5.41431705539 + 33019.0211122046 * t);
1040     result += 5.1e-10 * std::cos(1.23882053879 + 12539.853380183 * t);
1041     result += 4.6e-10 * std::cos(2.41369976086 + 98068.5367163054 * t);
1042     result += 4.4e-10 * std::cos(0.80750593746 + 167283.761587666 * t);
1043     result += 4.5e-10 * std::cos(4.39613584445 + 433.7117378768 * t);
1044     result += 4.4e-10 * std::cos(2.57358208785 + 12964.300703391 * t);
1045     result += 4.6e-10 * std::cos(0.26142733448 + 11.0457002639 * t);
1046     result += 4.5e-10 * std::cos(2.46230645202 + 51868.2486621788 * t);
1047     result += 4.8e-10 * std::cos(0.89551707131 + 56600.2792895222 * t);
1048     result += 5.7e-10 * std::cos(1.8641670701 + 25287.7237993998 * t);
1049     result += 4.2e-10 * std::cos(5.26377513431 + 26084.0218062162 * t);
1050     result += 4.9e-10 * std::cos(3.17757670611 + 6303.8512454838 * t);
1051     result += 5.2e-10 * std::cos(3.65266055509 + 7872.1487452752 * t);
1052     result += 4e-10 * std::cos(1.81891629936 + 34596.3646546524 * t);
1053     result += 4.3e-10 * std::cos(1.94164978061 + 1903.4368125012 * t);
1054     result += 4.1e-10 * std::cos(0.74461854136 + 23937.856389741 * t);
1055     result += 4.8e-10 * std::cos(6.26034008181 + 28286.9904848612 * t);
1056     result += 4.5e-10 * std::cos(5.4557501753 + 60530.4889857418 * t);
1057     result += 4e-10 * std::cos(2.92105728682 + 21548.9623692918 * t);
1058     result += 4e-10 * std::cos(0.04502010161 + 38526.574350872 * t);
1059     result += 5.3e-10 * std::cos(3.64791042082 + 11925.2740926006 * t);
1060     result += 4.1e-10 * std::cos(5.04048954693 + 27832.0382192832 * t);
1061     result += 4.2e-10 * std::cos(5.19292937193 + 19004.6479494084 * t);
1062     result += 4e-10 * std::cos(2.57120233428 + 24356.7807886416 * t);
1063     result += 3.8e-10 * std::cos(3.49190341464 + 226858.23855437 * t);
1064     result += 3.9e-10 * std::cos(4.61184303844 + 95.9792272178 * t);
1065     result += 4.3e-10 * std::cos(2.20648228147 + 13521.7514415914 * t);
1066     result += 4e-10 * std::cos(5.83461945819 + 16193.6591775004 * t);
1067     result += 4.5e-10 * std::cos(3.73714372195 + 7875.6718636242 * t);
1068     result += 4.3e-10 * std::cos(1.14078465002 + 49.7570254718 * t);
1069     result += 3.7e-10 * std::cos(1.29390383811 + 310.8407988684 * t);
1070     result += 3.8e-10 * std::cos(0.9597092595 + 664.75604513 * t);
1071     result += 3.7e-10 * std::cos(4.27532649462 + 6709.6740408674 * t);
1072     result += 3.8e-10 * std::cos(2.20108541046 + 28628.3362260996 * t);
1073     result += 3.9e-10 * std::cos(0.85957361635 + 16522.6597160022 * t);
1074     result += 4e-10 * std::cos(4.35214003837 + 48739.859897083 * t);
1075     result += 3.6e-10 * std::cos(1.68167662194 + 10344.2950653858 * t);
1076     result += 4e-10 * std::cos(5.13217319067 + 15664.0355227086 * t);
1077     result += 3.6e-10 * std::cos(3.72187132496 + 30774.5016425748 * t);
1078     result += 3.6e-10 * std::cos(3.32158458257 + 16207.886271502 * t);
1079     result += 4.5e-10 * std::cos(3.94202418608 + 10988.808157535 * t);
1080     result += 3.9e-10 * std::cos(1.51948786199 + 12029.3471878874 * t);
1081     result += 2.6e-10 * std::cos(3.8768588318 + 6262.7205305926 * t);
1082     result += 2.4e-10 * std::cos(4.91804163466 + 19651.048481098 * t);
1083     result += 2.3e-10 * std::cos(0.29300197709 + 13362.4497067992 * t);
1084     result += 2.1e-10 * std::cos(3.18605672363 + 6277.552925684 * t);
1085     result += 2.1e-10 * std::cos(6.07546891132 + 18139.2945014159 * t);
1086     result += 2.2e-10 * std::cos(2.31199937177 + 6303.4311693902 * t);
1087     result += 2.1e-10 * std::cos(3.58418394393 + 18209.3302636602 * t);
1088     result += 2.6e-10 * std::cos(2.068012969 + 12573.2652469836 * t);
1089     result += 2.1e-10 * std::cos(1.56857722317 + 13341.6743113068 * t);
1090     result += 2.4e-10 * std::cos(5.72605158675 + 29864.334027309 * t);
1091     result += 2.4e-10 * std::cos(1.40237993205 + 14712.317116458 * t);
1092     result += 2.5e-10 * std::cos(5.71466092822 + 25934.1243310894 * t);
1093     return result;
1094 }
1095 
1096 constexpr double getEarthL2(double t)
1097 {
1098     double result = 0.0;
1099     result += 0.0005291887;
1100     result += 8.719837e-05 * std::cos(1.07209665242 + 6283.0758499914 * t);
1101     result += 3.09125e-06 * std::cos(0.86728818832 + 12566.1516999828 * t);
1102     result += 2.7339e-07 * std::cos(0.05297871691 + 3.523118349 * t);
1103     result += 1.6334e-07 * std::cos(5.18826691036 + 26.2983197998 * t);
1104     result += 1.5752e-07 * std::cos(3.6845788943 + 155.4203994342 * t);
1105     result += 9.541e-08 * std::cos(0.75742297675 + 18849.2275499742 * t);
1106     result += 8.937e-08 * std::cos(2.05705419118 + 77713.7714681205 * t);
1107     result += 6.952e-08 * std::cos(0.8267330541 + 775.522611324 * t);
1108     result += 5.064e-08 * std::cos(4.66284525271 + 1577.3435424478 * t);
1109     result += 4.061e-08 * std::cos(1.03057162962 + 7.1135470008 * t);
1110     result += 3.463e-08 * std::cos(5.14074632811 + 796.2980068164 * t);
1111     result += 3.169e-08 * std::cos(6.05291851171 + 5507.5532386674 * t);
1112     result += 3.02e-08 * std::cos(1.19246506441 + 242.728603974 * t);
1113     result += 2.886e-08 * std::cos(6.11652627155 + 529.6909650946 * t);
1114     result += 3.81e-08 * std::cos(3.4405080349 + 5573.1428014331 * t);
1115     result += 2.714e-08 * std::cos(0.30637881025 + 398.1490034082 * t);
1116     result += 2.371e-08 * std::cos(4.38118838167 + 5223.6939198022 * t);
1117     result += 2.538e-08 * std::cos(2.27992810679 + 553.5694028424 * t);
1118     result += 2.079e-08 * std::cos(3.75435330484 + 0.9803210682 * t);
1119     result += 1.675e-08 * std::cos(0.90216407959 + 951.7184062506 * t);
1120     result += 1.534e-08 * std::cos(5.75900462759 + 1349.8674096588 * t);
1121     result += 1.224e-08 * std::cos(2.97328088405 + 2146.1654164752 * t);
1122     result += 1.449e-08 * std::cos(4.3641591397 + 1748.016413067 * t);
1123     result += 1.341e-08 * std::cos(3.72061130861 + 1194.4470102246 * t);
1124     result += 1.254e-08 * std::cos(2.94846826628 + 6438.4962494256 * t);
1125     result += 9.99e-09 * std::cos(5.98640014468 + 6286.5989683404 * t);
1126     result += 9.17e-09 * std::cos(4.79788687522 + 5088.6288397668 * t);
1127     result += 8.28e-09 * std::cos(3.31321076572 + 213.299095438 * t);
1128     result += 1.103e-08 * std::cos(1.27104454479 + 161000.685737674 * t);
1129     result += 7.62e-09 * std::cos(3.41582762988 + 5486.777843175 * t);
1130     result += 1.044e-08 * std::cos(0.60409577691 + 3154.6870848956 * t);
1131     result += 8.87e-09 * std::cos(5.23465144638 + 7084.8967811152 * t);
1132     result += 6.45e-09 * std::cos(1.60096192515 + 2544.3144198834 * t);
1133     result += 6.81e-09 * std::cos(3.43155669169 + 4694.0029547076 * t);
1134     result += 6.05e-09 * std::cos(2.47806340546 + 10977.078804699 * t);
1135     result += 7.06e-09 * std::cos(6.19393222575 + 4690.4798363586 * t);
1136     result += 6.43e-09 * std::cos(1.98042503148 + 801.8209311238 * t);
1137     result += 5.02e-09 * std::cos(1.44394375363 + 6836.6452528338 * t);
1138     result += 4.9e-09 * std::cos(2.34129524194 + 1592.5960136328 * t);
1139     result += 4.58e-09 * std::cos(1.30876448575 + 4292.3308329504 * t);
1140     result += 4.31e-09 * std::cos(0.03526421494 + 7234.794256242 * t);
1141     result += 3.79e-09 * std::cos(3.17030522615 + 6309.3741697912 * t);
1142     result += 3.48e-09 * std::cos(0.99049550009 + 6040.3472460174 * t);
1143     result += 3.86e-09 * std::cos(1.57019797263 + 71430.6956181291 * t);
1144     result += 3.47e-09 * std::cos(0.67013291338 + 1059.3819301892 * t);
1145     result += 4.58e-09 * std::cos(3.81499443681 + 149854.400134808 * t);
1146     result += 3.02e-09 * std::cos(1.91760044838 + 10447.3878396044 * t);
1147     result += 3.07e-09 * std::cos(3.55343347416 + 8031.0922630584 * t);
1148     result += 3.95e-09 * std::cos(4.93701776616 + 7632.9432596502 * t);
1149     result += 3.14e-09 * std::cos(3.18093696547 + 2352.8661537718 * t);
1150     result += 2.82e-09 * std::cos(4.41936437052 + 9437.762934887 * t);
1151     result += 2.76e-09 * std::cos(2.71314254553 + 3894.1818295422 * t);
1152     result += 2.98e-09 * std::cos(2.5203747421 + 6127.6554505572 * t);
1153     result += 2.3e-09 * std::cos(1.37790215549 + 4705.7323075436 * t);
1154     result += 2.52e-09 * std::cos(0.55330133471 + 6279.5527316424 * t);
1155     result += 2.55e-09 * std::cos(5.26570187369 + 6812.766815086 * t);
1156     result += 2.75e-09 * std::cos(0.67264264272 + 25132.3033999656 * t);
1157     result += 1.78e-09 * std::cos(0.92820785174 + 1990.745017041 * t);
1158     result += 2.21e-09 * std::cos(0.63897368842 + 6256.7775301916 * t);
1159     result += 1.55e-09 * std::cos(0.77319790838 + 14143.4952424306 * t);
1160     result += 1.5e-09 * std::cos(2.40470465561 + 426.598190876 * t);
1161     result += 1.96e-09 * std::cos(6.06877865012 + 640.8776073822 * t);
1162     result += 1.37e-09 * std::cos(2.21679460145 + 8429.2412664666 * t);
1163     result += 1.27e-09 * std::cos(3.26094223174 + 17789.845619785 * t);
1164     result += 1.28e-09 * std::cos(5.47237279946 + 12036.4607348882 * t);
1165     result += 1.22e-09 * std::cos(2.16291082757 + 10213.285546211 * t);
1166     result += 1.18e-09 * std::cos(0.45789822268 + 7058.5984613154 * t);
1167     result += 1.41e-09 * std::cos(2.34932647403 + 11506.7697697936 * t);
1168     result += 1e-09 * std::cos(0.85621569847 + 6290.1893969922 * t);
1169     result += 9.2e-10 * std::cos(5.10587476002 + 7079.3738568078 * t);
1170     result += 1.26e-09 * std::cos(2.65428307012 + 88860.0570709867 * t);
1171     result += 1.06e-09 * std::cos(5.85646710022 + 7860.4193924392 * t);
1172     result += 8.4e-10 * std::cos(3.57457554262 + 16730.4636895958 * t);
1173     result += 8.9e-10 * std::cos(4.21433259618 + 83996.8473181119 * t);
1174     result += 9.7e-10 * std::cos(5.57938280855 + 13367.9726311066 * t);
1175     result += 1.02e-09 * std::cos(2.05853060226 + 87.30820453981 * t);
1176     result += 8e-10 * std::cos(4.73792651816 + 11926.2544136688 * t);
1177     result += 8e-10 * std::cos(5.41418965044 + 10973.55568635 * t);
1178     result += 1.06e-09 * std::cos(4.10978997399 + 3496.032826134 * t);
1179     result += 1.02e-09 * std::cos(3.62650006043 + 244287.600007228 * t);
1180     result += 7.5e-10 * std::cos(4.89483161769 + 5643.1785636774 * t);
1181     result += 8.7e-10 * std::cos(0.42863750683 + 11015.1064773348 * t);
1182     result += 6.9e-10 * std::cos(1.8890876072 + 10177.2576795336 * t);
1183     result += 8.9e-10 * std::cos(1.35567273119 + 6681.2248533996 * t);
1184     result += 6.6e-10 * std::cos(0.99455837265 + 6525.8044539654 * t);
1185     result += 6.7e-10 * std::cos(5.5124099707 + 3097.88382272579 * t);
1186     result += 7.6e-10 * std::cos(2.72016814799 + 4164.311989613 * t);
1187     result += 6.3e-10 * std::cos(1.4434990254 + 9917.6968745098 * t);
1188     result += 7.8e-10 * std::cos(3.51469733747 + 11856.2186514245 * t);
1189     result += 8.5e-10 * std::cos(0.50956043858 + 10575.4066829418 * t);
1190     result += 6.7e-10 * std::cos(3.62043033405 + 16496.3613962024 * t);
1191     result += 5.5e-10 * std::cos(5.24637517308 + 3340.6124266998 * t);
1192     result += 4.8e-10 * std::cos(5.43966777314 + 20426.571092422 * t);
1193     result += 6.4e-10 * std::cos(5.79535817813 + 2388.8940204492 * t);
1194     result += 4.6e-10 * std::cos(5.43499966519 + 6275.9623029906 * t);
1195     result += 5e-10 * std::cos(3.86263598617 + 5729.506447149 * t);
1196     result += 4.4e-10 * std::cos(1.52269529228 + 12168.0026965746 * t);
1197     result += 5.7e-10 * std::cos(4.96352373486 + 14945.3161735544 * t);
1198     result += 4.5e-10 * std::cos(1.0086123016 + 8635.9420037632 * t);
1199     result += 4.3e-10 * std::cos(3.30685683359 + 9779.1086761254 * t);
1200     result += 4.2e-10 * std::cos(0.6348125893 + 2699.7348193176 * t);
1201     result += 4.1e-10 * std::cos(5.67996766641 + 11712.9553182308 * t);
1202     result += 5.6e-10 * std::cos(4.34024451468 + 90955.5516944961 * t);
1203     result += 4.1e-10 * std::cos(5.81722212845 + 709.9330485583 * t);
1204     result += 5.3e-10 * std::cos(6.17052087143 + 233141.314404362 * t);
1205     result += 3.7e-10 * std::cos(3.12495025087 + 16200.7727245012 * t);
1206     result += 3.5e-10 * std::cos(5.76973458495 + 12569.6748183318 * t);
1207     result += 3.7e-10 * std::cos(0.31656444326 + 24356.7807886416 * t);
1208     result += 3.5e-10 * std::cos(0.96229051027 + 17298.1823273262 * t);
1209     result += 3.3e-10 * std::cos(5.23130355867 + 5331.3574437408 * t);
1210     result += 3.5e-10 * std::cos(0.62517020593 + 25158.6017197654 * t);
1211     result += 3.5e-10 * std::cos(0.80004512129 + 13916.0191096416 * t);
1212     result += 3.7e-10 * std::cos(2.89336088688 + 12721.572099417 * t);
1213     result += 3e-10 * std::cos(4.50198402401 + 23543.2305046818 * t);
1214     result += 3e-10 * std::cos(5.31355708693 + 18319.5365848796 * t);
1215     result += 2.9e-10 * std::cos(3.47275229977 + 13119.7211028252 * t);
1216     result += 2.9e-10 * std::cos(3.11002782516 + 4136.9104335162 * t);
1217     result += 3.2e-10 * std::cos(5.52273255667 + 5753.3848848968 * t);
1218     result += 3.5e-10 * std::cos(3.7969999668 + 143571.324284816 * t);
1219     result += 2.6e-10 * std::cos(1.50634201907 + 154717.609887683 * t);
1220     result += 3e-10 * std::cos(3.53519084118 + 6284.0561710596 * t);
1221     result += 2.3e-10 * std::cos(4.41808025967 + 5884.9268465832 * t);
1222     result += 2.5e-10 * std::cos(1.38477355808 + 65147.6197681377 * t);
1223     result += 2.3e-10 * std::cos(3.49782549797 + 7477.522860216 * t);
1224     result += 1.9e-10 * std::cos(3.14329413716 + 6496.3749454294 * t);
1225     result += 1.9e-10 * std::cos(2.20135125199 + 18073.7049386502 * t);
1226     result += 1.9e-10 * std::cos(4.95020255309 + 3930.2096962196 * t);
1227     result += 1.9e-10 * std::cos(0.57998702747 + 31415.379249957 * t);
1228     result += 2.1e-10 * std::cos(1.75474323399 + 12139.5535091068 * t);
1229     result += 1.9e-10 * std::cos(3.92233070499 + 19651.048481098 * t);
1230     result += 1.4e-10 * std::cos(0.98131213224 + 12559.038152982 * t);
1231     result += 1.9e-10 * std::cos(4.93309333729 + 2942.4634232916 * t);
1232     result += 1.6e-10 * std::cos(5.55997534558 + 8827.3902698748 * t);
1233     result += 1.3e-10 * std::cos(1.68808165516 + 4535.0594369244 * t);
1234     result += 1.3e-10 * std::cos(0.33982116161 + 4933.2084403326 * t);
1235     result += 1.2e-10 * std::cos(1.85426309994 + 5856.4776591154 * t);
1236     result += 1e-10 * std::cos(4.82763996845 + 13095.8426650774 * t);
1237     result += 1.1e-10 * std::cos(5.38005490571 + 11790.6290886588 * t);
1238     result += 1e-10 * std::cos(1.40815507226 + 10988.808157535 * t);
1239     result += 1.1e-10 * std::cos(3.05005267431 + 17260.1546546904 * t);
1240     result += 1e-10 * std::cos(4.93364992366 + 12352.8526045448 * t);
1241     return result;
1242 }
1243 
1244 constexpr double getEarthL3(double t)
1245 {
1246     double result = 0.0;
1247     result += 2.89226e-06 * std::cos(5.84384198723 + 6283.0758499914 * t);
1248     result += 3.4955e-07;
1249     result += 1.6819e-07 * std::cos(5.48766912348 + 12566.1516999828 * t);
1250     result += 2.962e-08 * std::cos(5.19577265202 + 155.4203994342 * t);
1251     result += 1.288e-08 * std::cos(4.72200252235 + 3.523118349 * t);
1252     result += 6.35e-09 * std::cos(5.96925937141 + 242.728603974 * t);
1253     result += 7.14e-09 * std::cos(5.30045809128 + 18849.2275499742 * t);
1254     result += 4.02e-09 * std::cos(3.78682982419 + 553.5694028424 * t);
1255     result += 7.2e-10 * std::cos(4.2976812618 + 6286.5989683404 * t);
1256     result += 6.7e-10 * std::cos(0.90721687647 + 6127.6554505572 * t);
1257     result += 3.6e-10 * std::cos(5.24029648014 + 6438.4962494256 * t);
1258     result += 2.4e-10 * std::cos(5.16003960716 + 25132.3033999656 * t);
1259     result += 2.3e-10 * std::cos(3.01921570335 + 6309.3741697912 * t);
1260     result += 1.7e-10 * std::cos(5.82863573502 + 6525.8044539654 * t);
1261     result += 1.7e-10 * std::cos(3.6777286393 + 71430.6956181291 * t);
1262     result += 9e-11 * std::cos(4.58467294499 + 1577.3435424478 * t);
1263     result += 8e-11 * std::cos(1.40626662824 + 11856.2186514245 * t);
1264     result += 8e-11 * std::cos(5.07561257196 + 6256.7775301916 * t);
1265     result += 7e-11 * std::cos(2.82473374405 + 83996.8473181119 * t);
1266     result += 5e-11 * std::cos(2.71488713339 + 10977.078804699 * t);
1267     result += 5e-11 * std::cos(3.76879847273 + 12036.4607348882 * t);
1268     result += 5e-11 * std::cos(4.28412873331 + 6275.9623029906 * t);
1269     return result;
1270 }
1271 
1272 constexpr double getEarthL4(double t)
1273 {
1274     double result = 0.0;
1275     result -= -1.14084e-06;
1276     result += 7.717e-08 * std::cos(4.13446589358 + 6283.0758499914 * t);
1277     result += 7.65e-09 * std::cos(3.83803776214 + 12566.1516999828 * t);
1278     result += 4.2e-09 * std::cos(0.41925861858 + 155.4203994342 * t);
1279     result += 4e-10 * std::cos(3.5984758584 + 18849.2275499742 * t);
1280     result += 4.1e-10 * std::cos(3.14398414077 + 3.523118349 * t);
1281     result += 3.5e-10 * std::cos(5.00298940826 + 5573.1428014331 * t);
1282     result += 1.3e-10 * std::cos(0.48794833701 + 77713.7714681205 * t);
1283     result += 1e-10 * std::cos(5.6480176635 + 6127.6554505572 * t);
1284     result += 8e-11 * std::cos(2.84160570605 + 161000.685737674 * t);
1285     result += 2e-11 * std::cos(0.54912904658 + 6438.4962494256 * t);
1286     return result;
1287 }
1288 
1289 constexpr double getEarthL5(double t)
1290 {
1291     double result = 0.0;
1292     result -= -8.78e-09;
1293     result += 1.72e-09 * std::cos(2.7657906951 + 6283.0758499914 * t);
1294     result += 5e-10 * std::cos(2.01353298182 + 155.4203994342 * t);
1295     result += 2.8e-10 * std::cos(2.21496423926 + 12566.1516999828 * t);
1296     result += 5e-11 * std::cos(1.75600058765 + 18849.2275499742 * t);
1297     return result;
1298 }
1299 
1300 constexpr double getEarthB0(double t)
1301 {
1302     double result = 0.0;
1303     result += 2.7962e-06 * std::cos(3.19870156017 + 84334.6615813083 * t);
1304     result += 1.01643e-06 * std::cos(5.42248619256 + 5507.5532386674 * t);
1305     result += 8.0445e-07 * std::cos(3.88013204458 + 5223.6939198022 * t);
1306     result += 4.3806e-07 * std::cos(3.70444689758 + 2352.8661537718 * t);
1307     result += 3.1933e-07 * std::cos(4.00026369781 + 1577.3435424478 * t);
1308     result += 2.2724e-07 * std::cos(3.9847383156 + 1047.7473117547 * t);
1309     result += 1.6392e-07 * std::cos(3.56456119782 + 5856.4776591154 * t);
1310     result += 1.8141e-07 * std::cos(4.98367470263 + 6283.0758499914 * t);
1311     result += 1.4443e-07 * std::cos(3.70275614914 + 9437.762934887 * t);
1312     result += 1.4304e-07 * std::cos(3.41117857525 + 10213.285546211 * t);
1313     result += 1.1246e-07 * std::cos(4.8282069053 + 14143.4952424306 * t);
1314     result += 1.09e-07 * std::cos(2.08574562327 + 6812.766815086 * t);
1315     result += 9.714e-08 * std::cos(3.47303947752 + 4694.0029547076 * t);
1316     result += 1.0367e-07 * std::cos(4.05663927946 + 71092.8813549327 * t);
1317     result += 8.775e-08 * std::cos(4.44016515669 + 5753.3848848968 * t);
1318     result += 8.366e-08 * std::cos(4.9925151218 + 7084.8967811152 * t);
1319     result += 6.921e-08 * std::cos(4.32559054073 + 6275.9623029906 * t);
1320     result += 9.145e-08 * std::cos(1.14182646613 + 6620.8901131878 * t);
1321     result += 7.194e-08 * std::cos(3.60193205752 + 529.6909650946 * t);
1322     result += 7.698e-08 * std::cos(5.55425745881 + 167621.575850862 * t);
1323     result += 5.285e-08 * std::cos(2.48446991566 + 4705.7323075436 * t);
1324     result += 5.208e-08 * std::cos(6.24992674537 + 18073.7049386502 * t);
1325     result += 4.529e-08 * std::cos(2.33827747356 + 6309.3741697912 * t);
1326     result += 5.579e-08 * std::cos(4.41023653738 + 7860.4193924392 * t);
1327     result += 4.743e-08 * std::cos(0.70995680136 + 5884.9268465832 * t);
1328     result += 4.301e-08 * std::cos(1.10255777773 + 6681.2248533996 * t);
1329     result += 3.849e-08 * std::cos(1.82229412531 + 5486.777843175 * t);
1330     result += 4.093e-08 * std::cos(5.11700141207 + 13367.9726311066 * t);
1331     result += 3.681e-08 * std::cos(0.43793170356 + 3154.6870848956 * t);
1332     result += 3.42e-08 * std::cos(5.42034800952 + 6069.7767545534 * t);
1333     result += 3.617e-08 * std::cos(6.04641937526 + 3930.2096962196 * t);
1334     result += 3.67e-08 * std::cos(4.58210192227 + 12194.0329146209 * t);
1335     result += 2.918e-08 * std::cos(1.95463881126 + 10977.078804699 * t);
1336     result += 2.797e-08 * std::cos(5.61259275048 + 11790.6290886588 * t);
1337     result += 2.502e-08 * std::cos(0.60499729367 + 6496.3749454294 * t);
1338     result += 2.319e-08 * std::cos(5.01648216014 + 1059.3819301892 * t);
1339     result += 2.684e-08 * std::cos(1.39470396488 + 22003.9146348698 * t);
1340     result += 2.428e-08 * std::cos(3.24183056052 + 78051.5857313169 * t);
1341     result += 2.12e-08 * std::cos(4.30691000285 + 5643.1785636774 * t);
1342     result += 2.257e-08 * std::cos(3.15557225618 + 90617.7374312997 * t);
1343     result += 1.813e-08 * std::cos(3.75574218285 + 3340.6124266998 * t);
1344     result += 2.226e-08 * std::cos(2.79699346659 + 12036.4607348882 * t);
1345     result += 1.888e-08 * std::cos(0.86991545823 + 8635.9420037632 * t);
1346     result += 1.517e-08 * std::cos(1.95852055701 + 398.1490034082 * t);
1347     result += 1.581e-08 * std::cos(3.19976230948 + 5088.6288397668 * t);
1348     result += 1.421e-08 * std::cos(6.25530883827 + 2544.3144198834 * t);
1349     result += 1.595e-08 * std::cos(0.25619915135 + 17298.1823273262 * t);
1350     result += 1.391e-08 * std::cos(4.69964175561 + 7058.5984613154 * t);
1351     result += 1.478e-08 * std::cos(2.81808207569 + 25934.1243310894 * t);
1352     result += 1.481e-08 * std::cos(3.65823554806 + 11506.7697697936 * t);
1353     result += 1.693e-08 * std::cos(4.95689385293 + 156475.290247996 * t);
1354     result += 1.183e-08 * std::cos(1.29343061246 + 775.522611324 * t);
1355     result += 1.114e-08 * std::cos(2.37889311846 + 3738.761430108 * t);
1356     result += 9.94e-09 * std::cos(4.30088900425 + 9225.539273283 * t);
1357     result += 9.24e-09 * std::cos(3.06451026812 + 4164.311989613 * t);
1358     result += 8.67e-09 * std::cos(0.55606931068 + 8429.2412664666 * t);
1359     result += 9.88e-09 * std::cos(5.97286104208 + 7079.3738568078 * t);
1360     result += 8.24e-09 * std::cos(1.50984806173 + 10447.3878396044 * t);
1361     result += 9.15e-09 * std::cos(0.12635654592 + 11015.1064773348 * t);
1362     result += 7.42e-09 * std::cos(1.99159139281 + 26087.9031415742 * t);
1363     result -= -1.039e-08;
1364     result += 8.5e-09 * std::cos(4.24120016095 + 29864.334027309 * t);
1365     result += 7.55e-09 * std::cos(2.8963187332 + 4732.0306273434 * t);
1366     result += 7.14e-09 * std::cos(1.37548118603 + 2146.1654164752 * t);
1367     result += 7.08e-09 * std::cos(1.91406542362 + 8031.0922630584 * t);
1368     result += 7.46e-09 * std::cos(0.57893808616 + 796.2980068164 * t);
1369     result += 8.02e-09 * std::cos(5.1233913723 + 2942.4634232916 * t);
1370     result += 7.51e-09 * std::cos(1.67479850166 + 21228.3920235458 * t);
1371     result += 6.02e-09 * std::cos(4.09976538826 + 64809.8055049413 * t);
1372     result += 5.94e-09 * std::cos(3.49580704962 + 16496.3613962024 * t);
1373     result += 5.92e-09 * std::cos(4.59481504319 + 4690.4798363586 * t);
1374     result += 5.3e-09 * std::cos(5.739792952 + 8827.3902698748 * t);
1375     result += 5.03e-09 * std::cos(5.66433137112 + 33794.5437235286 * t);
1376     result += 4.83e-09 * std::cos(1.57106522411 + 801.8209311238 * t);
1377     result += 4.38e-09 * std::cos(0.06707733767 + 3128.3887650958 * t);
1378     result += 4.23e-09 * std::cos(2.86944595927 + 12566.1516999828 * t);
1379     result += 5.04e-09 * std::cos(3.2620766916 + 7632.9432596502 * t);
1380     result += 5.52e-09 * std::cos(1.02926440457 + 239762.204517549 * t);
1381     result += 4.27e-09 * std::cos(3.6743437821 + 213.299095438 * t);
1382     result += 4.04e-09 * std::cos(1.46193297142 + 15720.8387848784 * t);
1383     result += 5.03e-09 * std::cos(4.85802444134 + 6290.1893969922 * t);
1384     result += 4.17e-09 * std::cos(0.81920713533 + 5216.5803728014 * t);
1385     result += 3.65e-09 * std::cos(0.01002966162 + 12168.0026965746 * t);
1386     result += 3.63e-09 * std::cos(1.28376436579 + 6206.8097787158 * t);
1387     result += 3.53e-09 * std::cos(4.7005913311 + 7234.794256242 * t);
1388     result += 4.15e-09 * std::cos(0.96862624175 + 4136.9104335162 * t);
1389     result += 3.87e-09 * std::cos(3.09145061418 + 25158.6017197654 * t);
1390     result += 3.73e-09 * std::cos(2.65119262792 + 7342.4577801806 * t);
1391     result += 3.61e-09 * std::cos(2.97762937739 + 9623.6882766912 * t);
1392     result += 4.18e-09 * std::cos(3.75759994446 + 5230.807466803 * t);
1393     result += 3.96e-09 * std::cos(1.22507712354 + 6438.4962494256 * t);
1394     result += 3.22e-09 * std::cos(1.21162178805 + 8662.240323563 * t);
1395     result += 2.84e-09 * std::cos(5.64170320068 + 1589.0728952838 * t);
1396     result += 3.79e-09 * std::cos(1.72248432748 + 14945.3161735544 * t);
1397     result += 3.2e-09 * std::cos(3.94161159962 + 7330.8231617461 * t);
1398     result += 3.13e-09 * std::cos(5.47602376446 + 1194.4470102246 * t);
1399     result += 2.92e-09 * std::cos(1.38971327603 + 11769.8536931664 * t);
1400     result += 3.05e-09 * std::cos(0.80429352049 + 37724.7534197482 * t);
1401     result += 2.57e-09 * std::cos(5.81382809757 + 426.598190876 * t);
1402     result += 2.65e-09 * std::cos(6.10358507671 + 6836.6452528338 * t);
1403     result += 2.5e-09 * std::cos(4.56452895547 + 7477.522860216 * t);
1404     result += 2.66e-09 * std::cos(2.62926282354 + 7238.6755916 * t);
1405     result += 2.63e-09 * std::cos(6.22089501237 + 6133.5126528568 * t);
1406     result += 3.06e-09 * std::cos(2.79682380531 + 1748.016413067 * t);
1407     result += 2.36e-09 * std::cos(2.46093023714 + 11371.7046897582 * t);
1408     result += 3.16e-09 * std::cos(1.62662805006 + 250908.490120415 * t);
1409     result += 2.16e-09 * std::cos(3.68721275185 + 5849.3641121146 * t);
1410     result += 2.3e-09 * std::cos(0.36165162947 + 5863.5912061162 * t);
1411     result += 2.33e-09 * std::cos(5.03509933858 + 20426.571092422 * t);
1412     result += 2e-09 * std::cos(5.86073159059 + 4535.0594369244 * t);
1413     result += 2.77e-09 * std::cos(4.65400292395 + 82239.1669577989 * t);
1414     result += 2.09e-09 * std::cos(3.72323200804 + 10973.55568635 * t);
1415     result += 1.99e-09 * std::cos(5.05186622555 + 5429.8794682394 * t);
1416     result += 2.56e-09 * std::cos(2.4092327977 + 19651.048481098 * t);
1417     result += 2.1e-09 * std::cos(4.50691909144 + 29088.811415985 * t);
1418     result += 1.81e-09 * std::cos(6.00294783127 + 4292.3308329504 * t);
1419     result += 2.49e-09 * std::cos(0.12900984422 + 154379.795624486 * t);
1420     result += 2.09e-09 * std::cos(3.87759458598 + 17789.845619785 * t);
1421     result += 2.25e-09 * std::cos(3.18339652605 + 18875.525869774 * t);
1422     result += 1.91e-09 * std::cos(4.53897489299 + 18477.1087646123 * t);
1423     result += 1.72e-09 * std::cos(2.09694183014 + 13095.8426650774 * t);
1424     result += 1.82e-09 * std::cos(3.161079435 + 16730.4636895958 * t);
1425     result += 1.88e-09 * std::cos(2.22746128596 + 41654.9631159678 * t);
1426     result += 1.64e-09 * std::cos(5.18686275017 + 5481.2549188676 * t);
1427     result += 1.6e-09 * std::cos(2.49298855159 + 12592.4500197826 * t);
1428     result += 1.55e-09 * std::cos(1.5959543823 + 10021.8372800994 * t);
1429     result += 1.35e-09 * std::cos(0.21349051064 + 10988.808157535 * t);
1430     result += 1.78e-09 * std::cos(3.8037517797 + 23581.2581773176 * t);
1431     result += 1.23e-09 * std::cos(1.66800739151 + 15110.4661198662 * t);
1432     result += 1.22e-09 * std::cos(2.72678272244 + 18849.2275499742 * t);
1433     result += 1.26e-09 * std::cos(1.1767551291 + 14919.0178537546 * t);
1434     result += 1.42e-09 * std::cos(3.95053441332 + 337.8142631964 * t);
1435     result += 1.16e-09 * std::cos(6.06340906229 + 6709.6740408674 * t);
1436     result += 1.37e-09 * std::cos(3.52143246757 + 12139.5535091068 * t);
1437     result += 1.36e-09 * std::cos(2.92179113542 + 32217.2001810808 * t);
1438     result += 1.1e-09 * std::cos(3.51203379263 + 18052.9295431578 * t);
1439     result += 1.47e-09 * std::cos(4.63371971408 + 22805.7355659936 * t);
1440     result += 1.08e-09 * std::cos(5.45280814878 + 7.1135470008 * t);
1441     result += 1.48e-09 * std::cos(0.65447253687 + 95480.9471841745 * t);
1442     result += 1.19e-09 * std::cos(5.92110458985 + 33019.0211122046 * t);
1443     result += 1.1e-09 * std::cos(5.34824206306 + 639.897286314 * t);
1444     result += 1.06e-09 * std::cos(3.71081682629 + 14314.1681130498 * t);
1445     result += 1.39e-09 * std::cos(6.17607198418 + 24356.7807886416 * t);
1446     result += 1.18e-09 * std::cos(5.5973871267 + 161338.50000087 * t);
1447     result += 1.17e-09 * std::cos(3.6506527164 + 45585.1728121874 * t);
1448     result += 1.27e-09 * std::cos(4.74596574209 + 49515.382508407 * t);
1449     result += 1.2e-09 * std::cos(1.04211499785 + 6915.8595893046 * t);
1450     result += 1.2e-09 * std::cos(5.60638811846 + 5650.2921106782 * t);
1451     result += 1.15e-09 * std::cos(3.10668213289 + 14712.317116458 * t);
1452     result += 9.9e-10 * std::cos(0.69018940049 + 12779.4507954208 * t);
1453     result += 9.7e-10 * std::cos(1.07908724794 + 9917.6968745098 * t);
1454     result += 9.3e-10 * std::cos(2.62295197319 + 17260.1546546904 * t);
1455     result += 9.9e-10 * std::cos(4.45774681732 + 4933.2084403326 * t);
1456     result += 1.23e-09 * std::cos(1.37488922089 + 28286.9904848612 * t);
1457     result += 1.21e-09 * std::cos(5.19767249813 + 27511.4678735372 * t);
1458     result += 1.05e-09 * std::cos(0.87192267806 + 77375.9572049241 * t);
1459     result += 8.7e-10 * std::cos(3.9363781295 + 17654.7805397496 * t);
1460     result += 1.22e-09 * std::cos(2.2395606868 + 83997.0911355954 * t);
1461     result += 8.7e-10 * std::cos(4.18201600952 + 22779.4372461938 * t);
1462     result += 1.04e-09 * std::cos(4.59580877295 + 1349.8674096588 * t);
1463     result += 1.02e-09 * std::cos(2.83545248411 + 12352.8526045448 * t);
1464     result += 1.02e-09 * std::cos(3.97386522171 + 10818.1352869158 * t);
1465     result += 1.01e-09 * std::cos(4.32892825857 + 36147.4098773004 * t);
1466     result += 9.4e-10 * std::cos(5.00001709261 + 150192.214398004 * t);
1467     result += 7.7e-10 * std::cos(3.97199369296 + 1592.5960136328 * t);
1468     result += 1e-09 * std::cos(6.07733097102 + 26735.9452622132 * t);
1469     result += 8.6e-10 * std::cos(5.2602963825 + 28313.288804661 * t);
1470     result += 9.3e-10 * std::cos(4.31900620254 + 44809.6502008634 * t);
1471     result += 7.6e-10 * std::cos(6.22743405935 + 13521.7514415914 * t);
1472     result += 7.2e-10 * std::cos(1.55820597747 + 6256.7775301916 * t);
1473     result += 8.2e-10 * std::cos(4.95202664555 + 10575.4066829418 * t);
1474     result += 8.2e-10 * std::cos(1.69647647075 + 1990.745017041 * t);
1475     result += 7.5e-10 * std::cos(2.29836095644 + 3634.6210245184 * t);
1476     result += 7.5e-10 * std::cos(2.66367876557 + 16200.7727245012 * t);
1477     result += 8.7e-10 * std::cos(0.26630214764 + 31441.6775697568 * t);
1478     result += 7.7e-10 * std::cos(2.25530954137 + 5235.3285382367 * t);
1479     result += 7.6e-10 * std::cos(1.09869730846 + 12903.9659631792 * t);
1480     result += 5.8e-10 * std::cos(4.28246138307 + 12559.038152982 * t);
1481     result += 6.4e-10 * std::cos(5.51112830114 + 173904.651700853 * t);
1482     result += 5.6e-10 * std::cos(2.60133794851 + 73188.3759784421 * t);
1483     result += 5.5e-10 * std::cos(5.81483150022 + 143233.51002162 * t);
1484     result += 5.4e-10 * std::cos(3.38482031504 + 323049.118787103 * t);
1485     result += 3.9e-10 * std::cos(3.28500401343 + 71768.5098813255 * t);
1486     result += 3.9e-10 * std::cos(3.1123991069 + 96900.8132812911 * t);
1487     return result;
1488 }
1489 
1490 constexpr double getEarthB1(double t)
1491 {
1492     double result = 0.0;
1493     result += 9.03e-08 * std::cos(3.8972906189 + 5507.5532386674 * t);
1494     result += 6.177e-08 * std::cos(1.73038850355 + 5223.6939198022 * t);
1495     result += 3.8e-08 * std::cos(5.24404145734 + 2352.8661537718 * t);
1496     result += 2.834e-08 * std::cos(2.4734503745 + 1577.3435424478 * t);
1497     result += 1.817e-08 * std::cos(0.41874743765 + 6283.0758499914 * t);
1498     result += 1.499e-08 * std::cos(1.83320979291 + 5856.4776591154 * t);
1499     result += 1.466e-08 * std::cos(5.69401926017 + 5753.3848848968 * t);
1500     result += 1.301e-08 * std::cos(2.18890066314 + 9437.762934887 * t);
1501     result += 1.233e-08 * std::cos(4.95222451476 + 10213.285546211 * t);
1502     result += 1.021e-08 * std::cos(0.12866660208 + 7860.4193924392 * t);
1503     result += 9.82e-09 * std::cos(0.09005453285 + 14143.4952424306 * t);
1504     result += 8.65e-09 * std::cos(1.73949953555 + 3930.2096962196 * t);
1505     result += 5.81e-09 * std::cos(2.26949174067 + 5884.9268465832 * t);
1506     result += 5.24e-09 * std::cos(5.65662503159 + 529.6909650946 * t);
1507     result += 4.73e-09 * std::cos(6.22750969242 + 6309.3741697912 * t);
1508     result += 4.51e-09 * std::cos(1.53288619213 + 18073.7049386502 * t);
1509     result += 3.64e-09 * std::cos(3.61614477374 + 13367.9726311066 * t);
1510     result += 3.72e-09 * std::cos(3.2247072132 + 6275.9623029906 * t);
1511     result += 2.68e-09 * std::cos(2.34341267879 + 11790.6290886588 * t);
1512     result += 3.22e-09 * std::cos(0.94084045832 + 6069.7767545534 * t);
1513     result += 2.32e-09 * std::cos(0.26781182579 + 7058.5984613154 * t);
1514     result += 2.16e-09 * std::cos(6.05952221329 + 10977.078804699 * t);
1515     result += 2.32e-09 * std::cos(2.93325646109 + 22003.9146348698 * t);
1516     result += 2.04e-09 * std::cos(3.86264841382 + 6496.3749454294 * t);
1517     result += 2.02e-09 * std::cos(2.81892511133 + 15720.8387848784 * t);
1518     result += 1.85e-09 * std::cos(4.93512381859 + 12036.4607348882 * t);
1519     result += 2.2e-09 * std::cos(3.99305643742 + 6812.766815086 * t);
1520     result += 1.66e-09 * std::cos(1.74970002999 + 11506.7697697936 * t);
1521     result += 2.12e-09 * std::cos(1.57166285369 + 4694.0029547076 * t);
1522     result += 1.57e-09 * std::cos(1.08259734788 + 5643.1785636774 * t);
1523     result += 1.54e-09 * std::cos(5.99434678412 + 5486.777843175 * t);
1524     result += 1.44e-09 * std::cos(5.23285656085 + 78051.5857313169 * t);
1525     result += 1.44e-09 * std::cos(1.16454655948 + 90617.7374312997 * t);
1526     result += 1.37e-09 * std::cos(2.67760436027 + 6290.1893969922 * t);
1527     result += 1.8e-09 * std::cos(2.06509026215 + 7084.8967811152 * t);
1528     result += 1.21e-09 * std::cos(5.90212574947 + 9225.539273283 * t);
1529     result += 1.5e-09 * std::cos(2.00175038718 + 5230.807466803 * t);
1530     result += 1.49e-09 * std::cos(5.06157254516 + 17298.1823273262 * t);
1531     result += 1.18e-09 * std::cos(5.39979058038 + 3340.6124266998 * t);
1532     result += 1.61e-09 * std::cos(3.32421999691 + 6283.3196674749 * t);
1533     result += 1.21e-09 * std::cos(4.36722193162 + 19651.048481098 * t);
1534     result += 1.16e-09 * std::cos(5.83462858507 + 4705.7323075436 * t);
1535     result += 1.28e-09 * std::cos(4.35489873365 + 25934.1243310894 * t);
1536     result += 1.43e-09;
1537     result += 1.09e-09 * std::cos(2.52157834166 + 6438.4962494256 * t);
1538     result += 9.9e-10 * std::cos(2.70727488041 + 5216.5803728014 * t);
1539     result += 1.03e-09 * std::cos(0.93782340879 + 8827.3902698748 * t);
1540     result += 8.2e-10 * std::cos(4.2921468039 + 8635.9420037632 * t);
1541     result += 7.9e-10 * std::cos(2.24085737326 + 1059.3819301892 * t);
1542     result += 9.7e-10 * std::cos(5.50959692365 + 29864.334027309 * t);
1543     result += 7.2e-10 * std::cos(0.21891639822 + 21228.3920235458 * t);
1544     result += 7.1e-10 * std::cos(2.86755026812 + 6681.2248533996 * t);
1545     result += 7.4e-10 * std::cos(2.20184828895 + 37724.7534197482 * t);
1546     result += 6.3e-10 * std::cos(4.45586625948 + 7079.3738568078 * t);
1547     result += 6.1e-10 * std::cos(0.63918772258 + 33794.5437235286 * t);
1548     result += 4.7e-10 * std::cos(2.09070235724 + 3128.3887650958 * t);
1549     result += 4.7e-10 * std::cos(3.325438433 + 26087.9031415742 * t);
1550     result += 4.9e-10 * std::cos(1.60680905005 + 6702.5604938666 * t);
1551     result += 5.7e-10 * std::cos(0.11215813438 + 29088.811415985 * t);
1552     result += 5.6e-10 * std::cos(5.47982934911 + 775.522611324 * t);
1553     result += 5e-10 * std::cos(1.89396788463 + 12139.5535091068 * t);
1554     result += 4.7e-10 * std::cos(2.9721490724 + 20426.571092422 * t);
1555     result += 4.1e-10 * std::cos(5.5532939489 + 11015.1064773348 * t);
1556     result += 4.1e-10 * std::cos(5.91861144924 + 23581.2581773176 * t);
1557     result += 4.5e-10 * std::cos(4.95273290181 + 5863.5912061162 * t);
1558     result += 5e-10 * std::cos(3.62740835096 + 41654.9631159678 * t);
1559     result += 3.7e-10 * std::cos(6.09033460601 + 64809.8055049413 * t);
1560     result += 3.7e-10 * std::cos(5.86153655431 + 12566.1516999828 * t);
1561     result += 4.6e-10 * std::cos(1.65798680284 + 25158.6017197654 * t);
1562     result += 3.8e-10 * std::cos(2.00673650251 + 426.598190876 * t);
1563     result += 3.6e-10 * std::cos(6.24373396652 + 6283.14316029419 * t);
1564     result += 3.6e-10 * std::cos(0.40465162918 + 6283.0085396886 * t);
1565     result += 3.2e-10 * std::cos(6.03707103538 + 2942.4634232916 * t);
1566     result += 4.1e-10 * std::cos(4.86809570283 + 1592.5960136328 * t);
1567     result += 2.8e-10 * std::cos(4.38359423735 + 7632.9432596502 * t);
1568     result += 2.8e-10 * std::cos(6.03334294232 + 17789.845619785 * t);
1569     result += 2.6e-10 * std::cos(3.88971333608 + 5331.3574437408 * t);
1570     result += 2.6e-10 * std::cos(5.94932724051 + 16496.3613962024 * t);
1571     result += 3.1e-10 * std::cos(1.44666331503 + 16730.4636895958 * t);
1572     result += 2.6e-10 * std::cos(6.26376705837 + 23543.2305046818 * t);
1573     result += 3.3e-10 * std::cos(0.93797239147 + 213.299095438 * t);
1574     result += 2.6e-10 * std::cos(3.71858432944 + 13095.8426650774 * t);
1575     result += 2.7e-10 * std::cos(0.60565274405 + 10988.808157535 * t);
1576     result += 2.3e-10 * std::cos(4.4438898555 + 18849.2275499742 * t);
1577     result += 2.8e-10 * std::cos(1.53862289477 + 6279.4854213396 * t);
1578     result += 2.8e-10 * std::cos(1.96831814872 + 6286.6662786432 * t);
1579     result += 2.8e-10 * std::cos(5.78094918529 + 15110.4661198662 * t);
1580     result += 2.6e-10 * std::cos(2.48165809843 + 5729.506447149 * t);
1581     result += 2e-10 * std::cos(3.85655029499 + 9623.6882766912 * t);
1582     result += 2.1e-10 * std::cos(5.83006047147 + 7234.794256242 * t);
1583     result += 2.1e-10 * std::cos(0.69628570421 + 398.1490034082 * t);
1584     result += 2.2e-10 * std::cos(5.02222806555 + 6127.6554505572 * t);
1585     result += 2e-10 * std::cos(3.4761126529 + 6148.010769956 * t);
1586     result += 2e-10 * std::cos(0.90769829044 + 5481.2549188676 * t);
1587     result += 2e-10 * std::cos(0.03081589303 + 6418.1409300268 * t);
1588     result += 2e-10 * std::cos(3.74220084927 + 1589.0728952838 * t);
1589     result += 2.1e-10 * std::cos(4.00149269576 + 3154.6870848956 * t);
1590     result += 1.8e-10 * std::cos(1.58348238359 + 2118.7638603784 * t);
1591     result += 1.9e-10 * std::cos(0.85407021371 + 14712.317116458 * t);
1592     return result;
1593 }
1594 
1595 constexpr double getEarthB2(double t)
1596 {
1597     double result = 0.0;
1598     result += 1.662e-08 * std::cos(1.62703209173 + 84334.6615813083 * t);
1599     result += 4.92e-09 * std::cos(2.41382223971 + 1047.7473117547 * t);
1600     result += 3.44e-09 * std::cos(2.24353004539 + 5507.5532386674 * t);
1601     result += 2.58e-09 * std::cos(6.00906896311 + 5223.6939198022 * t);
1602     result += 1.31e-09 * std::cos(0.9544734524 + 6283.0758499914 * t);
1603     result += 8.6e-10 * std::cos(1.67530247303 + 7860.4193924392 * t);
1604     result += 9e-10 * std::cos(0.97606804452 + 1577.3435424478 * t);
1605     result += 9e-10 * std::cos(0.37899871725 + 2352.8661537718 * t);
1606     result += 8.9e-10 * std::cos(6.25807507963 + 10213.285546211 * t);
1607     result += 7.5e-10 * std::cos(0.84213523741 + 167621.575850862 * t);
1608     result += 5.2e-10 * std::cos(1.70501566089 + 14143.4952424306 * t);
1609     result += 5.7e-10 * std::cos(6.15295833679 + 12194.0329146209 * t);
1610     result += 5.1e-10 * std::cos(1.2761601674 + 5753.3848848968 * t);
1611     result += 5.1e-10 * std::cos(5.37229738682 + 6812.766815086 * t);
1612     result += 3.4e-10 * std::cos(1.73672994279 + 7058.5984613154 * t);
1613     result += 3.8e-10 * std::cos(2.77761031485 + 10988.808157535 * t);
1614     result += 4.6e-10 * std::cos(3.38617099014 + 156475.290247996 * t);
1615     result += 2.1e-10 * std::cos(1.95248349228 + 8827.3902698748 * t);
1616     result += 1.8e-10 * std::cos(3.33419222028 + 8429.2412664666 * t);
1617     result += 1.9e-10 * std::cos(4.32945160287 + 17789.845619785 * t);
1618     result += 1.7e-10 * std::cos(0.66191210656 + 6283.0085396886 * t);
1619     result += 1.8e-10 * std::cos(3.74885333072 + 11769.8536931664 * t);
1620     result += 1.7e-10 * std::cos(4.23058370776 + 10977.078804699 * t);
1621     result += 1.7e-10 * std::cos(1.78116162721 + 5486.777843175 * t);
1622     result += 2.1e-10 * std::cos(1.36972913918 + 12036.4607348882 * t);
1623     result += 1.7e-10 * std::cos(2.79601092529 + 796.2980068164 * t);
1624     result += 1.5e-10 * std::cos(0.4308784885 + 11790.6290886588 * t);
1625     result += 1.7e-10 * std::cos(1.35132152761 + 78051.5857313169 * t);
1626     result += 1.5e-10 * std::cos(1.17032155085 + 213.299095438 * t);
1627     result += 1.8e-10 * std::cos(2.85221514199 + 5088.6288397668 * t);
1628     result += 1.7e-10 * std::cos(0.21780913672 + 6283.14316029419 * t);
1629     result += 1.3e-10 * std::cos(1.21201504386 + 25132.3033999656 * t);
1630     result += 1.2e-10 * std::cos(1.12953712197 + 90617.7374312997 * t);
1631     result += 1.2e-10 * std::cos(5.13714452592 + 7079.3738568078 * t);
1632     result += 1.3e-10 * std::cos(3.79842135217 + 4933.2084403326 * t);
1633     result += 1.2e-10 * std::cos(4.89407978213 + 3738.761430108 * t);
1634     result += 1.5e-10 * std::cos(6.05682328852 + 398.1490034082 * t);
1635     result += 1.4e-10 * std::cos(4.81029291856 + 4694.0029547076 * t);
1636     result += 1.1e-10 * std::cos(0.61684523405 + 3128.3887650958 * t);
1637     result += 1.1e-10 * std::cos(5.328765385 + 6040.3472460174 * t);
1638     result += 1.4e-10 * std::cos(5.27227350286 + 4535.0594369244 * t);
1639     result += 1.1e-10 * std::cos(2.39292099451 + 5331.3574437408 * t);
1640     result += 1e-10 * std::cos(4.4529653271 + 6525.8044539654 * t);
1641     result += 1.4e-10 * std::cos(4.66400985037 + 8031.0922630584 * t);
1642     result += 1e-10 * std::cos(3.22472385926 + 9437.762934887 * t);
1643     result += 1.1e-10 * std::cos(3.80913404437 + 801.8209311238 * t);
1644     result += 1e-10 * std::cos(5.15032130575 + 11371.7046897582 * t);
1645     result += 1.3e-10 * std::cos(0.98720797401 + 5729.506447149 * t);
1646     result += 9e-11 * std::cos(5.94191743597 + 7632.9432596502 * t);
1647     return result;
1648 }
1649 
1650 constexpr double getEarthB3(double t)
1651 {
1652     double result = 0.0;
1653     result += 1.1e-10 * std::cos(0.23877262399 + 7860.4193924392 * t);
1654     result += 9e-11 * std::cos(1.16069982609 + 5507.5532386674 * t);
1655     result += 8e-11 * std::cos(1.65357552925 + 5884.9268465832 * t);
1656     result += 8e-11 * std::cos(2.86720038197 + 7058.5984613154 * t);
1657     result += 7e-11 * std::cos(3.04818741666 + 5486.777843175 * t);
1658     result += 7e-11 * std::cos(2.59437103785 + 529.6909650946 * t);
1659     result += 8e-11 * std::cos(4.02863090524 + 6256.7775301916 * t);
1660     result += 8e-11 * std::cos(2.42003508927 + 5753.3848848968 * t);
1661     result += 6e-11 * std::cos(0.84181087594 + 6275.9623029906 * t);
1662     result += 6e-11 * std::cos(5.40160929468 + 1577.3435424478 * t);
1663     result += 7e-11 * std::cos(2.73399865247 + 6309.3741697912 * t);
1664     return result;
1665 }
1666 
1667 constexpr double getEarthB4(double t)
1668 {
1669     double result = 0.0;
1670     result += 4e-11 * std::cos(0.79662198849 + 6438.4962494256 * t);
1671     result += 5e-11 * std::cos(0.84308705203 + 1047.7473117547 * t);
1672     result += 5e-11 * std::cos(0.05711572303 + 84334.6615813083 * t);
1673     result += 3e-11 * std::cos(3.46779895686 + 6279.5527316424 * t);
1674     result += 3e-11 * std::cos(2.89822201212 + 6127.6554505572 * t);
1675     return result;
1676 }
1677 
1678 constexpr double getEarthR0(double t)
1679 {
1680     double result = 0.0;
1681     result += 1.00013988799;
1682     result += 0.01670699626 * std::cos(3.09846350771 + 6283.0758499914 * t);
1683     result += 0.00013956023 * std::cos(3.0552460962 + 12566.1516999828 * t);
1684     result += 3.08372e-05 * std::cos(5.19846674381 + 77713.7714681205 * t);
1685     result += 1.628461e-05 * std::cos(1.17387749012 + 5753.3848848968 * t);
1686     result += 1.575568e-05 * std::cos(2.84685245825 + 7860.4193924392 * t);
1687     result += 9.24799e-06 * std::cos(5.45292234084 + 11506.7697697936 * t);
1688     result += 5.42444e-06 * std::cos(4.56409149777 + 3930.2096962196 * t);
1689     result += 4.7211e-06 * std::cos(3.66100022149 + 5884.9268465832 * t);
1690     result += 3.2878e-06 * std::cos(5.89983646482 + 5223.6939198022 * t);
1691     result += 3.45983e-06 * std::cos(0.96368617687 + 5507.5532386674 * t);
1692     result += 3.06784e-06 * std::cos(0.29867139512 + 5573.1428014331 * t);
1693     result += 1.74844e-06 * std::cos(3.01193636534 + 18849.2275499742 * t);
1694     result += 2.43189e-06 * std::cos(4.27349536153 + 11790.6290886588 * t);
1695     result += 2.11829e-06 * std::cos(5.84714540314 + 1577.3435424478 * t);
1696     result += 1.85752e-06 * std::cos(5.02194447178 + 10977.078804699 * t);
1697     result += 1.09835e-06 * std::cos(5.05510636285 + 5486.777843175 * t);
1698     result += 9.8316e-07 * std::cos(0.88681311277 + 6069.7767545534 * t);
1699     result += 8.6499e-07 * std::cos(5.68959778254 + 15720.8387848784 * t);
1700     result += 8.5825e-07 * std::cos(1.27083733351 + 161000.685737674 * t);
1701     result += 6.2916e-07 * std::cos(0.92177108832 + 529.6909650946 * t);
1702     result += 5.7056e-07 * std::cos(2.01374292014 + 83996.8473181119 * t);
1703     result += 6.4903e-07 * std::cos(0.27250613787 + 17260.1546546904 * t);
1704     result += 4.9384e-07 * std::cos(3.24501240359 + 2544.3144198834 * t);
1705     result += 5.5736e-07 * std::cos(5.24159798933 + 71430.6956181291 * t);
1706     result += 4.2515e-07 * std::cos(6.01110242003 + 6275.9623029906 * t);
1707     result += 4.6963e-07 * std::cos(2.57805070386 + 775.522611324 * t);
1708     result += 3.8968e-07 * std::cos(5.36071738169 + 4694.0029547076 * t);
1709     result += 4.4661e-07 * std::cos(5.53715807302 + 9437.762934887 * t);
1710     result += 3.566e-07 * std::cos(1.67468058995 + 12036.4607348882 * t);
1711     result += 3.1921e-07 * std::cos(0.18368229781 + 5088.6288397668 * t);
1712     result += 3.1846e-07 * std::cos(1.77775642085 + 398.1490034082 * t);
1713     result += 3.3193e-07 * std::cos(0.24370300098 + 7084.8967811152 * t);
1714     result += 3.8245e-07 * std::cos(2.39255343974 + 8827.3902698748 * t);
1715     result += 2.8464e-07 * std::cos(1.21344868176 + 6286.5989683404 * t);
1716     result += 3.749e-07 * std::cos(0.82952922332 + 19651.048481098 * t);
1717     result += 3.6957e-07 * std::cos(4.90107591914 + 12139.5535091068 * t);
1718     result += 3.4537e-07 * std::cos(1.84270693282 + 2942.4634232916 * t);
1719     result += 2.6275e-07 * std::cos(4.58896850401 + 10447.3878396044 * t);
1720     result += 2.4596e-07 * std::cos(3.78660875483 + 8429.2412664666 * t);
1721     result += 2.3587e-07 * std::cos(0.26866117066 + 796.2980068164 * t);
1722     result += 2.7793e-07 * std::cos(1.89934330904 + 6279.5527316424 * t);
1723     result += 2.3927e-07 * std::cos(4.99598548138 + 5856.4776591154 * t);
1724     result += 2.0349e-07 * std::cos(4.65267995431 + 2146.1654164752 * t);
1725     result += 2.3287e-07 * std::cos(2.80783650928 + 14143.4952424306 * t);
1726     result += 2.2103e-07 * std::cos(1.95004702988 + 3154.6870848956 * t);
1727     result += 1.9506e-07 * std::cos(5.38227371393 + 2352.8661537718 * t);
1728     result += 1.7958e-07 * std::cos(0.19871379385 + 6812.766815086 * t);
1729     result += 1.7174e-07 * std::cos(4.43315560735 + 10213.285546211 * t);
1730     result += 1.619e-07 * std::cos(5.23160507859 + 17789.845619785 * t);
1731     result += 1.7314e-07 * std::cos(6.15200787916 + 16730.4636895958 * t);
1732     result += 1.3814e-07 * std::cos(5.18962074032 + 8031.0922630584 * t);
1733     result += 1.8833e-07 * std::cos(0.67306674027 + 149854.400134808 * t);
1734     result += 1.8331e-07 * std::cos(2.25348733734 + 23581.2581773176 * t);
1735     result += 1.3641e-07 * std::cos(3.68516118804 + 4705.7323075436 * t);
1736     result += 1.3139e-07 * std::cos(0.65289581324 + 13367.9726311066 * t);
1737     result += 1.0414e-07 * std::cos(4.33285688538 + 11769.8536931664 * t);
1738     result += 9.978e-08 * std::cos(4.20126336355 + 6309.3741697912 * t);
1739     result += 1.0169e-07 * std::cos(1.59390681369 + 4690.4798363586 * t);
1740     result += 7.564e-08 * std::cos(2.6256059739 + 6256.7775301916 * t);
1741     result += 9.661e-08 * std::cos(3.6758679122 + 27511.4678735372 * t);
1742     result += 6.743e-08 * std::cos(0.56270332741 + 3340.6124266998 * t);
1743     result += 8.743e-08 * std::cos(6.06359123461 + 1748.016413067 * t);
1744     result += 7.786e-08 * std::cos(3.67371235637 + 12168.0026965746 * t);
1745     result += 6.633e-08 * std::cos(5.66149277792 + 11371.7046897582 * t);
1746     result += 7.712e-08 * std::cos(0.31242577789 + 7632.9432596502 * t);
1747     result += 6.592e-08 * std::cos(3.13576266188 + 801.8209311238 * t);
1748     result += 7.46e-08 * std::cos(5.64757188143 + 11926.2544136688 * t);
1749     result += 6.933e-08 * std::cos(2.923845864 + 6681.2248533996 * t);
1750     result += 6.802e-08 * std::cos(1.4232980642 + 23013.5395395872 * t);
1751     result += 6.115e-08 * std::cos(5.13393615454 + 1194.4470102246 * t);
1752     result += 6.477e-08 * std::cos(2.64986648492 + 19804.8272915828 * t);
1753     result += 5.233e-08 * std::cos(4.62434053374 + 6438.4962494256 * t);
1754     result += 6.147e-08 * std::cos(3.02863936662 + 233141.314404362 * t);
1755     result += 4.608e-08 * std::cos(1.72194702724 + 7234.794256242 * t);
1756     result += 4.221e-08 * std::cos(1.55697533729 + 7238.6755916 * t);
1757     result += 5.314e-08 * std::cos(2.40716580847 + 11499.6562227928 * t);
1758     result += 5.128e-08 * std::cos(5.3239896569 + 11513.8833167944 * t);
1759     result += 4.77e-08 * std::cos(0.25554312006 + 11856.2186514245 * t);
1760     result += 5.519e-08 * std::cos(2.09089154502 + 17298.1823273262 * t);
1761     result += 5.625e-08 * std::cos(4.34052903053 + 90955.5516944961 * t);
1762     result += 4.578e-08 * std::cos(4.4656964157 + 5746.271337896 * t);
1763     result += 3.788e-08 * std::cos(4.9072938351 + 4164.311989613 * t);
1764     result += 5.337e-08 * std::cos(5.09957905104 + 31441.6775697568 * t);
1765     result += 3.967e-08 * std::cos(1.20054555174 + 1349.8674096588 * t);
1766     result += 4.008e-08 * std::cos(3.03007204392 + 1059.3819301892 * t);
1767     result += 3.476e-08 * std::cos(0.7608027703 + 10973.55568635 * t);
1768     result += 4.232e-08 * std::cos(1.05485713117 + 5760.4984318976 * t);
1769     result += 4.582e-08 * std::cos(3.76570026763 + 6386.16862421 * t);
1770     result += 3.335e-08 * std::cos(3.13829943354 + 6836.6452528338 * t);
1771     result += 3.418e-08 * std::cos(3.00072390334 + 4292.3308329504 * t);
1772     result += 3.598e-08 * std::cos(5.70718084323 + 5643.1785636774 * t);
1773     result += 3.237e-08 * std::cos(4.16448773994 + 9917.6968745098 * t);
1774     result += 4.154e-08 * std::cos(2.59941292162 + 7058.5984613154 * t);
1775     result += 3.362e-08 * std::cos(4.54577697964 + 4732.0306273434 * t);
1776     result += 2.978e-08 * std::cos(1.3056126882 + 6283.14316029419 * t);
1777     result += 2.765e-08 * std::cos(0.51311975679 + 26.2983197998 * t);
1778     result += 2.802e-08 * std::cos(5.66263240521 + 8635.9420037632 * t);
1779     result += 2.927e-08 * std::cos(5.73787481548 + 16200.7727245012 * t);
1780     result += 3.164e-08 * std::cos(1.69140262657 + 11015.1064773348 * t);
1781     result += 2.598e-08 * std::cos(2.96244118586 + 25132.3033999656 * t);
1782     result += 3.519e-08 * std::cos(3.62639325753 + 244287.600007228 * t);
1783     result += 2.676e-08 * std::cos(4.2072570085 + 18073.7049386502 * t);
1784     result += 2.978e-08 * std::cos(1.74971565805 + 6283.0085396886 * t);
1785     result += 2.287e-08 * std::cos(1.06975704977 + 14314.1681130498 * t);
1786     result += 2.863e-08 * std::cos(5.92838131397 + 14712.317116458 * t);
1787     result += 3.071e-08 * std::cos(0.23793217002 + 35371.8872659764 * t);
1788     result += 2.656e-08 * std::cos(0.8995930178 + 12352.8526045448 * t);
1789     result += 2.415e-08 * std::cos(2.79975176257 + 709.9330485583 * t);
1790     result += 2.814e-08 * std::cos(3.51488206882 + 21228.3920235458 * t);
1791     result += 1.977e-08 * std::cos(2.6135829755 + 951.7184062506 * t);
1792     result += 2.548e-08 * std::cos(2.47684686575 + 6208.2942514241 * t);
1793     result += 1.999e-08 * std::cos(0.5609038816 + 7079.3738568078 * t);
1794     result += 2.305e-08 * std::cos(1.05376461628 + 22483.8485744926 * t);
1795     result += 1.855e-08 * std::cos(2.86090681163 + 5216.5803728014 * t);
1796     result += 2.157e-08 * std::cos(1.31396741861 + 154717.609887683 * t);
1797     result += 1.97e-08 * std::cos(4.36929875289 + 167283.761587666 * t);
1798     result += 1.635e-08 * std::cos(5.85571606764 + 10984.1923516998 * t);
1799     result += 1.754e-08 * std::cos(2.14452408833 + 6290.1893969922 * t);
1800     result += 2.154e-08 * std::cos(6.03828341543 + 10873.9860304804 * t);
1801     result += 1.714e-08 * std::cos(3.70157691113 + 1592.5960136328 * t);
1802     result += 1.541e-08 * std::cos(6.21598380732 + 23543.2305046818 * t);
1803     result += 1.611e-08 * std::cos(1.99824499377 + 10969.9652576982 * t);
1804     result += 1.712e-08 * std::cos(1.34295663542 + 3128.3887650958 * t);
1805     result += 1.642e-08 * std::cos(5.55026665339 + 6496.3749454294 * t);
1806     result += 1.502e-08 * std::cos(5.43948825854 + 155.4203994342 * t);
1807     result += 1.827e-08 * std::cos(5.91227480261 + 3738.761430108 * t);
1808     result += 1.726e-08 * std::cos(2.16764983583 + 10575.4066829418 * t);
1809     result += 1.532e-08 * std::cos(5.3568310707 + 13521.7514415914 * t);
1810     result += 1.829e-08 * std::cos(1.66006148731 + 39302.096962196 * t);
1811     result += 1.605e-08 * std::cos(1.90928637633 + 6133.5126528568 * t);
1812     result += 1.282e-08 * std::cos(2.46014880418 + 13916.0191096416 * t);
1813     result += 1.211e-08 * std::cos(4.4136063155 + 3894.1818295422 * t);
1814     result += 1.394e-08 * std::cos(1.77801929354 + 9225.539273283 * t);
1815     result += 1.571e-08 * std::cos(4.95512957592 + 25158.6017197654 * t);
1816     result += 1.205e-08 * std::cos(1.19212540615 + 3.523118349 * t);
1817     result += 1.132e-08 * std::cos(2.69830084955 + 6040.3472460174 * t);
1818     result += 1.504e-08 * std::cos(5.77002730341 + 18209.3302636602 * t);
1819     result += 1.393e-08 * std::cos(1.62621805428 + 5120.6011455836 * t);
1820     result += 1.077e-08 * std::cos(2.93931554233 + 17256.6315363414 * t);
1821     result += 1.232e-08 * std::cos(0.71655165307 + 143571.324284816 * t);
1822     result += 1.087e-08 * std::cos(0.99769687939 + 955.5997416086 * t);
1823     result += 1.068e-08 * std::cos(5.28472576231 + 65147.6197681377 * t);
1824     result += 9.8e-09 * std::cos(5.10949204607 + 6172.869528772 * t);
1825     result += 1.169e-08 * std::cos(3.11664290862 + 14945.3161735544 * t);
1826     result += 1.202e-08 * std::cos(4.02992510402 + 553.5694028424 * t);
1827     result += 9.79e-09 * std::cos(2.00000879212 + 15110.4661198662 * t);
1828     result += 9.62e-09 * std::cos(4.023807714 + 6282.0955289232 * t);
1829     result += 9.99e-09 * std::cos(3.6264300279 + 6262.300454499 * t);
1830     result += 1.03e-08 * std::cos(5.84989900289 + 213.299095438 * t);
1831     result += 1.014e-08 * std::cos(2.84221578218 + 8662.240323563 * t);
1832     result += 1.185e-08 * std::cos(1.51330541132 + 17654.7805397496 * t);
1833     result += 9.67e-09 * std::cos(2.67081017562 + 5650.2921106782 * t);
1834     result += 1.222e-08 * std::cos(2.65423784904 + 88860.0570709867 * t);
1835     result += 9.81e-09 * std::cos(2.36370360283 + 6206.8097787158 * t);
1836     result += 1.033e-08 * std::cos(0.13874927606 + 11712.9553182308 * t);
1837     result += 1.103e-08 * std::cos(3.08477302937 + 43232.3066584156 * t);
1838     result += 7.81e-09 * std::cos(2.53372735932 + 16496.3613962024 * t);
1839     result += 1.019e-08 * std::cos(3.04569392376 + 6037.244203762 * t);
1840     result += 7.95e-09 * std::cos(5.80662989111 + 5230.807466803 * t);
1841     result += 8.13e-09 * std::cos(3.57710279439 + 10177.2576795336 * t);
1842     result += 9.62e-09 * std::cos(5.31470594766 + 6284.0561710596 * t);
1843     result += 7.21e-09 * std::cos(5.96264301567 + 12559.038152982 * t);
1844     result += 9.66e-09 * std::cos(2.74714939953 + 6244.9428143536 * t);
1845     result += 9.21e-09 * std::cos(0.10155275926 + 29088.811415985 * t);
1846     result += 6.92e-09 * std::cos(3.89764447548 + 1589.0728952838 * t);
1847     result += 7.19e-09 * std::cos(5.91791450402 + 4136.9104335162 * t);
1848     result += 7.72e-09 * std::cos(4.05505682353 + 6127.6554505572 * t);
1849     result += 7.12e-09 * std::cos(5.49291532439 + 22003.9146348698 * t);
1850     result += 6.72e-09 * std::cos(1.60700490811 + 11087.2851259184 * t);
1851     result += 6.9e-09 * std::cos(4.50539825563 + 426.598190876 * t);
1852     result += 8.54e-09 * std::cos(3.26104981596 + 20426.571092422 * t);
1853     result += 6.56e-09 * std::cos(4.3241018294 + 16858.4825329332 * t);
1854     result += 8.4e-09 * std::cos(2.59572585222 + 28766.924424484 * t);
1855     result += 6.92e-09 * std::cos(0.61650089011 + 11403.676995575 * t);
1856     result += 7e-09 * std::cos(3.40901167143 + 7.1135470008 * t);
1857     result += 7.26e-09 * std::cos(0.04243053594 + 5481.2549188676 * t);
1858     result += 5.57e-09 * std::cos(4.78317696534 + 20199.094959633 * t);
1859     result += 6.49e-09 * std::cos(1.04027912958 + 6062.6632075526 * t);
1860     result += 6.33e-09 * std::cos(5.70229959167 + 45892.730433157 * t);
1861     result += 5.92e-09 * std::cos(6.11836729658 + 9623.6882766912 * t);
1862     result += 5.23e-09 * std::cos(3.62840021266 + 5333.9002410216 * t);
1863     result += 6.04e-09 * std::cos(5.57734696185 + 10344.2950653858 * t);
1864     result += 4.96e-09 * std::cos(2.21023499449 + 1990.745017041 * t);
1865     result += 6.91e-09 * std::cos(1.96071732602 + 12416.5885028482 * t);
1866     result += 6.4e-09 * std::cos(1.59074172032 + 18319.5365848796 * t);
1867     result += 6.25e-09 * std::cos(3.82362791378 + 13517.8701062334 * t);
1868     result += 6.63e-09 * std::cos(5.08444996779 + 283.8593188652 * t);
1869     result += 4.75e-09 * std::cos(1.17025894287 + 12569.6748183318 * t);
1870     result += 6.64e-09 * std::cos(4.50029469969 + 47162.5163546352 * t);
1871     result += 5.69e-09 * std::cos(0.16310365162 + 17267.2682016912 * t);
1872     result += 5.68e-09 * std::cos(3.86100969474 + 6076.8903015542 * t);
1873     result += 5.39e-09 * std::cos(4.83282276086 + 18422.6293590982 * t);
1874     result += 4.66e-09 * std::cos(0.75872342878 + 7342.4577801806 * t);
1875     result += 5.41e-09 * std::cos(3.07212190507 + 226858.23855437 * t);
1876     result += 4.58e-09 * std::cos(0.26774483096 + 4590.910180489 * t);
1877     result += 6.1e-09 * std::cos(1.53597051291 + 33019.0211122046 * t);
1878     result += 6.17e-09 * std::cos(2.62356328726 + 11190.377900137 * t);
1879     result += 5.48e-09 * std::cos(4.55798855791 + 18875.525869774 * t);
1880     result += 6.33e-09 * std::cos(4.60110281228 + 66567.4858652543 * t);
1881     result += 5.96e-09 * std::cos(5.78202396722 + 632.7837393132 * t);
1882     result += 5.33e-09 * std::cos(5.01786882904 + 12132.439962106 * t);
1883     result += 6.03e-09 * std::cos(5.38458554802 + 316428.228673915 * t);
1884     result += 4.69e-09 * std::cos(0.59168241917 + 21954.157609398 * t);
1885     result += 5.48e-09 * std::cos(3.50613163558 + 17253.0411076896 * t);
1886     result += 5.02e-09 * std::cos(0.98804327589 + 11609.8625440122 * t);
1887     result += 5.68e-09 * std::cos(1.98497313089 + 7668.6374249425 * t);
1888     result += 4.82e-09 * std::cos(1.62141803864 + 12146.6670561076 * t);
1889     result += 3.91e-09 * std::cos(3.68718382989 + 18052.9295431578 * t);
1890     result += 4.57e-09 * std::cos(3.7720573734 + 156137.475984799 * t);
1891     result += 4.01e-09 * std::cos(5.28260651958 + 15671.0817594066 * t);
1892     result += 4.69e-09 * std::cos(1.80963184268 + 12562.6285816338 * t);
1893     result += 5.08e-09 * std::cos(3.36399024699 + 20597.2439630412 * t);
1894     result += 4.5e-09 * std::cos(5.6605429925 + 10454.5013866052 * t);
1895     result += 3.75e-09 * std::cos(4.98534633105 + 9779.1086761254 * t);
1896     result += 5.23e-09 * std::cos(0.97215560834 + 155427.542936241 * t);
1897     result += 4.03e-09 * std::cos(5.13939866506 + 1551.045222648 * t);
1898     result += 3.72e-09 * std::cos(3.69883738807 + 9388.0059094152 * t);
1899     result += 3.67e-09 * std::cos(4.43875659716 + 4535.0594369244 * t);
1900     result += 4.06e-09 * std::cos(4.208631566 + 12592.4500197826 * t);
1901     result += 3.6e-09 * std::cos(2.53924644657 + 242.728603974 * t);
1902     result += 4.71e-09 * std::cos(4.61907324819 + 5436.9930152402 * t);
1903     result += 4.41e-09 * std::cos(5.83872966262 + 3496.032826134 * t);
1904     result += 3.85e-09 * std::cos(4.94496680973 + 24356.7807886416 * t);
1905     result += 3.49e-09 * std::cos(6.15018231784 + 19800.9459562248 * t);
1906     result += 3.55e-09 * std::cos(0.21895678106 + 5429.8794682394 * t);
1907     result += 3.44e-09 * std::cos(5.62993724928 + 2379.1644735716 * t);
1908     result += 3.8e-09 * std::cos(2.72105213143 + 11933.3679606696 * t);
1909     result += 4.32e-09 * std::cos(0.24221790536 + 17996.0311682222 * t);
1910     result += 3.78e-09 * std::cos(5.22517556974 + 7477.522860216 * t);
1911     result += 3.37e-09 * std::cos(5.10888041439 + 5849.3641121146 * t);
1912     result += 3.15e-09 * std::cos(0.57827745123 + 10557.5941608238 * t);
1913     result += 3.18e-09 * std::cos(4.49953141399 + 3634.6210245184 * t);
1914     result += 3.23e-09 * std::cos(1.54274281393 + 10440.2742926036 * t);
1915     result += 3.09e-09 * std::cos(5.76839284397 + 20.7753954924 * t);
1916     result += 3.01e-09 * std::cos(2.34727604008 + 4686.8894077068 * t);
1917     result += 4.14e-09 * std::cos(5.9323760231 + 51092.7260508548 * t);
1918     result += 3.61e-09 * std::cos(2.1639860955 + 28237.2334593894 * t);
1919     result += 2.88e-09 * std::cos(0.18376252189 + 13095.8426650774 * t);
1920     result += 2.77e-09 * std::cos(5.12952205045 + 13119.7211028252 * t);
1921     result += 3.27e-09 * std::cos(6.19222146204 + 6268.8487559898 * t);
1922     result += 2.73e-09 * std::cos(0.30522428863 + 23141.5583829246 * t);
1923     result += 2.67e-09 * std::cos(5.76152585786 + 5966.6839803348 * t);
1924     result += 3.08e-09 * std::cos(5.99280509979 + 22805.7355659936 * t);
1925     result += 3.45e-09 * std::cos(2.92489919444 + 36949.2308084242 * t);
1926     result += 2.53e-09 * std::cos(5.20995219509 + 24072.9214697764 * t);
1927     result += 3.42e-09 * std::cos(5.72702586209 + 16460.333529525 * t);
1928     result += 2.61e-09 * std::cos(2.00304796059 + 6148.010769956 * t);
1929     result += 2.38e-09 * std::cos(5.08264392839 + 6915.8595893046 * t);
1930     result += 2.49e-09 * std::cos(2.94762789744 + 135.0650800354 * t);
1931     result += 3.06e-09 * std::cos(3.89764686987 + 10988.808157535 * t);
1932     result += 3.05e-09 * std::cos(0.05827812117 + 4701.1165017084 * t);
1933     result += 3.19e-09 * std::cos(2.95712862064 + 163096.180361183 * t);
1934     result += 2.09e-09 * std::cos(4.43768461442 + 6546.1597733642 * t);
1935     result += 2.7e-09 * std::cos(2.06643178717 + 4804.209275927 * t);
1936     result += 2.17e-09 * std::cos(0.73691592312 + 6303.8512454838 * t);
1937     result += 2.06e-09 * std::cos(0.32075959415 + 25934.1243310894 * t);
1938     result += 2.18e-09 * std::cos(0.18428135264 + 28286.9904848612 * t);
1939     result += 2.05e-09 * std::cos(5.21312087405 + 20995.3929664494 * t);
1940     result += 1.99e-09 * std::cos(0.44384292491 + 16737.5772365966 * t);
1941     result += 2.3e-09 * std::cos(6.06567392849 + 6287.0080032545 * t);
1942     result += 2.19e-09 * std::cos(1.291942163 + 5326.7866940208 * t);
1943     result += 2.01e-09 * std::cos(1.74700937253 + 22743.4093795164 * t);
1944     result += 2.07e-09 * std::cos(4.45440927276 + 6279.4854213396 * t);
1945     result += 2.69e-09 * std::cos(6.0564044503 + 64471.9912417449 * t);
1946     result += 1.9e-09 * std::cos(0.99256176518 + 29296.6153895786 * t);
1947     result += 2.38e-09 * std::cos(5.42471431221 + 39609.6545831656 * t);
1948     result += 2.62e-09 * std::cos(5.26961924198 + 522.5774180938 * t);
1949     result += 2.1e-09 * std::cos(4.68618183158 + 6254.6266625236 * t);
1950     result += 1.97e-09 * std::cos(2.8062455408 + 4933.2084403326 * t);
1951     result += 2.52e-09 * std::cos(4.36220154608 + 40879.4405046438 * t);
1952     result += 2.61e-09 * std::cos(1.07241516738 + 55022.9357470744 * t);
1953     result += 1.89e-09 * std::cos(3.82966734476 + 419.4846438752 * t);
1954     result += 1.85e-09 * std::cos(4.14324541379 + 5642.1982426092 * t);
1955     result += 2.47e-09 * std::cos(3.44855612987 + 6702.5604938666 * t);
1956     result += 2.05e-09 * std::cos(4.04424043223 + 536.8045120954 * t);
1957     result += 1.91e-09 * std::cos(3.14082686083 + 16723.350142595 * t);
1958     result += 2.22e-09 * std::cos(5.16263907319 + 23539.7073863328 * t);
1959     result += 1.8e-09 * std::cos(4.56214752149 + 6489.2613984286 * t);
1960     result += 2.19e-09 * std::cos(0.80382553358 + 16627.3709153772 * t);
1961     result += 2.27e-09 * std::cos(0.60156339452 + 5905.7022420756 * t);
1962     result += 1.68e-09 * std::cos(0.88753528161 + 16062.1845261168 * t);
1963     result += 1.58e-09 * std::cos(0.92127725775 + 23937.856389741 * t);
1964     result += 1.57e-09 * std::cos(4.69607868164 + 6805.6532680852 * t);
1965     result += 2.07e-09 * std::cos(4.88410451334 + 6286.6662786432 * t);
1966     result += 1.6e-09 * std::cos(4.95943826846 + 10021.8372800994 * t);
1967     result += 1.66e-09 * std::cos(0.97126433565 + 3097.88382272579 * t);
1968     result += 2.09e-09 * std::cos(5.75663411805 + 3646.3503773544 * t);
1969     result += 1.75e-09 * std::cos(6.12762824412 + 239424.390254353 * t);
1970     result += 1.73e-09 * std::cos(3.13887234973 + 6179.9830757728 * t);
1971     result += 1.57e-09 * std::cos(3.62822058179 + 18451.078546566 * t);
1972     result += 1.57e-09 * std::cos(4.67695912235 + 6709.6740408674 * t);
1973     result += 1.46e-09 * std::cos(3.09506069735 + 4907.3020501456 * t);
1974     result += 1.65e-09 * std::cos(2.2713912876 + 10660.6869350424 * t);
1975     result += 2.01e-09 * std::cos(1.67701267433 + 2107.0345075424 * t);
1976     result += 1.44e-09 * std::cos(3.96947747592 + 6019.9919266186 * t);
1977     result += 1.71e-09 * std::cos(5.91302216729 + 6058.7310542895 * t);
1978     result += 1.44e-09 * std::cos(2.1315565512 + 26084.0218062162 * t);
1979     result += 1.51e-09 * std::cos(0.67417383554 + 2388.8940204492 * t);
1980     result += 1.89e-09 * std::cos(5.07122281033 + 263.0839233728 * t);
1981     result += 1.46e-09 * std::cos(5.10373877968 + 10770.8932562618 * t);
1982     result += 1.87e-09 * std::cos(1.23915444627 + 19402.7969528166 * t);
1983     result += 1.74e-09 * std::cos(0.08407293391 + 9380.9596727172 * t);
1984     result += 1.37e-09 * std::cos(1.26247412309 + 12566.2190102856 * t);
1985     result += 1.37e-09 * std::cos(3.52826010842 + 639.897286314 * t);
1986     result += 1.48e-09 * std::cos(1.76124372592 + 5888.4499649322 * t);
1987     result += 1.64e-09 * std::cos(2.39195095081 + 6357.8574485587 * t);
1988     result += 1.46e-09 * std::cos(2.43675816553 + 5881.4037282342 * t);
1989     result += 1.61e-09 * std::cos(1.15721259372 + 26735.9452622132 * t);
1990     result += 1.31e-09 * std::cos(2.51859277344 + 6599.467719648 * t);
1991     result += 1.53e-09 * std::cos(5.85203687779 + 6281.5913772831 * t);
1992     result += 1.51e-09 * std::cos(3.72338532649 + 12669.2444742014 * t);
1993     result += 1.32e-09 * std::cos(2.38417741883 + 6525.8044539654 * t);
1994     result += 1.29e-09 * std::cos(0.75556744143 + 5017.508371365 * t);
1995     result += 1.27e-09 * std::cos(0.00254936441 + 10027.9031957292 * t);
1996     result += 1.48e-09 * std::cos(2.85102145528 + 6418.1409300268 * t);
1997     result += 1.43e-09 * std::cos(5.74460279367 + 26087.9031415742 * t);
1998     result += 1.72e-09 * std::cos(0.4128996224 + 174242.46596405 * t);
1999     result += 1.36e-09 * std::cos(4.15497742275 + 6311.5250374592 * t);
2000     result += 1.7e-09 * std::cos(5.98194913129 + 327574.514276781 * t);
2001     result += 1.24e-09 * std::cos(1.65497607604 + 32217.2001810808 * t);
2002     result += 1.36e-09 * std::cos(2.48430783417 + 13341.6743113068 * t);
2003     result += 1.65e-09 * std::cos(2.496679246 + 58953.145443294 * t);
2004     result += 1.23e-09 * std::cos(3.45660563754 + 6277.552925684 * t);
2005     result += 1.17e-09 * std::cos(0.86065134175 + 6245.0481773556 * t);
2006     result += 1.49e-09 * std::cos(5.61358280963 + 5729.506447149 * t);
2007     result += 1.53e-09 * std::cos(0.2686002995 + 245.8316462294 * t);
2008     result += 1.28e-09 * std::cos(0.71204006588 + 103.0927742186 * t);
2009     result += 1.59e-09 * std::cos(2.43166592149 + 221995.028801495 * t);
2010     result += 1.3e-09 * std::cos(2.80707316718 + 6016.4688082696 * t);
2011     result += 1.37e-09 * std::cos(1.70657709294 + 12566.08438968 * t);
2012     result += 1.11e-09 * std::cos(1.56305648432 + 17782.7320727842 * t);
2013     result += 1.13e-09 * std::cos(3.58302904101 + 25685.872802808 * t);
2014     result += 1.09e-09 * std::cos(3.26403795962 + 6819.8803620868 * t);
2015     result += 1.22e-09 * std::cos(0.34120688217 + 1162.4747044078 * t);
2016     result += 1.19e-09 * std::cos(5.84644718278 + 12721.572099417 * t);
2017     result += 1.44e-09 * std::cos(2.28899679126 + 12489.8856287072 * t);
2018     result += 1.37e-09 * std::cos(5.82029768354 + 44809.6502008634 * t);
2019     result += 1.07e-09 * std::cos(2.4281854414 + 5547.1993364596 * t);
2020     result += 1.34e-09 * std::cos(1.26539982939 + 5331.3574437408 * t);
2021     result += 1.03e-09 * std::cos(5.96518130595 + 6321.1035226272 * t);
2022     result += 1.09e-09 * std::cos(0.33808549034 + 11300.5842213564 * t);
2023     result += 1.29e-09 * std::cos(5.89187277327 + 12029.3471878874 * t);
2024     result += 1.22e-09 * std::cos(5.77325634636 + 11919.140866668 * t);
2025     result += 1.07e-09 * std::cos(6.2499898935 + 77690.7595057385 * t);
2026     result += 1.07e-09 * std::cos(1.00535580713 + 77736.7834305025 * t);
2027     result += 1.43e-09 * std::cos(0.24122178432 + 4214.0690150848 * t);
2028     result += 1.43e-09 * std::cos(0.88529649733 + 7576.560073574 * t);
2029     result += 1.07e-09 * std::cos(2.92124030496 + 31415.379249957 * t);
2030     result += 9.9e-10 * std::cos(5.70862227072 + 5540.0857894588 * t);
2031     result += 1.1e-09 * std::cos(0.37528037383 + 5863.5912061162 * t);
2032     result += 1.04e-09 * std::cos(4.44107178366 + 2118.7638603784 * t);
2033     result += 9.8e-10 * std::cos(5.95877916706 + 4061.2192153944 * t);
2034     result += 1.13e-09 * std::cos(1.24206857385 + 84672.4758445047 * t);
2035     result += 1.24e-09 * std::cos(2.55619029867 + 12539.853380183 * t);
2036     result += 1.1e-09 * std::cos(3.66952094329 + 238004.524157236 * t);
2037     result += 1.12e-09 * std::cos(4.32512422943 + 97238.6275444875 * t);
2038     result += 9.7e-10 * std::cos(3.70151541181 + 11720.0688652316 * t);
2039     result += 1.2e-09 * std::cos(1.26895630252 + 12043.574281889 * t);
2040     result += 9.4e-10 * std::cos(2.56461130309 + 19004.6479494084 * t);
2041     result += 1.17e-09 * std::cos(3.65425622684 + 34520.3093093808 * t);
2042     result += 9.8e-10 * std::cos(0.13589994287 + 11080.1715789176 * t);
2043     result += 9.7e-10 * std::cos(5.38330115253 + 7834.1210726394 * t);
2044     result += 9.7e-10 * std::cos(2.46722096722 + 71980.6335747312 * t);
2045     result += 9.5e-10 * std::cos(5.36958330451 + 6288.5987742988 * t);
2046     result += 1.11e-09 * std::cos(5.01961920313 + 11823.1616394502 * t);
2047     result += 9e-10 * std::cos(2.72299804525 + 26880.3198130326 * t);
2048     result += 9.9e-10 * std::cos(0.90164266377 + 18635.9284545362 * t);
2049     result += 1.26e-09 * std::cos(4.78722177847 + 305281.943071049 * t);
2050     result += 9.3e-10 * std::cos(0.21240380046 + 18139.2945014159 * t);
2051     result += 1.24e-09 * std::cos(5.00979495566 + 172146.97134054 * t);
2052     result += 9.9e-10 * std::cos(5.67090026475 + 16522.6597160022 * t);
2053     result += 9.2e-10 * std::cos(2.28180963676 + 12491.3701014155 * t);
2054     result += 9e-10 * std::cos(4.50544881196 + 40077.61957352 * t);
2055     result += 1e-09 * std::cos(2.00639461612 + 12323.4230960088 * t);
2056     result += 9.5e-10 * std::cos(5.68801979087 + 14919.0178537546 * t);
2057     result += 8.7e-10 * std::cos(1.86043406047 + 27707.5424942948 * t);
2058     result += 1.05e-09 * std::cos(3.02903468417 + 22345.2603761082 * t);
2059     result += 8.7e-10 * std::cos(5.43970168638 + 6272.0301497275 * t);
2060     result += 8.9e-10 * std::cos(1.63389387182 + 33326.5787331742 * t);
2061     result += 8.2e-10 * std::cos(5.58298993353 + 10241.2022911672 * t);
2062     result += 9.4e-10 * std::cos(5.47749711149 + 9924.8104215106 * t);
2063     result += 8.2e-10 * std::cos(4.71988314145 + 15141.390794312 * t);
2064     result += 9.7e-10 * std::cos(5.61458778738 + 2787.0430238574 * t);
2065     result += 9.6e-10 * std::cos(3.89073946348 + 6379.0550772092 * t);
2066     result += 8.1e-10 * std::cos(3.13038482444 + 36147.4098773004 * t);
2067     result += 1.1e-09 * std::cos(4.89978492291 + 72140.6286666874 * t);
2068     result += 9.7e-10 * std::cos(5.20764563059 + 6303.4311693902 * t);
2069     result += 8.2e-10 * std::cos(5.26342716139 + 9814.6041002912 * t);
2070     result += 1.09e-09 * std::cos(2.3555558977 + 83286.9142695536 * t);
2071     result += 9.7e-10 * std::cos(2.58492958057 + 30666.1549584328 * t);
2072     result += 9.3e-10 * std::cos(1.32651591333 + 23020.653086588 * t);
2073     result += 7.8e-10 * std::cos(3.99588630754 + 11293.4706743556 * t);
2074     result += 9e-10 * std::cos(0.57771932738 + 26482.1708096244 * t);
2075     result += 1.06e-09 * std::cos(3.92012705073 + 62883.3551395136 * t);
2076     result += 9.8e-10 * std::cos(2.94397773524 + 316.3918696566 * t);
2077     result += 7.6e-10 * std::cos(3.96310417608 + 29026.4852295078 * t);
2078     result += 7.8e-10 * std::cos(1.97068529306 + 90279.9231681033 * t);
2079     result += 7.6e-10 * std::cos(0.23027966596 + 21424.4666443034 * t);
2080     result += 8e-10 * std::cos(2.23099742212 + 266.6070417218 * t);
2081     result += 7.9e-10 * std::cos(1.46227790922 + 8982.810669309 * t);
2082     result += 1.02e-09 * std::cos(4.92129953565 + 5621.8429232104 * t);
2083     result += 1e-09 * std::cos(0.39243148321 + 24279.1070182136 * t);
2084     result += 7.1e-10 * std::cos(1.52014858474 + 33794.5437235286 * t);
2085     result += 7.6e-10 * std::cos(0.22880641443 + 57375.8019008462 * t);
2086     result += 9.1e-10 * std::cos(0.96515913904 + 48739.859897083 * t);
2087     result += 7.5e-10 * std::cos(2.77638585157 + 12964.300703391 * t);
2088     result += 7.7e-10 * std::cos(5.18846946344 + 11520.9968637952 * t);
2089     result += 6.8e-10 * std::cos(0.50006599129 + 4274.5183108324 * t);
2090     result += 7.5e-10 * std::cos(2.07323762803 + 15664.0355227086 * t);
2091     result += 7.4e-10 * std::cos(1.01884134928 + 6393.2821712108 * t);
2092     result += 7.7e-10 * std::cos(0.4666517878 + 16207.886271502 * t);
2093     result += 8.1e-10 * std::cos(4.10452219483 + 161710.618786232 * t);
2094     result += 6.7e-10 * std::cos(3.83840630887 + 6262.7205305926 * t);
2095     result += 7.1e-10 * std::cos(3.91415523291 + 7875.6718636242 * t);
2096     result += 8.1e-10 * std::cos(0.91938383237 + 74.7815985673 * t);
2097     result += 8.3e-10 * std::cos(4.69916218791 + 23006.4259925864 * t);
2098     result += 6.3e-10 * std::cos(2.32556465878 + 6279.1945146334 * t);
2099     result += 6.5e-10 * std::cos(5.41938745446 + 28628.3362260996 * t);
2100     result += 6.5e-10 * std::cos(3.02336771694 + 5959.570433334 * t);
2101     result += 6.4e-10 * std::cos(3.3103319837 + 2636.725472637 * t);
2102     result += 6.4e-10 * std::cos(0.18375587519 + 1066.49547719 * t);
2103     result += 8e-10 * std::cos(5.81239171612 + 12341.8069042809 * t);
2104     result += 6.6e-10 * std::cos(2.15105504851 + 38.0276726358 * t);
2105     result += 6.2e-10 * std::cos(2.43313614978 + 10138.1095169486 * t);
2106     result += 6e-10 * std::cos(3.1615390647 + 5490.300961524 * t);
2107     result += 6.9e-10 * std::cos(0.30764736334 + 7018.9523635232 * t);
2108     result += 6.8e-10 * std::cos(2.24442548639 + 24383.0791084414 * t);
2109     result += 7.8e-10 * std::cos(1.39649386463 + 9411.4646150872 * t);
2110     result += 6.3e-10 * std::cos(0.72976362625 + 6286.9571853494 * t);
2111     result += 7.3e-10 * std::cos(4.95125917731 + 6453.7487206106 * t);
2112     result += 7.8e-10 * std::cos(0.32736023459 + 6528.9074962208 * t);
2113     result += 5.9e-10 * std::cos(4.95362151577 + 35707.7100829074 * t);
2114     result += 7e-10 * std::cos(2.37962727525 + 15508.6151232744 * t);
2115     result += 7.3e-10 * std::cos(1.35229143111 + 5327.4761083828 * t);
2116     result += 7.2e-10 * std::cos(5.91833527334 + 10881.0995774812 * t);
2117     result += 5.9e-10 * std::cos(5.36231868425 + 10239.5838660108 * t);
2118     result += 5.9e-10 * std::cos(1.63156134967 + 61306.0115970658 * t);
2119     result += 5.4e-10 * std::cos(4.29491690425 + 21947.1113727 * t);
2120     result += 5.7e-10 * std::cos(5.89190132575 + 34513.2630726828 * t);
2121     result += 7.4e-10 * std::cos(1.38235845304 + 9967.4538999816 * t);
2122     result += 5.3e-10 * std::cos(3.86543309344 + 32370.9789915656 * t);
2123     result += 5.5e-10 * std::cos(4.51794544854 + 34911.412076091 * t);
2124     result += 6.3e-10 * std::cos(5.41479412056 + 11502.8376165305 * t);
2125     result += 6.3e-10 * std::cos(2.34416220742 + 11510.7019230567 * t);
2126     result += 6.8e-10 * std::cos(0.77493931112 + 29864.334027309 * t);
2127     result += 6e-10 * std::cos(5.57024703495 + 5756.9080032458 * t);
2128     result += 7.2e-10 * std::cos(2.80863088166 + 10866.8724834796 * t);
2129     result += 6.1e-10 * std::cos(2.69736991384 + 82576.9812209953 * t);
2130     result += 6.3e-10 * std::cos(5.32068807257 + 3116.6594122598 * t);
2131     result += 5.2e-10 * std::cos(1.02278758099 + 6272.4391846416 * t);
2132     result += 6.9e-10 * std::cos(5.00698550308 + 25287.7237993998 * t);
2133     result += 6.6e-10 * std::cos(6.12047940728 + 12074.488407524 * t);
2134     result += 5.1e-10 * std::cos(2.59519527563 + 11396.5634485742 * t);
2135     result += 5.6e-10 * std::cos(2.57995973521 + 17892.9383940036 * t);
2136     result += 5.9e-10 * std::cos(0.4416723762 + 250570.675857219 * t);
2137     result += 5.9e-10 * std::cos(3.84070143543 + 5483.254724826 * t);
2138     result += 4.9e-10 * std::cos(0.54704693048 + 22594.054895712 * t);
2139     result += 6.5e-10 * std::cos(2.38423614501 + 52670.0695933026 * t);
2140     result += 6.9e-10 * std::cos(5.34363738671 + 66813.5648357332 * t);
2141     result += 5.7e-10 * std::cos(5.42770501007 + 310145.152823924 * t);
2142     result += 5.3e-10 * std::cos(1.17760296075 + 149.5631971346 * t);
2143     result += 6.1e-10 * std::cos(4.02090887211 + 34596.3646546524 * t);
2144     result += 4.9e-10 * std::cos(4.18361320516 + 18606.4989460002 * t);
2145     result += 5.5e-10 * std::cos(0.83886167974 + 20452.8694122218 * t);
2146     result += 5e-10 * std::cos(1.46327331958 + 37455.7264959744 * t);
2147     result += 4.8e-10 * std::cos(4.53854727167 + 29822.7832363242 * t);
2148     result += 5.8e-10 * std::cos(3.34847975377 + 33990.6183442862 * t);
2149     result += 6.5e-10 * std::cos(1.45522693982 + 76251.3277706202 * t);
2150     result += 5.6e-10 * std::cos(2.35650663692 + 37724.7534197482 * t);
2151     result += 5.2e-10 * std::cos(2.61551081496 + 5999.2165311262 * t);
2152     result += 5.3e-10 * std::cos(0.17334326094 + 77717.2945864695 * t);
2153     result += 5.3e-10 * std::cos(0.79879700631 + 77710.2483497715 * t);
2154     result += 4.7e-10 * std::cos(0.43240779709 + 735.8765135318 * t);
2155     result += 5.3e-10 * std::cos(4.58763261686 + 11616.976091013 * t);
2156     result += 4.8e-10 * std::cos(6.20230111054 + 4171.4255366138 * t);
2157     result += 5.2e-10 * std::cos(1.09723616404 + 640.8776073822 * t);
2158     result += 5.7e-10 * std::cos(3.42008310383 + 50317.2034395308 * t);
2159     result += 5.3e-10 * std::cos(1.01528448581 + 149144.46708625 * t);
2160     result += 4.7e-10 * std::cos(3.00924906195 + 52175.8062831484 * t);
2161     result += 5.2e-10 * std::cos(2.03254070404 + 6293.7125153412 * t);
2162     result += 4.8e-10 * std::cos(0.12356889734 + 13362.4497067992 * t);
2163     result += 4.5e-10 * std::cos(3.37963782356 + 10763.779709261 * t);
2164     result += 4.7e-10 * std::cos(5.50981287869 + 12779.4507954208 * t);
2165     result += 6.2e-10 * std::cos(5.45209070099 + 949.1756089698 * t);
2166     result += 6.1e-10 * std::cos(2.93237974631 + 5791.4125575326 * t);
2167     result += 4.4e-10 * std::cos(2.87440620802 + 8584.6616659008 * t);
2168     result += 4.6e-10 * std::cos(4.0314179656 + 10667.8004820432 * t);
2169     result += 4.7e-10 * std::cos(3.89902931422 + 3903.9113764198 * t);
2170     result += 4.6e-10 * std::cos(2.75700467329 + 6993.0088985497 * t);
2171     result += 4.5e-10 * std::cos(1.933862933 + 206.1855484372 * t);
2172     result += 4.7e-10 * std::cos(2.57670800912 + 11492.542675792 * t);
2173     result += 4.4e-10 * std::cos(3.62570223167 + 63658.8777508376 * t);
2174     result += 5.1e-10 * std::cos(0.84536826273 + 12345.739057544 * t);
2175     result += 4.3e-10 * std::cos(0.01524970172 + 37853.8754993826 * t);
2176     result += 4.1e-10 * std::cos(3.27146326065 + 8858.3149443206 * t);
2177     result += 4.5e-10 * std::cos(3.03765521215 + 65236.2212932854 * t);
2178     result += 4.7e-10 * std::cos(1.44447548944 + 21393.5419698576 * t);
2179     result += 5.8e-10 * std::cos(5.45843180927 + 1975.492545856 * t);
2180     result += 5e-10 * std::cos(2.13285524146 + 12573.2652469836 * t);
2181     result += 4.1e-10 * std::cos(1.32190847146 + 2547.8375382324 * t);
2182     result += 4.7e-10 * std::cos(3.67579608544 + 28313.288804661 * t);
2183     result += 4.1e-10 * std::cos(2.24013475126 + 8273.8208670324 * t);
2184     result += 4.7e-10 * std::cos(6.21438985953 + 10991.3058987006 * t);
2185     result += 4.2e-10 * std::cos(3.0163181735 + 853.196381752 * t);
2186     result += 5.6e-10 * std::cos(1.09773690181 + 77376.2010224076 * t);
2187     result += 4e-10 * std::cos(2.35698541041 + 2699.7348193176 * t);
2188     result += 4.3e-10 * std::cos(5.28030898459 + 17796.9591667858 * t);
2189     result += 5.4e-10 * std::cos(2.59175932091 + 22910.4467653686 * t);
2190     result += 5.4e-10 * std::cos(0.88027764102 + 71960.3865832237 * t);
2191     result += 5.5e-10 * std::cos(0.07988899477 + 83467.1563530173 * t);
2192     result += 3.9e-10 * std::cos(1.12867321442 + 9910.583327509 * t);
2193     result += 4e-10 * std::cos(1.35670430524 + 27177.8515292002 * t);
2194     result += 3.9e-10 * std::cos(4.39624220245 + 5618.3198048614 * t);
2195     result += 4.2e-10 * std::cos(4.78798367468 + 7856.89627409019 * t);
2196     result += 4.7e-10 * std::cos(2.75482175292 + 18202.2167166594 * t);
2197     result += 3.9e-10 * std::cos(1.97008298629 + 24491.4257925834 * t);
2198     result += 4.2e-10 * std::cos(4.04346599946 + 7863.9425107882 * t);
2199     result += 3.8e-10 * std::cos(0.49178679251 + 38650.173506199 * t);
2200     result += 3.6e-10 * std::cos(4.86047906533 + 4157.1984426122 * t);
2201     result += 4.3e-10 * std::cos(5.64354880978 + 1062.9050485382 * t);
2202     result += 3.6e-10 * std::cos(3.98066313627 + 12565.1713789146 * t);
2203     result += 4.2e-10 * std::cos(2.30753932657 + 6549.6828917132 * t);
2204     result += 4e-10 * std::cos(5.3969491832 + 9498.2122306346 * t);
2205     result += 4e-10 * std::cos(3.30603243754 + 23536.116957681 * t);
2206     result += 5e-10 * std::cos(6.15760345261 + 78051.3419138334 * t);
2207     return result;
2208 }
2209 
2210 constexpr double getEarthR1(double t)
2211 {
2212     double result = 0.0;
2213     result += 0.00103018608 * std::cos(1.10748969588 + 6283.0758499914 * t);
2214     result += 1.721238e-05 * std::cos(1.06442301418 + 12566.1516999828 * t);
2215     result -= -7.02215e-06;
2216     result += 3.2346e-07 * std::cos(1.02169059149 + 18849.2275499742 * t);
2217     result += 3.0799e-07 * std::cos(2.84353804832 + 5507.5532386674 * t);
2218     result += 2.4971e-07 * std::cos(1.31906709482 + 5223.6939198022 * t);
2219     result += 1.8485e-07 * std::cos(1.42429748614 + 1577.3435424478 * t);
2220     result += 1.0078e-07 * std::cos(5.91378194648 + 10977.078804699 * t);
2221     result += 8.634e-08 * std::cos(0.27146150602 + 5486.777843175 * t);
2222     result += 8.654e-08 * std::cos(1.42046854427 + 6275.9623029906 * t);
2223     result += 5.069e-08 * std::cos(1.68613426734 + 5088.6288397668 * t);
2224     result += 4.985e-08 * std::cos(6.01401770704 + 6286.5989683404 * t);
2225     result += 4.669e-08 * std::cos(5.98724494073 + 529.6909650946 * t);
2226     result += 4.395e-08 * std::cos(0.51800238019 + 4694.0029547076 * t);
2227     result += 3.872e-08 * std::cos(4.74969833437 + 2544.3144198834 * t);
2228     result += 3.75e-08 * std::cos(5.07097685568 + 796.2980068164 * t);
2229     result += 4.1e-08 * std::cos(1.08424786092 + 9437.762934887 * t);
2230     result += 3.518e-08 * std::cos(0.02290216272 + 83996.8473181119 * t);
2231     result += 3.436e-08 * std::cos(0.94937019624 + 71430.6956181291 * t);
2232     result += 3.221e-08 * std::cos(6.15628775313 + 2146.1654164752 * t);
2233     result += 3.414e-08 * std::cos(5.41218322538 + 775.522611324 * t);
2234     result += 2.863e-08 * std::cos(5.48432847146 + 10447.3878396044 * t);
2235     result += 2.52e-08 * std::cos(0.24276941146 + 398.1490034082 * t);
2236     result += 2.201e-08 * std::cos(4.95216196651 + 6812.766815086 * t);
2237     result += 2.186e-08 * std::cos(0.41991743105 + 8031.0922630584 * t);
2238     result += 2.838e-08 * std::cos(3.42034351366 + 2352.8661537718 * t);
2239     result += 2.554e-08 * std::cos(6.13241878525 + 6438.4962494256 * t);
2240     result += 1.932e-08 * std::cos(5.31374608366 + 8429.2412664666 * t);
2241     result += 2.429e-08 * std::cos(3.09164528262 + 4690.4798363586 * t);
2242     result += 1.73e-08 * std::cos(1.5368620855 + 4705.7323075436 * t);
2243     result += 2.25e-08 * std::cos(3.68863633842 + 7084.8967811152 * t);
2244     result += 2.093e-08 * std::cos(1.28191783032 + 1748.016413067 * t);
2245     result += 1.441e-08 * std::cos(0.81656250862 + 14143.4952424306 * t);
2246     result += 1.483e-08 * std::cos(3.22225357771 + 7234.794256242 * t);
2247     result += 1.754e-08 * std::cos(3.22883705112 + 6279.5527316424 * t);
2248     result += 1.583e-08 * std::cos(4.09702349428 + 11499.6562227928 * t);
2249     result += 1.575e-08 * std::cos(5.53890170575 + 3154.6870848956 * t);
2250     result += 1.847e-08 * std::cos(1.82040335363 + 7632.9432596502 * t);
2251     result += 1.504e-08 * std::cos(3.63293385726 + 11513.8833167944 * t);
2252     result += 1.337e-08 * std::cos(4.64440864339 + 6836.6452528338 * t);
2253     result += 1.275e-08 * std::cos(2.69341415363 + 1349.8674096588 * t);
2254     result += 1.352e-08 * std::cos(6.15101580257 + 5746.271337896 * t);
2255     result += 1.125e-08 * std::cos(3.35673439497 + 17789.845619785 * t);
2256     result += 1.47e-08 * std::cos(3.65282991755 + 1194.4470102246 * t);
2257     result += 1.177e-08 * std::cos(2.57676109092 + 13367.9726311066 * t);
2258     result += 1.101e-08 * std::cos(4.49748696552 + 4292.3308329504 * t);
2259     result += 1.234e-08 * std::cos(5.65036509521 + 5760.4984318976 * t);
2260     result += 9.84e-09 * std::cos(0.65517395136 + 5856.4776591154 * t);
2261     result += 9.28e-09 * std::cos(2.32420318751 + 10213.285546211 * t);
2262     result += 1.077e-08 * std::cos(5.82812169132 + 12036.4607348882 * t);
2263     result += 9.16e-09 * std::cos(0.76613009583 + 16730.4636895958 * t);
2264     result += 8.77e-09 * std::cos(1.50137505051 + 11926.2544136688 * t);
2265     result += 1.023e-08 * std::cos(5.62076589825 + 6256.7775301916 * t);
2266     result += 8.51e-09 * std::cos(0.65709335533 + 155.4203994342 * t);
2267     result += 8.02e-09 * std::cos(4.10519132088 + 951.7184062506 * t);
2268     result += 8.57e-09 * std::cos(1.41661697538 + 5753.3848848968 * t);
2269     result += 9.94e-09 * std::cos(1.14418521187 + 1059.3819301892 * t);
2270     result += 8.13e-09 * std::cos(1.63948433322 + 6681.2248533996 * t);
2271     result += 6.62e-09 * std::cos(4.5520045226 + 5216.5803728014 * t);
2272     result += 6.44e-09 * std::cos(4.19478168733 + 6040.3472460174 * t);
2273     result += 6.26e-09 * std::cos(1.50767713598 + 5643.1785636774 * t);
2274     result += 5.9e-09 * std::cos(6.18277145205 + 4164.311989613 * t);
2275     result += 6.35e-09 * std::cos(0.52413263542 + 6290.1893969922 * t);
2276     result += 6.5e-09 * std::cos(0.9793569035 + 25132.3033999656 * t);
2277     result += 5.68e-09 * std::cos(2.30125315873 + 10973.55568635 * t);
2278     result += 5.47e-09 * std::cos(5.27256412213 + 3340.6124266998 * t);
2279     result += 5.47e-09 * std::cos(2.20144422886 + 1592.5960136328 * t);
2280     result += 5.26e-09 * std::cos(0.92464258226 + 11371.7046897582 * t);
2281     result += 4.9e-09 * std::cos(5.90951388655 + 3894.1818295422 * t);
2282     result += 4.78e-09 * std::cos(1.66857963179 + 12168.0026965746 * t);
2283     result += 5.16e-09 * std::cos(3.59803483887 + 10969.9652576982 * t);
2284     result += 5.18e-09 * std::cos(3.97914412373 + 17298.1823273262 * t);
2285     result += 5.34e-09 * std::cos(5.03740926442 + 9917.6968745098 * t);
2286     result += 4.87e-09 * std::cos(2.50545369269 + 6127.6554505572 * t);
2287     result += 4.16e-09 * std::cos(4.04828175503 + 10984.1923516998 * t);
2288     result += 5.38e-09 * std::cos(5.54081539805 + 553.5694028424 * t);
2289     result += 4.02e-09 * std::cos(2.16544019233 + 7860.4193924392 * t);
2290     result += 5.53e-09 * std::cos(2.32177369366 + 11506.7697697936 * t);
2291     result += 3.67e-09 * std::cos(3.3915253225 + 6496.3749454294 * t);
2292     result += 3.6e-09 * std::cos(5.34379853282 + 7079.3738568078 * t);
2293     result += 3.37e-09 * std::cos(3.61563704045 + 11790.6290886588 * t);
2294     result += 4.56e-09 * std::cos(0.30754294809 + 801.8209311238 * t);
2295     result += 4.17e-09 * std::cos(3.70009308674 + 10575.4066829418 * t);
2296     result += 3.81e-09 * std::cos(5.82033971802 + 7058.5984613154 * t);
2297     result += 3.21e-09 * std::cos(0.31988767355 + 16200.7727245012 * t);
2298     result += 3.64e-09 * std::cos(1.08414306177 + 6309.3741697912 * t);
2299     result += 2.94e-09 * std::cos(4.54798604957 + 11856.2186514245 * t);
2300     result += 2.9e-09 * std::cos(1.26473978562 + 8635.9420037632 * t);
2301     result += 3.99e-09 * std::cos(4.16998866302 + 26.2983197998 * t);
2302     result += 2.62e-09 * std::cos(5.08316906342 + 10177.2576795336 * t);
2303     result += 2.43e-09 * std::cos(2.2574609119 + 11712.9553182308 * t);
2304     result += 2.37e-09 * std::cos(1.05070575346 + 242.728603974 * t);
2305     result += 2.75e-09 * std::cos(3.45319481756 + 5884.9268465832 * t);
2306     result += 2.55e-09 * std::cos(5.38496831087 + 21228.3920235458 * t);
2307     result += 3.07e-09 * std::cos(4.24313526604 + 3738.761430108 * t);
2308     result += 2.16e-09 * std::cos(3.46037894728 + 213.299095438 * t);
2309     result += 1.96e-09 * std::cos(0.69029243914 + 1990.745017041 * t);
2310     result += 1.98e-09 * std::cos(5.16301829964 + 12352.8526045448 * t);
2311     result += 2.14e-09 * std::cos(3.91876200279 + 13916.0191096416 * t);
2312     result += 2.12e-09 * std::cos(4.00861198517 + 5230.807466803 * t);
2313     result += 1.84e-09 * std::cos(5.59805976614 + 6283.14316029419 * t);
2314     result += 1.84e-09 * std::cos(2.85275392124 + 7238.6755916 * t);
2315     result += 1.79e-09 * std::cos(2.54259058334 + 14314.1681130498 * t);
2316     result += 2.25e-09 * std::cos(1.64458698399 + 4732.0306273434 * t);
2317     result += 2.36e-09 * std::cos(5.58826125715 + 6069.7767545534 * t);
2318     result += 1.87e-09 * std::cos(2.72805985443 + 6062.6632075526 * t);
2319     result += 1.84e-09 * std::cos(6.04216273598 + 6283.0085396886 * t);
2320     result += 2.3e-09 * std::cos(3.62591335086 + 6284.0561710596 * t);
2321     result += 1.63e-09 * std::cos(2.19117396803 + 18073.7049386502 * t);
2322     result += 1.72e-09 * std::cos(0.9761295074 + 3930.2096962196 * t);
2323     result += 2.15e-09 * std::cos(1.04672844028 + 3496.032826134 * t);
2324     result += 1.69e-09 * std::cos(4.75084479006 + 17267.2682016912 * t);
2325     result += 1.52e-09 * std::cos(0.19390712179 + 9779.1086761254 * t);
2326     result += 1.82e-09 * std::cos(5.16288118255 + 17253.0411076896 * t);
2327     result += 1.49e-09 * std::cos(0.8094418426 + 709.9330485583 * t);
2328     result += 1.63e-09 * std::cos(2.1920957039 + 6076.8903015542 * t);
2329     result += 1.86e-09 * std::cos(5.01159497089 + 11015.1064773348 * t);
2330     result += 1.34e-09 * std::cos(0.97765485759 + 65147.6197681377 * t);
2331     result += 1.41e-09 * std::cos(4.38421981312 + 4136.9104335162 * t);
2332     result += 1.58e-09 * std::cos(4.60974280627 + 9623.6882766912 * t);
2333     result += 1.33e-09 * std::cos(3.30508592837 + 154717.609887683 * t);
2334     result += 1.63e-09 * std::cos(6.11782626245 + 3.523118349 * t);
2335     result += 1.74e-09 * std::cos(1.58078542187 + 7.1135470008 * t);
2336     result += 1.41e-09 * std::cos(0.49976927274 + 25158.6017197654 * t);
2337     result += 1.24e-09 * std::cos(6.03440460031 + 9225.539273283 * t);
2338     result += 1.5e-09 * std::cos(5.30166336812 + 13517.8701062334 * t);
2339     result += 1.27e-09 * std::cos(1.92389511438 + 22483.8485744926 * t);
2340     result += 1.21e-09 * std::cos(2.37813129011 + 167283.761587666 * t);
2341     result += 1.2e-09 * std::cos(3.98423684853 + 4686.8894077068 * t);
2342     result += 1.17e-09 * std::cos(5.81072642211 + 12569.6748183318 * t);
2343     result += 1.22e-09 * std::cos(5.60973054224 + 5642.1982426092 * t);
2344     result += 1.57e-09 * std::cos(3.40236426002 + 16496.3613962024 * t);
2345     result += 1.29e-09 * std::cos(2.10705116371 + 1589.0728952838 * t);
2346     result += 1.16e-09 * std::cos(0.55839966736 + 5849.3641121146 * t);
2347     result += 1.23e-09 * std::cos(1.52961392771 + 12559.038152982 * t);
2348     result += 1.11e-09 * std::cos(0.44848279675 + 6172.869528772 * t);
2349     result += 1.23e-09 * std::cos(5.81645568991 + 6282.0955289232 * t);
2350     result += 1.5e-09 * std::cos(4.26278409223 + 3128.3887650958 * t);
2351     result += 1.06e-09 * std::cos(2.27437761356 + 5429.8794682394 * t);
2352     result += 1.04e-09 * std::cos(4.42743707728 + 23543.2305046818 * t);
2353     result += 1.21e-09 * std::cos(0.39459045915 + 12132.439962106 * t);
2354     result += 1.04e-09 * std::cos(2.41842602527 + 426.598190876 * t);
2355     result += 1.1e-09 * std::cos(5.80381480447 + 16858.4825329332 * t);
2356     result += 1e-09 * std::cos(2.93805577485 + 4535.0594369244 * t);
2357     result += 9.7e-10 * std::cos(3.97935904984 + 6133.5126528568 * t);
2358     result += 1.1e-09 * std::cos(6.22339014386 + 12146.6670561076 * t);
2359     result += 9.8e-10 * std::cos(0.87576563709 + 6525.8044539654 * t);
2360     result += 9.8e-10 * std::cos(3.15248421301 + 10440.2742926036 * t);
2361     result += 9.5e-10 * std::cos(2.461684111 + 3097.88382272579 * t);
2362     result += 8.8e-10 * std::cos(0.23371480284 + 13119.7211028252 * t);
2363     result += 9.8e-10 * std::cos(5.77016493489 + 7342.4577801806 * t);
2364     result += 9.2e-10 * std::cos(6.03915555063 + 20426.571092422 * t);
2365     result += 9.6e-10 * std::cos(5.56909292561 + 2388.8940204492 * t);
2366     result += 8.1e-10 * std::cos(1.32131147691 + 5650.2921106782 * t);
2367     result += 8.6e-10 * std::cos(3.94529200528 + 10454.5013866052 * t);
2368     result += 7.6e-10 * std::cos(2.70729716925 + 143571.324284816 * t);
2369     result += 9.1e-10 * std::cos(5.64100034152 + 8827.3902698748 * t);
2370     result += 7.6e-10 * std::cos(1.80783856698 + 28286.9904848612 * t);
2371     result += 8.1e-10 * std::cos(1.90858992196 + 29088.811415985 * t);
2372     result += 7.5e-10 * std::cos(3.40955892978 + 5481.2549188676 * t);
2373     result += 6.9e-10 * std::cos(4.49936170873 + 17256.6315363414 * t);
2374     result += 8.8e-10 * std::cos(1.10098454357 + 11769.8536931664 * t);
2375     result += 6.6e-10 * std::cos(2.78285801977 + 536.8045120954 * t);
2376     result += 6.8e-10 * std::cos(3.88179770758 + 17260.1546546904 * t);
2377     result += 8.4e-10 * std::cos(1.59303306354 + 9380.9596727172 * t);
2378     result += 8.8e-10 * std::cos(3.88076636762 + 7477.522860216 * t);
2379     result += 6.1e-10 * std::cos(6.17558202197 + 11087.2851259184 * t);
2380     result += 6e-10 * std::cos(4.34824715818 + 6206.8097787158 * t);
2381     result += 8.2e-10 * std::cos(4.59843208943 + 9388.0059094152 * t);
2382     result += 7.9e-10 * std::cos(1.63131230601 + 4933.2084403326 * t);
2383     result += 7.8e-10 * std::cos(4.20905757484 + 5729.506447149 * t);
2384     result += 5.7e-10 * std::cos(5.48157926651 + 18319.5365848796 * t);
2385     result += 6e-10 * std::cos(1.01261781084 + 12721.572099417 * t);
2386     result += 5.6e-10 * std::cos(1.63031935692 + 15720.8387848784 * t);
2387     result += 5.5e-10 * std::cos(0.24926735018 + 15110.4661198662 * t);
2388     result += 6.1e-10 * std::cos(5.93059279661 + 12539.853380183 * t);
2389     result += 5.5e-10 * std::cos(4.84298966314 + 13095.8426650774 * t);
2390     result += 6.7e-10 * std::cos(6.11690589247 + 8662.240323563 * t);
2391     result += 5.4e-10 * std::cos(5.73750638571 + 3634.6210245184 * t);
2392     result += 7.4e-10 * std::cos(1.05466745829 + 16460.333529525 * t);
2393     result += 5.3e-10 * std::cos(2.29084335688 + 16062.1845261168 * t);
2394     result += 6.4e-10 * std::cos(2.13513767927 + 7875.6718636242 * t);
2395     result += 6.7e-10 * std::cos(0.07096807518 + 14945.3161735544 * t);
2396     result += 5.1e-10 * std::cos(2.31511194429 + 6262.7205305926 * t);
2397     result += 5.7e-10 * std::cos(5.77055471237 + 12043.574281889 * t);
2398     result += 5.6e-10 * std::cos(4.41980790431 + 4701.1165017084 * t);
2399     result += 5.9e-10 * std::cos(5.87963500073 + 5331.3574437408 * t);
2400     result += 5.8e-10 * std::cos(2.30546168628 + 955.5997416086 * t);
2401     result += 4.9e-10 * std::cos(1.93839278478 + 5333.9002410216 * t);
2402     result += 4.8e-10 * std::cos(2.69973662261 + 6709.6740408674 * t);
2403     result += 6.4e-10 * std::cos(1.64379897981 + 6262.300454499 * t);
2404     result += 4.6e-10 * std::cos(3.98449608961 + 98068.5367163054 * t);
2405     result += 5e-10 * std::cos(3.68875893005 + 12323.4230960088 * t);
2406     result += 4.5e-10 * std::cos(3.30068569697 + 22003.9146348698 * t);
2407     result += 4.7e-10 * std::cos(1.26317154881 + 11919.140866668 * t);
2408     result += 4.5e-10 * std::cos(0.89150445122 + 51868.2486621788 * t);
2409     result += 4.3e-10 * std::cos(1.61526242998 + 6277.552925684 * t);
2410     result += 4.3e-10 * std::cos(5.74295325645 + 11403.676995575 * t);
2411     result += 4.4e-10 * std::cos(3.43070646822 + 10021.8372800994 * t);
2412     result += 5.6e-10 * std::cos(0.02481833774 + 15671.0817594066 * t);
2413     result += 5.5e-10 * std::cos(3.14274403422 + 33019.0211122046 * t);
2414     result += 4.5e-10 * std::cos(3.00877289177 + 8982.810669309 * t);
2415     result += 4.6e-10 * std::cos(0.73303568429 + 6303.4311693902 * t);
2416     result += 4.9e-10 * std::cos(1.60455690285 + 6303.8512454838 * t);
2417     result += 4.5e-10 * std::cos(0.40210030323 + 6805.6532680852 * t);
2418     result += 5.3e-10 * std::cos(0.94869680175 + 10988.808157535 * t);
2419     result += 4.1e-10 * std::cos(1.61122384329 + 6819.8803620868 * t);
2420     result += 5.5e-10 * std::cos(0.89439119424 + 11933.3679606696 * t);
2421     result += 4.5e-10 * std::cos(3.88495384656 + 60530.4889857418 * t);
2422     result += 4e-10 * std::cos(4.75740908001 + 38526.574350872 * t);
2423     result += 4e-10 * std::cos(1.49921251887 + 18451.078546566 * t);
2424     result += 4e-10 * std::cos(3.77498297228 + 26087.9031415742 * t);
2425     result += 5.1e-10 * std::cos(1.70258603562 + 1551.045222648 * t);
2426     result += 3.9e-10 * std::cos(2.97100699926 + 2118.7638603784 * t);
2427     result += 5.3e-10 * std::cos(5.19854123078 + 77713.7714681205 * t);
2428     result += 4.7e-10 * std::cos(4.26356628717 + 21424.4666443034 * t);
2429     result += 3.7e-10 * std::cos(0.62902722802 + 24356.7807886416 * t);
2430     result += 3.6e-10 * std::cos(0.11087914947 + 10344.2950653858 * t);
2431     result += 3.6e-10 * std::cos(0.77037556319 + 12029.3471878874 * t);
2432     result += 3.5e-10 * std::cos(3.30933994515 + 24072.9214697764 * t);
2433     result += 3.5e-10 * std::cos(5.93650887012 + 31570.7996493912 * t);
2434     result += 3.6e-10 * std::cos(2.15108874765 + 30774.5016425748 * t);
2435     result += 3.6e-10 * std::cos(1.75078825382 + 16207.886271502 * t);
2436     result += 3.3e-10 * std::cos(5.06264177921 + 226858.23855437 * t);
2437     result += 3.4e-10 * std::cos(6.168913788 + 24491.4257925834 * t);
2438     result += 3.5e-10 * std::cos(3.19120695549 + 32217.2001810808 * t);
2439     result += 3.4e-10 * std::cos(2.31528650443 + 55798.4583583984 * t);
2440     result += 3.2e-10 * std::cos(4.21446357042 + 15664.0355227086 * t);
2441     result += 3.9e-10 * std::cos(1.24979117796 + 6418.1409300268 * t);
2442     result += 3.7e-10 * std::cos(4.1194365577 + 2787.0430238574 * t);
2443     result += 3.2e-10 * std::cos(1.6288771089 + 639.897286314 * t);
2444     result += 3.8e-10 * std::cos(5.89832942685 + 640.8776073822 * t);
2445     result += 3.2e-10 * std::cos(1.72442327688 + 27433.889215875 * t);
2446     result += 3.1e-10 * std::cos(2.78828943753 + 12139.5535091068 * t);
2447     result += 3.5e-10 * std::cos(4.44608896525 + 18202.2167166594 * t);
2448     result += 3.4e-10 * std::cos(3.96287980676 + 18216.443810661 * t);
2449     result += 3.3e-10 * std::cos(4.73611335874 + 16723.350142595 * t);
2450     result += 3.4e-10 * std::cos(1.43910280005 + 49515.382508407 * t);
2451     result += 3.1e-10 * std::cos(0.23302920161 + 23581.2581773176 * t);
2452     result += 2.9e-10 * std::cos(2.0263384022 + 11609.8625440122 * t);
2453     result += 3e-10 * std::cos(2.5492323024 + 9924.8104215106 * t);
2454     result += 3.2e-10 * std::cos(4.91793198558 + 11300.5842213564 * t);
2455     result += 2.8e-10 * std::cos(0.26187189577 + 13521.7514415914 * t);
2456     result += 2.8e-10 * std::cos(3.84568936822 + 2699.7348193176 * t);
2457     result += 2.9e-10 * std::cos(1.83149729794 + 29822.7832363242 * t);
2458     result += 3.3e-10 * std::cos(4.60320094415 + 19004.6479494084 * t);
2459     result += 2.7e-10 * std::cos(4.46183450287 + 6702.5604938666 * t);
2460     result += 3e-10 * std::cos(4.4649407224 + 36147.4098773004 * t);
2461     result += 2.7e-10 * std::cos(0.03211931363 + 6279.7894925736 * t);
2462     result += 2.6e-10 * std::cos(5.46497324333 + 6245.0481773556 * t);
2463     result += 3.5e-10 * std::cos(4.52695674113 + 36949.2308084242 * t);
2464     result += 2.7e-10 * std::cos(3.52528177609 + 10770.8932562618 * t);
2465     result += 2.6e-10 * std::cos(1.48499438453 + 11080.1715789176 * t);
2466     result += 3.5e-10 * std::cos(2.82154380962 + 19402.7969528166 * t);
2467     result += 2.5e-10 * std::cos(2.46339998836 + 6279.4854213396 * t);
2468     result += 2.6e-10 * std::cos(4.97688894643 + 16737.5772365966 * t);
2469     result += 2.6e-10 * std::cos(2.36136541526 + 17996.0311682222 * t);
2470     result += 2.9e-10 * std::cos(4.15148654061 + 45892.730433157 * t);
2471     result += 2.6e-10 * std::cos(4.50714272714 + 17796.9591667858 * t);
2472     result += 2.7e-10 * std::cos(4.72625223674 + 1066.49547719 * t);
2473     result += 2.5e-10 * std::cos(2.89309528854 + 6286.6662786432 * t);
2474     result += 2.7e-10 * std::cos(0.37462444357 + 12964.300703391 * t);
2475     result += 2.9e-10 * std::cos(4.94860010533 + 5863.5912061162 * t);
2476     result += 3.1e-10 * std::cos(3.93096113577 + 29864.334027309 * t);
2477     result += 2.4e-10 * std::cos(6.14987193584 + 18606.4989460002 * t);
2478     result += 2.4e-10 * std::cos(3.74225964547 + 29026.4852295078 * t);
2479     result += 2.5e-10 * std::cos(5.70460621565 + 27707.5424942948 * t);
2480     result += 2.5e-10 * std::cos(5.33928840652 + 15141.390794312 * t);
2481     result += 2.7e-10 * std::cos(3.0232089714 + 6286.3622074092 * t);
2482     result += 2.3e-10 * std::cos(0.28364955406 + 5327.4761083828 * t);
2483     result += 2.6e-10 * std::cos(1.34240461687 + 18875.525869774 * t);
2484     result += 2.4e-10 * std::cos(1.33998410121 + 19800.9459562248 * t);
2485     result += 2.5e-10 * std::cos(6.00172494004 + 6489.2613984286 * t);
2486     result += 2.2e-10 * std::cos(1.81777974484 + 6288.5987742988 * t);
2487     result += 2.2e-10 * std::cos(3.5860360664 + 6915.8595893046 * t);
2488     result += 2.9e-10 * std::cos(2.09564449439 + 15265.8865193004 * t);
2489     result += 2.2e-10 * std::cos(1.02173599251 + 11925.2740926006 * t);
2490     result += 2.2e-10 * std::cos(4.74660932338 + 28230.1872226914 * t);
2491     result += 2.1e-10 * std::cos(2.30688751432 + 5999.2165311262 * t);
2492     result += 2.1e-10 * std::cos(3.2265494443 + 25934.1243310894 * t);
2493     result += 2.1e-10 * std::cos(3.04956726238 + 6566.9351688566 * t);
2494     result += 2.7e-10 * std::cos(5.35653084499 + 33794.5437235286 * t);
2495     result += 2.8e-10 * std::cos(3.91168324815 + 18208.349942592 * t);
2496     result += 2e-10 * std::cos(1.52296293311 + 135.0650800354 * t);
2497     result += 2.2e-10 * std::cos(4.66462839521 + 13362.4497067992 * t);
2498     result += 1.9e-10 * std::cos(1.78121167862 + 156137.475984799 * t);
2499     result += 1.9e-10 * std::cos(2.99969102221 + 19651.048481098 * t);
2500     result += 1.9e-10 * std::cos(2.86664273362 + 18422.6293590982 * t);
2501     result += 2.5e-10 * std::cos(0.94995632141 + 31415.379249957 * t);
2502     result += 1.9e-10 * std::cos(4.71432851499 + 77690.7595057385 * t);
2503     result += 1.9e-10 * std::cos(2.54227398241 + 77736.7834305025 * t);
2504     result += 2e-10 * std::cos(5.91915117116 + 48739.859897083 * t);
2505     return result;
2506 }
2507 
2508 constexpr double getEarthR2(double t)
2509 {
2510     double result = 0.0;
2511     result += 4.359385e-05 * std::cos(5.78455133738 + 6283.0758499914 * t);
2512     result += 1.23633e-06 * std::cos(5.57934722157 + 12566.1516999828 * t);
2513     result -= -1.2341e-07;
2514     result += 8.792e-08 * std::cos(3.62777733395 + 77713.7714681205 * t);
2515     result += 5.689e-08 * std::cos(1.86958905084 + 5573.1428014331 * t);
2516     result += 3.301e-08 * std::cos(5.47027913302 + 18849.2275499742 * t);
2517     result += 1.471e-08 * std::cos(4.48028885617 + 5507.5532386674 * t);
2518     result += 1.013e-08 * std::cos(2.81456417694 + 5223.6939198022 * t);
2519     result += 8.54e-09 * std::cos(3.10878241236 + 1577.3435424478 * t);
2520     result += 1.102e-08 * std::cos(2.84173992403 + 161000.685737674 * t);
2521     result += 6.48e-09 * std::cos(5.47349498544 + 775.522611324 * t);
2522     result += 6.09e-09 * std::cos(1.37969434104 + 6438.4962494256 * t);
2523     result += 4.99e-09 * std::cos(4.4164924225 + 6286.5989683404 * t);
2524     result += 4.17e-09 * std::cos(0.90242451175 + 10977.078804699 * t);
2525     result += 4.02e-09 * std::cos(3.2037658529 + 5088.6288397668 * t);
2526     result += 3.51e-09 * std::cos(1.8107922777 + 5486.777843175 * t);
2527     result += 4.67e-09 * std::cos(3.65753702738 + 7084.8967811152 * t);
2528     result += 4.58e-09 * std::cos(5.38585314743 + 149854.400134808 * t);
2529     result += 3.04e-09 * std::cos(3.51701098693 + 796.2980068164 * t);
2530     result += 2.66e-09 * std::cos(6.17413982699 + 6836.6452528338 * t);
2531     result += 2.79e-09 * std::cos(1.84120501086 + 4694.0029547076 * t);
2532     result += 2.6e-09 * std::cos(1.41629543251 + 2146.1654164752 * t);
2533     result += 2.66e-09 * std::cos(3.13832905677 + 71430.6956181291 * t);
2534     result += 3.21e-09 * std::cos(5.35313367048 + 3154.6870848956 * t);
2535     result += 2.38e-09 * std::cos(2.17720020018 + 155.4203994342 * t);
2536     result += 2.93e-09 * std::cos(4.61501268144 + 4690.4798363586 * t);
2537     result += 2.29e-09 * std::cos(4.7596958807 + 7234.794256242 * t);
2538     result += 2.11e-09 * std::cos(0.21868065485 + 4705.7323075436 * t);
2539     result += 2.01e-09 * std::cos(4.21905743357 + 1349.8674096588 * t);
2540     result += 1.95e-09 * std::cos(4.57808285364 + 529.6909650946 * t);
2541     result += 2.53e-09 * std::cos(2.81496293039 + 1748.016413067 * t);
2542     result += 1.82e-09 * std::cos(5.70454011389 + 6040.3472460174 * t);
2543     result += 1.79e-09 * std::cos(6.02897097053 + 4292.3308329504 * t);
2544     result += 1.86e-09 * std::cos(1.58690991244 + 6309.3741697912 * t);
2545     result += 1.7e-09 * std::cos(2.90220009715 + 9437.762934887 * t);
2546     result += 1.66e-09 * std::cos(1.99984925026 + 8031.0922630584 * t);
2547     result += 1.58e-09 * std::cos(0.04783713552 + 2544.3144198834 * t);
2548     result += 1.97e-09 * std::cos(2.01083639502 + 1194.4470102246 * t);
2549     result += 1.65e-09 * std::cos(5.78372596778 + 83996.8473181119 * t);
2550     result += 2.14e-09 * std::cos(3.38285934319 + 7632.9432596502 * t);
2551     result += 1.4e-09 * std::cos(0.36401486094 + 10447.3878396044 * t);
2552     result += 1.51e-09 * std::cos(0.95153163031 + 6127.6554505572 * t);
2553     result += 1.36e-09 * std::cos(1.48426306582 + 2352.8661537718 * t);
2554     result += 1.27e-09 * std::cos(5.48475435134 + 951.7184062506 * t);
2555     result += 1.26e-09 * std::cos(5.26866506592 + 6279.5527316424 * t);
2556     result += 1.25e-09 * std::cos(3.75754889288 + 6812.766815086 * t);
2557     result += 1.01e-09 * std::cos(4.95015746147 + 398.1490034082 * t);
2558     result += 1.02e-09 * std::cos(0.68468295277 + 1592.5960136328 * t);
2559     result += 1e-09 * std::cos(1.14568935785 + 3894.1818295422 * t);
2560     result += 1.29e-09 * std::cos(0.76540016965 + 553.5694028424 * t);
2561     result += 1.09e-09 * std::cos(5.41063597567 + 6256.7775301916 * t);
2562     result += 7.5e-10 * std::cos(5.84804322893 + 242.728603974 * t);
2563     result += 9.5e-10 * std::cos(1.94452244083 + 11856.2186514245 * t);
2564     result += 7.7e-10 * std::cos(0.69373708195 + 8429.2412664666 * t);
2565     result += 1e-09 * std::cos(5.19725292131 + 244287.600007228 * t);
2566     result += 8e-10 * std::cos(6.18440483705 + 1059.3819301892 * t);
2567     result += 6.9e-10 * std::cos(5.25699888595 + 14143.4952424306 * t);
2568     result += 8.5e-10 * std::cos(5.39484725499 + 25132.3033999656 * t);
2569     result += 6.6e-10 * std::cos(0.51779993906 + 801.8209311238 * t);
2570     result += 5.5e-10 * std::cos(5.16878202461 + 7058.5984613154 * t);
2571     result += 5.1e-10 * std::cos(3.88759155247 + 12036.4607348882 * t);
2572     result += 5e-10 * std::cos(5.57636570536 + 6290.1893969922 * t);
2573     result += 6.1e-10 * std::cos(2.24359003264 + 8635.9420037632 * t);
2574     result += 5e-10 * std::cos(5.54441900966 + 1990.745017041 * t);
2575     result += 5.6e-10 * std::cos(4.0030107804 + 13367.9726311066 * t);
2576     result += 5.2e-10 * std::cos(4.13138898038 + 7860.4193924392 * t);
2577     result += 5.2e-10 * std::cos(3.90943054011 + 26.2983197998 * t);
2578     result += 4.1e-10 * std::cos(3.5712848278 + 7079.3738568078 * t);
2579     result += 5.6e-10 * std::cos(2.76959005761 + 90955.5516944961 * t);
2580     result += 4.2e-10 * std::cos(1.91461189199 + 7477.522860216 * t);
2581     result += 4.2e-10 * std::cos(0.42728171713 + 10213.285546211 * t);
2582     result += 4.2e-10 * std::cos(1.09413724455 + 709.9330485583 * t);
2583     result += 3.9e-10 * std::cos(3.93298068961 + 10973.55568635 * t);
2584     result += 3.8e-10 * std::cos(6.17935925345 + 9917.6968745098 * t);
2585     result += 4.9e-10 * std::cos(0.83021145241 + 11506.7697697936 * t);
2586     result += 5.3e-10 * std::cos(1.45828359397 + 233141.314404362 * t);
2587     result += 4.7e-10 * std::cos(6.21568666789 + 6681.2248533996 * t);
2588     result += 3.7e-10 * std::cos(0.3635930998 + 10177.2576795336 * t);
2589     result += 3.5e-10 * std::cos(3.33024911524 + 5643.1785636774 * t);
2590     result += 3.4e-10 * std::cos(5.63446915337 + 6525.8044539654 * t);
2591     result += 3.5e-10 * std::cos(5.36033855038 + 25158.6017197654 * t);
2592     result += 3.4e-10 * std::cos(5.36319798321 + 4933.2084403326 * t);
2593     result += 3.3e-10 * std::cos(4.24722336872 + 12569.6748183318 * t);
2594     result += 4.3e-10 * std::cos(5.26370903404 + 10575.4066829418 * t);
2595     result += 4.2e-10 * std::cos(5.08837645072 + 11015.1064773348 * t);
2596     result += 4e-10 * std::cos(1.98334703186 + 6284.0561710596 * t);
2597     result += 4.2e-10 * std::cos(4.22496037505 + 88860.0570709867 * t);
2598     result += 2.9e-10 * std::cos(3.1908862817 + 11926.2544136688 * t);
2599     result += 2.9e-10 * std::cos(0.15217616684 + 12168.0026965746 * t);
2600     result += 3e-10 * std::cos(1.61904744136 + 9779.1086761254 * t);
2601     result += 2.7e-10 * std::cos(0.76388991416 + 1589.0728952838 * t);
2602     result += 3.6e-10 * std::cos(2.74712003443 + 3738.761430108 * t);
2603     result += 3.3e-10 * std::cos(3.08807829566 + 3930.2096962196 * t);
2604     result += 3.1e-10 * std::cos(5.34906619513 + 143571.324284816 * t);
2605     result += 2.5e-10 * std::cos(0.10240267494 + 22483.8485744926 * t);
2606     result += 3e-10 * std::cos(3.47110495524 + 14945.3161735544 * t);
2607     result += 2.4e-10 * std::cos(1.10425016019 + 4535.0594369244 * t);
2608     result += 2.4e-10 * std::cos(1.5803725978 + 6496.3749454294 * t);
2609     result += 2.3e-10 * std::cos(3.87710321433 + 6275.9623029906 * t);
2610     result += 2.5e-10 * std::cos(3.9452977897 + 3128.3887650958 * t);
2611     result += 2.3e-10 * std::cos(3.44685609601 + 4136.9104335162 * t);
2612     result += 2.3e-10 * std::cos(3.83156029849 + 5753.3848848968 * t);
2613     result += 2.2e-10 * std::cos(1.86956128067 + 16730.4636895958 * t);
2614     result += 2.5e-10 * std::cos(2.42188933855 + 5729.506447149 * t);
2615     result += 2e-10 * std::cos(1.78208352927 + 17789.845619785 * t);
2616     result += 2.1e-10 * std::cos(4.303630874 + 16858.4825329332 * t);
2617     result += 2.1e-10 * std::cos(0.49258939822 + 29088.811415985 * t);
2618     result += 2.5e-10 * std::cos(1.33030250444 + 6282.0955289232 * t);
2619     result += 2.7e-10 * std::cos(2.54785812264 + 3496.032826134 * t);
2620     result += 2.2e-10 * std::cos(1.1123252195 + 12721.572099417 * t);
2621     result += 2.1e-10 * std::cos(5.97759081637 + 7.1135470008 * t);
2622     result += 1.9e-10 * std::cos(0.80292033311 + 16062.1845261168 * t);
2623     result += 2.3e-10 * std::cos(4.12454848769 + 2388.8940204492 * t);
2624     result += 2.2e-10 * std::cos(4.92663152168 + 18875.525869774 * t);
2625     result += 2.3e-10 * std::cos(5.68902059771 + 16460.333529525 * t);
2626     result += 2.3e-10 * std::cos(4.97346265647 + 17260.1546546904 * t);
2627     result += 2.3e-10 * std::cos(3.03021283729 + 66567.4858652543 * t);
2628     result += 1.6e-10 * std::cos(3.89740925257 + 5331.3574437408 * t);
2629     result += 1.7e-10 * std::cos(3.08268671348 + 154717.609887683 * t);
2630     result += 1.6e-10 * std::cos(3.95085099736 + 3097.88382272579 * t);
2631     result += 1.6e-10 * std::cos(3.99041783945 + 6283.14316029419 * t);
2632     result += 2e-10 * std::cos(6.10644140189 + 167283.761587666 * t);
2633     result += 1.5e-10 * std::cos(4.09775914607 + 11712.9553182308 * t);
2634     result += 1.6e-10 * std::cos(5.717699407 + 17298.1823273262 * t);
2635     result += 1.6e-10 * std::cos(3.28894009404 + 5884.9268465832 * t);
2636     result += 1.5e-10 * std::cos(5.64785377164 + 12559.038152982 * t);
2637     result += 1.6e-10 * std::cos(4.4345208093 + 6283.0085396886 * t);
2638     result += 1.4e-10 * std::cos(2.31721603062 + 5481.2549188676 * t);
2639     result += 1.4e-10 * std::cos(4.43479032305 + 13517.8701062334 * t);
2640     result += 1.4e-10 * std::cos(4.73209312936 + 7342.4577801806 * t);
2641     result += 1.2e-10 * std::cos(0.64705975463 + 18073.7049386502 * t);
2642     result += 1.1e-10 * std::cos(1.514433322 + 16200.7727245012 * t);
2643     result += 1.1e-10 * std::cos(0.88708889185 + 21228.3920235458 * t);
2644     result += 1.4e-10 * std::cos(4.50116508534 + 640.8776073822 * t);
2645     result += 1.1e-10 * std::cos(4.64339996198 + 11790.6290886588 * t);
2646     result += 1.1e-10 * std::cos(1.31064298246 + 4164.311989613 * t);
2647     result += 9e-11 * std::cos(3.02238989305 + 23543.2305046818 * t);
2648     result += 9e-11 * std::cos(2.04999402381 + 22003.9146348698 * t);
2649     result += 9e-11 * std::cos(4.91488110218 + 213.299095438 * t);
2650     return result;
2651 }
2652 
2653 constexpr double getEarthR3(double t)
2654 {
2655     double result = 0.0;
2656     result += 1.44595e-06 * std::cos(4.27319435148 + 6283.0758499914 * t);
2657     result += 6.729e-08 * std::cos(3.91697608662 + 12566.1516999828 * t);
2658     result += 7.74e-09;
2659     result += 2.47e-09 * std::cos(3.73019298781 + 18849.2275499742 * t);
2660     result += 3.6e-10 * std::cos(2.8008140905 + 6286.5989683404 * t);
2661     result += 3.3e-10 * std::cos(5.62216602775 + 6127.6554505572 * t);
2662     result += 1.9e-10 * std::cos(3.71292621802 + 6438.4962494256 * t);
2663     result += 1.6e-10 * std::cos(4.26011484232 + 6525.8044539654 * t);
2664     result += 1.6e-10 * std::cos(3.50416887054 + 6256.7775301916 * t);
2665     result += 1.4e-10 * std::cos(3.62127621114 + 25132.3033999656 * t);
2666     result += 1.1e-10 * std::cos(4.39200958819 + 4705.7323075436 * t);
2667     result += 1.1e-10 * std::cos(5.22327127059 + 6040.3472460174 * t);
2668     result += 1e-10 * std::cos(4.28045254647 + 83996.8473181119 * t);
2669     result += 9e-11 * std::cos(1.56864096494 + 5507.5532386674 * t);
2670     result += 1.1e-10 * std::cos(1.37795688024 + 6309.3741697912 * t);
2671     result += 1e-10 * std::cos(5.19937959068 + 71430.6956181291 * t);
2672     result += 9e-11 * std::cos(0.4727519993 + 6279.5527316424 * t);
2673     result += 9e-11 * std::cos(0.74642756529 + 5729.506447149 * t);
2674     result += 7e-11 * std::cos(2.9737489156 + 775.522611324 * t);
2675     result += 7e-11 * std::cos(3.28615691021 + 7058.5984613154 * t);
2676     result += 7e-11 * std::cos(2.19184402142 + 6812.766815086 * t);
2677     result += 5e-11 * std::cos(3.15419034438 + 529.6909650946 * t);
2678     result += 6e-11 * std::cos(4.54725567047 + 1059.3819301892 * t);
2679     result += 5e-11 * std::cos(1.51104406936 + 7079.3738568078 * t);
2680     result += 7e-11 * std::cos(2.98052059053 + 6681.2248533996 * t);
2681     result += 5e-11 * std::cos(2.30961231391 + 12036.4607348882 * t);
2682     result += 5e-11 * std::cos(3.71102966917 + 6290.1893969922 * t);
2683     return result;
2684 }
2685 
2686 constexpr double getEarthR4(double t)
2687 {
2688     double result = 0.0;
2689     result += 3.858e-08 * std::cos(2.56384387339 + 6283.0758499914 * t);
2690     result += 3.06e-09 * std::cos(2.2676950123 + 12566.1516999828 * t);
2691     result += 5.3e-10 * std::cos(3.44031471924 + 5573.1428014331 * t);
2692     result += 1.5e-10 * std::cos(2.04794573436 + 18849.2275499742 * t);
2693     result += 1.3e-10 * std::cos(2.05688873673 + 77713.7714681205 * t);
2694     result += 7e-11 * std::cos(4.4121885448 + 161000.685737674 * t);
2695     result += 5e-11 * std::cos(5.26154653107 + 6438.4962494256 * t);
2696     result += 5e-11 * std::cos(4.07695126049 + 6127.6554505572 * t);
2697     result += 6e-11 * std::cos(3.81514213664 + 149854.400134808 * t);
2698     result += 3e-11 * std::cos(1.28175749811 + 6286.5989683404 * t);
2699     return result;
2700 }
2701 
2702 constexpr double getEarthR5(double t)
2703 {
2704     double result = 0.0;
2705     result += 8.6e-10 * std::cos(1.21579741687 + 6283.0758499914 * t);
2706     result += 1.2e-10 * std::cos(0.65617264033 + 12566.1516999828 * t);
2707     result += 1e-11 * std::cos(0.38068797142 + 18849.2275499742 * t);
2708     return result;
2709 }
2710 
2711 constexpr double getJulianThousandYears(double jd)
2712 {
2713     constexpr double DaysOf1000Years = 365.25 * 1000;
2714     return (jd - J2000) / DaysOf1000Years;
2715 }
2716 
2717 constexpr double mod2Pi(double r)
2718 {
2719     while (r < 0) {
2720         r += std::numbers::pi * 2;
2721     }
2722     while (r > 2 * std::numbers::pi) {
2723         r -= std::numbers::pi * 2;
2724     }
2725     return r;
2726 }
2727 
2728 /**
2729  * Calculates the Heliocentric Yellow Meridian (rad) of the Earth by Julian day
2730  */
2731 constexpr double getSunEclipticLongitudeForEarth(double julianDay)
2732 {
2733     const double t = getJulianThousandYears(julianDay);
2734     const double L0 = getEarthL0(t);
2735     const double L1 = getEarthL1(t);
2736     const double L2 = getEarthL2(t);
2737     const double L3 = getEarthL3(t);
2738     const double L4 = getEarthL4(t);
2739     const double L5 = getEarthL5(t);
2740     const double L = ((((L5 * t + L4) * t + L3) * t + L2) * t + L1) * t + L0;
2741     return mod2Pi(L);
2742 }
2743 
2744 constexpr double getSunEclipticLatitudeForEarth(double jd)
2745 {
2746     const double t = getJulianThousandYears(jd);
2747     const double B0 = getEarthB0(t);
2748     const double B1 = getEarthB1(t);
2749     const double B2 = getEarthB2(t);
2750     const double B3 = getEarthB3(t);
2751     const double B4 = getEarthB4(t);
2752     const double B = ((((B4 * t) + B3) * t + B2) * t + B1) * t + B0;
2753     return B;
2754 }
2755 
2756 constexpr double getJulianCentury(double julianDay)
2757 {
2758     // days of 100 years
2759     constexpr double DaysOfCentury = 365.25 * 100;
2760     return (julianDay - J2000) / DaysOfCentury;
2761 }
2762 
2763 constexpr double secondsToDegrees(double seconds)
2764 {
2765     return seconds / 3600;
2766 }
2767 
2768 constexpr double degreesToRadians(double degrees)
2769 {
2770     return degrees * std::numbers::pi / 180;
2771 }
2772 
2773 constexpr double secondsToRadians(double seconds)
2774 {
2775     return degreesToRadians(secondsToDegrees(seconds));
2776 }
2777 
2778 consteval double coefficient()
2779 {
2780     return secondsToRadians(0.0001);
2781 }
2782 
2783 void getEarthNutationParameter(EarthNutationParameter &earthNutationParameter, double T)
2784 {
2785     const double T2 = T * T;
2786     const double T3 = T2 * T;
2787 
2788     earthNutationParameter.D = degreesToRadians(297.85036 + 445267.111480 * T - 0.0019142 * T2 + T3 / 189474.0);
2789     earthNutationParameter.M = degreesToRadians(357.52772 + 35999.050340 * T - 0.0001603 * T2 - T3 / 300000.0);
2790     earthNutationParameter.Mp = degreesToRadians(134.96298 + 477198.867398 * T + 0.0086972 * T2 + T3 / 56250.0);
2791     earthNutationParameter.F = degreesToRadians(93.27191 + 483202.017538 * T - 0.0036825 * T2 + T3 / 327270.0);
2792     earthNutationParameter.Omega = degreesToRadians(125.04452 - 1934.136261 * T + 0.0020708 * T2 + T3 / 450000.0);
2793 }
2794 
2795 double calcEarthLongitudeNutation(double T)
2796 {
2797     EarthNutationParameter radian;
2798     getEarthNutationParameter(radian, T);
2799     double result = 0.0;
2800     for (std::size_t i = 0; i < s_nuation.size(); i++) {
2801         double theta =
2802             s_nuation[i].D * radian.D + s_nuation[i].M * radian.M + s_nuation[i].Mp * radian.Mp + s_nuation[i].F * radian.F + s_nuation[i].Omega * radian.Omega;
2803         result += (s_nuation[i].Sine1 + s_nuation[i].Sine2 * T) * std::sin(theta);
2804     }
2805     return result * coefficient();
2806 }
2807 
2808 constexpr double Vsop2Fk5LongitudeCorrection(double latitude, double longitude, double julianDay)
2809 {
2810     const double t = getJulianCentury(julianDay);
2811     const double lp = latitude - degreesToRadians(1.397) * t - degreesToRadians(0.00031) * t * t;
2812     return secondsToRadians(-0.09033 + 0.03916 * (std::cos(lp) + std::sin(lp)) * std::tan(longitude));
2813 }
2814 
2815 /**
2816  * Calculates ecliptical longitude of earth in heliocentric coordinates based on VSOP87D table
2817  * @see https://ftp.imcce.fr/pub/ephem/planets/vsop87/VSOP87D.ear
2818  * @return earth longitude in radians
2819  */
2820 constexpr double getSunRadiusForEarth(double julianDay)
2821 {
2822     const double t = getJulianThousandYears(julianDay);
2823     const double R0 = getEarthR0(t);
2824     const double R1 = getEarthR1(t);
2825     const double R2 = getEarthR2(t);
2826     const double R3 = getEarthR3(t);
2827     const double R4 = getEarthR4(t);
2828     const double R5 = getEarthR5(t);
2829     const double R = ((((R5 * t + R4) * t + R3) * t + R2) * t + R1) * t + R0;
2830     return R;
2831 }
2832 
2833 double getEarthEclipticLongitudeForSun(double jd)
2834 {
2835     double l = getSunEclipticLongitudeForEarth(jd);
2836     const double b = getSunEclipticLatitudeForEarth(jd);
2837     l += calcEarthLongitudeNutation(getJulianCentury(jd));
2838     l += Vsop2Fk5LongitudeCorrection(l, b, jd);
2839     l = mod2Pi(l + std::numbers::pi);
2840     // Light-time correction depends upon the velocity and distance of the emitting object during the time it takes for its light to travel to Earth.
2841     // 20.49522″ = arctan(earth revolution linear velocity / view distance between earth and sun)
2842     // FIXME: why divided by r
2843     const double r = getSunRadiusForEarth(jd);
2844     l -= secondsToRadians(20.4898) / r;
2845     return l;
2846 }
2847 
2848 void getMoonEclipticParameter(MoonEclipticParameter &moonEclipticParameter, double T)
2849 {
2850     double T2 = T * T;
2851     double T3 = T2 * T;
2852     double T4 = T3 * T;
2853 
2854     moonEclipticParameter.Lp = mod2Pi(degreesToRadians(218.3164591 + 481267.88134236 * T - 0.0013268 * T2 + T3 / 538841.0 - T4 / 65194000.0));
2855     moonEclipticParameter.D = mod2Pi(degreesToRadians(297.8502042 + 445267.1115168 * T - 0.0016300 * T2 + T3 / 545868.0 - T4 / 113065000.0));
2856     moonEclipticParameter.M = mod2Pi(degreesToRadians(357.5291092 + 35999.0502909 * T - 0.0001536 * T2 + T3 / 24490000.0));
2857     moonEclipticParameter.Mp = mod2Pi(degreesToRadians(134.9634114 + 477198.8676313 * T + 0.0089970 * T2 + T3 / 69699.0 - T4 / 14712000.0));
2858     moonEclipticParameter.F = mod2Pi(degreesToRadians(93.2720993 + 483202.0175273 * T - 0.0034029 * T2 - T3 / 3526000.0 + T4 / 863310000.0));
2859     moonEclipticParameter.E = 1 - 0.002516 * T - 0.0000074 * T2;
2860 }
2861 
2862 double calcMoonECLongitudePeriodic(MoonEclipticParameter &moonEclipticParameter)
2863 {
2864     double EI = 0.0;
2865     for (std::size_t i = 0; i < s_moonLongitude.size(); i++) {
2866         double theta = s_moonLongitude[i].D * moonEclipticParameter.D + s_moonLongitude[i].M * moonEclipticParameter.M
2867             + s_moonLongitude[i].Mp * moonEclipticParameter.Mp + s_moonLongitude[i].F * moonEclipticParameter.F;
2868         EI += s_moonLongitude[i].EiA * std::sin(theta) * std::pow(moonEclipticParameter.E, std::abs(s_moonLongitude[i].M));
2869     }
2870     return EI;
2871 }
2872 
2873 double calcMoonLongitudePerturbation(double T, const MoonEclipticParameter &moonEclipticParameter)
2874 {
2875     const double A1 = mod2Pi(degreesToRadians(119.75 + 131.849 * T));
2876     const double A2 = mod2Pi(degreesToRadians(53.09 + 479264.290 * T));
2877 
2878     return 3958.0 * std::sin(A1) + 1962.0 * std::sin(moonEclipticParameter.Lp - moonEclipticParameter.F) + 318.0 * std::sin(A2);
2879 }
2880 
2881 double getMoonEclipticLongitudeEC(double julianDay)
2882 {
2883     MoonEclipticParameter radian;
2884     double T = getJulianCentury(julianDay);
2885     getMoonEclipticParameter(radian, T);
2886     double EI = calcMoonECLongitudePeriodic(radian);
2887     EI += calcMoonLongitudePerturbation(T, radian);
2888     double longitude = radian.Lp + degreesToRadians(EI / 1000000.0);
2889     longitude += calcEarthLongitudeNutation(T);
2890     return longitude;
2891 }
2892 
2893 double NewtonIteration(double angle, double x0)
2894 {
2895     constexpr double EPSILON = 1e-7;
2896     constexpr double DELTA = 5e-6;
2897     // Make sure the rad value is in between -PI and PI
2898     auto func = [angle](double x) -> double {
2899         double r = getEarthEclipticLongitudeForSun(x) - angle;
2900         while (r < -std::numbers::pi) {
2901             r += std::numbers::pi * 2;
2902         }
2903         while (r > std::numbers::pi) {
2904             r -= std::numbers::pi * 2;
2905         }
2906         return r;
2907     };
2908 
2909     double x;
2910     unsigned count = 0;
2911     while (count++ < 100u) {
2912         x = x0;
2913         double fx, fpx;
2914         fx = func(x);
2915         // derivative
2916         fpx = (func(x + DELTA) - func(x - DELTA)) / DELTA / 2;
2917         x0 = x - fx / fpx;
2918         if (std::abs(x0 - x) <= EPSILON) {
2919             break;
2920         }
2921     }
2922     return x;
2923 }
2924 
2925 // From http://eclipse.gsfc.nasa.gov/SEhelp/deltatpoly2004.html
2926 double getDeltaT(int year, int month)
2927 {
2928     double y = double(year) + (double(month) - 0.5) / 12;
2929 
2930     if (year < -500) {
2931         double u = (double(year) - 1820) / 100;
2932         return -20 + 32 * u * u;
2933     } else if (year < 500) {
2934         double u = y / 100;
2935         double u2 = u * u;
2936         double u3 = u2 * u;
2937         double u4 = u3 * u;
2938         double u5 = u4 * u;
2939         double u6 = u5 * u;
2940         return 10583.6 - 1014.41 * u + 33.78311 * u2 - 5.952053 * u3 - 0.1798452 * u4 + 0.022174192 * u5 + 0.0090316521 * u6;
2941     } else if (year < 1600) {
2942         double u = (y - 1000) / 100;
2943         double u2 = u * u;
2944         double u3 = u2 * u;
2945         double u4 = u3 * u;
2946         double u5 = u4 * u;
2947         double u6 = u5 * u;
2948         return 1574.2 - 556.01 * u + 71.23472 * u2 + 0.319781 * u3 - 0.8503463 * u4 - 0.005050998 * u5 + 0.0083572073 * u6;
2949     } else if (year < 1700) {
2950         double t = y - 1600;
2951         double t2 = t * t;
2952         double t3 = t2 * t;
2953         return 120 - 0.9808 * t - 0.01532 * t2 + t3 / 7129;
2954     } else if (year < 1800) {
2955         double t = y - 1700;
2956         double t2 = t * t;
2957         double t3 = t2 * t;
2958         double t4 = t3 * t;
2959         return 8.83 + 0.1603 * t - 0.0059285 * t2 + 0.00013336 * t3 - t4 / 1174000;
2960     } else if (year < 1860) {
2961         double t = y - 1800;
2962         double t2 = t * t;
2963         double t3 = t2 * t;
2964         double t4 = t3 * t;
2965         double t5 = t4 * t;
2966         double t6 = t5 * t;
2967         double t7 = t6 * t;
2968         return 13.72 - 0.332447 * t + 0.0068612 * t2 + 0.0041116 * t3 - 0.00037436 * t4 + 0.0000121272 * t5 - 0.0000001699 * t6 + 0.000000000875 * t7;
2969     } else if (year < 1900) {
2970         double t = y - 1860;
2971         double t2 = t * t;
2972         double t3 = t2 * t;
2973         double t4 = t3 * t;
2974         double t5 = t4 * t;
2975         return 7.62 + 0.5737 * t - 0.251754 * t2 + 0.01680668 * t3 - 0.0004473624 * t4 + t5 / 233174;
2976     } else if (year < 1920) {
2977         double t = y - 1900;
2978         double t2 = t * t;
2979         double t3 = t2 * t;
2980         double t4 = t3 * t;
2981         return -2.79 + 1.494119 * t - 0.0598939 * t2 + 0.0061966 * t3 - 0.000197 * t4;
2982     } else if (year < 1941) {
2983         double t = y - 1920;
2984         double t2 = t * t;
2985         double t3 = t2 * t;
2986         return 21.20 + 0.84493 * t - 0.076100 * t2 + 0.0020936 * t3;
2987     } else if (year < 1961) {
2988         double t = y - 1950;
2989         double t2 = t * t;
2990         double t3 = t2 * t;
2991         return 29.07 + 0.407 * t - t2 / 233 + t3 / 2547;
2992     } else if (year < 1986) {
2993         double t = y - 1975;
2994         double t2 = t * t;
2995         double t3 = t2 * t;
2996         return 45.45 + 1.067 * t - t2 / 260 - t3 / 718;
2997     } else if (year < 2005) {
2998         double t = y - 2000;
2999         double t2 = t * t;
3000         double t3 = t2 * t;
3001         double t4 = t3 * t;
3002         double t5 = t4 * t;
3003         return 63.86 + 0.3345 * t - 0.060374 * t2 + 0.0017275 * t3 + 0.000651814 * t4 + 0.00002373599 * t5;
3004     } else if (year < 2050) {
3005         double t = y - 2000;
3006         double t2 = t * t;
3007         return 62.92 + 0.32217 * t + 0.005589 * t2;
3008     } else if (year < 2150) {
3009         double u = (y - 1820) / 100;
3010         double u2 = u * u;
3011         return -20 + 32 * u2 - 0.5628 * (2150 - y);
3012     } else {
3013         double u = (y - 1820) / 100;
3014         double u2 = u * u;
3015         return -20 + 32 * u2;
3016     }
3017 }
3018 
3019 int64_t toJulianDay(int year, int month, int day)
3020 {
3021 #if __has_cpp_attribute(assume)
3022     [[assume(year > 0 && day > 0)]];
3023     [[assume(month > 0 && month <= 12)]];
3024 #endif
3025     int a = (14 - month) / 12;
3026     int y = year + 4800 - a;
3027     int m = month + 12 * a - 3;
3028     return day + (153 * m + 2) / 5 + 365 * y + y / 4 - y / 100 + y / 400 - 32045;
3029 }
3030 
3031 void getDateFromJulianDay(double julianDay, int &yy, int &mm, int &dd)
3032 {
3033     /*
3034      * This algorithm is taken from
3035      * "Numerical Recipes in c, 2nd Ed." (1992), pp. 14-15
3036      * and converted to integer math.
3037      * The electronic version of the book is freely available
3038      * at http://www.nr.com/ , under "Obsolete Versions - Older
3039      * book and code versions.
3040      */
3041     constexpr int64_t JD_GREG_CAL = 2299161;
3042     constexpr int64_t JB_MAX_WITHOUT_OVERFLOW = 107374182;
3043     int64_t julian = int64_t(std::floor(julianDay + 0.5));
3044 
3045     int64_t ta, jalpha, tb, tc, td, te;
3046 
3047     if (julian >= JD_GREG_CAL) {
3048         jalpha = (4 * (julian - 1867216) - 1) / 146097;
3049         ta = julian + 1 + jalpha - jalpha / 4;
3050     } else if (julian < 0) {
3051         ta = julian + 36525 * (1 - julian / 36525);
3052     } else {
3053         ta = julian;
3054     }
3055 
3056     tb = ta + 1524;
3057     if (tb <= JB_MAX_WITHOUT_OVERFLOW) {
3058         tc = (tb * 20 - 2442) / 7305;
3059     } else {
3060         tc = int64_t((uint64_t(tb) * 20 - 2442) / 7305);
3061     }
3062 
3063     td = 365 * tc + tc / 4;
3064     te = ((tb - td) * 10000) / 306001;
3065     dd = int(tb - td - (306001 * te) / 10000);
3066     mm = int(te - 1);
3067 
3068     if (mm > 12) {
3069         mm -= 12;
3070     }
3071     yy = int(tc - 4715);
3072     if (mm > 2) {
3073         yy--;
3074     }
3075     if (julian < 0) {
3076         yy -= int(100 * (1 - julian / 36525));
3077     }
3078 }
3079 }