source: trunk/FACT++/pal/palAoppa.c@ 18403

Last change on this file since 18403 was 18347, checked in by tbretz, 9 years ago
File size: 86.7 KB
Line 
1/*
2*+
3* Name:
4* palAoppa
5
6* Purpose:
7* Precompute apparent to observed place parameters
8
9* Language:
10* Starlink ANSI C
11
12* Type of Module:
13* Library routine
14
15* Invocation:
16* void palAoppa ( double date, double dut, double elongm, double phim,
17* double hm, double xp, double yp, double tdk, double pmb,
18* double rh, double wl, double tlr, double aoprms[14] );
19
20* Arguments:
21* date = double (Given)
22* UTC date/time (modified Julian Date, JD-2400000.5)
23* dut = double (Given)
24* delta UT: UT1-UTC (UTC seconds)
25* elongm = double (Given)
26* mean longitude of the observer (radians, east +ve)
27* phim = double (Given)
28* mean geodetic latitude of the observer (radians)
29* hm = double (Given)
30* observer's height above sea level (metres)
31* xp = double (Given)
32* polar motion x-coordinate (radians)
33* yp = double (Given)
34* polar motion y-coordinate (radians)
35* tdk = double (Given)
36* local ambient temperature (K; std=273.15)
37* pmb = double (Given)
38* local atmospheric pressure (mb; std=1013.25)
39* rh = double (Given)
40* local relative humidity (in the range 0.0-1.0)
41* wl = double (Given)
42* effective wavelength (micron, e.g. 0.55)
43* tlr = double (Given)
44* tropospheric lapse rate (K/metre, e.g. 0.0065)
45* aoprms = double [14] (Returned)
46* Star-independent apparent-to-observed parameters
47*
48* (0) geodetic latitude (radians)
49* (1,2) sine and cosine of geodetic latitude
50* (3) magnitude of diurnal aberration vector
51* (4) height (hm)
52* (5) ambient temperature (tdk)
53* (6) pressure (pmb)
54* (7) relative humidity (rh)
55* (8) wavelength (wl)
56* (9) lapse rate (tlr)
57* (10,11) refraction constants A and B (radians)
58* (12) longitude + eqn of equinoxes + sidereal DUT (radians)
59* (13) local apparent sidereal time (radians)
60
61* Description:
62* Precompute apparent to observed place parameters required by palAopqk
63* and palOapqk.
64
65* Authors:
66* TIMJ: Tim Jenness (JAC, Hawaii)
67* {enter_new_authors_here}
68
69* Notes:
70* - It is advisable to take great care with units, as even
71* unlikely values of the input parameters are accepted and
72* processed in accordance with the models used.
73*
74* - The DATE argument is UTC expressed as an MJD. This is,
75* strictly speaking, improper, because of leap seconds. However,
76* as long as the delta UT and the UTC are consistent there
77* are no difficulties, except during a leap second. In this
78* case, the start of the 61st second of the final minute should
79* begin a new MJD day and the old pre-leap delta UT should
80* continue to be used. As the 61st second completes, the MJD
81* should revert to the start of the day as, simultaneously,
82* the delta UTC changes by one second to its post-leap new value.
83*
84* - The delta UT (UT1-UTC) is tabulated in IERS circulars and
85* elsewhere. It increases by exactly one second at the end of
86* each UTC leap second, introduced in order to keep delta UT
87* within +/- 0.9 seconds.
88*
89* - IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
90* The longitude required by the present routine is east-positive,
91* in accordance with geographical convention (and right-handed).
92* In particular, note that the longitudes returned by the
93* palObs routine are west-positive, following astronomical
94* usage, and must be reversed in sign before use in the present
95* routine.
96*
97* - The polar coordinates XP,YP can be obtained from IERS
98* circulars and equivalent publications. The maximum amplitude
99* is about 0.3 arcseconds. If XP,YP values are unavailable,
100* use XP=YP=0.0. See page B60 of the 1988 Astronomical Almanac
101* for a definition of the two angles.
102*
103* - The height above sea level of the observing station, HM,
104* can be obtained from the Astronomical Almanac (Section J
105* in the 1988 edition), or via the routine palObs. If P,
106* the pressure in millibars, is available, an adequate
107* estimate of HM can be obtained from the expression
108*
109* HM ~ -29.3*TSL*log(P/1013.25).
110*
111* where TSL is the approximate sea-level air temperature in K
112* (see Astrophysical Quantities, C.W.Allen, 3rd edition,
113* section 52). Similarly, if the pressure P is not known,
114* it can be estimated from the height of the observing
115* station, HM, as follows:
116*
117* P ~ 1013.25*exp(-HM/(29.3*TSL)).
118*
119* Note, however, that the refraction is nearly proportional to the
120* pressure and that an accurate P value is important for precise
121* work.
122*
123* - Repeated, computationally-expensive, calls to palAoppa for
124* times that are very close together can be avoided by calling
125* palAoppa just once and then using palAoppat for the subsequent
126* times. Fresh calls to palAoppa will be needed only when
127* changes in the precession have grown to unacceptable levels or
128* when anything affecting the refraction has changed.
129
130* History:
131* 2012-08-24 (TIMJ):
132* Initial version, ported directly from Fortran SLA.
133* Adapted with permission from the Fortran SLALIB library.
134* {enter_further_changes_here}
135
136* Copyright:
137* Copyright (C) 2012 Science and Technology Facilities Council.
138* All Rights Reserved.
139
140* Licence:
141* This program is free software; you can redistribute it and/or
142* modify it under the terms of the GNU General Public License as
143* published by the Free Software Foundation; either version 3 of
144* the License, or (at your option) any later version.
145*
146* This program is distributed in the hope that it will be
147* useful, but WITHOUT ANY WARRANTY; without even the implied
148* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
149* PURPOSE. See the GNU General Public License for more details.
150*
151* You should have received a copy of the GNU General Public License
152* along with this program; if not, write to the Free Software
153* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
154* MA 02110-1301, USA.
155
156* Bugs:
157* {note_any_bugs_here}
158*-
159*/
160
161#include "math.h"
162
163#include "pal.h"
164#include "palmac.h"
165
166/* These are local SLA implementations to aid in testing. Switch
167 * to native PAL implementations when tests are complete. */
168static void pal__Geoc( double p, double h, double *r, double * z );
169static void pal__Nutc ( double date, double * dpsi, double *deps, double * eps0 );
170static double pal__Eqeqx( double date );
171
172void palAoppa ( double date, double dut, double elongm, double phim,
173 double hm, double xp, double yp, double tdk, double pmb,
174 double rh, double wl, double tlr, double aoprms[14] ) {
175
176 /* Constants */
177 const double C = 173.14463331; /* Speed of light (AU per day) */
178 const double SOLSID = 1.0027379093; /* Ratio between solar and sidereal time */
179
180 /* Local variables */
181 double cphim,xt,yt,zt,xc,yc,zc,elong,phi,uau,vau;
182
183 /* Observer's location corrected for polar motion */
184 cphim = cos(phim);
185 xt = cos(elongm)*cphim;
186 yt = sin(elongm)*cphim;
187 zt = sin(phim);
188 xc = xt-xp*zt;
189 yc = yt+yp*zt;
190 zc = xp*xt-yp*yt+zt;
191 if (xc == 0.0 && yc == 0.0) {
192 elong = 0.0;
193 } else {
194 elong = atan2(yc,xc);
195 }
196 phi = atan2(zc,sqrt(xc*xc+yc*yc));
197 aoprms[0] = phi;
198 aoprms[1] = sin(phi);
199 aoprms[2] = cos(phi);
200
201 /* magnitude of the diurnal aberration vector */
202 pal__Geoc(phi,hm,&uau,&vau);
203 aoprms[3] = PAL__D2PI*uau*SOLSID/C;
204
205 /* copy the refraction parameters and compute the a & b constants */
206 aoprms[4] = hm;
207 aoprms[5] = tdk;
208 aoprms[6] = pmb;
209 aoprms[7] = rh;
210 aoprms[8] = wl;
211 aoprms[9] = tlr;
212 palRefco(hm,tdk,pmb,rh,wl,phi,tlr,1e-10,
213 &aoprms[10],&aoprms[11]);
214
215 /* longitude + equation of the equinoxes + sidereal equivalent of DUT
216 * (ignoring change in equation of the equinoxes between UTC and TDB) */
217 aoprms[12] = elong+pal__Eqeqx(date)+dut*SOLSID*PAL__DS2R;
218
219 /* sidereal time */
220 palAoppat(date,aoprms);
221
222}
223
224/* Private reimplementation of slaEqeqx for testing the algorithm */
225
226#include <math.h>
227
228static void pal__Geoc( double p, double h, double *r, double * z ) {
229 /* earth equatorial radius (metres) */
230 const double A0=6378140.0;
231
232 /* reference spheroid flattening factor and useful function */
233 const double f = 1.0/298.257;
234 double b;
235
236 /* astronomical unit in metres */
237 const double AU = 1.49597870e11;
238
239 double sp,cp,c,s;
240
241 b = pow( 1.0-f, 2.0 );
242
243 /* geodetic to geocentric conversion */
244 sp = sin(p);
245 cp = cos(p);
246 c = 1.0/sqrt(cp*cp+b*sp*sp);
247 s = b*c;
248 *r = (A0*c+h)*cp/AU;
249 *z = (A0*s+h)*sp/AU;
250
251}
252
253static double pal__Eqeqx( double date ) {
254
255 const double T2AS=1296000.0;
256
257 double pal_eqeqx;
258 double t, om, dpsi, deps, eps0;
259
260 /* interval between basic epoch j2000.0 and current epoch (jc) */
261 t=(date-51544.5)/36525.0;
262
263 /* longitude of the mean ascending node of the lunar orbit on the
264 * ecliptic, measured from the mean equinox of date */
265 om=PAL__DAS2R*(450160.280+(-5.0*T2AS-482890.539
266 +(7.455+0.008*t)*t)*t);
267
268 /* nutation */
269 pal__Nutc(date,&dpsi,&deps,&eps0);
270
271 /* equation of the equinoxes */
272 pal_eqeqx=dpsi*cos(eps0)+PAL__DAS2R*(0.00264*sin(om)+
273 0.000063*sin(om+om));
274
275 return pal_eqeqx;
276}
277
278#include "palmac.h"
279
280static void pal__Nutc ( double date, double * dpsi, double *deps, double * eps0 ) {
281
282 const double DJC = 36525.0;
283 const double DJM0 = 51544.5;
284 const double TURNAS = 1296000.0;
285
286 #define NTERMS 194
287
288 int j;
289 double t,el,elp,f,d,om,ve,ma,ju,sa,theta,c,s,dp,de;
290
291 int na[ 194 ][9] = {
292 { 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 },
293 { 0 , 0 , 2 , -2 , 2 , 0 , 0 , 0 , 0 },
294 { 0 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
295 { 0 , 0 , 0 , 0 , -2 , 0 , 0 , 0 , 0 },
296 { 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
297 { 0 , 1 , 2 , -2 , 2 , 0 , 0 , 0 , 0 },
298 { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
299 { 0 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 },
300 { 1 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
301 { 0 , -1 , 2 , -2 , 2 , 0 , 0 , 0 , 0 },
302 { 0 , 0 , 2 , -2 , 1 , 0 , 0 , 0 , 0 },
303 { -1 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
304 { -1 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 },
305 { 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
306 { 1 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 },
307 { -1 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 },
308 { 1 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 },
309 { -2 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 },
310 { 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 },
311 { 0 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 },
312 { 2 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 0 },
313 { 2 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
314 { 1 , 0 , 2 , -2 , 2 , 0 , 0 , 0 , 0 },
315 { -1 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 },
316 { 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
317 { 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 },
318 { 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
319 { -1 , 0 , 0 , 2 , 1 , 0 , 0 , 0 , 0 },
320 { 0 , 2 , 2 , -2 , 2 , 0 , 0 , 0 , 0 },
321 { 0 , 0 , 2 , -2 , 0 , 0 , 0 , 0 , 0 },
322 { -1 , 0 , 0 , 2 , -1 , 0 , 0 , 0 , 0 },
323 { 0 , 1 , 0 , 0 , -1 , 0 , 0 , 0 , 0 },
324 { 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
325 { -1 , 0 , 2 , 2 , 1 , 0 , 0 , 0 , 0 },
326 { 1 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 },
327 { 0 , 1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
328 { -2 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 },
329 { 0 , 0 , 2 , 2 , 1 , 0 , 0 , 0 , 0 },
330 { 0 , -1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
331 { 0 , 0 , 0 , 2 , 1 , 0 , 0 , 0 , 0 },
332 { 1 , 0 , 2 , -2 , 1 , 0 , 0 , 0 , 0 },
333 { 2 , 0 , 0 , -2 , -1 , 0 , 0 , 0 , 0 },
334 { 2 , 0 , 2 , -2 , 2 , 0 , 0 , 0 , 0 },
335 { 2 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 },
336 { 0 , 0 , 0 , 2 , -1 , 0 , 0 , 0 , 0 },
337 { 0 , -1 , 2 , -2 , 1 , 0 , 0 , 0 , 0 },
338 { -1 , -1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 },
339 { 2 , 0 , 0 , -2 , 1 , 0 , 0 , 0 , 0 },
340 { 1 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 },
341 { 0 , 1 , 2 , -2 , 1 , 0 , 0 , 0 , 0 },
342 { 1 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
343 { -2 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
344 { 0 , -1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 },
345 { 3 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
346 { 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
347 { 1 , -1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
348 { 1 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 },
349 { -1 , -1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 },
350 { -1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 },
351 { 2 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 },
352 { 0 , -1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 },
353 { 1 , 1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
354 { 2 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
355 { 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
356 { 1 , 0 , -2 , 2 , -1 , 0 , 0 , 0 , 0 },
357 { 1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 },
358 { -1 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
359 { 1 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 },
360 { -1 , 0 , 1 , 0 , 1 , 0 , 0 , 0 , 0 },
361 { 0 , 0 , 2 , 1 , 2 , 0 , 0 , 0 , 0 },
362 { -1 , 1 , 0 , 1 , 1 , 0 , 0 , 0 , 0 },
363 { -1 , 0 , 2 , 4 , 2 , 0 , 0 , 0 , 0 },
364 { 0 , -2 , 2 , -2 , 1 , 0 , 0 , 0 , 0 },
365 { 1 , 0 , 2 , 2 , 1 , 0 , 0 , 0 , 0 },
366 { 1 , 0 , 0 , 0 , -2 , 0 , 0 , 0 , 0 },
367 { -2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 },
368 { 1 , 1 , 2 , -2 , 2 , 0 , 0 , 0 , 0 },
369 { -2 , 0 , 2 , 4 , 2 , 0 , 0 , 0 , 0 },
370 { -1 , 0 , 4 , 0 , 2 , 0 , 0 , 0 , 0 },
371 { 2 , 0 , 2 , -2 , 1 , 0 , 0 , 0 , 0 },
372 { 1 , 0 , 0 , -1 , -1 , 0 , 0 , 0 , 0 },
373 { 2 , 0 , 2 , 2 , 2 , 0 , 0 , 0 , 0 },
374 { 1 , 0 , 0 , 2 , 1 , 0 , 0 , 0 , 0 },
375 { 3 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
376 { 0 , 0 , 2 , -2 , -1 , 0 , 0 , 0 , 0 },
377 { 3 , 0 , 2 , -2 , 2 , 0 , 0 , 0 , 0 },
378 { 0 , 0 , 4 , -2 , 2 , 0 , 0 , 0 , 0 },
379 { -1 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 },
380 { 0 , 1 , 2 , 0 , 1 , 0 , 0 , 0 , 0 },
381 { 0 , 0 , 2 , -2 , 3 , 0 , 0 , 0 , 0 },
382 { -2 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 },
383 { -1 , -1 , 0 , 2 , 1 , 0 , 0 , 0 , 0 },
384 { -2 , 0 , 2 , 0 , -1 , 0 , 0 , 0 , 0 },
385 { 0 , 0 , 2 , 0 , -1 , 0 , 0 , 0 , 0 },
386 { 0 , -1 , 2 , 0 , 1 , 0 , 0 , 0 , 0 },
387 { 0 , 1 , 0 , 0 , 2 , 0 , 0 , 0 , 0 },
388 { 0 , 0 , 2 , -1 , 2 , 0 , 0 , 0 , 0 },
389 { 2 , 1 , 0 , -2 , 0 , 0 , 0 , 0 , 0 },
390 { 0 , 0 , 2 , 4 , 2 , 0 , 0 , 0 , 0 },
391 { -1 , -1 , 0 , 2 , -1 , 0 , 0 , 0 , 0 },
392 { -1 , 1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 },
393 { 1 , -1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
394 { 0 , -1 , 2 , -2 , 0 , 0 , 0 , 0 , 0 },
395 { 0 , 1 , 0 , 0 , -2 , 0 , 0 , 0 , 0 },
396 { 1 , -1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 },
397 { 1 , 0 , 0 , 2 , -1 , 0 , 0 , 0 , 0 },
398 { -1 , 1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 },
399 { 3 , 0 , 2 , 0 , 1 , 0 , 0 , 0 , 0 },
400 { 0 , 1 , 2 , 2 , 2 , 0 , 0 , 0 , 0 },
401 { 1 , 0 , 2 , -2 , 0 , 0 , 0 , 0 , 0 },
402 { -1 , 0 , -2 , 4 , -1 , 0 , 0 , 0 , 0 },
403 { -1 , -1 , 2 , 2 , 1 , 0 , 0 , 0 , 0 },
404 { 0 , -1 , 2 , 2 , 1 , 0 , 0 , 0 , 0 },
405 { 2 , -1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
406 { 0 , 0 , 0 , 2 , 2 , 0 , 0 , 0 , 0 },
407 { 1 , -1 , 2 , 0 , 1 , 0 , 0 , 0 , 0 },
408 { -1 , 1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
409 { 0 , 1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 },
410 { 0 , 1 , 2 , -2 , 0 , 0 , 0 , 0 , 0 },
411 { 0 , 3 , 2 , -2 , 2 , 0 , 0 , 0 , 0 },
412 { 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 },
413 { -1 , 0 , 2 , 2 , 0 , 0 , 0 , 0 , 0 },
414 { 2 , 1 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
415 { 1 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 },
416 { 2 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 },
417 { 1 , 1 , 2 , 0 , 1 , 0 , 0 , 0 , 0 },
418 { -1 , 0 , 0 , 2 , 2 , 0 , 0 , 0 , 0 },
419 { 1 , 0 , -2 , 2 , 0 , 0 , 0 , 0 , 0 },
420 { 0 , -1 , 0 , 2 , -1 , 0 , 0 , 0 , 0 },
421 { -1 , 0 , 1 , 0 , 2 , 0 , 0 , 0 , 0 },
422 { 0 , 1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
423 { 1 , 0 , -2 , 2 , -2 , 0 , 0 , 0 , 0 },
424 { 0 , 0 , 0 , 1 , -1 , 0 , 0 , 0 , 0 },
425 { 1 , -1 , 0 , 0 , -1 , 0 , 0 , 0 , 0 },
426 { 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 },
427 { 1 , -1 , 0 , 2 , 0 , 0 , 0 , 0 , 0 },
428 { 1 , 0 , 2 , 1 , 2 , 0 , 0 , 0 , 0 },
429 { 1 , 0 , 2 , -1 , 2 , 0 , 0 , 0 , 0 },
430 { -1 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 0 },
431 { 0 , 0 , 2 , 1 , 1 , 0 , 0 , 0 , 0 },
432 { -1 , 0 , 2 , 0 , -1 , 0 , 0 , 0 , 0 },
433 { -1 , 0 , 2 , 4 , 1 , 0 , 0 , 0 , 0 },
434 { 0 , 0 , 2 , 2 , 0 , 0 , 0 , 0 , 0 },
435 { 1 , 1 , 2 , -2 , 1 , 0 , 0 , 0 , 0 },
436 { 0 , 0 , 1 , 0 , 1 , 0 , 0 , 0 , 0 },
437 { -1 , 0 , 2 , -1 , 1 , 0 , 0 , 0 , 0 },
438 { -2 , 0 , 2 , 2 , 1 , 0 , 0 , 0 , 0 },
439 { 2 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
440 { 4 , 0 , 2 , 0 , 2 , 0 , 0 , 0 , 0 },
441 { 2 , 1 , 2 , -2 , 2 , 0 , 0 , 0 , 0 },
442 { 0 , 1 , 2 , 1 , 2 , 0 , 0 , 0 , 0 },
443 { 1 , 0 , 4 , -2 , 2 , 0 , 0 , 0 , 0 },
444 { 1 , 1 , 0 , 0 , -1 , 0 , 0 , 0 , 0 },
445 { -2 , 0 , 2 , 4 , 1 , 0 , 0 , 0 , 0 },
446 { 2 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 },
447 { -1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 },
448 { 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 },
449 { 0 , 1 , 0 , 2 , 1 , 0 , 0 , 0 , 0 },
450 { -1 , 0 , 4 , 0 , 1 , 0 , 0 , 0 , 0 },
451 { -1 , 0 , 0 , 4 , 1 , 0 , 0 , 0 , 0 },
452 { 2 , 0 , 2 , 2 , 1 , 0 , 0 , 0 , 0 },
453 { 2 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
454 { 0 , 0 , 5 , -5 , 5 , -3 , 0 , 0 , 0 },
455 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 0 },
456 { 0 , 0 , 1 , -1 , 1 , 0 , 0 , -1 , 0 },
457 { 0 , 0 , -1 , 1 , -1 , 1 , 0 , 0 , 0 },
458 { 0 , 0 , -1 , 1 , 0 , 0 , 2 , 0 , 0 },
459 { 0 , 0 , 3 , -3 , 3 , 0 , 0 , -1 , 0 },
460 { 0 , 0 , -8 , 8 , -7 , 5 , 0 , 0 , 0 },
461 { 0 , 0 , -1 , 1 , -1 , 0 , 2 , 0 , 0 },
462 { 0 , 0 , -2 , 2 , -2 , 2 , 0 , 0 , 0 },
463 { 0 , 0 , -6 , 6 , -6 , 4 , 0 , 0 , 0 },
464 { 0 , 0 , -2 , 2 , -2 , 0 , 8 , -3 , 0 },
465 { 0 , 0 , 6 , -6 , 6 , 0 , -8 , 3 , 0 },
466 { 0 , 0 , 4 , -4 , 4 , -2 , 0 , 0 , 0 },
467 { 0 , 0 , -3 , 3 , -3 , 2 , 0 , 0 , 0 },
468 { 0 , 0 , 4 , -4 , 3 , 0 , -8 , 3 , 0 },
469 { 0 , 0 , -4 , 4 , -5 , 0 , 8 , -3 , 0 },
470 { 0 , 0 , 0 , 0 , 0 , 2 , 0 , 0 , 0 },
471 { 0 , 0 , -4 , 4 , -4 , 3 , 0 , 0 , 0 },
472 { 0 , 1 , -1 , 1 , -1 , 0 , 0 , 1 , 0 },
473 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 },
474 { 0 , 0 , 1 , -1 , 1 , 1 , 0 , 0 , 0 },
475 { 0 , 0 , 2 , -2 , 2 , 0 , -2 , 0 , 0 },
476 { 0 , -1 , -7 , 7 , -7 , 5 , 0 , 0 , 0 },
477 { -2 , 0 , 2 , 0 , 2 , 0 , 0 , -2 , 0 },
478 { -2 , 0 , 2 , 0 , 1 , 0 , 0 , -3 , 0 },
479 { 0 , 0 , 2 , -2 , 2 , 0 , 0 , -2 , 0 },
480 { 0 , 0 , 1 , -1 , 1 , 0 , 0 , 1 , 0 },
481 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 },
482 { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 },
483 { 2 , 0 , -2 , 0 , -2 , 0 , 0 , 3 , 0 },
484 { 0 , 0 , 1 , -1 , 1 , 0 , 0 , -2 , 0 },
485 { 0 , 0 , -7 , 7 , -7 , 5 , 0 , 0 , 0 }
486 };
487 double psi[ 194 ][4] = {
488 { 3341.5000000000000 , 17206241.800000001 , 3.1000000000000001 , 17409.500000000000 },
489 { -1716.8000000000000 , -1317185.3000000000 , 1.3999999999999999 , -156.80000000000001 },
490 { 285.69999999999999 , -227667.00000000000 , 0.29999999999999999 , -23.500000000000000 },
491 { -68.599999999999994 , -207448.00000000000 , 0.0000000000000000 , -21.399999999999999 },
492 { 950.29999999999995 , 147607.89999999999 , -2.2999999999999998 , -355.00000000000000 },
493 { -66.700000000000003 , -51689.099999999999 , 0.20000000000000001 , 122.59999999999999 },
494 { -108.59999999999999 , 71117.600000000006 , 0.0000000000000000 , 7.0000000000000000 },
495 { 35.600000000000001 , -38740.199999999997 , 0.10000000000000001 , -36.200000000000003 },
496 { 85.400000000000006 , -30127.599999999999 , 0.0000000000000000 , -3.1000000000000001 },
497 { 9.0000000000000000 , 21583.000000000000 , 0.10000000000000001 , -50.299999999999997 },
498 { 22.100000000000001 , 12822.799999999999 , 0.0000000000000000 , 13.300000000000001 },
499 { 3.3999999999999999 , 12350.799999999999 , 0.0000000000000000 , 1.3000000000000000 },
500 { -21.100000000000001 , 15699.400000000000 , 0.0000000000000000 , 1.6000000000000001 },
501 { 4.2000000000000002 , 6313.8000000000002 , 0.0000000000000000 , 6.2000000000000002 },
502 { -22.800000000000001 , 5796.8999999999996 , 0.0000000000000000 , 6.0999999999999996 },
503 { 15.699999999999999 , -5961.1000000000004 , 0.0000000000000000 , -0.59999999999999998 },
504 { 13.100000000000000 , -5159.1000000000004 , 0.0000000000000000 , -4.5999999999999996 },
505 { 1.8000000000000000 , 4592.6999999999998 , 0.0000000000000000 , 4.5000000000000000 },
506 { -17.500000000000000 , 6336.0000000000000 , 0.0000000000000000 , 0.69999999999999996 },
507 { 16.300000000000001 , -3851.0999999999999 , 0.0000000000000000 , -0.40000000000000002 },
508 { -2.7999999999999998 , 4771.6999999999998 , 0.0000000000000000 , 0.50000000000000000 },
509 { 13.800000000000001 , -3099.3000000000002 , 0.0000000000000000 , -0.29999999999999999 },
510 { 0.20000000000000001 , 2860.3000000000002 , 0.0000000000000000 , 0.29999999999999999 },
511 { 1.3999999999999999 , 2045.3000000000000 , 0.0000000000000000 , 2.0000000000000000 },
512 { -8.5999999999999996 , 2922.5999999999999 , 0.0000000000000000 , 0.29999999999999999 },
513 { -7.7000000000000002 , 2587.9000000000001 , 0.0000000000000000 , 0.20000000000000001 },
514 { 8.8000000000000007 , -1408.0999999999999 , 0.0000000000000000 , 3.7000000000000002 },
515 { 1.3999999999999999 , 1517.5000000000000 , 0.0000000000000000 , 1.5000000000000000 },
516 { -1.8999999999999999 , -1579.7000000000000 , 0.0000000000000000 , 7.7000000000000002 },
517 { 1.3000000000000000 , -2178.5999999999999 , 0.0000000000000000 , -0.20000000000000001 },
518 { -4.7999999999999998 , 1286.8000000000000 , 0.0000000000000000 , 1.3000000000000000 },
519 { 6.2999999999999998 , 1267.2000000000000 , 0.0000000000000000 , -4.0000000000000000 },
520 { -1.0000000000000000 , 1669.3000000000000 , 0.0000000000000000 , -8.3000000000000007 },
521 { 2.3999999999999999 , -1020.0000000000000 , 0.0000000000000000 , -0.90000000000000002 },
522 { 4.5000000000000000 , -766.89999999999998 , 0.0000000000000000 , 0.0000000000000000 },
523 { -1.1000000000000001 , 756.50000000000000 , 0.0000000000000000 , -1.7000000000000000 },
524 { -1.3999999999999999 , -1097.3000000000000 , 0.0000000000000000 , -0.50000000000000000 },
525 { 2.6000000000000001 , -663.00000000000000 , 0.0000000000000000 , -0.59999999999999998 },
526 { 0.80000000000000004 , -714.10000000000002 , 0.0000000000000000 , 1.6000000000000001 },
527 { 0.40000000000000002 , -629.89999999999998 , 0.0000000000000000 , -0.59999999999999998 },
528 { 0.29999999999999999 , 580.39999999999998 , 0.0000000000000000 , 0.59999999999999998 },
529 { -1.6000000000000001 , 577.29999999999995 , 0.0000000000000000 , 0.50000000000000000 },
530 { -0.90000000000000002 , 644.39999999999998 , 0.0000000000000000 , 0.0000000000000000 },
531 { 2.2000000000000002 , -534.00000000000000 , 0.0000000000000000 , -0.50000000000000000 },
532 { -2.5000000000000000 , 493.30000000000001 , 0.0000000000000000 , 0.50000000000000000 },
533 { -0.10000000000000001 , -477.30000000000001 , 0.0000000000000000 , -2.3999999999999999 },
534 { -0.90000000000000002 , 735.00000000000000 , 0.0000000000000000 , -1.7000000000000000 },
535 { 0.69999999999999996 , 406.19999999999999 , 0.0000000000000000 , 0.40000000000000002 },
536 { -2.7999999999999998 , 656.89999999999998 , 0.0000000000000000 , 0.0000000000000000 },
537 { 0.59999999999999998 , 358.00000000000000 , 0.0000000000000000 , 2.0000000000000000 },
538 { -0.69999999999999996 , 472.50000000000000 , 0.0000000000000000 , -1.1000000000000001 },
539 { -0.10000000000000001 , -300.50000000000000 , 0.0000000000000000 , 0.0000000000000000 },
540 { -1.2000000000000000 , 435.10000000000002 , 0.0000000000000000 , -1.0000000000000000 },
541 { 1.8000000000000000 , -289.39999999999998 , 0.0000000000000000 , 0.0000000000000000 },
542 { 0.59999999999999998 , -422.60000000000002 , 0.0000000000000000 , 0.0000000000000000 },
543 { 0.80000000000000004 , -287.60000000000002 , 0.0000000000000000 , 0.59999999999999998 },
544 { -38.600000000000001 , -392.30000000000001 , 0.0000000000000000 , 0.0000000000000000 },
545 { 0.69999999999999996 , -281.80000000000001 , 0.0000000000000000 , 0.59999999999999998 },
546 { 0.59999999999999998 , -405.69999999999999 , 0.0000000000000000 , 0.0000000000000000 },
547 { -1.2000000000000000 , 229.00000000000000 , 0.0000000000000000 , 0.20000000000000001 },
548 { 1.1000000000000001 , -264.30000000000001 , 0.0000000000000000 , 0.50000000000000000 },
549 { -0.69999999999999996 , 247.90000000000001 , 0.0000000000000000 , -0.50000000000000000 },
550 { -0.20000000000000001 , 218.00000000000000 , 0.0000000000000000 , 0.20000000000000001 },
551 { 0.59999999999999998 , -339.00000000000000 , 0.0000000000000000 , 0.80000000000000004 },
552 { -0.69999999999999996 , 198.69999999999999 , 0.0000000000000000 , 0.20000000000000001 },
553 { -1.5000000000000000 , 334.00000000000000 , 0.0000000000000000 , 0.0000000000000000 },
554 { 0.10000000000000001 , 334.00000000000000 , 0.0000000000000000 , 0.0000000000000000 },
555 { -0.10000000000000001 , -198.09999999999999 , 0.0000000000000000 , 0.0000000000000000 },
556 { -106.59999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
557 { -0.50000000000000000 , 165.80000000000001 , 0.0000000000000000 , 0.0000000000000000 },
558 { 0.0000000000000000 , 134.80000000000001 , 0.0000000000000000 , 0.0000000000000000 },
559 { 0.90000000000000002 , -151.59999999999999 , 0.0000000000000000 , 0.0000000000000000 },
560 { 0.0000000000000000 , -129.69999999999999 , 0.0000000000000000 , 0.0000000000000000 },
561 { 0.80000000000000004 , -132.80000000000001 , 0.0000000000000000 , -0.10000000000000001 },
562 { 0.50000000000000000 , -140.69999999999999 , 0.0000000000000000 , 0.0000000000000000 },
563 { -0.10000000000000001 , 138.40000000000001 , 0.0000000000000000 , 0.0000000000000000 },
564 { 0.0000000000000000 , 129.00000000000000 , 0.0000000000000000 , -0.29999999999999999 },
565 { 0.50000000000000000 , -121.20000000000000 , 0.0000000000000000 , 0.0000000000000000 },
566 { -0.29999999999999999 , 114.50000000000000 , 0.0000000000000000 , 0.0000000000000000 },
567 { -0.10000000000000001 , 101.80000000000000 , 0.0000000000000000 , 0.0000000000000000 },
568 { -3.6000000000000001 , -101.90000000000001 , 0.0000000000000000 , 0.0000000000000000 },
569 { 0.80000000000000004 , -109.40000000000001 , 0.0000000000000000 , 0.0000000000000000 },
570 { 0.20000000000000001 , -97.000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
571 { -0.69999999999999996 , 157.30000000000001 , 0.0000000000000000 , 0.0000000000000000 },
572 { 0.20000000000000001 , -83.299999999999997 , 0.0000000000000000 , 0.0000000000000000 },
573 { -0.29999999999999999 , 93.299999999999997 , 0.0000000000000000 , 0.0000000000000000 },
574 { -0.10000000000000001 , 92.099999999999994 , 0.0000000000000000 , 0.0000000000000000 },
575 { -0.50000000000000000 , 133.59999999999999 , 0.0000000000000000 , 0.0000000000000000 },
576 { -0.10000000000000001 , 81.500000000000000 , 0.0000000000000000 , 0.0000000000000000 },
577 { 0.0000000000000000 , 123.90000000000001 , 0.0000000000000000 , 0.0000000000000000 },
578 { -0.29999999999999999 , 128.09999999999999 , 0.0000000000000000 , 0.0000000000000000 },
579 { 0.10000000000000001 , 74.099999999999994 , 0.0000000000000000 , -0.29999999999999999 },
580 { -0.20000000000000001 , -70.299999999999997 , 0.0000000000000000 , 0.0000000000000000 },
581 { -0.40000000000000002 , 66.599999999999994 , 0.0000000000000000 , 0.0000000000000000 },
582 { 0.10000000000000001 , -66.700000000000003 , 0.0000000000000000 , 0.0000000000000000 },
583 { -0.69999999999999996 , 69.299999999999997 , 0.0000000000000000 , -0.29999999999999999 },
584 { 0.0000000000000000 , -70.400000000000006 , 0.0000000000000000 , 0.0000000000000000 },
585 { -0.10000000000000001 , 101.50000000000000 , 0.0000000000000000 , 0.0000000000000000 },
586 { 0.50000000000000000 , -69.099999999999994 , 0.0000000000000000 , 0.0000000000000000 },
587 { -0.20000000000000001 , 58.500000000000000 , 0.0000000000000000 , 0.20000000000000001 },
588 { 0.10000000000000001 , -94.900000000000006 , 0.0000000000000000 , 0.20000000000000001 },
589 { 0.0000000000000000 , 52.899999999999999 , 0.0000000000000000 , -0.20000000000000001 },
590 { 0.10000000000000001 , 86.700000000000003 , 0.0000000000000000 , -0.20000000000000001 },
591 { -0.10000000000000001 , -59.200000000000003 , 0.0000000000000000 , 0.20000000000000001 },
592 { 0.29999999999999999 , -58.799999999999997 , 0.0000000000000000 , 0.10000000000000001 },
593 { -0.29999999999999999 , 49.000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
594 { -0.20000000000000001 , 56.899999999999999 , 0.0000000000000000 , -0.10000000000000001 },
595 { 0.29999999999999999 , -50.200000000000003 , 0.0000000000000000 , 0.0000000000000000 },
596 { -0.20000000000000001 , 53.399999999999999 , 0.0000000000000000 , -0.10000000000000001 },
597 { 0.10000000000000001 , -76.500000000000000 , 0.0000000000000000 , 0.0000000000000000 },
598 { -0.20000000000000001 , 45.299999999999997 , 0.0000000000000000 , 0.0000000000000000 },
599 { 0.10000000000000001 , -46.799999999999997 , 0.0000000000000000 , 0.0000000000000000 },
600 { 0.20000000000000001 , -44.600000000000001 , 0.0000000000000000 , 0.0000000000000000 },
601 { 0.20000000000000001 , -48.700000000000003 , 0.0000000000000000 , 0.0000000000000000 },
602 { 0.10000000000000001 , -46.799999999999997 , 0.0000000000000000 , 0.0000000000000000 },
603 { 0.10000000000000001 , -42.000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
604 { 0.0000000000000000 , 46.399999999999999 , 0.0000000000000000 , -0.10000000000000001 },
605 { 0.20000000000000001 , -67.299999999999997 , 0.0000000000000000 , 0.10000000000000001 },
606 { 0.0000000000000000 , -65.799999999999997 , 0.0000000000000000 , 0.20000000000000001 },
607 { -0.10000000000000001 , -43.899999999999999 , 0.0000000000000000 , 0.29999999999999999 },
608 { 0.0000000000000000 , -38.899999999999999 , 0.0000000000000000 , 0.0000000000000000 },
609 { -0.29999999999999999 , 63.899999999999999 , 0.0000000000000000 , 0.0000000000000000 },
610 { -0.20000000000000001 , 41.200000000000003 , 0.0000000000000000 , 0.0000000000000000 },
611 { 0.0000000000000000 , -36.100000000000001 , 0.0000000000000000 , 0.20000000000000001 },
612 { -0.29999999999999999 , 58.500000000000000 , 0.0000000000000000 , 0.0000000000000000 },
613 { -0.10000000000000001 , 36.100000000000001 , 0.0000000000000000 , 0.0000000000000000 },
614 { 0.0000000000000000 , -39.700000000000003 , 0.0000000000000000 , 0.0000000000000000 },
615 { 0.10000000000000001 , -57.700000000000003 , 0.0000000000000000 , 0.0000000000000000 },
616 { -0.20000000000000001 , 33.399999999999999 , 0.0000000000000000 , 0.0000000000000000 },
617 { 36.399999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
618 { -0.10000000000000001 , 55.700000000000003 , 0.0000000000000000 , -0.10000000000000001 },
619 { 0.10000000000000001 , -35.399999999999999 , 0.0000000000000000 , 0.0000000000000000 },
620 { 0.10000000000000001 , -31.000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
621 { -0.10000000000000001 , 30.100000000000001 , 0.0000000000000000 , 0.0000000000000000 },
622 { -0.29999999999999999 , 49.200000000000003 , 0.0000000000000000 , 0.0000000000000000 },
623 { -0.20000000000000001 , 49.100000000000001 , 0.0000000000000000 , 0.0000000000000000 },
624 { -0.10000000000000001 , 33.600000000000001 , 0.0000000000000000 , 0.0000000000000000 },
625 { 0.10000000000000001 , -33.500000000000000 , 0.0000000000000000 , 0.0000000000000000 },
626 { 0.10000000000000001 , -31.000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
627 { -0.10000000000000001 , 28.000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
628 { 0.10000000000000001 , -25.199999999999999 , 0.0000000000000000 , 0.0000000000000000 },
629 { 0.10000000000000001 , -26.199999999999999 , 0.0000000000000000 , 0.0000000000000000 },
630 { -0.20000000000000001 , 41.500000000000000 , 0.0000000000000000 , 0.0000000000000000 },
631 { 0.0000000000000000 , 24.500000000000000 , 0.0000000000000000 , 0.10000000000000001 },
632 { -16.199999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
633 { 0.0000000000000000 , -22.300000000000001 , 0.0000000000000000 , 0.0000000000000000 },
634 { 0.0000000000000000 , 23.100000000000001 , 0.0000000000000000 , 0.0000000000000000 },
635 { -0.10000000000000001 , 37.500000000000000 , 0.0000000000000000 , 0.0000000000000000 },
636 { 0.20000000000000001 , -25.699999999999999 , 0.0000000000000000 , 0.0000000000000000 },
637 { 0.0000000000000000 , 25.199999999999999 , 0.0000000000000000 , 0.0000000000000000 },
638 { 0.10000000000000001 , -24.500000000000000 , 0.0000000000000000 , 0.0000000000000000 },
639 { -0.10000000000000001 , 24.300000000000001 , 0.0000000000000000 , 0.0000000000000000 },
640 { 0.10000000000000001 , -20.699999999999999 , 0.0000000000000000 , 0.0000000000000000 },
641 { 0.10000000000000001 , -20.800000000000001 , 0.0000000000000000 , 0.0000000000000000 },
642 { -0.20000000000000001 , 33.399999999999999 , 0.0000000000000000 , 0.0000000000000000 },
643 { 32.899999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
644 { 0.10000000000000001 , -32.600000000000001 , 0.0000000000000000 , 0.0000000000000000 },
645 { 0.0000000000000000 , 19.899999999999999 , 0.0000000000000000 , 0.0000000000000000 },
646 { -0.10000000000000001 , 19.600000000000001 , 0.0000000000000000 , 0.0000000000000000 },
647 { 0.0000000000000000 , -18.699999999999999 , 0.0000000000000000 , 0.0000000000000000 },
648 { 0.10000000000000001 , -19.000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
649 { 0.10000000000000001 , -28.600000000000001 , 0.0000000000000000 , 0.0000000000000000 },
650 { 4.0000000000000000 , 178.80000000000001 , -11.800000000000001 , 0.29999999999999999 },
651 { 39.799999999999997 , -107.30000000000000 , -5.5999999999999996 , -1.0000000000000000 },
652 { 9.9000000000000004 , 164.00000000000000 , -4.0999999999999996 , 0.10000000000000001 },
653 { -4.7999999999999998 , -135.30000000000001 , -3.3999999999999999 , -0.10000000000000001 },
654 { 50.500000000000000 , 75.000000000000000 , 1.3999999999999999 , -1.2000000000000000 },
655 { -1.1000000000000001 , -53.500000000000000 , 1.3000000000000000 , 0.0000000000000000 },
656 { -45.000000000000000 , -2.3999999999999999 , -0.40000000000000002 , 6.5999999999999996 },
657 { -11.500000000000000 , -61.000000000000000 , -0.90000000000000002 , 0.40000000000000002 },
658 { 4.4000000000000004 , -68.400000000000006 , -3.3999999999999999 , 0.0000000000000000 },
659 { 7.7000000000000002 , -47.100000000000001 , -4.7000000000000002 , -1.0000000000000000 },
660 { -42.899999999999999 , -12.600000000000000 , -1.2000000000000000 , 4.2000000000000002 },
661 { -42.799999999999997 , 12.699999999999999 , -1.2000000000000000 , -4.2000000000000002 },
662 { -7.5999999999999996 , -44.100000000000001 , 2.1000000000000001 , -0.50000000000000000 },
663 { -64.099999999999994 , 1.7000000000000000 , 0.20000000000000001 , 4.5000000000000000 },
664 { 36.399999999999999 , -10.400000000000000 , 1.0000000000000000 , 3.5000000000000000 },
665 { 35.600000000000001 , 10.199999999999999 , 1.0000000000000000 , -3.5000000000000000 },
666 { -1.7000000000000000 , 39.500000000000000 , 2.0000000000000000 , 0.0000000000000000 },
667 { 50.899999999999999 , -8.1999999999999993 , -0.80000000000000004 , -5.0000000000000000 },
668 { 0.0000000000000000 , 52.299999999999997 , 1.2000000000000000 , 0.0000000000000000 },
669 { -42.899999999999999 , -17.800000000000001 , 0.40000000000000002 , 0.0000000000000000 },
670 { 2.6000000000000001 , 34.299999999999997 , 0.80000000000000004 , 0.0000000000000000 },
671 { -0.80000000000000004 , -48.600000000000001 , 2.3999999999999999 , -0.10000000000000001 },
672 { -4.9000000000000004 , 30.500000000000000 , 3.7000000000000002 , 0.69999999999999996 },
673 { 0.0000000000000000 , -43.600000000000001 , 2.1000000000000001 , 0.0000000000000000 },
674 { 0.0000000000000000 , -25.399999999999999 , 1.2000000000000000 , 0.0000000000000000 },
675 { 2.0000000000000000 , 40.899999999999999 , -2.0000000000000000 , 0.0000000000000000 },
676 { -2.1000000000000001 , 26.100000000000001 , 0.59999999999999998 , 0.0000000000000000 },
677 { 22.600000000000001 , -3.2000000000000002 , -0.50000000000000000 , -0.50000000000000000 },
678 { -7.5999999999999996 , 24.899999999999999 , -0.40000000000000002 , -0.20000000000000001 },
679 { -6.2000000000000002 , 34.899999999999999 , 1.7000000000000000 , 0.29999999999999999 },
680 { 2.0000000000000000 , 17.399999999999999 , -0.40000000000000002 , 0.10000000000000001 },
681 { -3.8999999999999999 , 20.500000000000000 , 2.3999999999999999 , 0.59999999999999998 }
682 };
683 double eps[ 194 ][4] = {
684 { 9205365.8000000007 , -1506.2000000000000 , 885.70000000000005 , -0.20000000000000001 },
685 { 573095.90000000002 , -570.20000000000005 , -305.00000000000000 , -0.29999999999999999 },
686 { 97845.500000000000 , 147.80000000000001 , -48.799999999999997 , -0.20000000000000001 },
687 { -89753.600000000006 , 28.000000000000000 , 46.899999999999999 , 0.0000000000000000 },
688 { 7406.6999999999998 , -327.10000000000002 , -18.199999999999999 , 0.80000000000000004 },
689 { 22442.299999999999 , -22.300000000000001 , -67.599999999999994 , 0.0000000000000000 },
690 { -683.60000000000002 , 46.799999999999997 , 0.0000000000000000 , 0.0000000000000000 },
691 { 20070.700000000001 , 36.000000000000000 , 1.6000000000000001 , 0.0000000000000000 },
692 { 12893.799999999999 , 39.500000000000000 , -6.2000000000000002 , 0.0000000000000000 },
693 { -9593.2000000000007 , 14.400000000000000 , 30.199999999999999 , -0.10000000000000001 },
694 { -6899.5000000000000 , 4.7999999999999998 , -0.59999999999999998 , 0.0000000000000000 },
695 { -5332.5000000000000 , -0.10000000000000001 , 2.7000000000000002 , 0.0000000000000000 },
696 { -125.20000000000000 , 10.500000000000000 , 0.0000000000000000 , 0.0000000000000000 },
697 { -3323.4000000000001 , -0.90000000000000002 , -0.29999999999999999 , 0.0000000000000000 },
698 { 3142.3000000000002 , 8.9000000000000004 , 0.29999999999999999 , 0.0000000000000000 },
699 { 2552.5000000000000 , 7.2999999999999998 , -1.2000000000000000 , 0.0000000000000000 },
700 { 2634.4000000000001 , 8.8000000000000007 , 0.20000000000000001 , 0.0000000000000000 },
701 { -2424.4000000000001 , 1.6000000000000001 , -0.40000000000000002 , 0.0000000000000000 },
702 { -123.30000000000000 , 3.8999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
703 { 1642.4000000000001 , 7.2999999999999998 , -0.80000000000000004 , 0.0000000000000000 },
704 { 47.899999999999999 , 3.2000000000000002 , 0.0000000000000000 , 0.0000000000000000 },
705 { 1321.2000000000000 , 6.2000000000000002 , -0.59999999999999998 , 0.0000000000000000 },
706 { -1234.0999999999999 , -0.29999999999999999 , 0.59999999999999998 , 0.0000000000000000 },
707 { -1076.5000000000000 , -0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
708 { -61.600000000000001 , 1.8000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
709 { -55.399999999999999 , 1.6000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
710 { 856.89999999999998 , -4.9000000000000004 , -2.1000000000000001 , 0.0000000000000000 },
711 { -800.70000000000005 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
712 { 685.10000000000002 , -0.59999999999999998 , -3.7999999999999998 , 0.0000000000000000 },
713 { -16.899999999999999 , -1.5000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
714 { 695.70000000000005 , 1.8000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
715 { 642.20000000000005 , -2.6000000000000001 , -1.6000000000000001 , 0.0000000000000000 },
716 { 13.300000000000001 , 1.1000000000000001 , -0.10000000000000001 , 0.0000000000000000 },
717 { 521.89999999999998 , 1.6000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
718 { 325.80000000000001 , 2.0000000000000000 , -0.10000000000000001 , 0.0000000000000000 },
719 { -325.10000000000002 , -0.50000000000000000 , 0.90000000000000002 , 0.0000000000000000 },
720 { 10.100000000000000 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
721 { 334.50000000000000 , 1.6000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
722 { 307.10000000000002 , 0.40000000000000002 , -0.90000000000000002 , 0.0000000000000000 },
723 { 327.19999999999999 , 0.50000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
724 { -304.60000000000002 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
725 { 304.00000000000000 , 0.59999999999999998 , 0.0000000000000000 , 0.0000000000000000 },
726 { -276.80000000000001 , -0.50000000000000000 , 0.10000000000000001 , 0.0000000000000000 },
727 { 268.89999999999998 , 1.3000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
728 { 271.80000000000001 , 1.1000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
729 { 271.50000000000000 , -0.40000000000000002 , -0.80000000000000004 , 0.0000000000000000 },
730 { -5.2000000000000002 , 0.50000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
731 { -220.50000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
732 { -20.100000000000001 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
733 { -191.00000000000000 , 0.10000000000000001 , 0.50000000000000000 , 0.0000000000000000 },
734 { -4.0999999999999996 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
735 { 130.59999999999999 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
736 { 3.0000000000000000 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
737 { 122.90000000000001 , 0.80000000000000004 , 0.0000000000000000 , 0.0000000000000000 },
738 { 3.7000000000000002 , -0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
739 { 123.09999999999999 , 0.40000000000000002 , -0.29999999999999999 , 0.0000000000000000 },
740 { -52.700000000000003 , 15.300000000000001 , 0.0000000000000000 , 0.0000000000000000 },
741 { 120.70000000000000 , 0.29999999999999999 , -0.29999999999999999 , 0.0000000000000000 },
742 { 4.0000000000000000 , -0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
743 { 126.50000000000000 , 0.50000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
744 { 112.70000000000000 , 0.50000000000000000 , -0.29999999999999999 , 0.0000000000000000 },
745 { -106.09999999999999 , -0.29999999999999999 , 0.29999999999999999 , 0.0000000000000000 },
746 { -112.90000000000001 , -0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
747 { 3.6000000000000001 , -0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
748 { 107.40000000000001 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
749 { -10.900000000000000 , 0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
750 { -0.90000000000000002 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
751 { 85.400000000000006 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
752 { 0.0000000000000000 , -88.799999999999997 , 0.0000000000000000 , 0.0000000000000000 },
753 { -71.000000000000000 , -0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
754 { -70.299999999999997 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
755 { 64.500000000000000 , 0.40000000000000002 , 0.0000000000000000 , 0.0000000000000000 },
756 { 69.799999999999997 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
757 { 66.099999999999994 , 0.40000000000000002 , 0.0000000000000000 , 0.0000000000000000 },
758 { -61.000000000000000 , -0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
759 { -59.500000000000000 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
760 { -55.600000000000001 , 0.0000000000000000 , 0.20000000000000001 , 0.0000000000000000 },
761 { 51.700000000000003 , 0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
762 { -49.000000000000000 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
763 { -52.700000000000003 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
764 { -49.600000000000001 , 1.3999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
765 { 46.299999999999997 , 0.40000000000000002 , 0.0000000000000000 , 0.0000000000000000 },
766 { 49.600000000000001 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
767 { -5.0999999999999996 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
768 { -44.000000000000000 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
769 { -39.899999999999999 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
770 { -39.500000000000000 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
771 { -3.8999999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
772 { -42.100000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
773 { -17.199999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
774 { -2.2999999999999998 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
775 { -39.200000000000003 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
776 { -38.399999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
777 { 36.799999999999997 , 0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
778 { 34.600000000000001 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
779 { -32.700000000000003 , 0.29999999999999999 , 0.0000000000000000 , 0.0000000000000000 },
780 { 30.399999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
781 { 0.40000000000000002 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
782 { 29.300000000000001 , 0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
783 { 31.600000000000001 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
784 { 0.80000000000000004 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
785 { -27.899999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
786 { 2.8999999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
787 { -25.300000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
788 { 25.000000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
789 { 27.500000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
790 { -24.399999999999999 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
791 { 24.899999999999999 , 0.20000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
792 { -22.800000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
793 { 0.90000000000000002 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
794 { 24.399999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
795 { 23.899999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
796 { 22.500000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
797 { 20.800000000000001 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
798 { 20.100000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
799 { 21.500000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
800 { -20.000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
801 { 1.3999999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
802 { -0.20000000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
803 { 19.000000000000000 , 0.0000000000000000 , -0.10000000000000001 , 0.0000000000000000 },
804 { 20.500000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
805 { -2.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
806 { -17.600000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
807 { 19.000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
808 { -2.3999999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
809 { -18.399999999999999 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
810 { 17.100000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
811 { 0.40000000000000002 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
812 { 18.399999999999999 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
813 { 0.0000000000000000 , 17.399999999999999 , 0.0000000000000000 , 0.0000000000000000 },
814 { -0.59999999999999998 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
815 { -15.400000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
816 { -16.800000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
817 { 16.300000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
818 { -2.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
819 { -1.5000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
820 { -14.300000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
821 { 14.400000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
822 { -13.400000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
823 { -14.300000000000001 , -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
824 { -13.699999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
825 { 13.100000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
826 { -1.7000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
827 { -12.800000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
828 { 0.0000000000000000 , -14.400000000000000 , 0.0000000000000000 , 0.0000000000000000 },
829 { 12.400000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
830 { -12.000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
831 { -0.80000000000000004 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
832 { 10.900000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
833 { -10.800000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
834 { 10.500000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
835 { -10.400000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
836 { -11.199999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
837 { 10.500000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
838 { -1.3999999999999999 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
839 { 0.0000000000000000 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
840 { 0.69999999999999996 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
841 { -10.300000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
842 { -10.000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
843 { 9.5999999999999996 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
844 { 9.4000000000000004 , 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 },
845 { 0.59999999999999998 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
846 { -87.700000000000003 , 4.4000000000000004 , -0.40000000000000002 , -6.2999999999999998 },
847 { 46.299999999999997 , 22.399999999999999 , 0.50000000000000000 , -2.3999999999999999 },
848 { 15.600000000000000 , -3.3999999999999999 , 0.10000000000000001 , 0.40000000000000002 },
849 { 5.2000000000000002 , 5.7999999999999998 , 0.20000000000000001 , -0.10000000000000001 },
850 { -30.100000000000001 , 26.899999999999999 , 0.69999999999999996 , 0.0000000000000000 },
851 { 23.199999999999999 , -0.50000000000000000 , 0.0000000000000000 , 0.59999999999999998 },
852 { 1.0000000000000000 , 23.199999999999999 , 3.3999999999999999 , 0.0000000000000000 },
853 { -12.199999999999999 , -4.2999999999999998 , 0.0000000000000000 , 0.0000000000000000 },
854 { -2.1000000000000001 , -3.7000000000000002 , -0.20000000000000001 , 0.10000000000000001 },
855 { -18.600000000000001 , -3.7999999999999998 , -0.40000000000000002 , 1.8000000000000000 },
856 { 5.5000000000000000 , -18.699999999999999 , -1.8000000000000000 , -0.50000000000000000 },
857 { -5.5000000000000000 , -18.699999999999999 , 1.8000000000000000 , -0.50000000000000000 },
858 { 18.399999999999999 , -3.6000000000000001 , 0.29999999999999999 , 0.90000000000000002 },
859 { -0.59999999999999998 , 1.3000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
860 { -5.5999999999999996 , -19.500000000000000 , 1.8999999999999999 , 0.0000000000000000 },
861 { 5.5000000000000000 , -19.100000000000001 , -1.8999999999999999 , 0.0000000000000000 },
862 { -17.300000000000001 , -0.80000000000000004 , 0.0000000000000000 , 0.90000000000000002 },
863 { -3.2000000000000002 , -8.3000000000000007 , -0.80000000000000004 , 0.29999999999999999 },
864 { -0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
865 { -5.4000000000000004 , 7.7999999999999998 , -0.29999999999999999 , 0.0000000000000000 },
866 { -14.800000000000001 , 1.3999999999999999 , 0.0000000000000000 , 0.29999999999999999 },
867 { -3.7999999999999998 , 0.40000000000000002 , 0.0000000000000000 , -0.20000000000000001 },
868 { 12.600000000000000 , 3.2000000000000002 , 0.50000000000000000 , -1.5000000000000000 },
869 { 0.10000000000000001 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
870 { -13.600000000000000 , 2.3999999999999999 , -0.10000000000000001 , 0.0000000000000000 },
871 { 0.90000000000000002 , 1.2000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
872 { -11.900000000000000 , -0.50000000000000000 , 0.0000000000000000 , 0.29999999999999999 },
873 { 0.40000000000000002 , 12.000000000000000 , 0.29999999999999999 , -0.20000000000000001 },
874 { 8.3000000000000007 , 6.0999999999999996 , -0.10000000000000001 , 0.10000000000000001 },
875 { 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 , 0.0000000000000000 },
876 { 0.40000000000000002 , -10.800000000000001 , 0.29999999999999999 , 0.0000000000000000 },
877 { 9.5999999999999996 , 2.2000000000000002 , 0.29999999999999999 , -1.2000000000000000 }
878 };
879
880 /* interval between fundamental epoch j2000.0 and given epoch (jc). */
881 t = (date-DJM0)/DJC;
882
883 /* mean anomaly of the moon. */
884 el = 134.96340251*PAL__DD2R+
885 fmod(t*(1717915923.2178+
886 t*( 31.8792+
887 t*( 0.051635+
888 t*( - 0.00024470)))),TURNAS)*PAL__DAS2R;
889
890 /* mean anomaly of the sun. */
891 elp = 357.52910918*PAL__DD2R+
892 fmod(t*( 129596581.0481+
893 t*( - 0.5532+
894 t*( 0.000136+
895 t*( - 0.00001149)))),TURNAS)*PAL__DAS2R;
896
897 /* mean argument of the latitude of the moon. */
898 f = 93.27209062*PAL__DD2R+
899 fmod(t*(1739527262.8478+
900 t*( - 12.7512+
901 t*( - 0.001037+
902 t*( 0.00000417)))),TURNAS)*PAL__DAS2R;
903
904 /* mean elongation of the moon from the sun. */
905 d = 297.85019547*PAL__DD2R+
906 fmod(t*(1602961601.2090+
907 t*( - 6.3706+
908 t*( 0.006539+
909 t*( - 0.00003169)))),TURNAS)*PAL__DAS2R;
910
911 /* mean longitude of the ascending node of the moon. */
912 om = 125.04455501*PAL__DD2R+
913 fmod(t*( - 6962890.5431+
914 t*( 7.4722+
915 t*( 0.007702+
916 t*( - 0.00005939)))),TURNAS)*PAL__DAS2R;
917
918 /* mean longitude of venus. */
919 ve = 181.97980085*PAL__DD2R+fmod(210664136.433548*t,TURNAS)*PAL__DAS2R;
920
921 /* mean longitude of mars.*/
922 ma = 355.43299958*PAL__DD2R+fmod( 68905077.493988*t,TURNAS)*PAL__DAS2R;
923
924 /* mean longitude of jupiter. */
925 ju = 34.35151874*PAL__DD2R+fmod( 10925660.377991*t,TURNAS)*PAL__DAS2R;
926
927 /* mean longitude of saturn. */
928 sa = 50.07744430*PAL__DD2R+fmod( 4399609.855732*t,TURNAS)*PAL__DAS2R;
929
930 /* geodesic nutation (fukushima 1991) in microarcsec. */
931 dp = -153.1*sin(elp)-1.9*sin(2*elp);
932 de = 0.0;
933
934 /* shirai & fukushima (2001) nutation series. */
935 for (j=NTERMS-1; j >= 0; j--) {
936 theta = ((double)na[j][0])*el+
937 ((double)na[j][1])*elp+
938 ((double)na[j][2])*f+
939 ((double)na[j][3])*d+
940 ((double)na[j][4])*om+
941 ((double)na[j][5])*ve+
942 ((double)na[j][6])*ma+
943 ((double)na[j][7])*ju+
944 ((double)na[j][8])*sa;
945 c = cos(theta);
946 s = sin(theta);
947 dp += (psi[j][0] + psi[j][2]*t)*c + (psi[j][1] + psi[j][3]*t)*s;
948 de += (eps[j][0] + eps[j][2]*t)*c + (eps[j][1] + eps[j][3]*t)*s;
949 }
950
951 /* change of units, and addition of the precession correction.*/
952 *dpsi = (dp*1e-6-0.042888-0.29856*t)*PAL__DAS2R;
953 *deps = (de*1e-6-0.005171-0.02408*t)*PAL__DAS2R;
954
955 /* mean obliquity of date (simon et al. 1994). */
956 *eps0 = (84381.412+
957 (-46.80927+
958 (-0.000152+
959 (0.0019989+
960 (-0.00000051+
961 (-0.000000025)*t)*t)*t)*t)*t)*PAL__DAS2R;
962
963}
Note: See TracBrowser for help on using the repository browser.