1 /* This file contains code to calculate the libration in Lunar lat and long.
2 * It is based entirely on code supplied to me 2 Oct 1996 by Stephen L. Moshier,
3 * <moshier@world.std.com>, which implements a trigonometric expansion to
4 * approximate the librations according to JPL DE403. The following doc file
5 * was also supplied therewith:
6
7 This program calculates a trigonometric series adjusted for a best fit
8 to the lunar librations from the Jet Propulsion Laboratory's DE403
9 ephemeris.
10
11 lblon403.c and lblat403.c are series for the selenographic longitude
12 and latitude of the earth. The longitude series matches DE403
13 with a maximum discrepancy of 2.6" (0.4" rms). The latitude has a
14 maximum discrepancy of 1.9" (0.2" rms). The two series are valid in
15 the Julian year interval 1600 to 2200.
16
17 In both Eckhardt and DE403 the moon's principal moment of inertia axes
18 form the lunar body coordinate system. The estimated geographic
19 locations of these axes vary as measurements and theories gradually
20 become more refined. There is a significant difference between
21 Eckhardt and DE403 in the constant term of the longitude. Almanac and
22 cartography coordinates drop the constant term (which is -64" for
23 DE403). That practice gives librations relative to the mean
24 selenographic longitude of the earth, for which the discrepancy from
25 one theory to the next is small.
26
27 Steve Moshier
28 October, 1996
29
30 * Any errors in adapting this code to xephem are strictly my own.
31 * Elwood Downey.
32 */
33
34 #include <stdio.h>
35 #include <math.h>
36
37 #include "astro.h"
38
39 #define CHAR short
40
41
42 /* plantbl.h */
43
44 struct plantbl {
45 /* char max_harmonic[9]; */
46 char max_harmonic[14];
47 char max_power_of_t;
48 CHAR *arg_tbl;
49 int *lon_tbl;
50 int *lat_tbl;
51 int *rad_tbl;
52 double distance;
53 double timescale;
54 double trunclvl;
55 };
56
57
58 /* libra403.c */
59
60 static double JD2000 = 2451545.0;
61 /* Conversion factors between degrees and radians */
62 static double STR = 4.8481368110953599359e-6; /* radians per arc second */
63
64 static double ss[14][24];
65 static double cc[14][24];
66
67 /* Reduce arc seconds modulo 360 degrees,
68 answer in arc seconds. */
69 static double
mods3600(double x)70 mods3600 (double x)
71 {
72 double y;
73 y = x - 1.296e6 * floor (x / 1.296e6);
74 return y;
75 }
76
77 /* Prepare lookup table of sin and cos ( i * L_k )
78 for required multiple angles.
79 K is the array offset corresponding to the planet.
80 ARG is in radians.
81 n is the highest harmonic to compute. */
82 static int
sscc(int k,double arg,int n)83 sscc (int k, double arg, int n)
84 {
85 double cu, su, cv, sv, s;
86 int i;
87
88 if (n <= 0)
89 return 0;
90
91 su = sin (arg);
92 cu = cos (arg);
93 ss[k][0] = su; /* sin(L) */
94 cc[k][0] = cu; /* cos(L) */
95 sv = 2.0 * su * cu;
96 cv = cu * cu - su * su;
97 ss[k][1] = sv; /* sin(2L) */
98 cc[k][1] = cv;
99 for (i = 2; i < n; i++)
100 {
101 s = su * cv + cu * sv;
102 cv = cu * cv - su * sv;
103 sv = s;
104 ss[k][i] = sv; /* sin( i+1 L ) */
105 cc[k][i] = cv;
106 }
107 return (0);
108 }
109
110
111 /* Mean elements.
112 Copied from cmoon.c, DE404 version. */
113
114 static double Jlast = -1.0e38;
115 static double T;
116
117 static int
dargs(double J,struct plantbl * plan)118 dargs (double J, struct plantbl *plan)
119 {
120 double T2, w;
121
122 if (J == Jlast)
123 return 0;
124
125 T = (J - JD2000) / 36525.0;
126 T2 = T * T;
127
128 /* Mean anomaly of sun = l' (J. Laskar) */
129 w = mods3600 (129596581.038354 * T + 1287104.76154);
130 w += ((((((((
131 1.62e-20 * T
132 - 1.0390e-17) * T
133 - 3.83508e-15) * T
134 + 4.237343e-13) * T
135 + 8.8555011e-11) * T
136 - 4.77258489e-8) * T
137 - 1.1297037031e-5) * T
138 + 1.4732069041e-4) * T
139 - 0.552891801772) * T2;
140 sscc (10, STR * w, plan->max_harmonic[10]);
141
142 /* Mean distance of moon from its ascending node = F */
143 w = mods3600 ((1739527263.0983 - 2.079419901760e-01) * T + 335779.55755);
144 w = w + ((-9.646018347184e-06 * T2 /* F, t^4 */
145 - 1.138215912580e-03) * T /* F, t^3 */
146 - 1.312045233711e+01) * T; /* F, t^2 */
147 sscc (11, STR * w, plan->max_harmonic[11]);
148
149 /* Mean anomaly of moon = l */
150 w = mods3600 ((1717915923.4728 - 2.035946368532e-01) * T + 485868.28096);
151 w = w + ((-3.421689790404e-04 * T2 /* l, t^4 */
152 + 4.768357585780e-02) * T /* l, t^3 */
153 + 3.146734198839e+01) * T; /* l, t^2 */
154 sscc (9, STR * w, plan->max_harmonic[9]);
155
156 /* Mean elongation of moon = D */
157 w = mods3600 ((1602961601.4603 + 3.962893294503e-01) * T + 1072260.73512);
158 w = w + ((-2.905334122698e-04 * T2 /* D, t^4 */
159 - 5.834100476561e-03) * T /* D, t^3 */
160 - 6.847070905410e+00) * T; /* D, t^2 */
161 sscc (12, STR * w, plan->max_harmonic[12]);
162
163 /* Mean longitude of moon, re mean ecliptic and equinox of date */
164 w = mods3600 ((1732564372.83264 - 6.784914260953e-01) * T + 785939.95571);
165 w = w + ((-8.466472828815e-05 * T2 /* L, t^4 */
166 + 5.722859298199e-03) * T /* L, t^3 */
167 - 5.663161722088e+00) * T; /* L, t^2 */
168 sscc (13, STR * w, plan->max_harmonic[13]);
169
170 /* Mean longitudes of planets (Laskar, Bretagnon) */
171
172 /* Venus. */
173 w = mods3600 (210664136.4335482 * T + 655127.283046);
174 w += ((((((((
175 -9.36e-023 * T
176 - 1.95e-20) * T
177 + 6.097e-18) * T
178 + 4.43201e-15) * T
179 + 2.509418e-13) * T
180 - 3.0622898e-10) * T
181 - 2.26602516e-9) * T
182 - 1.4244812531e-5) * T
183 + 0.005871373088) * T2;
184 sscc (1, STR * w, plan->max_harmonic[1]);
185
186 /* Earth. */
187 w = mods3600 (129597742.26669231 * T + 361679.214649);
188 w += ((((((((-1.16e-22 * T
189 + 2.976e-19) * T
190 + 2.8460e-17) * T
191 - 1.08402e-14) * T
192 - 1.226182e-12) * T
193 + 1.7228268e-10) * T
194 + 1.515912254e-7) * T
195 + 8.863982531e-6) * T
196 - 2.0199859001e-2) * T2;
197 sscc (2, STR * w, plan->max_harmonic[2]);
198
199 /* Mars. */
200 w = mods3600 (68905077.59284 * T + 1279559.78866);
201 w += (-1.043e-5 * T + 9.38012e-3) * T2;
202 sscc (3, STR * w, plan->max_harmonic[3]);
203
204 /* Jupiter. */
205 w = mods3600 (10925660.428608 * T + 123665.342120);
206 w += (1.543273e-5 * T - 3.06037836351e-1) * T2;
207 sscc (4, STR * w, plan->max_harmonic[4]);
208
209 /* Saturn. */
210 w = mods3600 (4399609.65932 * T + 180278.89694);
211 w += ((4.475946e-8 * T - 6.874806E-5) * T + 7.56161437443E-1) * T2;
212 sscc (5, STR * w, plan->max_harmonic[5]);
213 return 0;
214 }
215
216
217
218 /* Evaluate series PLAN at Julian date J.
219 Result in arcseconds, usually. */
220
221 static double
gplan(double J,struct plantbl * plan)222 gplan (double J, struct plantbl *plan)
223 {
224 double su, cu, sv, cv;
225 double t, sl;
226 int j, k, m, k1, ip, np, nt;
227 CHAR *p;
228 int *pl;
229
230 dargs (J, plan);
231 /* Point to start of table of arguments. */
232 p = plan->arg_tbl;
233 /* Point to tabulated cosine and sine amplitudes. */
234 pl = plan->lon_tbl;
235 sl = 0.0;
236
237 for (;;)
238 {
239 /* Find sine and cosine of argument for this term in the series.
240 The argument has the form J_1 L_1 + J_2 L_2 + ...
241 where J_i are integers and L_i are mean elements. */
242
243 /* Number of periodic arguments. */
244 np = *p++;
245 if (np < 0)
246 break;
247 if (np == 0)
248 {
249 /* If no periodic arguments, it is a polynomial term.
250 Evaluate A_n T^n + A_n-1 T^n-1 + ... + A_0. */
251 nt = *p++;
252 cu = *pl++;
253 for (ip = 0; ip < nt; ip++)
254 cu = cu * T + *pl++;
255 sl += cu;
256 continue;
257 }
258 k1 = 0;
259 cv = 0.0;
260 sv = 0.0;
261 for (ip = 0; ip < np; ip++)
262 {
263 /* What harmonic. */
264 j = *p++;
265 /* Which planet. */
266 m = *p++ - 1;
267 if (j)
268 {
269 k = j;
270 if (j < 0)
271 k = -k;
272 k -= 1;
273 /* sin(k*angle) for planet m. */
274 su = ss[m][k];
275 if (j < 0)
276 su = -su;
277 /* cos(k*angle) for planet m. */
278 cu = cc[m][k];
279 if (k1 == 0)
280 {
281 /* Set sine and cosine of first angle. */
282 sv = su;
283 cv = cu;
284 k1 = 1;
285 }
286 else
287 {
288 /* Combine angles by trigonometry. */
289 t = su * cv + cu * sv;
290 cv = cu * cv - su * sv;
291 sv = t;
292 }
293 }
294 }
295 /* Now cv = cos(arg), sv = sin(arg).
296 Evaluate
297 cu = (C_n T^n + C_n-1 T^n-1 + ... + C_0) cos(arg)
298 su = (S_n T^n + S_n-1 T^n-1 + ... + S_0) sin(arg). */
299
300 /* Highest power of T. */
301 nt = *p++;
302 /* Coefficients C_i, S_i. */
303 cu = *pl++;
304 su = *pl++;
305 for (ip = 0; ip < nt; ip++)
306 {
307 cu = cu * T + *pl++;
308 su = su * T + *pl++;
309 }
310 sl += cu * cv + su * sv;
311 }
312 return (plan->trunclvl * sl);
313 }
314
315
316 /* lblat403.c */
317
318 static int lattabr[] = {-1};
319 static int lattabb[] = {-1};
320 static int lattabl[] = {
321 785710,
322
323 -1958, 780,
324
325 -178, 2850, 2243, 5927, 2714, -2911,
326
327 -174, 5888, -16705, 10828, -15113, -25049,
328
329 -172, 1976,
330
331 37, -13560,
332
333 -40, -911,
334
335 -300, 691,
336
337 3779, 722,
338
339 68, -1048,
340
341 -3092, -4, 3011, -31, 250, -14293664,
342
343 -149, -228,
344
345 -5, -842,
346
347 62, 57967,
348
349 -7, -11207,
350
351 15, -66055,
352
353 -79, -71560,
354
355 8, 2998,
356
357 -1062, -46,
358
359 -2, 711,
360
361 -5, -2,
362
363 367, -5, -353, 1, -117, 2324027,
364
365 0, -176,
366
367 19, -4,
368
369 -3, -1229,
370
371 7, 4327,
372
373 -2, 112,
374
375 -1, -540,
376
377 73, 102982,
378
379 0, -137,
380
381 2, 239,
382
383 0, -216,
384
385 2, 3707,
386
387 -1, -100,
388
389 -2, 124,
390
391 0, 408,
392
393 1, 561,
394
395 0, 594,
396
397 0, 11866,
398
399 -2, -229,
400
401 11, 6768,
402
403 2, 1,
404
405 -2, -788, -24, 314732,
406
407 -5, -3238,
408
409 -2, -1263,
410
411 -1, 94,
412
413 -2, 206,
414
415 -283, 6489836,
416
417 63, 2562,
418
419 -6, 1220,
420
421 0, 135,
422
423 795, -338,
424
425 -406, -101,
426
427 757, -383,
428
429 -73, -31018,
430
431 -5, -3010,
432
433 6, 5821,
434
435 167, 7,
436
437 2, 122623,
438
439 41, 138924,
440
441 2, 253,
442
443 0, -198,
444
445 135, 30,
446
447 2, 934,
448
449 62, -14,
450
451 -531, -297537,
452
453 -3, -205,
454
455 1, -393,
456
457 -4, -156,
458
459 -467, 90,
460
461 9, -346,
462
463 -55, 1368,
464
465 4414, 2094,
466
467 480, 510,
468
469 35, 728,
470
471 6832, 6429,
472
473 -2099, -3703,
474
475 -9, 579,
476
477 239, 1738,
478
479 22, 968, 60260, -8929,
480
481 26, -64,
482
483 0, 0,
484
485 -47, -351, 2248, -1175, 3976, 7150,
486
487 15191, 1, -15535, -143, -2308,-239959618,
488
489 -45, 355, 2252, 1189, 4009, -7131,
490
491 -158, 499,
492
493 776, -34,
494
495 -389, 4363,
496
497 30, 28,
498
499 0, -593,
500
501 1, -1,
502
503 58, -66,
504
505 4, 1552,
506
507 -1, 244,
508
509 288, 59,
510
511 -276, 62,
512
513 8, 3309,
514
515 2, 1249,
516
517 -156, -3,
518
519 0, -7903,
520
521 -47, 154458,
522
523 -710, 160,
524
525 0, 288,
526
527 328, 219514,
528
529 -1, 113,
530
531 -1, 1515,
532
533 -20, 28493,
534
535 13, 9011,
536
537 -1, 1110,
538
539 -1, -103,
540
541 0, 312,
542
543 1, 360,
544
545 6, 6139,
546
547 -1, 142,
548
549 -1, -709,
550
551 -1, -242,
552
553 67, 67200,
554
555 5, 4148,
556
557 1, 137,
558
559 -15, -17969,
560
561 -2, -3372,
562
563 -2, -1739,
564
565 154, 116200,
566
567 -1, -640,
568
569 -269, -336274,
570
571 0, -1557,
572
573 -1, -353,
574
575 993, 39,
576
577 -1, -294,
578
579 -646, -135,
580
581 750, -3, -661, 8, -163, 2591179,
582
583 -1, -258,
584
585 0, 381,
586
587 6, 8272,
588
589 -44, -92044,
590
591 -29, 70397,
592
593 -25, -17892,
594
595 1, 67,
596
597 -44, -17118,
598
599 2743, 349,
600
601 -4, 231,
602
603 1501, 3099,
604
605 -33, 21,
606
607 -1130, 97, 1263, 164, -226, -13139965,
608
609 839, -202,
610
611 -1, 660,
612
613 12, -10482,
614
615 1, 17,
616
617 -2, -1480,
618
619 -45, -26084,
620
621 2, 259,
622
623 0, 258,
624
625 -1, -1560,
626
627 32, 73046,
628
629 -1, -370,
630
631 -1, -77,
632
633 46, 20687,
634
635 1, 742,
636
637 1, 2399,
638
639 2, 741,
640
641 0, 52,
642
643 0, 112,
644
645 0, 297,
646
647 2, 825,
648
649 0, 161,
650
651 1, 4228,
652
653 0, 212,
654
655 -1, -105,
656
657 6, 2782,
658
659 9, 37199,
660
661 3, 5045,
662
663 105, -1,
664
665 -1, -179,
666
667 75, 31274,
668
669 -3, -1321,
670
671 -1, 363,
672
673 0, 1137,
674
675 58, 104090,
676
677 -2, -2695,
678
679 -1, -392,
680
681 -35, -21763,
682
683 -2, -205,
684
685 567, 38,
686
687 -7, 117,
688
689 -569, -9, 321, -1522061,
690
691 -4, 276,
692
693 -2, -590,
694
695 2, 632,
696
697 -14, -10601,
698
699 4, 8703,
700
701 -10, 16870,
702
703 -4, -995,
704
705 597, -6, -386, -805403,
706
707 1025, -474,
708
709 -2, 201,
710
711 -95, 16,
712
713 -127, 135570,
714
715 0, -173,
716
717 10, 8565,
718
719 -3, 1812,
720
721 -1, -108,
722
723 -107, -649,
724
725 0, 151,
726
727 1, 950,
728
729 1, 312,
730
731 1, 403,
732
733 0, -576,
734
735 7, 4418,
736
737 -3, -4769,
738
739 -1, -769,
740
741 63, 38890,
742
743 0, -101,
744
745 0, 169,
746
747 -3, -14837,
748
749 1, 372,
750
751 0, -674,
752
753 -3, -1488,
754
755 -36, -196300,
756
757 0, -176,
758
759 -10, -4811,
760
761 -2, -991,
762
763 1, 831,
764
765 1, 3138,
766
767 -103, -51819,
768
769 0, -133,
770
771 -4, 22171,
772
773 2, 820,
774
775 1, 149,
776
777 2227, 1277,
778
779 -502, -3049,
780
781 1, 122,
782
783 0, 370,
784
785 0, 166,
786
787 2, 772,
788
789 2, 2057,
790
791 -1, -486,
792
793 13, -15447,
794
795 -2, -1619,
796
797 0, 335,
798
799 0, -206,
800
801 0, -104,
802
803 -19, -19726,
804
805 0, 414,
806
807 -8, -3425,
808
809 -19, -1,
810
811 1, 546,
812
813 0, -392,
814
815 0, -2754,
816
817 0, -158,
818
819 -3, -1790,
820
821 -1, -230,
822
823 0, -190,
824
825 0, -366,
826
827 0, -154,
828
829 };
830
831 static CHAR latargs[] = {
832 0, 0,
833 3, 1, 2, 9, 3,-20, 4, 0,
834 4, 1, 13, -1, 10, 3, 2, -4, 3, 2,
835 4, 1, 13, -1, 10, -5, 2, 9, 3, 2,
836 3, 9, 10, -9, 14, 1, 3, 0,
837 3, 1, 11, -1, 12, 1, 13, 0,
838 4, 1, 10, -2, 11, 1, 12, -2, 13, 0,
839 4, 2, 11, -1, 14, 18, 2,-18, 3, 0,
840 3, 1, 13, -1, 10, 1, 3, 0,
841 2, 1, 10, -1, 14, 0,
842 2, 1, 10, -1, 12, 2,
843 4, 1, 14,-18, 2, 16, 3, 1, 5, 0,
844 3, 2, 10, -1, 12, -1, 13, 0,
845 3, 1, 10, 1, 11, -1, 12, 0,
846 4, 1, 10, -1, 11, 1, 12, -2, 13, 0,
847 2, 1, 12, -1, 13, 0,
848 3, 1, 10, -1, 11, -1, 12, 0,
849 3, 3, 10, -1, 12, -2, 13, 0,
850 2, 2, 10, -2, 13, 0,
851 3, 1, 10, 2, 11, -1, 12, 0,
852 3, 1, 10, -2, 13, 1, 3, 0,
853 3, 1, 10, 1, 12, -2, 13, 2,
854 3, 1, 11, 1, 12, -1, 13, 0,
855 2, 2, 12, -2, 13, 0,
856 3, 1, 10, -2, 11, -1, 12, 0,
857 3, 1, 10, -3, 12, 2, 13, 0,
858 4, 3, 10, 1, 11, -1, 12, -2, 13, 0,
859 3, 2, 10, 1, 12, -3, 13, 0,
860 4, 1, 10, 1, 11, 1, 12, -2, 13, 0,
861 2, 3, 12, -3, 13, 0,
862 4, 1, 10, -1, 11, -3, 12, 2, 13, 0,
863 3, 3, 10, 1, 12, -4, 13, 0,
864 4, 1, 10, 2, 11, 1, 12, -2, 13, 0,
865 3, 1, 10, 3, 12, -4, 13, 0,
866 4, 1, 10, 3, 11, 1, 12, -2, 13, 0,
867 3, 3, 11, 1, 12, -2, 13, 0,
868 4, 2, 10, 1, 11, 1, 12, -4, 13, 0,
869 2, 3, 12, -4, 13, 0,
870 3, 2, 11, 1, 12, -2, 13, 0,
871 4, 1, 10, 1, 11, 1, 12, -3, 13, 0,
872 3, 2, 10, 1, 12, -4, 13, 0,
873 4, 1, 14, -3, 2,-16, 3, -4, 4, 0,
874 3, 1, 11, 1, 12, -2, 13, 1,
875 3, 1, 10, 1, 12, -3, 13, 0,
876 4, 2, 10, 1, 11, -1, 12, -2, 13, 0,
877 3, 2, 10, -3, 12, 2, 13, 0,
878 4, 1, 10, -1, 11, -1, 12, 1, 13, 0,
879 2, 1, 12, -2, 13, 0,
880 2, 2, 13, -1, 14, 0,
881 2, 2, 11, -1, 12, 0,
882 4, 1, 10, -1, 11, 1, 12, -3, 13, 0,
883 3, 2, 10, -3, 14, 4, 4, 0,
884 2, 1, 10, -2, 13, 0,
885 3, 1, 13, -3, 3, 4, 4, 0,
886 3, 2, 10, -1, 12, -2, 13, 0,
887 3, 2, 10, -1, 11, -1, 12, 0,
888 3, 1, 10, -1, 12, 1, 13, 0,
889 2, 1, 10, -1, 11, 0,
890 3, 1, 11, -1, 12, 2, 13, 0,
891 2, 1, 11, -1, 12, 0,
892 3, 1, 10, -1, 12, -1, 13, 0,
893 4, 2, 13, -1, 12, 2, 2, -2, 3, 0,
894 3, 1, 13, 2, 2, -3, 3, 0,
895 4, 2, 10, -1, 11, -1, 12, -2, 13, 0,
896 3, 1, 13, -1, 2, 2, 3, 0,
897 2, 2, 10, -1, 12, 0,
898 4, 2, 13, -1, 12, 2, 3, -2, 5, 0,
899 4, 2, 13, -1, 12, 3, 2, -3, 3, 0,
900 4, 2, 10, -2, 11, 1, 12, -2, 13, 0,
901 3, 1, 13, 1, 3, -2, 5, 0,
902 4, 1, 10, 1, 11, -1, 12, 1, 13, 0,
903 3, 1, 13, -5, 2, 9, 3, 0,
904 3, 1, 14, 2, 3, -4, 4, 0,
905 3, 3, 10, 4, 12, -6, 14, 0,
906 3, 1, 13, 3, 2, -4, 3, 0,
907 1, 1, 10, 0,
908 3, 1, 13, -3, 12, 9, 2, 0,
909 4, 1, 10, -1, 11, 1, 12, -1, 13, 0,
910 3, 2, 11, -1, 12, 2, 13, 0,
911 1, 1, 14, 1,
912 4, 1, 12, 1, 10, -1, 14, 1, 5, 0,
913 4, 9, 13, -9, 10, 7, 2, 10, 3, 0,
914 3, 1, 12, -8, 2, 13, 3, 2,
915 1, 1, 12, 2,
916 3, 1, 12, 8, 2,-13, 3, 2,
917 2, 1, 13, 2, 4, 0,
918 4, 2, 13, -1, 12, 5, 2, -6, 3, 0,
919 3, 1, 13, -2, 12, 1, 3, 0,
920 3, 1, 13, -3, 2, 6, 3, 0,
921 4, 1, 10, -1, 11, -1, 12, -1, 13, 0,
922 2, 1, 14, 2, 5, 0,
923 2, 1, 10, -2, 12, 0,
924 2, 2, 10, -3, 12, 0,
925 4, 2, 13, -1, 12, 4, 2, -4, 3, 0,
926 3, 1, 14, 4, 2, -6, 3, 0,
927 2, 1, 13, 1, 2, 0,
928 3, 2, 10, 1, 11, -1, 12, 0,
929 4, 2, 10, -1, 11, 1, 12, -2, 13, 0,
930 2, 1, 10, 1, 11, 0,
931 3, 1, 10, 1, 12, -1, 13, 0,
932 2, 1, 11, 1, 12, 0,
933 3, 3, 12, -2, 13, -1, 3, 0,
934 3, 4, 10, -1, 12, -2, 13, 0,
935 3, 2, 10, 1, 12, -2, 13, 0,
936 4, 1, 10, 1, 11, 1, 12, -1, 13, 0,
937 2, 2, 11, 1, 12, 0,
938 2, 3, 12, -2, 13, 0,
939 4, 2, 10, 1, 11, 1, 12, -2, 13, 0,
940 3, 1, 11, 3, 12, -2, 13, 0,
941 3, 4, 10, 1, 12, -4, 13, 0,
942 4, 2, 10, 2, 11, 1, 12, -2, 13, 0,
943 4, 1, 10, 2, 11, 1, 12, -4, 13, 0,
944 4, 1, 10, 1, 11, 1, 12, -4, 13, 0,
945 4, 1, 10, 3, 11, -1, 12, -2, 13, 0,
946 4, 1, 10, -2, 11, -1, 12, 2, 13, 0,
947 3, 1, 11, 1, 12, -3, 13, 0,
948 3, 1, 10, 1, 12, -4, 13, 0,
949 4, 1, 10, 2, 11, -1, 12, -2, 13, 0,
950 3, 3, 10, -1, 12, -4, 13, 0,
951 4, 1, 10, -1, 11, -1, 12, 2, 13, 0,
952 2, 1, 12, -3, 13, 0,
953 4, 1, 10, -1, 11, 1, 12, -4, 13, 0,
954 4, 1, 10, 1, 11, -1, 12, -2, 13, 0,
955 3, 2, 10, -1, 12, -3, 13, 0,
956 3, 1, 10, -1, 12, 2, 13, 0,
957 3, 1, 10, -2, 11, 1, 12, 0,
958 3, 1, 11, -1, 12, 3, 13, 0,
959 1, 2, 13, 0,
960 3, 1, 11, -1, 12, -1, 13, 0,
961 3, 1, 10, -3, 13, -1, 3, 0,
962 3, 1, 10, -1, 12, -2, 13, 2,
963 3, 3, 10, -1, 11, -1, 12, 0,
964 3, 2, 10, -1, 12, 1, 13, 0,
965 4, 1, 10, 1, 11, -1, 12, 2, 13, 0,
966 3, 1, 10, -1, 11, 1, 12, 0,
967 2, 1, 12, 1, 13, 0,
968 4, 1, 10, -1, 11, -1, 12, -2, 13, 0,
969 3, 1, 10, 1, 11, -3, 12, 0,
970 2, 3, 10, -1, 12, 0,
971 1, 2, 10, 0,
972 4, 2, 10, -1, 11, 1, 12, -1, 13, 0,
973 3, 1, 13, 1, 10, 1, 11, 0,
974 3, 2, 13, 3, 3, -2, 11, 0,
975 2, 1, 10, 1, 12, 2,
976 3, 1, 10, -3, 14, 2, 5, 0,
977 3, 3, 10, -1, 14, 4, 5, 0,
978 3, 1, 11, 1, 12, 1, 13, 0,
979 1, 2, 12, 0,
980 4, 1, 10, -2, 11, -1, 12, -2, 13, 0,
981 2, 1, 10, -3, 12, 0,
982 3, 3, 10, 1, 11, -1, 12, 0,
983 4, 3, 10, -1, 11, 1, 12, -2, 13, 0,
984 3, 2, 10, 1, 12, -1, 13, 0,
985 3, 1, 10, 1, 11, 1, 12, 0,
986 2, 3, 12, -1, 13, 0,
987 3, 1, 10, -1, 11, -3, 12, 0,
988 3, 3, 10, 1, 12, -2, 13, 0,
989 3, 1, 10, 2, 11, 1, 12, 0,
990 3, 1, 10, 3, 12, -2, 13, 0,
991 4, 3, 10, 1, 11, 1, 12, -2, 13, 0,
992 4, 1, 10, 1, 11, 3, 12, -2, 13, 0,
993 4, 2, 10, 1, 11, 1, 12, -6, 13, 0,
994 3, 2, 11, 1, 12, -4, 13, 0,
995 3, 2, 10, 1, 12, -6, 13, 0,
996 4, 2, 10, 2, 11, -1, 12, -4, 13, 0,
997 3, 1, 11, 1, 12, -4, 13, 0,
998 3, 3, 11, -1, 12, -2, 13, 0,
999 3, 1, 10, 1, 12, -5, 13, 0,
1000 4, 2, 10, 1, 11, -1, 12, -4, 13, 0,
1001 2, 1, 12, -4, 13, 0,
1002 3, 2, 11, -1, 12, -2, 13, 0,
1003 2, 1, 10, -4, 13, 0,
1004 4, 1, 10, 1, 11, -1, 12, -3, 13, 0,
1005 3, 2, 10, -1, 12, -4, 13, 0,
1006 4, 2, 10, -1, 11, -1, 12, 2, 13, 0,
1007 3, 1, 10, -1, 12, 3, 13, 0,
1008 3, 1, 11, -1, 12, 4, 13, 0,
1009 3, 1, 11, -1, 12, -2, 13, 0,
1010 3, 1, 10, -1, 12, -3, 13, 0,
1011 4, 2, 10, -1, 11, -1, 12, -4, 13, 0,
1012 3, 2, 10, -1, 12, 2, 13, 0,
1013 3, 2, 10, -2, 11, 1, 12, 0,
1014 2, 1, 10, 2, 13, 0,
1015 4, 1, 10, -1, 11, 1, 12, 1, 13, 0,
1016 2, 1, 12, 2, 13, 1,
1017 4, 1, 10, -1, 11, -1, 12, -3, 13, 0,
1018 3, 2, 10, -3, 12, -2, 13, 0,
1019 4, 2, 10, 1, 11, -1, 12, 2, 13, 0,
1020 3, 2, 10, -1, 11, 1, 12, 0,
1021 3, 1, 10, 1, 12, 1, 13, 0,
1022 3, 1, 11, 1, 12, 2, 13, 0,
1023 2, 4, 10, -1, 12, 0,
1024 2, 2, 10, 1, 12, 1,
1025 4, 1, 13, 1, 12, 10, 2, -2, 3, 0,
1026 3, 2, 11, 1, 12, 2, 13, 0,
1027 2, 2, 12, 1, 14, 0,
1028 1, 3, 12, 0,
1029 3, 3, 10, 1, 12, -1, 13, 0,
1030 3, 2, 10, 1, 11, 1, 12, 0,
1031 3, 4, 10, 1, 12, -2, 13, 0,
1032 3, 2, 10, 3, 12, -2, 13, 0,
1033 3, 4, 10, -9, 3, -1, 4, 0,
1034 4, 1, 10, 1, 11, 1, 12, -6, 13, 0,
1035 3, 1, 10, 1, 12, -6, 13, 0,
1036 4, 1, 10, 2, 11, -1, 12, -4, 13, 0,
1037 3, 3, 10, -1, 12, -6, 13, 0,
1038 4, 1, 10, -1, 11, -1, 12, 4, 13, 0,
1039 4, 1, 10, 1, 11, -1, 12, -4, 13, 0,
1040 3, 1, 10, -1, 12, 4, 13, 0,
1041 4, 1, 10, -2, 11, 1, 12, 2, 13, 0,
1042 3, 1, 10, -1, 12, -4, 13, 0,
1043 4, 3, 10, -1, 11, -1, 12, 2, 13, 0,
1044 4, 1, 10, 1, 11, -1, 12, 4, 13, 0,
1045 4, 1, 10, -1, 11, 1, 12, 2, 13, 0,
1046 2, 1, 12, 3, 13, 0,
1047 4, 1, 10, -1, 11, -1, 12, -4, 13, 0,
1048 3, 3, 10, -1, 12, 2, 13, 0,
1049 3, 1, 10, 1, 12, 2, 13, 0,
1050 3, 1, 11, 1, 12, 3, 13, 0,
1051 3, 1, 10, -3, 12, -2, 13, 0,
1052 3, 3, 10, -1, 11, 1, 12, 0,
1053 3, 2, 10, 1, 12, 1, 13, 0,
1054 4, 1, 10, 1, 11, 1, 12, 2, 13, 0,
1055 2, 3, 10, 1, 12, 0,
1056 4, 2, 10, 1, 11, 1, 12, 1, 13, 0,
1057 2, 1, 10, 3, 12, 0,
1058 3, 3, 10, 1, 11, 1, 12, 0,
1059 3, 5, 10, 1, 12, -2, 13, 0,
1060 3, 4, 14, -4, 2, 8, 3, 0,
1061 3, 5, 10, -9, 3, -1, 4, 0,
1062 4, 2, 10, 1, 11, -1, 12, -6, 13, 0,
1063 2, 1, 12, -6, 13, 0,
1064 3, 2, 11, -1, 12, -4, 13, 0,
1065 3, 2, 10, -1, 12, -6, 13, 0,
1066 3, 1, 11, -1, 12, -4, 13, 0,
1067 3, 2, 10, -1, 12, 4, 13, 0,
1068 2, 1, 12, 4, 13, 0,
1069 4, 2, 10, -1, 11, 1, 12, 2, 13, 0,
1070 3, 1, 11, 1, 12, 4, 13, 0,
1071 3, 1, 11, -3, 12, -2, 13, 0,
1072 3, 4, 10, -1, 12, 2, 13, 0,
1073 3, 2, 10, 1, 12, 2, 13, 0,
1074 4, 2, 10, 1, 11, 1, 12, 2, 13, 0,
1075 2, 4, 10, 1, 12, 0,
1076 3, 7, 12, -2, 10, -4, 5, 0,
1077 3, 1, 10, -1, 12, -6, 13, 0,
1078 4, 1, 10, -1, 11, 1, 12, 4, 13, 0,
1079 3, 1, 10, 1, 12, 4, 13, 0,
1080 4, 3, 10, -1, 11, 1, 12, 2, 13, 0,
1081 3, 3, 10, 1, 12, 2, 13, 0,
1082 2, 5, 10, 1, 12, 0,
1083 2, 1, 12, 6, 13, 0,
1084 3, 2, 10, 1, 12, 4, 13, 0,
1085 3, 4, 10, 1, 12, 2, 13, 0,
1086 -1
1087 };
1088
1089 /* Total terms = 254, small = 254 */
1090 static struct plantbl liblat = {
1091 /* { 0, 18, 18, 20, 4, 0, 0, 0, 0, 9, 3, 7, 9, 9,}, */
1092 /* Use max of liblon, liblat. */
1093 { 0, 18, 18, 20, 4, 2, 0, 0, 0, 9, 16, 7, 9, 9,},
1094 2,
1095 latargs,
1096 lattabl,
1097 lattabb,
1098 lattabr,
1099 3.850000e+05,
1100 36525.0,
1101 1.0e-4,
1102 };
1103
1104 /* lblon403.c */
1105 static int lontabr[] = {-1};
1106 static int lontabb[] = {-1};
1107 static int lontabl[] = {
1108 -640001,
1109
1110 -19, 3,
1111
1112 -1, 0,
1113
1114 -3, 17,
1115
1116 2, -9,
1117
1118 2, 3,
1119
1120 141, 1816,
1121
1122 2, -76,
1123
1124 78, -81,
1125
1126 3, 1,
1127
1128 50, -13,
1129
1130 -12, 18,
1131
1132 -6, 74,
1133
1134 19, 10,
1135
1136 -19, 701,
1137
1138 -26, 37,
1139
1140 36, -122,
1141
1142 131, -71,
1143
1144 -40, 1,
1145
1146 61463, 12853,
1147
1148 5, -29,
1149
1150 354, 201,
1151
1152 94, -5,
1153
1154 31, 25,
1155
1156 -73, -22,
1157
1158 673, 1435,
1159
1160 3844, 44,
1161
1162 -44, -8,
1163
1164 195, -16,
1165
1166 -827, -171768,
1167
1168 7051, -4116,
1169
1170 1036, 616, -2034, 6300, -13786, -3808,
1171
1172 -118, -536, -1246, 771, 2555, 3214,
1173
1174 203, 26,
1175
1176 2975, -715,
1177
1178 -743, 1286,
1179
1180 -232, -50,
1181
1182 4, 234,
1183
1184 -139, 475,
1185
1186 0, -98,
1187
1188 -3, -11848,
1189
1190 0, 118,
1191
1192 -202, 146,
1193
1194 -33673, 7601,
1195
1196 -150, 88,
1197
1198 -1720, 1002,
1199
1200 -293, 481,
1201
1202 -2078, 1,
1203
1204 199, 220655,
1205
1206 137, 7459,
1207
1208 -127, 28,
1209
1210 -10, 2259,
1211
1212 4, 450,
1213
1214 -26, 30, -76, 19043, 215, -7577830,
1215
1216 -65, -45,
1217
1218 -5, -14189,
1219
1220 -6, -496,
1221
1222 9, 3265,
1223
1224 0, -131,
1225
1226 48, -90,
1227
1228 -9, -155,
1229
1230 -2, 21,
1231
1232 151, 19,
1233
1234 -101, -516,
1235
1236 -827, 3, 796, 2, 134, -2215850,
1237
1238 -11, -1908,
1239
1240 0, 451,
1241
1242 -2, 1399,
1243
1244 3, 7,
1245
1246 -163, 5,
1247
1248 -1582, 61,
1249
1250 -22, -77215,
1251
1252 167, -471084,
1253
1254 -85, -28,
1255
1256 1, -473,
1257
1258 -1, 444,
1259
1260 4, 89,
1261
1262 6, -88,
1263
1264 -157, -87813,
1265
1266 3, 274,
1267
1268 -3, -1036,
1269
1270 7, -17005,
1271
1272 -1, -332,
1273
1274 0, 50,
1275
1276 -1, -228,
1277
1278 -5, -2986,
1279
1280 -1, -334,
1281
1282 1, -452,
1283
1284 0, 4,
1285
1286 0, -247,
1287
1288 -3, -2493,
1289
1290 -4, -1000,
1291
1292 0, -160,
1293
1294 0, -3163,
1295
1296 -75, -74207,
1297
1298 13, 829,
1299
1300 32, 481,
1301
1302 -33, -11859,
1303
1304 -2, -3634,
1305
1306 7, -1611,
1307
1308 3, 520,
1309
1310 -1, 2534,
1311
1312 5, -446,
1313
1314 -471, 8, 399, 5160, 201, -2057189,
1315
1316 83, -2106,
1317
1318 11, 12240,
1319
1320 3, -270,
1321
1322 248, 1112,
1323
1324 -63, -61809,
1325
1326 -183, 594,
1327
1328 27, 25844,
1329
1330 -3, 5594,
1331
1332 8, 571,
1333
1334 -23, -1855,
1335
1336 477, -466,
1337
1338 0, -1257,
1339
1340 247, 1550,
1341
1342 -10178, -175, 9570, -423, 2610, -45917681,
1343
1344 -51, 937,
1345
1346 -1001, 168,
1347
1348 -168, 882,
1349
1350 1260, -2894, 4306, -1515,
1351
1352 7, 402,
1353
1354 0, 36,
1355
1356 -280, -373,
1357
1358 -19, 840,
1359
1360 -1227, -138,
1361
1362 3486, 1478247,
1363
1364 1649, -644,
1365
1366 840, 377,
1367
1368 47, -1464,
1369
1370 167, -1251123,
1371
1372 -194, -713, 133, 284429,
1373
1374 0, -191,
1375
1376 -3, 1534,
1377
1378 -700, 918,
1379
1380 -7, -633,
1381
1382 -221, -559,
1383
1384 1, 99,
1385
1386 -17, -3513,
1387
1388 -30, 14,
1389
1390 -602, -5006,
1391
1392 908, 4178,
1393
1394 542, -379,
1395
1396 1568, 782, 528, 2761,
1397
1398 -38994, -25804,
1399
1400 1696398, -324306,
1401
1402 47292, 71061, 457883, 52470, 159777, 224906030,
1403
1404 -13068, -18508,
1405
1406 -104, 3754,
1407
1408 541, 614, -290, 1412,
1409
1410 -48, 162,
1411
1412 42, -50,
1413
1414 -609, -4969,
1415
1416 44, -11435,
1417
1418 -473, -412,
1419
1420 22, -6389,
1421
1422 -87, 44,
1423
1424 -39, 180182,
1425
1426 -4186, -2227,
1427
1428 -503, -208,
1429
1430 976, -512, -1016, -4403,
1431
1432 16, 25357,
1433
1434 565, -891,
1435
1436 28, 38836,
1437
1438 -659, -855,
1439
1440 -200, 619,
1441
1442 1, -1780,
1443
1444 24, 17531,
1445
1446 1053, 335,
1447
1448 502, 2745, -309, -1094576,
1449
1450 -1, -263,
1451
1452 3, -394,
1453
1454 0, 4152,
1455
1456 -1, -467,
1457
1458 -339, -132142,
1459
1460 -14, -11676,
1461
1462 29, 63360,
1463
1464 0, 129,
1465
1466 -12, -4802,
1467
1468 -1, -180,
1469
1470 2, 3424,
1471
1472 0, 45,
1473
1474 -1, -155,
1475
1476 -1, -74,
1477
1478 0, -134,
1479
1480 -4, -1588,
1481
1482 -1, -3424,
1483
1484 2, 119,
1485
1486 -57, -27417,
1487
1488 0, 168,
1489
1490 0, 206,
1491
1492 -21, -80823,
1493
1494 8, 2324,
1495
1496 -4, 835,
1497
1498 396, -6, -244, -308040,
1499
1500 0, -294,
1501
1502 -56, -1332,
1503
1504 2, -110,
1505
1506 306, 4060, -58, -1644587,
1507
1508 -155, -210,
1509
1510 67, -1642,
1511
1512 27, 32070,
1513
1514 9, 3592,
1515
1516 -8, -17,
1517
1518 -1, 2,
1519
1520 -9, -4580,
1521
1522 5, 1940,
1523
1524 5, -1217,
1525
1526 62, -862,
1527
1528 -522, -1163,
1529
1530 0, 0,
1531
1532 -1646, 1, 1169, 109, 1395, 23634968,
1533
1534 2, 0,
1535
1536 -512, 1148,
1537
1538 -9, 32,
1539
1540 0, -2749,
1541
1542 969, -4,
1543
1544 2, 351,
1545
1546 1, 105,
1547
1548 152, 97075,
1549
1550 -55, -84524,
1551
1552 -49, 607, 29, -242117,
1553
1554 4, 6518,
1555
1556 5, -77,
1557
1558 1, -39,
1559
1560 9, 1,
1561
1562 5, -231,
1563
1564 2296, -10, -2453, 3, 138, 7689964,
1565
1566 0, -689,
1567
1568 1, 12635,
1569
1570 5444, 372,
1571
1572 9, -1843,
1573
1574 3485, -560,
1575
1576 909, 3, -742, -1, -66, -6945414,
1577
1578 8, -7,
1579
1580 -3, -181,
1581
1582 1, 1282,
1583
1584 -115, -76497,
1585
1586 3, -90,
1587
1588 1, -142,
1589
1590 -5, 10263,
1591
1592 -33, -9479,
1593
1594 0, -657,
1595
1596 19, 15040,
1597
1598 -2, 1084,
1599
1600 -1, -295,
1601
1602 -161, 403,
1603
1604 0, -175,
1605
1606 -1, -392,
1607
1608 -4, -3096,
1609
1610 -9, -2928,
1611
1612 1, 332,
1613
1614 -56, -43733,
1615
1616 1, 572,
1617
1618 2, -660,
1619
1620 4, 7540,
1621
1622 4, -659,
1623
1624 -505, -382941,
1625
1626 -3, 256,
1627
1628 2, 30,
1629
1630 76, 145296,
1631
1632 -4, 4115,
1633
1634 9, 6329,
1635
1636 11, 6962,
1637
1638 0, -338,
1639
1640 1, 153,
1641
1642 2, -147,
1643
1644 -270, 211,
1645
1646 -519, 97, 385, 1912268,
1647
1648 -1, 1495,
1649
1650 -3, 223,
1651
1652 254, 152832,
1653
1654 15, 6709,
1655
1656 -8, -5835,
1657
1658 -12, -29016,
1659
1660 0, -5641,
1661
1662 -2, 4217,
1663
1664 -2, -1176,
1665
1666 -496, 4, 331, 360972,
1667
1668 1, 918,
1669
1670 -2, -136,
1671
1672 -111, -762309,
1673
1674 2, -610,
1675
1676 1, 96,
1677
1678 -11, -5468,
1679
1680 0, 4856,
1681
1682 0, -2,
1683
1684 -16, -668,
1685
1686 20, 1963,
1687
1688 -1, -95,
1689
1690 0, -83,
1691
1692 0, -96,
1693
1694 -2, -902,
1695
1696 0, -1523,
1697
1698 -14, -5691,
1699
1700 -10, -18650,
1701
1702 0, 131,
1703
1704 0, 128,
1705
1706 0, 243,
1707
1708 1, 644,
1709
1710 -76, 138046,
1711
1712 -1, 316,
1713
1714 8, 2703,
1715
1716 15, 11758,
1717
1718 -1, 16,
1719
1720 2, -2867,
1721
1722 5, 6504,
1723
1724 180, 143085,
1725
1726 -1, 224,
1727
1728 86, -96384,
1729
1730 1, 471,
1731
1732 0, -407,
1733
1734 -3, -2886,
1735
1736 -1, -919,
1737
1738 0, 742,
1739
1740 -2, 1145,
1741
1742 59, 19306,
1743
1744 0, 67,
1745
1746 -61, -67569,
1747
1748 -14, 11725,
1749
1750 -1, -395,
1751
1752 1, 772,
1753
1754 -1, -49,
1755
1756 563, 871, 1951, -22,
1757
1758 -1, -711,
1759
1760 0, 240,
1761
1762 -6, -3912,
1763
1764 1, 2812,
1765
1766 0, 106,
1767
1768 0, 378,
1769
1770 4, 19609,
1771
1772 6, 3331,
1773
1774 2, 930,
1775
1776 0, -37,
1777
1778 0, -502,
1779
1780 0, -1257,
1781
1782 21, 10531,
1783
1784 2, -16662,
1785
1786 0, -267,
1787
1788 -1, 22,
1789
1790 6, 1104,
1791
1792 -14, -5544,
1793
1794 1, -250,
1795
1796 -1, 1248,
1797
1798 0, 325,
1799
1800 2, 2163,
1801
1802 2, -1421,
1803
1804 0, 73,
1805
1806 -1, -67,
1807
1808 2, 771,
1809
1810 -1, -2085,
1811
1812 0, 67,
1813
1814 1, 226,
1815
1816 1, 212,
1817
1818 0, 56,
1819
1820 };
1821
1822 static CHAR lonargs[] = {
1823 0, 0,
1824 4, 1, 10, 3, 11,-18, 2, 13, 3, 0,
1825 4, -2, 12, 2, 13, 5, 2, -6, 3, 0,
1826 4, 2, 10, -2, 13, -2, 3, 3, 5, 0,
1827 3, 1, 10, -1, 14, 1, 5, 0,
1828 4, -2, 10, 2, 13, -5, 3, -6, 4, 0,
1829 2, 1, 12, -1, 14, 0,
1830 4, -2, 10, 2, 13, 2, 3, -2, 5, 0,
1831 2, 1, 3, -2, 4, 0,
1832 4, -1, 12, 1, 13, -3, 2, 6, 3, 0,
1833 1, 1, 5, 0,
1834 4, -1, 10, 2, 13,-15, 2, 13, 3, 0,
1835 4, 2, 10, -2, 13, -3, 2, 3, 3, 0,
1836 2, 2, 12, -2, 14, 0,
1837 3, 1, 10, -1, 11, -1, 13, 0,
1838 2, 11, 2,-18, 3, 0,
1839 2, 3, 2, -5, 3, 0,
1840 2, 2, 3, -4, 4, 0,
1841 2, 5, 2, -8, 3, 0,
1842 2, 1, 10, -1, 12, 0,
1843 4, -1, 12, 1, 14, 3, 2, -5, 3, 0,
1844 3, 6, 12, -6, 13, -4, 2, 0,
1845 2, 3, 3, -6, 4, 0,
1846 2, 5, 3, -9, 4, 0,
1847 4, -1, 10, 2, 13,-18, 2, 18, 3, 0,
1848 3, 2, 10, -2, 3, -2, 13, 0,
1849 2, 2, 2, -3, 3, 0,
1850 4, 2, 10, -2, 13, -4, 2, 5, 3, 0,
1851 2, 4, 3, -7, 4, 0,
1852 2, 2, 10, -2, 12, 0,
1853 2, 3, 3, -5, 4, 0,
1854 3, 3, 2, -4, 3, -1, 4, 2,
1855 3, 1, 2, -5, 3, 7, 4, 2,
1856 4, -2, 10, 2, 13, 5, 2, -6, 3, 0,
1857 2, 1, 2, -2, 3, 0,
1858 2, 2, 3, -3, 4, 0,
1859 4, -1, 12, 1, 14, 4, 2, -6, 3, 0,
1860 2, 1, 3, -1, 4, 0,
1861 2, 4, 2, -6, 3, 0,
1862 4, 2, 10, -2, 13, -2, 2, 2, 3, 0,
1863 2, 1, 2, -1, 3, 0,
1864 3, 2, 10, 1, 11, -2, 12, 0,
1865 2, 1, 3, -3, 5, 0,
1866 3, 2, 10, -1, 3, -2, 13, 0,
1867 2, 4, 3, -6, 4, 0,
1868 2, 1, 3, -2, 5, 0,
1869 2, 3, 3, -4, 4, 0,
1870 2, 3, 2, -4, 3, 0,
1871 2, 1, 10, -1, 13, 0,
1872 2, 1, 3, -1, 5, 0,
1873 2, 1, 3, -2, 6, 0,
1874 2, 2, 3, -2, 4, 0,
1875 2, 1, 3, -1, 6, 0,
1876 1, 1, 11, 2,
1877 2, 1, 3, 1, 5, 0,
1878 3, 1, 11, -2, 12, 2, 13, 0,
1879 3, 1, 10, -2, 12, 1, 13, 0,
1880 2, 2, 2, -2, 3, 0,
1881 3, 2, 10, -1, 11, -2, 12, 0,
1882 2, 4, 3, -5, 4, 0,
1883 2, 3, 3, -3, 4, 0,
1884 3, 4, 10, -2, 12, -2, 13, 0,
1885 1, 1, 2, 0,
1886 2, 2, 3, -3, 5, 0,
1887 2, 2, 10, -2, 13, 2,
1888 2, 2, 3, -2, 5, 0,
1889 2, 3, 3, -3, 2, 0,
1890 3, 1, 10, 1, 11, -1, 13, 0,
1891 3, 3, 3, -1, 2, 1, 4, 0,
1892 2, 2, 3, -1, 5, 0,
1893 3, 1, 10, 1, 12, -2, 13, 0,
1894 1, 2, 11, 0,
1895 2, 2, 12, -2, 13, 0,
1896 2, 2, 2, -1, 3, 0,
1897 2, 4, 2, -4, 3, 0,
1898 2, 3, 10, -3, 13, 0,
1899 4, 2, 10, -2, 13, 1, 3, -1, 5, 0,
1900 2, 3, 3, -3, 5, 0,
1901 3, 2, 10, 1, 11, -2, 13, 0,
1902 3, 1, 10, 2, 12, -3, 13, 0,
1903 1, 3, 11, 0,
1904 3, 1, 11, 2, 12, -2, 13, 0,
1905 2, 5, 2, -5, 3, 0,
1906 2, 4, 10, -4, 13, 0,
1907 2, 6, 2, -6, 3, 0,
1908 3, 2, 10, 2, 11, -2, 13, 0,
1909 3, 2, 10, 2, 12, -4, 13, 0,
1910 3, 2, 11, 2, 12, -2, 13, 0,
1911 3, 4, 10, 1, 11, -4, 13, 0,
1912 4, 1, 10, 1, 11, 2, 12, -4, 13, 0,
1913 3, 1, 10, 3, 11, -2, 13, 0,
1914 3, 3, 10, 1, 11, -4, 13, 0,
1915 4, 1, 10, -2, 11, -2, 12, 2, 13, 0,
1916 3, 1, 10, 2, 12, -4, 13, 0,
1917 3, 1, 10, 2, 11, -2, 13, 0,
1918 3, 2, 10, 1, 11, -3, 13, 0,
1919 3, 1, 13, -2, 2, 1, 4, 0,
1920 2, 3, 10, -4, 13, 0,
1921 4, 1, 10, -1, 11, -2, 12, 2, 13, 0,
1922 4, -1, 10, 2, 13, -2, 2, 2, 3, 0,
1923 2, 1, 10, -3, 11, 0,
1924 2, 2, 12, -3, 13, 0,
1925 2, 2, 11, -1, 13, 0,
1926 3, 1, 10, 1, 11, -2, 13, 2,
1927 4, -1, 10, 2, 13, -1, 3, 1, 5, 0,
1928 2, 2, 10, -3, 13, 0,
1929 3, 3, 10, -1, 11, -4, 13, 0,
1930 3, 4, 11, 2, 13,-11, 2, 0,
1931 3, 1, 10, -2, 12, 2, 13, 0,
1932 3, 1, 12, -2, 13, 1, 5, 0,
1933 2, 1, 10, -2, 11, 0,
1934 2, 1, 11, -1, 13, 0,
1935 3, 1, 10, -2, 13, 1, 5, 0,
1936 3, 1, 10, -2, 3, 2, 5, 0,
1937 3, 18, 2,-18, 3, 2, 5, 0,
1938 3, 1, 10, -3, 2, 3, 3, 0,
1939 3, 2, 13, 16, 11,-18, 2, 0,
1940 2, 1, 10, -2, 13, 2,
1941 3, 1, 13, -2, 10, 5, 4, 0,
1942 3, 2, 12, -2, 14, 7, 2, 0,
1943 3, 1, 10, -2, 3, 3, 5, 0,
1944 3, 1, 12, -1, 3, -2, 5, 1,
1945 3, 2, 10, -1, 11, -3, 13, 0,
1946 3, 3, 10, -2, 12, -2, 13, 0,
1947 2, 8, 2, -1, 3, 0,
1948 4, 1, 10, 1, 11, -2, 12, 2, 13, 0,
1949 3, 1, 12, -2, 14, 2, 4, 0,
1950 2, 1, 10, -1, 11, 0,
1951 3, 8, 2, -5, 3, 8, 4, 0,
1952 2, 18, 2,-17, 3, 0,
1953 3, 1, 10, -1, 3, 1, 5, 0,
1954 1, 1, 13, 0,
1955 3, 1, 10, -1, 11, -2, 13, 1,
1956 3, 1, 10, 1, 11, -2, 12, 0,
1957 3, 1, 10, -1, 2, 1, 3, 0,
1958 3, 2, 13, -8, 2, 1, 3, 0,
1959 2, 3, 10, -2, 12, 0,
1960 3, 2, 10, -1, 12, -1, 5, 0,
1961 3, 3, 10, -2, 11, -2, 13, 0,
1962 3, 2, 10, -1, 11, -1, 13, 0,
1963 3, 2, 10, 1, 3, -2, 4, 0,
1964 3, 1, 12, -1, 10, -1, 14, 0,
1965 4, -1, 10, 2, 13, 2, 3, -3, 5, 0,
1966 3, 2, 13, -4, 2, -5, 3, 0,
1967 3, 2, 12, 2, 10, -3, 14, 1,
1968 2, 1, 12, -2, 5, 0,
1969 2, 10, 2, -3, 11, 0,
1970 1, 1, 10, 2,
1971 3, 1, 12, -2, 10, -2, 5, 0,
1972 2, 18, 2,-16, 3, 0,
1973 2, 2, 12, -3, 14, 1,
1974 3, 1, 13,-17, 2, 2, 11, 0,
1975 3, 1, 10, 1, 2, -3, 4, 0,
1976 3, 1, 12, 1, 10, -1, 14, 0,
1977 4, -1, 10, 2, 13, 2, 3, -2, 5, 0,
1978 3, 1, 10, -1, 3, 2, 4, 0,
1979 4, -1, 10, 2, 13, 3, 2, -3, 3, 0,
1980 4, 1, 10, -2, 11, 2, 12, -2, 13, 0,
1981 2, 1, 11, 1, 13, 0,
1982 3, 8, 2, 2, 3, -3, 4, 0,
1983 1, 1, 12, 0,
1984 3, 6, 2, 9, 3,-10, 4, 1,
1985 3, 1, 10, -2, 11, -2, 13, 0,
1986 2, 8, 2, 1, 4, 0,
1987 2, 1, 10, -2, 12, 0,
1988 2, 11, 2, -4, 3, 0,
1989 3, 3, 11, -2, 14, 6, 2, 0,
1990 3, 3, 10, -1, 11, -2, 13, 0,
1991 2, 2, 10, -1, 13, 0,
1992 3, 1, 12, -2, 2, 4, 3, 0,
1993 2, 1, 10, 1, 11, 1,
1994 4, 1, 10, -1, 11, 2, 12, -2, 13, 0,
1995 2, 2, 11, 1, 13, 0,
1996 2, 2, 12, -1, 13, 0,
1997 3, 1, 10, -1, 11, -2, 12, 0,
1998 2, 3, 10, -2, 13, 0,
1999 2, 1, 10, 2, 11, 0,
2000 3, 1, 10, 2, 12, -2, 13, 0,
2001 3, 1, 11, 2, 12, -1, 13, 0,
2002 3, 3, 10, 1, 11, -2, 13, 0,
2003 2, 1, 10, 3, 11, 0,
2004 4, 1, 10, 1, 11, 2, 12, -2, 13, 0,
2005 2, 5, 10, -4, 13, 0,
2006 3, 3, 10, 2, 11, -2, 13, 0,
2007 3, 3, 10, 2, 12, -4, 13, 0,
2008 2, 4, 11, -2, 13, 0,
2009 3, 2, 10, 2, 11, -4, 13, 0,
2010 2, 3, 11, -2, 13, 0,
2011 3, 1, 10, 2, 11, -3, 13, 0,
2012 3, 2, 10, 1, 11, -4, 13, 0,
2013 2, 3, 10, -5, 13, 0,
2014 2, 2, 12, -4, 13, 0,
2015 2, 2, 11, -2, 13, 0,
2016 3, 1, 10, 1, 11, -3, 13, 0,
2017 3, 2, 13, -2, 3, 2, 5, 0,
2018 2, 2, 10, -4, 13, 1,
2019 4, 2, 10, -1, 11, -2, 12, 2, 13, 0,
2020 2, 2, 14, -2, 2, 0,
2021 3, 1, 10, -2, 12, 3, 13, 0,
2022 2, 1, 11, -2, 13, 1,
2023 3, 2, 14, -2, 2, 3, 5, 0,
2024 3, 2, 13, -1, 3, 1, 5, 0,
2025 2, 1, 10, -3, 13, 0,
2026 3, 2, 10, -1, 11, -4, 13, 0,
2027 4, 2, 10, 1, 11, -2, 12, -2, 13, 0,
2028 3, 2, 13, 1, 14, -8, 2, 0,
2029 3, 2, 10, -2, 12, 2, 13, 0,
2030 2, 2, 10, -2, 11, 0,
2031 3, 1, 10, -1, 11, 1, 13, 0,
2032 3, 1, 12, -2, 13, -1, 14, 0,
2033 3, 2, 13, -8, 2, 13, 3, 0,
2034 3, 3, 10, -5, 13, 5, 4, 0,
2035 1, 2, 13, 2,
2036 3, 3, 10, -1, 13, 5, 4, 0,
2037 3, 2, 13, 8, 2,-13, 3, 0,
2038 2, 2, 11, -2, 12, 0,
2039 3, 1, 10, -1, 11, -3, 13, 0,
2040 3, 1, 10, -1, 12, -2, 13, 0,
2041 3, 2, 10, -2, 11, -4, 13, 0,
2042 3, 2, 10, -2, 12, -2, 13, 0,
2043 2, 2, 10, -1, 11, 0,
2044 2, 1, 10, 1, 13, 0,
2045 2, 1, 11, 2, 13, 1,
2046 2, 1, 11, -2, 12, 0,
2047 3, 1, 10, -2, 12, -1, 13, 0,
2048 2, 4, 10, -2, 12, 0,
2049 2, 3, 10, -1, 12, 0,
2050 3, 3, 10, -1, 11, -1, 13, 0,
2051 1, 2, 10, 2,
2052 2, 2, 14, -2, 5, 0,
2053 3, 1, 10, 1, 11, 1, 13, 0,
2054 2, 1, 10, 1, 12, 0,
2055 2, 2, 11, 2, 13, 0,
2056 2, 1, 12, 1, 14, 0,
2057 1, 2, 12, 2,
2058 2, 1, 10, -3, 12, 0,
2059 3, 4, 10, -1, 11, -2, 13, 0,
2060 2, 3, 10, -1, 13, 0,
2061 2, 2, 10, 1, 11, 0,
2062 3, 1, 10, 2, 11, 1, 13, 0,
2063 3, 1, 10, 2, 12, -1, 13, 0,
2064 2, 1, 11, 2, 12, 0,
2065 2, 4, 10, -2, 13, 0,
2066 2, 2, 10, 2, 11, 0,
2067 3, 2, 10, 2, 12, -2, 13, 0,
2068 2, 4, 12, -2, 13, 0,
2069 3, 4, 10, 1, 11, -2, 13, 0,
2070 3, 2, 13, 11, 2,-13, 3, 0,
2071 3, 1, 10, 3, 11, -4, 13, 0,
2072 3, 3, 10, 1, 11, -6, 13, 0,
2073 3, 1, 10, 2, 11, -4, 13, 0,
2074 2, 3, 10, -6, 13, 0,
2075 3, 1, 10, -3, 11, 2, 13, 0,
2076 3, 1, 10, 1, 11, -4, 13, 0,
2077 2, 2, 10, -5, 13, 0,
2078 3, 1, 10, -2, 12, 4, 13, 0,
2079 3, 1, 10, -2, 11, 2, 13, 0,
2080 2, 1, 11, -3, 13, 0,
2081 2, 1, 10, -4, 13, 0,
2082 4, 1, 10, 2, 11, -2, 12, -2, 13, 0,
2083 3, 3, 10, -2, 12, -4, 13, 0,
2084 3, 1, 10, -1, 11, 2, 13, 0,
2085 1, 3, 13, 0,
2086 3, 1, 10, -1, 11, -4, 13, 0,
2087 4, 1, 10, 1, 11, -2, 12, -2, 13, 0,
2088 3, 3, 10, -2, 12, 2, 13, 0,
2089 2, 3, 10, -2, 11, 0,
2090 3, 2, 10, -1, 11, 1, 13, 0,
2091 3, 1, 12, 2, 13, -2, 5, 0,
2092 2, 1, 10, 2, 13, 1,
2093 2, 1, 11, 3, 13, 0,
2094 3, 1, 10, -2, 11, -4, 13, 0,
2095 3, 1, 10, -2, 12, -2, 13, 0,
2096 2, 3, 10, -1, 11, 0,
2097 2, 2, 10, 1, 13, 0,
2098 3, 1, 10, 1, 11, 2, 13, 0,
2099 3, 1, 10, -1, 11, 2, 12, 0,
2100 2, 2, 12, 1, 13, 0,
2101 4, 1, 10, -1, 11, -2, 12, -2, 13, 0,
2102 1, 3, 10, 1,
2103 3, 2, 10, 1, 11, 1, 13, 0,
2104 3, 1, 10, 2, 11, 2, 13, 0,
2105 2, 1, 10, 2, 12, 0,
2106 3, 1, 11, 2, 12, 1, 13, 0,
2107 2, 4, 10, -1, 13, 0,
2108 2, 3, 10, 1, 11, 0,
2109 3, 1, 10, 1, 11, 2, 12, 0,
2110 4, 1, 10, -1, 11, 4, 12, -2, 13, 0,
2111 2, 5, 10, -2, 13, 0,
2112 3, 3, 10, 2, 12, -2, 13, 0,
2113 3, 1, 10, 4, 12, -2, 13, 0,
2114 3, 2, 10, 2, 11, -6, 13, 0,
2115 2, 3, 11, -4, 13, 0,
2116 3, 2, 10, 1, 11, -6, 13, 0,
2117 2, 2, 11, -4, 13, 0,
2118 2, 2, 10, -6, 13, 0,
2119 2, 1, 11, -4, 13, 0,
2120 2, 1, 10, -5, 13, 0,
2121 3, 2, 10, -1, 11, -6, 13, 0,
2122 4, 2, 10, 1, 11, -2, 12, -4, 13, 0,
2123 3, 2, 10, -2, 11, 2, 13, 0,
2124 1, 4, 13, 0,
2125 3, 2, 11, -2, 12, -2, 13, 0,
2126 3, 2, 10, -2, 12, -4, 13, 0,
2127 3, 2, 10, -1, 11, 2, 13, 0,
2128 2, 1, 10, 3, 13, 0,
2129 2, 1, 11, 4, 13, 0,
2130 3, 1, 11, -2, 12, -2, 13, 0,
2131 2, 2, 10, 2, 13, 0,
2132 3, 1, 10, 1, 11, 3, 13, 0,
2133 2, 2, 12, 2, 13, 0,
2134 2, 4, 10, -1, 11, 0,
2135 2, 3, 10, 1, 13, 0,
2136 3, 2, 10, 1, 11, 2, 13, 0,
2137 3, 2, 10, -1, 11, 2, 12, 0,
2138 3, 1, 10, 2, 12, 1, 13, 0,
2139 3, 1, 11, 2, 12, 2, 13, 0,
2140 1, 4, 10, 0,
2141 3, 3, 10, 1, 11, 1, 13, 0,
2142 2, 2, 10, 2, 12, 0,
2143 1, 4, 12, 0,
2144 2, 4, 10, 1, 11, 0,
2145 3, 2, 10, 1, 11, 2, 12, 0,
2146 2, 6, 10, -2, 13, 0,
2147 3, 5, 12, -1, 14, 2, 4, 1,
2148 3, 1, 10, 1, 11, -6, 13, 0,
2149 3, 1, 10, -2, 11, 4, 13, 0,
2150 2, 1, 10, -6, 13, 0,
2151 3, 1, 10, -1, 11, 4, 13, 0,
2152 3, 1, 10, -1, 11, -6, 13, 0,
2153 4, 1, 10, 1, 11, -2, 12, -4, 13, 0,
2154 2, 1, 10, 4, 13, 0,
2155 3, 1, 10, -2, 12, -4, 13, 0,
2156 3, 3, 10, -1, 11, 2, 13, 0,
2157 2, 2, 10, 3, 13, 0,
2158 3, 1, 10, 1, 11, 4, 13, 0,
2159 4, 1, 10, -1, 11, 2, 12, 2, 13, 0,
2160 2, 3, 10, 2, 13, 0,
2161 3, 1, 10, 2, 12, 2, 13, 0,
2162 3, 3, 10, 1, 11, 2, 13, 0,
2163 3, 1, 10, -1, 11, 4, 12, 0,
2164 1, 5, 10, 0,
2165 2, 3, 10, 2, 12, 0,
2166 2, 1, 11, -6, 13, 0,
2167 1, 6, 13, 0,
2168 3, 2, 10, -1, 11, 4, 13, 0,
2169 2, 2, 10, 4, 13, 0,
2170 2, 2, 12, 4, 13, 0,
2171 3, 4, 10, -1, 11, 2, 13, 0,
2172 3, 2, 10, 1, 11, 4, 13, 0,
2173 2, 4, 10, 2, 13, 0,
2174 3, 2, 10, 2, 12, 2, 13, 0,
2175 1, 6, 10, 0,
2176 2, 1, 10, 6, 13, 0,
2177 2, 3, 10, 4, 13, 0,
2178 2, 5, 10, 2, 13, 0,
2179 -1
2180 };
2181
2182 /* Total terms = 356, small = 356 */
2183 static struct plantbl liblon = {
2184 /* { 0, 18, 18, 10, 3, 2, 0, 0, 0, 6, 16, 6, 6, 3,}, */
2185 /* Use max of liblon, liblat. */
2186 { 0, 18, 18, 20, 4, 2, 0, 0, 0, 9, 16, 7, 9, 9,},
2187 2,
2188 lonargs,
2189 lontabl,
2190 lontabb,
2191 lontabr,
2192 3.850000e+05,
2193 36525.0,
2194 1.0e-4,
2195 };
2196
2197
2198 /* given a Julian date, return the lunar libration in lat and long, in rads.
2199 */
2200 void
llibration(double JD,double * llatp,double * llonp)2201 llibration (double JD, double *llatp, double *llonp)
2202 {
2203 double lg, lt; /* arc seconds */
2204
2205 lg = gplan (JD, &liblon);
2206 lt = gplan (JD, &liblat);
2207
2208 *llonp = degrad (lg/3600.0);
2209 *llatp = degrad (lt/3600.0);
2210 }
2211
2212