File Coverage

palsrc/palAoppa.c
Criterion Covered Total %
statement 100 100 100.0
branch 3 4 75.0
condition n/a
subroutine n/a
pod n/a
total 103 104 99.0


line stmt bran cond sub pod time code
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 7           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 7           cphim = cos(phim);
185 7           xt = cos(elongm)*cphim;
186 7           yt = sin(elongm)*cphim;
187 7           zt = sin(phim);
188 7           xc = xt-xp*zt;
189 7           yc = yt+yp*zt;
190 7           zc = xp*xt-yp*yt+zt;
191 7 50         if (xc == 0.0 && yc == 0.0) {
192             elong = 0.0;
193             } else {
194 7           elong = atan2(yc,xc);
195             }
196 7           phi = atan2(zc,sqrt(xc*xc+yc*yc));
197 7           aoprms[0] = phi;
198 7           aoprms[1] = sin(phi);
199 7           aoprms[2] = cos(phi);
200              
201             /* magnitude of the diurnal aberration vector */
202 7           pal__Geoc(phi,hm,&uau,&vau);
203 7           aoprms[3] = PAL__D2PI*uau*SOLSID/C;
204              
205             /* copy the refraction parameters and compute the a & b constants */
206 7           aoprms[4] = hm;
207 7           aoprms[5] = tdk;
208 7           aoprms[6] = pmb;
209 7           aoprms[7] = rh;
210 7           aoprms[8] = wl;
211 7           aoprms[9] = tlr;
212 7           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 7           aoprms[12] = elong+pal__Eqeqx(date)+dut*SOLSID*PAL__DS2R;
218              
219             /* sidereal time */
220 7           palAoppat(date,aoprms);
221              
222 7           }
223              
224             /* Private reimplementation of slaEqeqx for testing the algorithm */
225              
226             #include
227              
228 7           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 7           sp = sin(p);
245 7           cp = cos(p);
246 7           c = 1.0/sqrt(cp*cp+b*sp*sp);
247 7           s = b*c;
248 7           *r = (A0*c+h)*cp/AU;
249 7           *z = (A0*s+h)*sp/AU;
250              
251 7           }
252              
253 7           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 7           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 7           om=PAL__DAS2R*(450160.280+(-5.0*T2AS-482890.539
266 7           +(7.455+0.008*t)*t)*t);
267              
268             /* nutation */
269 7           pal__Nutc(date,&dpsi,&deps,&eps0);
270              
271             /* equation of the equinoxes */
272 14           pal_eqeqx=dpsi*cos(eps0)+PAL__DAS2R*(0.00264*sin(om)+
273 7           0.000063*sin(om+om));
274              
275 7           return pal_eqeqx;
276             }
277              
278             #include "palmac.h"
279              
280 7           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 7           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 7           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 7           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 7           t = (date-DJM0)/DJC;
882              
883             /* mean anomaly of the moon. */
884 7           el = 134.96340251*PAL__DD2R+
885 7           fmod(t*(1717915923.2178+
886 7           t*( 31.8792+
887 7           t*( 0.051635+
888 14           t*( - 0.00024470)))),TURNAS)*PAL__DAS2R;
889              
890             /* mean anomaly of the sun. */
891 7           elp = 357.52910918*PAL__DD2R+
892 7           fmod(t*( 129596581.0481+
893 7           t*( - 0.5532+
894 7           t*( 0.000136+
895 14           t*( - 0.00001149)))),TURNAS)*PAL__DAS2R;
896            
897             /* mean argument of the latitude of the moon. */
898 7           f = 93.27209062*PAL__DD2R+
899 7           fmod(t*(1739527262.8478+
900 7           t*( - 12.7512+
901 7           t*( - 0.001037+
902 14           t*( 0.00000417)))),TURNAS)*PAL__DAS2R;
903              
904             /* mean elongation of the moon from the sun. */
905 7           d = 297.85019547*PAL__DD2R+
906 7           fmod(t*(1602961601.2090+
907 7           t*( - 6.3706+
908 7           t*( 0.006539+
909 14           t*( - 0.00003169)))),TURNAS)*PAL__DAS2R;
910              
911             /* mean longitude of the ascending node of the moon. */
912 7           om = 125.04455501*PAL__DD2R+
913 7           fmod(t*( - 6962890.5431+
914 7           t*( 7.4722+
915 7           t*( 0.007702+
916 14           t*( - 0.00005939)))),TURNAS)*PAL__DAS2R;
917              
918             /* mean longitude of venus. */
919 7           ve = 181.97980085*PAL__DD2R+fmod(210664136.433548*t,TURNAS)*PAL__DAS2R;
920              
921             /* mean longitude of mars.*/
922 7           ma = 355.43299958*PAL__DD2R+fmod( 68905077.493988*t,TURNAS)*PAL__DAS2R;
923              
924             /* mean longitude of jupiter. */
925 7           ju = 34.35151874*PAL__DD2R+fmod( 10925660.377991*t,TURNAS)*PAL__DAS2R;
926              
927             /* mean longitude of saturn. */
928 7           sa = 50.07744430*PAL__DD2R+fmod( 4399609.855732*t,TURNAS)*PAL__DAS2R;
929              
930             /* geodesic nutation (fukushima 1991) in microarcsec. */
931 7           dp = -153.1*sin(elp)-1.9*sin(2*elp);
932             de = 0.0;
933              
934             /* shirai & fukushima (2001) nutation series. */
935 1365 100         for (j=NTERMS-1; j >= 0; j--) {
936 4074           theta = ((double)na[j][0])*el+
937 2716           ((double)na[j][1])*elp+
938 2716           ((double)na[j][2])*f+
939 2716           ((double)na[j][3])*d+
940 2716           ((double)na[j][4])*om+
941 2716           ((double)na[j][5])*ve+
942 2716           ((double)na[j][6])*ma+
943 1358           ((double)na[j][7])*ju+
944 1358           ((double)na[j][8])*sa;
945 1358           c = cos(theta);
946 1358           s = sin(theta);
947 1358           dp += (psi[j][0] + psi[j][2]*t)*c + (psi[j][1] + psi[j][3]*t)*s;
948 1358           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 7           *dpsi = (dp*1e-6-0.042888-0.29856*t)*PAL__DAS2R;
953 7           *deps = (de*1e-6-0.005171-0.02408*t)*PAL__DAS2R;
954              
955             /* mean obliquity of date (simon et al. 1994). */
956 14           *eps0 = (84381.412+
957 7           (-46.80927+
958 7           (-0.000152+
959 7           (0.0019989+
960 7           (-0.00000051+
961 42           (-0.000000025)*t)*t)*t)*t)*t)*PAL__DAS2R;
962              
963 7           }