FACT++  1.0
palAoppa.c
Go to the documentation of this file.
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. */
168 static void pal__Geoc( double p, double h, double *r, double * z );
169 static void pal__Nutc ( double date, double * dpsi, double *deps, double * eps0 );
170 static double pal__Eqeqx( double date );
171 
172 void 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 
228 static 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 
253 static 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 
280 static 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 }
static const double PAL__DS2R
Definition: palmac.h:93
static const double PAL__DAS2R
Definition: palmac.h:78
static void pal__Nutc(double date, double *dpsi, double *deps, double *eps0)
Definition: palAoppa.c:280
void palRefco(double hm, double tdk, double pmb, double rh, double wl, double phi, double tlr, double eps, double *refa, double *refb)
Definition: palRefco.c:102
static double pal__Eqeqx(double date)
Definition: palAoppa.c:253
#define NTERMS
static const double PAL__DD2R
Definition: palmac.h:72
in C
Definition: README_v19.txt:379
void palAoppat(double date, double aoprms[14])
Definition: palAoppat.c:78
static void pal__Geoc(double p, double h, double *r, double *z)
Definition: palAoppa.c:228
TT t
Definition: test_client.c:26
void palAoppa(double date, double dut, double elongm, double phim, double hm, double xp, double yp, double tdk, double pmb, double rh, double wl, double tlr, double aoprms[14])
Definition: palAoppa.c:172
static const double PAL__D2PI
Definition: palmac.h:66