From f390fc92013b631399d79a4d80afc75633201f7f Mon Sep 17 00:00:00 2001 From: Don Cross Date: Sat, 6 Jul 2019 18:08:07 -0400 Subject: [PATCH] Generate C CalcMoon AddSol statements from data file. Use the same data file that I generate AddSol for Python to also generate them in the C source code. --- generate/codegen.c | 22 ++++ generate/template/astronomy.c | 120 +----------------- source/c/astronomy.c | 225 ++++++++++++++++------------------ source/python/astronomy.py | 1 + 4 files changed, 130 insertions(+), 238 deletions(-) diff --git a/generate/codegen.c b/generate/codegen.c index cfcba152..a61d9afa 100644 --- a/generate/codegen.c +++ b/generate/codegen.c @@ -917,6 +917,22 @@ static int OptAddSolPython( return 0; } +static int OptAddSolC(cg_context_t *context, const double *data) +{ + int i; + + fprintf(context->outfile, " AddSol(ctx"); + + for (i=0; i < 4; ++i) + fprintf(context->outfile, ",%11.4lf", data[i]); + + for(; i < 8; ++i) + fprintf(context->outfile, ",%2.0lf", data[i]); + + fprintf(context->outfile, ");\n"); + return 0; +} + static int OptAddSol(cg_context_t *context) { int error; @@ -929,6 +945,8 @@ static int OptAddSol(cg_context_t *context) infile = fopen(filename, "rt"); if (infile == NULL) goto fail; + fprintf(context->outfile, "\n"); + lnum = 0; while (fgets(line, sizeof(line), infile)) { @@ -940,6 +958,10 @@ static int OptAddSol(cg_context_t *context) CHECK(OptAddSolPython(context, data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7])); break; + case CODEGEN_LANGUAGE_C: + CHECK(OptAddSolC(context, data)); + break; + default: error = LogError(context, "OptAddSol: Unsupported language %d\n", context->language); goto fail; diff --git a/generate/template/astronomy.c b/generate/template/astronomy.c index 307968ce..f8f4bfbd 100644 --- a/generate/template/astronomy.c +++ b/generate/template/astronomy.c @@ -1269,122 +1269,6 @@ static void AddSol( SINPI += coeffp*x; } -static void Solar1(MoonContext *ctx) -{ - AddSol(ctx, 13.902, 14.06,-0.001, 0.2607,0, 0, 0, 4); - AddSol(ctx, 0.403, -4.01,+0.394, 0.0023,0, 0, 0, 3); - AddSol(ctx, 2369.912, 2373.36,+0.601, 28.2333,0, 0, 0, 2); - AddSol(ctx, -125.154, -112.79,-0.725, -0.9781,0, 0, 0, 1); - AddSol(ctx, 1.979, 6.98,-0.445, 0.0433,1, 0, 0, 4); - AddSol(ctx, 191.953, 192.72,+0.029, 3.0861,1, 0, 0, 2); - AddSol(ctx, -8.466, -13.51,+0.455, -0.1093,1, 0, 0, 1); - AddSol(ctx, 22639.500,22609.07,+0.079, 186.5398,1, 0, 0, 0); - AddSol(ctx, 18.609, 3.59,-0.094, 0.0118,1, 0, 0,-1); - AddSol(ctx, -4586.465,-4578.13,-0.077, 34.3117,1, 0, 0,-2); - AddSol(ctx, +3.215, 5.44,+0.192, -0.0386,1, 0, 0,-3); - AddSol(ctx, -38.428, -38.64,+0.001, 0.6008,1, 0, 0,-4); - AddSol(ctx, -0.393, -1.43,-0.092, 0.0086,1, 0, 0,-6); - AddSol(ctx, -0.289, -1.59,+0.123, -0.0053,0, 1, 0, 4); - AddSol(ctx, -24.420, -25.10,+0.040, -0.3000,0, 1, 0, 2); - AddSol(ctx, 18.023, 17.93,+0.007, 0.1494,0, 1, 0, 1); - AddSol(ctx, -668.146, -126.98,-1.302, -0.3997,0, 1, 0, 0); - AddSol(ctx, 0.560, 0.32,-0.001, -0.0037,0, 1, 0,-1); - AddSol(ctx, -165.145, -165.06,+0.054, 1.9178,0, 1, 0,-2); - AddSol(ctx, -1.877, -6.46,-0.416, 0.0339,0, 1, 0,-4); - AddSol(ctx, 0.213, 1.02,-0.074, 0.0054,2, 0, 0, 4); - AddSol(ctx, 14.387, 14.78,-0.017, 0.2833,2, 0, 0, 2); - AddSol(ctx, -0.586, -1.20,+0.054, -0.0100,2, 0, 0, 1); - AddSol(ctx, 769.016, 767.96,+0.107, 10.1657,2, 0, 0, 0); - AddSol(ctx, +1.750, 2.01,-0.018, 0.0155,2, 0, 0,-1); - AddSol(ctx, -211.656, -152.53,+5.679, -0.3039,2, 0, 0,-2); - AddSol(ctx, +1.225, 0.91,-0.030, -0.0088,2, 0, 0,-3); - AddSol(ctx, -30.773, -34.07,-0.308, 0.3722,2, 0, 0,-4); - AddSol(ctx, -0.570, -1.40,-0.074, 0.0109,2, 0, 0,-6); - AddSol(ctx, -2.921, -11.75,+0.787, -0.0484,1, 1, 0, 2); - AddSol(ctx, +1.267, 1.52,-0.022, 0.0164,1, 1, 0, 1); - AddSol(ctx, -109.673, -115.18,+0.461, -0.9490,1, 1, 0, 0); - AddSol(ctx, -205.962, -182.36,+2.056, +1.4437,1, 1, 0,-2); - AddSol(ctx, 0.233, 0.36, 0.012, -0.0025,1, 1, 0,-3); - AddSol(ctx, -4.391, -9.66,-0.471, 0.0673,1, 1, 0,-4); -} - -static void Solar2(MoonContext *ctx) -{ - AddSol(ctx, 0.283, 1.53,-0.111, +0.0060,1,-1, 0,+4); - AddSol(ctx, 14.577, 31.70,-1.540, +0.2302,1,-1, 0, 2); - AddSol(ctx, 147.687, 138.76,+0.679, +1.1528,1,-1, 0, 0); - AddSol(ctx, -1.089, 0.55,+0.021, 0.0 ,1,-1, 0,-1); - AddSol(ctx, 28.475, 23.59,-0.443, -0.2257,1,-1, 0,-2); - AddSol(ctx, -0.276, -0.38,-0.006, -0.0036,1,-1, 0,-3); - AddSol(ctx, 0.636, 2.27,+0.146, -0.0102,1,-1, 0,-4); - AddSol(ctx, -0.189, -1.68,+0.131, -0.0028,0, 2, 0, 2); - AddSol(ctx, -7.486, -0.66,-0.037, -0.0086,0, 2, 0, 0); - AddSol(ctx, -8.096, -16.35,-0.740, 0.0918,0, 2, 0,-2); - AddSol(ctx, -5.741, -0.04, 0.0 , -0.0009,0, 0, 2, 2); - AddSol(ctx, 0.255, 0.0 , 0.0 , 0.0 ,0, 0, 2, 1); - AddSol(ctx, -411.608, -0.20, 0.0 , -0.0124,0, 0, 2, 0); - AddSol(ctx, 0.584, 0.84, 0.0 , +0.0071,0, 0, 2,-1); - AddSol(ctx, -55.173, -52.14, 0.0 , -0.1052,0, 0, 2,-2); - AddSol(ctx, 0.254, 0.25, 0.0 , -0.0017,0, 0, 2,-3); - AddSol(ctx, +0.025, -1.67, 0.0 , +0.0031,0, 0, 2,-4); - AddSol(ctx, 1.060, 2.96,-0.166, 0.0243,3, 0, 0,+2); - AddSol(ctx, 36.124, 50.64,-1.300, 0.6215,3, 0, 0, 0); - AddSol(ctx, -13.193, -16.40,+0.258, -0.1187,3, 0, 0,-2); - AddSol(ctx, -1.187, -0.74,+0.042, 0.0074,3, 0, 0,-4); - AddSol(ctx, -0.293, -0.31,-0.002, 0.0046,3, 0, 0,-6); - AddSol(ctx, -0.290, -1.45,+0.116, -0.0051,2, 1, 0, 2); - AddSol(ctx, -7.649, -10.56,+0.259, -0.1038,2, 1, 0, 0); - AddSol(ctx, -8.627, -7.59,+0.078, -0.0192,2, 1, 0,-2); - AddSol(ctx, -2.740, -2.54,+0.022, 0.0324,2, 1, 0,-4); - AddSol(ctx, 1.181, 3.32,-0.212, 0.0213,2,-1, 0,+2); - AddSol(ctx, 9.703, 11.67,-0.151, 0.1268,2,-1, 0, 0); - AddSol(ctx, -0.352, -0.37,+0.001, -0.0028,2,-1, 0,-1); - AddSol(ctx, -2.494, -1.17,-0.003, -0.0017,2,-1, 0,-2); - AddSol(ctx, 0.360, 0.20,-0.012, -0.0043,2,-1, 0,-4); - AddSol(ctx, -1.167, -1.25,+0.008, -0.0106,1, 2, 0, 0); - AddSol(ctx, -7.412, -6.12,+0.117, 0.0484,1, 2, 0,-2); - AddSol(ctx, -0.311, -0.65,-0.032, 0.0044,1, 2, 0,-4); - AddSol(ctx, +0.757, 1.82,-0.105, 0.0112,1,-2, 0, 2); - AddSol(ctx, +2.580, 2.32,+0.027, 0.0196,1,-2, 0, 0); - AddSol(ctx, +2.533, 2.40,-0.014, -0.0212,1,-2, 0,-2); - AddSol(ctx, -0.344, -0.57,-0.025, +0.0036,0, 3, 0,-2); - AddSol(ctx, -0.992, -0.02, 0.0 , 0.0 ,1, 0, 2, 2); - AddSol(ctx, -45.099, -0.02, 0.0 , -0.0010,1, 0, 2, 0); - AddSol(ctx, -0.179, -9.52, 0.0 , -0.0833,1, 0, 2,-2); - AddSol(ctx, -0.301, -0.33, 0.0 , 0.0014,1, 0, 2,-4); - AddSol(ctx, -6.382, -3.37, 0.0 , -0.0481,1, 0,-2, 2); - AddSol(ctx, 39.528, 85.13, 0.0 , -0.7136,1, 0,-2, 0); - AddSol(ctx, 9.366, 0.71, 0.0 , -0.0112,1, 0,-2,-2); - AddSol(ctx, 0.202, 0.02, 0.0 , 0.0 ,1, 0,-2,-4); -} - -static void Solar3(MoonContext *ctx) -{ - AddSol(ctx, 0.415, 0.10, 0.0 , 0.0013,0, 1, 2, 0); - AddSol(ctx, -2.152, -2.26, 0.0 , -0.0066,0, 1, 2,-2); - AddSol(ctx, -1.440, -1.30, 0.0 , +0.0014,0, 1,-2, 2); - AddSol(ctx, 0.384, -0.04, 0.0 , 0.0 ,0, 1,-2,-2); - AddSol(ctx, +1.938, +3.60,-0.145, +0.0401,4, 0, 0, 0); - AddSol(ctx, -0.952, -1.58,+0.052, -0.0130,4, 0, 0,-2); - AddSol(ctx, -0.551, -0.94,+0.032, -0.0097,3, 1, 0, 0); - AddSol(ctx, -0.482, -0.57,+0.005, -0.0045,3, 1, 0,-2); - AddSol(ctx, 0.681, 0.96,-0.026, 0.0115,3,-1, 0, 0); - AddSol(ctx, -0.297, -0.27, 0.002, -0.0009,2, 2, 0,-2); - AddSol(ctx, 0.254, +0.21,-0.003, 0.0 ,2,-2, 0,-2); - AddSol(ctx, -0.250, -0.22, 0.004, 0.0014,1, 3, 0,-2); - AddSol(ctx, -3.996, 0.0 , 0.0 , +0.0004,2, 0, 2, 0); - AddSol(ctx, 0.557, -0.75, 0.0 , -0.0090,2, 0, 2,-2); - AddSol(ctx, -0.459, -0.38, 0.0 , -0.0053,2, 0,-2, 2); - AddSol(ctx, -1.298, 0.74, 0.0 , +0.0004,2, 0,-2, 0); - AddSol(ctx, 0.538, 1.14, 0.0 , -0.0141,2, 0,-2,-2); - AddSol(ctx, 0.263, 0.02, 0.0 , 0.0 ,1, 1, 2, 0); - AddSol(ctx, 0.426, +0.07, 0.0 , -0.0006,1, 1,-2,-2); - AddSol(ctx, -0.304, +0.03, 0.0 , +0.0003,1,-1, 2, 0); - AddSol(ctx, -0.372, -0.19, 0.0 , -0.0027,1,-1,-2, 2); - AddSol(ctx, +0.418, 0.0 , 0.0 , 0.0 ,0, 0, 4, 0); - AddSol(ctx, -0.330, -0.04, 0.0 , 0.0 ,3, 0, 2, 0); -} - #define ADDN(coeffn,p,q,r,s) ( Term(ctx, (p),(q),(r),(s),&x,&y), (N += (coeffn)*y) ) static void SolarN(MoonContext *ctx) @@ -1427,9 +1311,7 @@ static void CalcMoon( context.t = centuries_since_j2000; Init(ctx); - Solar1(ctx); - Solar2(ctx); - Solar3(ctx); + $ASTRO_ADDSOL() SolarN(ctx); Planetary(ctx); S = F + DS/ARC; diff --git a/source/c/astronomy.c b/source/c/astronomy.c index 3b127a0f..2b6f9745 100644 --- a/source/c/astronomy.c +++ b/source/c/astronomy.c @@ -1360,122 +1360,6 @@ static void AddSol( SINPI += coeffp*x; } -static void Solar1(MoonContext *ctx) -{ - AddSol(ctx, 13.902, 14.06,-0.001, 0.2607,0, 0, 0, 4); - AddSol(ctx, 0.403, -4.01,+0.394, 0.0023,0, 0, 0, 3); - AddSol(ctx, 2369.912, 2373.36,+0.601, 28.2333,0, 0, 0, 2); - AddSol(ctx, -125.154, -112.79,-0.725, -0.9781,0, 0, 0, 1); - AddSol(ctx, 1.979, 6.98,-0.445, 0.0433,1, 0, 0, 4); - AddSol(ctx, 191.953, 192.72,+0.029, 3.0861,1, 0, 0, 2); - AddSol(ctx, -8.466, -13.51,+0.455, -0.1093,1, 0, 0, 1); - AddSol(ctx, 22639.500,22609.07,+0.079, 186.5398,1, 0, 0, 0); - AddSol(ctx, 18.609, 3.59,-0.094, 0.0118,1, 0, 0,-1); - AddSol(ctx, -4586.465,-4578.13,-0.077, 34.3117,1, 0, 0,-2); - AddSol(ctx, +3.215, 5.44,+0.192, -0.0386,1, 0, 0,-3); - AddSol(ctx, -38.428, -38.64,+0.001, 0.6008,1, 0, 0,-4); - AddSol(ctx, -0.393, -1.43,-0.092, 0.0086,1, 0, 0,-6); - AddSol(ctx, -0.289, -1.59,+0.123, -0.0053,0, 1, 0, 4); - AddSol(ctx, -24.420, -25.10,+0.040, -0.3000,0, 1, 0, 2); - AddSol(ctx, 18.023, 17.93,+0.007, 0.1494,0, 1, 0, 1); - AddSol(ctx, -668.146, -126.98,-1.302, -0.3997,0, 1, 0, 0); - AddSol(ctx, 0.560, 0.32,-0.001, -0.0037,0, 1, 0,-1); - AddSol(ctx, -165.145, -165.06,+0.054, 1.9178,0, 1, 0,-2); - AddSol(ctx, -1.877, -6.46,-0.416, 0.0339,0, 1, 0,-4); - AddSol(ctx, 0.213, 1.02,-0.074, 0.0054,2, 0, 0, 4); - AddSol(ctx, 14.387, 14.78,-0.017, 0.2833,2, 0, 0, 2); - AddSol(ctx, -0.586, -1.20,+0.054, -0.0100,2, 0, 0, 1); - AddSol(ctx, 769.016, 767.96,+0.107, 10.1657,2, 0, 0, 0); - AddSol(ctx, +1.750, 2.01,-0.018, 0.0155,2, 0, 0,-1); - AddSol(ctx, -211.656, -152.53,+5.679, -0.3039,2, 0, 0,-2); - AddSol(ctx, +1.225, 0.91,-0.030, -0.0088,2, 0, 0,-3); - AddSol(ctx, -30.773, -34.07,-0.308, 0.3722,2, 0, 0,-4); - AddSol(ctx, -0.570, -1.40,-0.074, 0.0109,2, 0, 0,-6); - AddSol(ctx, -2.921, -11.75,+0.787, -0.0484,1, 1, 0, 2); - AddSol(ctx, +1.267, 1.52,-0.022, 0.0164,1, 1, 0, 1); - AddSol(ctx, -109.673, -115.18,+0.461, -0.9490,1, 1, 0, 0); - AddSol(ctx, -205.962, -182.36,+2.056, +1.4437,1, 1, 0,-2); - AddSol(ctx, 0.233, 0.36, 0.012, -0.0025,1, 1, 0,-3); - AddSol(ctx, -4.391, -9.66,-0.471, 0.0673,1, 1, 0,-4); -} - -static void Solar2(MoonContext *ctx) -{ - AddSol(ctx, 0.283, 1.53,-0.111, +0.0060,1,-1, 0,+4); - AddSol(ctx, 14.577, 31.70,-1.540, +0.2302,1,-1, 0, 2); - AddSol(ctx, 147.687, 138.76,+0.679, +1.1528,1,-1, 0, 0); - AddSol(ctx, -1.089, 0.55,+0.021, 0.0 ,1,-1, 0,-1); - AddSol(ctx, 28.475, 23.59,-0.443, -0.2257,1,-1, 0,-2); - AddSol(ctx, -0.276, -0.38,-0.006, -0.0036,1,-1, 0,-3); - AddSol(ctx, 0.636, 2.27,+0.146, -0.0102,1,-1, 0,-4); - AddSol(ctx, -0.189, -1.68,+0.131, -0.0028,0, 2, 0, 2); - AddSol(ctx, -7.486, -0.66,-0.037, -0.0086,0, 2, 0, 0); - AddSol(ctx, -8.096, -16.35,-0.740, 0.0918,0, 2, 0,-2); - AddSol(ctx, -5.741, -0.04, 0.0 , -0.0009,0, 0, 2, 2); - AddSol(ctx, 0.255, 0.0 , 0.0 , 0.0 ,0, 0, 2, 1); - AddSol(ctx, -411.608, -0.20, 0.0 , -0.0124,0, 0, 2, 0); - AddSol(ctx, 0.584, 0.84, 0.0 , +0.0071,0, 0, 2,-1); - AddSol(ctx, -55.173, -52.14, 0.0 , -0.1052,0, 0, 2,-2); - AddSol(ctx, 0.254, 0.25, 0.0 , -0.0017,0, 0, 2,-3); - AddSol(ctx, +0.025, -1.67, 0.0 , +0.0031,0, 0, 2,-4); - AddSol(ctx, 1.060, 2.96,-0.166, 0.0243,3, 0, 0,+2); - AddSol(ctx, 36.124, 50.64,-1.300, 0.6215,3, 0, 0, 0); - AddSol(ctx, -13.193, -16.40,+0.258, -0.1187,3, 0, 0,-2); - AddSol(ctx, -1.187, -0.74,+0.042, 0.0074,3, 0, 0,-4); - AddSol(ctx, -0.293, -0.31,-0.002, 0.0046,3, 0, 0,-6); - AddSol(ctx, -0.290, -1.45,+0.116, -0.0051,2, 1, 0, 2); - AddSol(ctx, -7.649, -10.56,+0.259, -0.1038,2, 1, 0, 0); - AddSol(ctx, -8.627, -7.59,+0.078, -0.0192,2, 1, 0,-2); - AddSol(ctx, -2.740, -2.54,+0.022, 0.0324,2, 1, 0,-4); - AddSol(ctx, 1.181, 3.32,-0.212, 0.0213,2,-1, 0,+2); - AddSol(ctx, 9.703, 11.67,-0.151, 0.1268,2,-1, 0, 0); - AddSol(ctx, -0.352, -0.37,+0.001, -0.0028,2,-1, 0,-1); - AddSol(ctx, -2.494, -1.17,-0.003, -0.0017,2,-1, 0,-2); - AddSol(ctx, 0.360, 0.20,-0.012, -0.0043,2,-1, 0,-4); - AddSol(ctx, -1.167, -1.25,+0.008, -0.0106,1, 2, 0, 0); - AddSol(ctx, -7.412, -6.12,+0.117, 0.0484,1, 2, 0,-2); - AddSol(ctx, -0.311, -0.65,-0.032, 0.0044,1, 2, 0,-4); - AddSol(ctx, +0.757, 1.82,-0.105, 0.0112,1,-2, 0, 2); - AddSol(ctx, +2.580, 2.32,+0.027, 0.0196,1,-2, 0, 0); - AddSol(ctx, +2.533, 2.40,-0.014, -0.0212,1,-2, 0,-2); - AddSol(ctx, -0.344, -0.57,-0.025, +0.0036,0, 3, 0,-2); - AddSol(ctx, -0.992, -0.02, 0.0 , 0.0 ,1, 0, 2, 2); - AddSol(ctx, -45.099, -0.02, 0.0 , -0.0010,1, 0, 2, 0); - AddSol(ctx, -0.179, -9.52, 0.0 , -0.0833,1, 0, 2,-2); - AddSol(ctx, -0.301, -0.33, 0.0 , 0.0014,1, 0, 2,-4); - AddSol(ctx, -6.382, -3.37, 0.0 , -0.0481,1, 0,-2, 2); - AddSol(ctx, 39.528, 85.13, 0.0 , -0.7136,1, 0,-2, 0); - AddSol(ctx, 9.366, 0.71, 0.0 , -0.0112,1, 0,-2,-2); - AddSol(ctx, 0.202, 0.02, 0.0 , 0.0 ,1, 0,-2,-4); -} - -static void Solar3(MoonContext *ctx) -{ - AddSol(ctx, 0.415, 0.10, 0.0 , 0.0013,0, 1, 2, 0); - AddSol(ctx, -2.152, -2.26, 0.0 , -0.0066,0, 1, 2,-2); - AddSol(ctx, -1.440, -1.30, 0.0 , +0.0014,0, 1,-2, 2); - AddSol(ctx, 0.384, -0.04, 0.0 , 0.0 ,0, 1,-2,-2); - AddSol(ctx, +1.938, +3.60,-0.145, +0.0401,4, 0, 0, 0); - AddSol(ctx, -0.952, -1.58,+0.052, -0.0130,4, 0, 0,-2); - AddSol(ctx, -0.551, -0.94,+0.032, -0.0097,3, 1, 0, 0); - AddSol(ctx, -0.482, -0.57,+0.005, -0.0045,3, 1, 0,-2); - AddSol(ctx, 0.681, 0.96,-0.026, 0.0115,3,-1, 0, 0); - AddSol(ctx, -0.297, -0.27, 0.002, -0.0009,2, 2, 0,-2); - AddSol(ctx, 0.254, +0.21,-0.003, 0.0 ,2,-2, 0,-2); - AddSol(ctx, -0.250, -0.22, 0.004, 0.0014,1, 3, 0,-2); - AddSol(ctx, -3.996, 0.0 , 0.0 , +0.0004,2, 0, 2, 0); - AddSol(ctx, 0.557, -0.75, 0.0 , -0.0090,2, 0, 2,-2); - AddSol(ctx, -0.459, -0.38, 0.0 , -0.0053,2, 0,-2, 2); - AddSol(ctx, -1.298, 0.74, 0.0 , +0.0004,2, 0,-2, 0); - AddSol(ctx, 0.538, 1.14, 0.0 , -0.0141,2, 0,-2,-2); - AddSol(ctx, 0.263, 0.02, 0.0 , 0.0 ,1, 1, 2, 0); - AddSol(ctx, 0.426, +0.07, 0.0 , -0.0006,1, 1,-2,-2); - AddSol(ctx, -0.304, +0.03, 0.0 , +0.0003,1,-1, 2, 0); - AddSol(ctx, -0.372, -0.19, 0.0 , -0.0027,1,-1,-2, 2); - AddSol(ctx, +0.418, 0.0 , 0.0 , 0.0 ,0, 0, 4, 0); - AddSol(ctx, -0.330, -0.04, 0.0 , 0.0 ,3, 0, 2, 0); -} - #define ADDN(coeffn,p,q,r,s) ( Term(ctx, (p),(q),(r),(s),&x,&y), (N += (coeffn)*y) ) static void SolarN(MoonContext *ctx) @@ -1518,9 +1402,112 @@ static void CalcMoon( context.t = centuries_since_j2000; Init(ctx); - Solar1(ctx); - Solar2(ctx); - Solar3(ctx); + + AddSol(ctx, 13.9020, 14.0600, -0.0010, 0.2607, 0, 0, 0, 4); + AddSol(ctx, 0.4030, -4.0100, 0.3940, 0.0023, 0, 0, 0, 3); + AddSol(ctx, 2369.9120, 2373.3600, 0.6010, 28.2333, 0, 0, 0, 2); + AddSol(ctx, -125.1540, -112.7900, -0.7250, -0.9781, 0, 0, 0, 1); + AddSol(ctx, 1.9790, 6.9800, -0.4450, 0.0433, 1, 0, 0, 4); + AddSol(ctx, 191.9530, 192.7200, 0.0290, 3.0861, 1, 0, 0, 2); + AddSol(ctx, -8.4660, -13.5100, 0.4550, -0.1093, 1, 0, 0, 1); + AddSol(ctx, 22639.5000, 22609.0700, 0.0790, 186.5398, 1, 0, 0, 0); + AddSol(ctx, 18.6090, 3.5900, -0.0940, 0.0118, 1, 0, 0,-1); + AddSol(ctx, -4586.4650, -4578.1300, -0.0770, 34.3117, 1, 0, 0,-2); + AddSol(ctx, 3.2150, 5.4400, 0.1920, -0.0386, 1, 0, 0,-3); + AddSol(ctx, -38.4280, -38.6400, 0.0010, 0.6008, 1, 0, 0,-4); + AddSol(ctx, -0.3930, -1.4300, -0.0920, 0.0086, 1, 0, 0,-6); + AddSol(ctx, -0.2890, -1.5900, 0.1230, -0.0053, 0, 1, 0, 4); + AddSol(ctx, -24.4200, -25.1000, 0.0400, -0.3000, 0, 1, 0, 2); + AddSol(ctx, 18.0230, 17.9300, 0.0070, 0.1494, 0, 1, 0, 1); + AddSol(ctx, -668.1460, -126.9800, -1.3020, -0.3997, 0, 1, 0, 0); + AddSol(ctx, 0.5600, 0.3200, -0.0010, -0.0037, 0, 1, 0,-1); + AddSol(ctx, -165.1450, -165.0600, 0.0540, 1.9178, 0, 1, 0,-2); + AddSol(ctx, -1.8770, -6.4600, -0.4160, 0.0339, 0, 1, 0,-4); + AddSol(ctx, 0.2130, 1.0200, -0.0740, 0.0054, 2, 0, 0, 4); + AddSol(ctx, 14.3870, 14.7800, -0.0170, 0.2833, 2, 0, 0, 2); + AddSol(ctx, -0.5860, -1.2000, 0.0540, -0.0100, 2, 0, 0, 1); + AddSol(ctx, 769.0160, 767.9600, 0.1070, 10.1657, 2, 0, 0, 0); + AddSol(ctx, 1.7500, 2.0100, -0.0180, 0.0155, 2, 0, 0,-1); + AddSol(ctx, -211.6560, -152.5300, 5.6790, -0.3039, 2, 0, 0,-2); + AddSol(ctx, 1.2250, 0.9100, -0.0300, -0.0088, 2, 0, 0,-3); + AddSol(ctx, -30.7730, -34.0700, -0.3080, 0.3722, 2, 0, 0,-4); + AddSol(ctx, -0.5700, -1.4000, -0.0740, 0.0109, 2, 0, 0,-6); + AddSol(ctx, -2.9210, -11.7500, 0.7870, -0.0484, 1, 1, 0, 2); + AddSol(ctx, 1.2670, 1.5200, -0.0220, 0.0164, 1, 1, 0, 1); + AddSol(ctx, -109.6730, -115.1800, 0.4610, -0.9490, 1, 1, 0, 0); + AddSol(ctx, -205.9620, -182.3600, 2.0560, 1.4437, 1, 1, 0,-2); + AddSol(ctx, 0.2330, 0.3600, 0.0120, -0.0025, 1, 1, 0,-3); + AddSol(ctx, -4.3910, -9.6600, -0.4710, 0.0673, 1, 1, 0,-4); + AddSol(ctx, 0.2830, 1.5300, -0.1110, 0.0060, 1,-1, 0, 4); + AddSol(ctx, 14.5770, 31.7000, -1.5400, 0.2302, 1,-1, 0, 2); + AddSol(ctx, 147.6870, 138.7600, 0.6790, 1.1528, 1,-1, 0, 0); + AddSol(ctx, -1.0890, 0.5500, 0.0210, 0.0000, 1,-1, 0,-1); + AddSol(ctx, 28.4750, 23.5900, -0.4430, -0.2257, 1,-1, 0,-2); + AddSol(ctx, -0.2760, -0.3800, -0.0060, -0.0036, 1,-1, 0,-3); + AddSol(ctx, 0.6360, 2.2700, 0.1460, -0.0102, 1,-1, 0,-4); + AddSol(ctx, -0.1890, -1.6800, 0.1310, -0.0028, 0, 2, 0, 2); + AddSol(ctx, -7.4860, -0.6600, -0.0370, -0.0086, 0, 2, 0, 0); + AddSol(ctx, -8.0960, -16.3500, -0.7400, 0.0918, 0, 2, 0,-2); + AddSol(ctx, -5.7410, -0.0400, 0.0000, -0.0009, 0, 0, 2, 2); + AddSol(ctx, 0.2550, 0.0000, 0.0000, 0.0000, 0, 0, 2, 1); + AddSol(ctx, -411.6080, -0.2000, 0.0000, -0.0124, 0, 0, 2, 0); + AddSol(ctx, 0.5840, 0.8400, 0.0000, 0.0071, 0, 0, 2,-1); + AddSol(ctx, -55.1730, -52.1400, 0.0000, -0.1052, 0, 0, 2,-2); + AddSol(ctx, 0.2540, 0.2500, 0.0000, -0.0017, 0, 0, 2,-3); + AddSol(ctx, 0.0250, -1.6700, 0.0000, 0.0031, 0, 0, 2,-4); + AddSol(ctx, 1.0600, 2.9600, -0.1660, 0.0243, 3, 0, 0, 2); + AddSol(ctx, 36.1240, 50.6400, -1.3000, 0.6215, 3, 0, 0, 0); + AddSol(ctx, -13.1930, -16.4000, 0.2580, -0.1187, 3, 0, 0,-2); + AddSol(ctx, -1.1870, -0.7400, 0.0420, 0.0074, 3, 0, 0,-4); + AddSol(ctx, -0.2930, -0.3100, -0.0020, 0.0046, 3, 0, 0,-6); + AddSol(ctx, -0.2900, -1.4500, 0.1160, -0.0051, 2, 1, 0, 2); + AddSol(ctx, -7.6490, -10.5600, 0.2590, -0.1038, 2, 1, 0, 0); + AddSol(ctx, -8.6270, -7.5900, 0.0780, -0.0192, 2, 1, 0,-2); + AddSol(ctx, -2.7400, -2.5400, 0.0220, 0.0324, 2, 1, 0,-4); + AddSol(ctx, 1.1810, 3.3200, -0.2120, 0.0213, 2,-1, 0, 2); + AddSol(ctx, 9.7030, 11.6700, -0.1510, 0.1268, 2,-1, 0, 0); + AddSol(ctx, -0.3520, -0.3700, 0.0010, -0.0028, 2,-1, 0,-1); + AddSol(ctx, -2.4940, -1.1700, -0.0030, -0.0017, 2,-1, 0,-2); + AddSol(ctx, 0.3600, 0.2000, -0.0120, -0.0043, 2,-1, 0,-4); + AddSol(ctx, -1.1670, -1.2500, 0.0080, -0.0106, 1, 2, 0, 0); + AddSol(ctx, -7.4120, -6.1200, 0.1170, 0.0484, 1, 2, 0,-2); + AddSol(ctx, -0.3110, -0.6500, -0.0320, 0.0044, 1, 2, 0,-4); + AddSol(ctx, 0.7570, 1.8200, -0.1050, 0.0112, 1,-2, 0, 2); + AddSol(ctx, 2.5800, 2.3200, 0.0270, 0.0196, 1,-2, 0, 0); + AddSol(ctx, 2.5330, 2.4000, -0.0140, -0.0212, 1,-2, 0,-2); + AddSol(ctx, -0.3440, -0.5700, -0.0250, 0.0036, 0, 3, 0,-2); + AddSol(ctx, -0.9920, -0.0200, 0.0000, 0.0000, 1, 0, 2, 2); + AddSol(ctx, -45.0990, -0.0200, 0.0000, -0.0010, 1, 0, 2, 0); + AddSol(ctx, -0.1790, -9.5200, 0.0000, -0.0833, 1, 0, 2,-2); + AddSol(ctx, -0.3010, -0.3300, 0.0000, 0.0014, 1, 0, 2,-4); + AddSol(ctx, -6.3820, -3.3700, 0.0000, -0.0481, 1, 0,-2, 2); + AddSol(ctx, 39.5280, 85.1300, 0.0000, -0.7136, 1, 0,-2, 0); + AddSol(ctx, 9.3660, 0.7100, 0.0000, -0.0112, 1, 0,-2,-2); + AddSol(ctx, 0.2020, 0.0200, 0.0000, 0.0000, 1, 0,-2,-4); + AddSol(ctx, 0.4150, 0.1000, 0.0000, 0.0013, 0, 1, 2, 0); + AddSol(ctx, -2.1520, -2.2600, 0.0000, -0.0066, 0, 1, 2,-2); + AddSol(ctx, -1.4400, -1.3000, 0.0000, 0.0014, 0, 1,-2, 2); + AddSol(ctx, 0.3840, -0.0400, 0.0000, 0.0000, 0, 1,-2,-2); + AddSol(ctx, 1.9380, 3.6000, -0.1450, 0.0401, 4, 0, 0, 0); + AddSol(ctx, -0.9520, -1.5800, 0.0520, -0.0130, 4, 0, 0,-2); + AddSol(ctx, -0.5510, -0.9400, 0.0320, -0.0097, 3, 1, 0, 0); + AddSol(ctx, -0.4820, -0.5700, 0.0050, -0.0045, 3, 1, 0,-2); + AddSol(ctx, 0.6810, 0.9600, -0.0260, 0.0115, 3,-1, 0, 0); + AddSol(ctx, -0.2970, -0.2700, 0.0020, -0.0009, 2, 2, 0,-2); + AddSol(ctx, 0.2540, 0.2100, -0.0030, 0.0000, 2,-2, 0,-2); + AddSol(ctx, -0.2500, -0.2200, 0.0040, 0.0014, 1, 3, 0,-2); + AddSol(ctx, -3.9960, 0.0000, 0.0000, 0.0004, 2, 0, 2, 0); + AddSol(ctx, 0.5570, -0.7500, 0.0000, -0.0090, 2, 0, 2,-2); + AddSol(ctx, -0.4590, -0.3800, 0.0000, -0.0053, 2, 0,-2, 2); + AddSol(ctx, -1.2980, 0.7400, 0.0000, 0.0004, 2, 0,-2, 0); + AddSol(ctx, 0.5380, 1.1400, 0.0000, -0.0141, 2, 0,-2,-2); + AddSol(ctx, 0.2630, 0.0200, 0.0000, 0.0000, 1, 1, 2, 0); + AddSol(ctx, 0.4260, 0.0700, 0.0000, -0.0006, 1, 1,-2,-2); + AddSol(ctx, -0.3040, 0.0300, 0.0000, 0.0003, 1,-1, 2, 0); + AddSol(ctx, -0.3720, -0.1900, 0.0000, -0.0027, 1,-1,-2, 2); + AddSol(ctx, 0.4180, 0.0000, 0.0000, 0.0000, 0, 0, 4, 0); + AddSol(ctx, -0.3300, -0.0400, 0.0000, 0.0000, 3, 0, 2, 0); + SolarN(ctx); Planetary(ctx); S = F + DS/ARC; diff --git a/source/python/astronomy.py b/source/python/astronomy.py index e71f5561..9851e71c 100644 --- a/source/python/astronomy.py +++ b/source/python/astronomy.py @@ -1158,6 +1158,7 @@ def _CalcMoon(time): I += 1 + # AddSol(13.902000, 14.060000, -0.001000, 0.260700, 0.000000, 0.000000, 0.000000, 4.000000) z = ex[4][4] DLAM += 13.902 * z.imag