10274 lines
364 KiB
Go
10274 lines
364 KiB
Go
// Copyright 2022 HE Boliang
|
|
// All rights reserved.
|
|
|
|
package gofa
|
|
|
|
// SOFA Precession / Nutation / Polar Motion
|
|
|
|
/*
|
|
Bi00 Frame bias components, IAU 2000 Frame bias components of IAU 2000
|
|
precession-nutation models; part of the Mathews-Herring-Buffett (MHB2000)
|
|
nutation series, with additions.
|
|
|
|
Returned:
|
|
dpsibi,depsbi float64 longitude and obliquity corrections
|
|
dra float64 the ICRS RA of the J2000.0 mean equinox
|
|
|
|
Notes:
|
|
|
|
1) The frame bias corrections in longitude and obliquity (radians)
|
|
are required in order to correct for the offset between the GCRS
|
|
pole and the mean J2000.0 pole. They define, with respect to the
|
|
GCRS frame, a J2000.0 mean pole that is consistent with the rest
|
|
of the IAU 2000A precession-nutation model.
|
|
|
|
2) In addition to the displacement of the pole, the complete
|
|
description of the frame bias requires also an offset in right
|
|
ascension. This is not part of the IAU 2000A model, and is from
|
|
Chapront et al. (2002). It is returned in radians.
|
|
|
|
3) This is a supplemented implementation of one aspect of the IAU
|
|
2000A nutation model, formally adopted by the IAU General
|
|
Assembly in 2000, namely MHB2000 (Mathews et al. 2002).
|
|
|
|
References:
|
|
|
|
Chapront, J., Chapront-Touze, M. & Francou, G., Astron.
|
|
Astrophys., 387, 700, 2002.
|
|
|
|
Mathews, P.M., Herring, T.A., Buffet, B.A., "Modeling of nutation
|
|
and precession: New nutation series for nonrigid Earth and
|
|
insights into the Earth's interior", J.Geophys.Res., 107, B4,
|
|
2002. The MHB2000 code itself was obtained on 2002 September 9
|
|
from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A.
|
|
*/
|
|
func Bi00(dpsibi, depsbi, dra *float64) {
|
|
/* The frame bias corrections in longitude and obliquity */
|
|
const DPBIAS = -0.041775 * DAS2R
|
|
const DEBIAS = -0.0068192 * DAS2R
|
|
|
|
/* The ICRS RA of the J2000.0 equinox (Chapront et al., 2002) */
|
|
const DRA0 = -0.0146 * DAS2R
|
|
|
|
/* Return the results (which are fixed). */
|
|
*dpsibi = DPBIAS
|
|
*depsbi = DEBIAS
|
|
*dra = DRA0
|
|
}
|
|
|
|
/*
|
|
Bp00 Frame bias and precession matrices, IAU 2000 Frame bias and precession, IAU 2000.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rb [3][3]float64 frame bias matrix (Note 2)
|
|
rp [3][3]float64 precession matrix (Note 3)
|
|
rbp [3][3]float64 bias-precession matrix (Note 4)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix rb transforms vectors from GCRS to mean J2000.0 by
|
|
applying frame bias.
|
|
|
|
3) The matrix rp transforms vectors from J2000.0 mean equator and
|
|
equinox to mean equator and equinox of date by applying
|
|
precession.
|
|
|
|
4) The matrix rbp transforms vectors from GCRS to mean equator and
|
|
equinox of date by applying frame bias then precession. It is
|
|
the product rp x rb.
|
|
|
|
5) It is permissible to re-use the same array in the returned
|
|
arguments. The arrays are filled in the order given.
|
|
|
|
Called:
|
|
Bi00 frame bias components, IAU 2000
|
|
Pr00 IAU 2000 precession adjustments
|
|
Ir initialize r-matrix to identity
|
|
Rx rotate around X-axis
|
|
Ry rotate around Y-axis
|
|
Rz rotate around Z-axis
|
|
Cr copy r-matrix
|
|
Rxr product of two r-matrices
|
|
|
|
Reference:
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
*/
|
|
func Bp00(date1, date2 float64, rb, rp, rbp *[3][3]float64) {
|
|
/* J2000.0 obliquity (Lieske et al. 1977) */
|
|
const EPS0 = 84381.448 * DAS2R
|
|
|
|
var t, dpsibi, depsbi, dra0, psia77, oma77, chia,
|
|
dpsipr, depspr, psia, oma float64
|
|
var rbw [3][3]float64
|
|
|
|
/* Interval between fundamental epoch J2000.0 and current date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* Frame bias. */
|
|
Bi00(&dpsibi, &depsbi, &dra0)
|
|
|
|
/* Precession angles (Lieske et al. 1977) */
|
|
psia77 = (5038.7784 + (-1.07259+(-0.001147)*t)*t) * t * DAS2R
|
|
oma77 = EPS0 + ((0.05127+(-0.007726)*t)*t)*t*DAS2R
|
|
chia = (10.5526 + (-2.38064+(-0.001125)*t)*t) * t * DAS2R
|
|
|
|
/* Apply IAU 2000 precession corrections. */
|
|
Pr00(date1, date2, &dpsipr, &depspr)
|
|
psia = psia77 + dpsipr
|
|
oma = oma77 + depspr
|
|
|
|
/* Frame bias matrix: GCRS to J2000.0. */
|
|
Ir(&rbw)
|
|
Rz(dra0, &rbw)
|
|
Ry(dpsibi*sin(EPS0), &rbw)
|
|
Rx(-depsbi, &rbw)
|
|
Cr(rbw, rb)
|
|
|
|
/* Precession matrix: J2000.0 to mean of date. */
|
|
Ir(rp)
|
|
Rx(EPS0, rp)
|
|
Rz(-psia, rp)
|
|
Rx(-oma, rp)
|
|
Rz(chia, rp)
|
|
|
|
/* Bias-precession matrix: GCRS to mean of date. */
|
|
Rxr(*rp, rbw, rbp)
|
|
}
|
|
|
|
/*
|
|
Bp06 Frame bias and precession matrices, IAU 2006 Frame bias and precession, IAU 2006.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rb [3][3]float64 frame bias matrix (Note 2)
|
|
rp [3][3]float64 precession matrix (Note 3)
|
|
rbp [3][3]float64 bias-precession matrix (Note 4)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix rb transforms vectors from GCRS to mean J2000.0 by
|
|
applying frame bias.
|
|
|
|
3) The matrix rp transforms vectors from mean J2000.0 to mean of
|
|
date by applying precession.
|
|
|
|
4) The matrix rbp transforms vectors from GCRS to mean of date by
|
|
applying frame bias then precession. It is the product rp x rb.
|
|
|
|
5) It is permissible to re-use the same array in the returned
|
|
arguments. The arrays are filled in the order given.
|
|
|
|
Called:
|
|
Pfw06 bias-precession F-W angles, IAU 2006
|
|
Fw2m F-W angles to r-matrix
|
|
Pmat06 PB matrix, IAU 2006
|
|
Tr transpose r-matrix
|
|
Rxr product of two r-matrices
|
|
Cr copy r-matrix
|
|
|
|
References:
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
|
|
|
|
Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
|
|
*/
|
|
func Bp06(date1, date2 float64, rb, rp, rbp *[3][3]float64) {
|
|
var gamb, phib, psib, epsa float64
|
|
var rbpw, rbt [3][3]float64
|
|
|
|
/* B matrix. */
|
|
Pfw06(DJM0, DJM00, &gamb, &phib, &psib, &epsa)
|
|
Fw2m(gamb, phib, psib, epsa, rb)
|
|
|
|
/* PxB matrix (temporary). */
|
|
Pmat06(date1, date2, &rbpw)
|
|
|
|
/* P matrix. */
|
|
Tr(*rb, &rbt)
|
|
Rxr(rbpw, rbt, rp)
|
|
|
|
/* PxB matrix. */
|
|
Cr(rbpw, rbp)
|
|
}
|
|
|
|
/*
|
|
Bpn2xy CIP XY given Bias-precession-nutation matrix Extract from the
|
|
bias-precession-nutation matrix the X,Y coordinates of the Celestial Intermediate Pole.
|
|
|
|
Given:
|
|
rbpn [3][3]float64 celestial-to-true matrix (Note 1)
|
|
|
|
Returned:
|
|
x,y float64 Celestial Intermediate Pole (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The matrix rbpn transforms vectors from GCRS to true equator (and
|
|
CIO or equinox) of date, and therefore the Celestial Intermediate
|
|
Pole unit vector is the bottom row of the matrix.
|
|
|
|
2) The arguments x,y are components of the Celestial Intermediate
|
|
Pole unit vector in the Geocentric Celestial Reference System.
|
|
|
|
Reference:
|
|
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154
|
|
(2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
*/
|
|
func Bpn2xy(rbpn [3][3]float64, x, y *float64) {
|
|
/* Extract the X,Y coordinates. */
|
|
*x = rbpn[2][0]
|
|
*y = rbpn[2][1]
|
|
}
|
|
|
|
/*
|
|
C2i00a Celestial-to-intermediate matrix, IAU 2000A Form the
|
|
celestial-to-intermediate matrix for a given date using the
|
|
IAU 2000A precession-nutation model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rc2i [3][3]float64 celestial-to-intermediate matrix (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix rc2i is the first stage in the transformation from
|
|
celestial to terrestrial coordinates:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
|
|
|
|
= rc2t * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), ERA is the Earth
|
|
Rotation Angle and RPOM is the polar motion matrix.
|
|
|
|
3) A faster, but slightly less accurate, result (about 1 mas) can be
|
|
obtained by using instead the iauC2i00b function.
|
|
|
|
Called:
|
|
Pnm00a classical NPB matrix, IAU 2000A
|
|
C2ibpn celestial-to-intermediate matrix, given NPB matrix
|
|
|
|
References:
|
|
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154
|
|
(2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func C2i00a(date1, date2 float64, rc2i *[3][3]float64) {
|
|
var rbpn [3][3]float64
|
|
|
|
/* Obtain the celestial-to-true matrix (IAU 2000A). */
|
|
Pnm00a(date1, date2, &rbpn)
|
|
|
|
/* Form the celestial-to-intermediate matrix. */
|
|
C2ibpn(date1, date2, rbpn, rc2i)
|
|
}
|
|
|
|
/*
|
|
C2i00b Celestial-to-intermediate matrix, IAU 2000B
|
|
Form the celestial-to-intermediate matrix for a given date using the
|
|
IAU 2000B precession-nutation model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rc2i [3][3]float64 celestial-to-intermediate matrix (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix rc2i is the first stage in the transformation from
|
|
celestial to terrestrial coordinates:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
|
|
|
|
= rc2t * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), ERA is the Earth
|
|
Rotation Angle and RPOM is the polar motion matrix.
|
|
|
|
3) The present function is faster, but slightly less accurate (about
|
|
1 mas), than the iauC2i00a function.
|
|
|
|
Called:
|
|
Pnm00b classical NPB matrix, IAU 2000B
|
|
C2ibpn celestial-to-intermediate matrix, given NPB matrix
|
|
|
|
References:
|
|
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154
|
|
(2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func C2i00b(date1, date2 float64, rc2i *[3][3]float64) {
|
|
var rbpn [3][3]float64
|
|
|
|
/* Obtain the celestial-to-true matrix (IAU 2000B). */
|
|
Pnm00b(date1, date2, &rbpn)
|
|
|
|
/* Form the celestial-to-intermediate matrix. */
|
|
C2ibpn(date1, date2, rbpn, rc2i)
|
|
}
|
|
|
|
/*
|
|
C2i06a Celestial-to-intermediate matrix, IAU 2006/2000A
|
|
Form the celestial-to-intermediate matrix for a given date using the
|
|
IAU 2006 precession and IAU 2000A nutation models.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rc2i [3][3]float64 celestial-to-intermediate matrix (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix rc2i is the first stage in the transformation from
|
|
celestial to terrestrial coordinates:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
|
|
|
|
= RC2T * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), ERA is the Earth
|
|
Rotation Angle and RPOM is the polar motion matrix.
|
|
|
|
Called:
|
|
Pnm06a classical NPB matrix, IAU 2006/2000A
|
|
Bpn2xy extract CIP X,Y coordinates from NPB matrix
|
|
S06 the CIO locator s, given X,Y, IAU 2006
|
|
C2ixys celestial-to-intermediate matrix, given X,Y and s
|
|
|
|
References:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG
|
|
*/
|
|
func C2i06a(date1, date2 float64, rc2i *[3][3]float64) {
|
|
var rbpn [3][3]float64
|
|
var x, y, s float64
|
|
|
|
/* Obtain the celestial-to-true matrix (IAU 2006/2000A). */
|
|
Pnm06a(date1, date2, &rbpn)
|
|
|
|
/* Extract the X,Y coordinates. */
|
|
Bpn2xy(rbpn, &x, &y)
|
|
|
|
/* Obtain the CIO locator. */
|
|
s = S06(date1, date2, x, y)
|
|
|
|
/* Form the celestial-to-intermediate matrix. */
|
|
C2ixys(x, y, s, rc2i)
|
|
}
|
|
|
|
/*
|
|
C2ibpn Celestial-to-intermediate matrix given B-P-N
|
|
Form the celestial-to-intermediate matrix for a given date given
|
|
the bias-precession-nutation matrix. IAU 2000.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
rbpn [3][3]float64 celestial-to-true matrix (Note 2)
|
|
|
|
Returned:
|
|
rc2i [3][3]float64 celestial-to-intermediate matrix (Note 3)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix rbpn transforms vectors from GCRS to true equator (and
|
|
CIO or equinox) of date. Only the CIP (bottom row) is used.
|
|
|
|
3) The matrix rc2i is the first stage in the transformation from
|
|
celestial to terrestrial coordinates:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
|
|
|
|
= RC2T * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), ERA is the Earth
|
|
Rotation Angle and RPOM is the polar motion matrix.
|
|
|
|
4) Although its name does not include "00", This function is in fact
|
|
specific to the IAU 2000 models.
|
|
|
|
Called:
|
|
Bpn2xy extract CIP X,Y coordinates from NPB matrix
|
|
C2ixy celestial-to-intermediate matrix, given X,Y
|
|
|
|
References:
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func C2ibpn(date1, date2 float64, rbpn [3][3]float64, rc2i *[3][3]float64) {
|
|
var x, y float64
|
|
|
|
/* Extract the X,Y coordinates. */
|
|
Bpn2xy(rbpn, &x, &y)
|
|
|
|
/* Form the celestial-to-intermediate matrix (n.b. IAU 2000 specific). */
|
|
C2ixy(date1, date2, x, y, rc2i)
|
|
}
|
|
|
|
/*
|
|
C2ixy Celestial-to-intermediate matrix given CIP
|
|
Form the celestial to intermediate-frame-of-date matrix for a given
|
|
date when the CIP X,Y coordinates are known. IAU 2000.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
x,y float64 Celestial Intermediate Pole (Note 2)
|
|
|
|
Returned:
|
|
rc2i [3][3]float64 celestial-to-intermediate matrix (Note 3)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The Celestial Intermediate Pole coordinates are the x,y components
|
|
of the unit vector in the Geocentric Celestial Reference System.
|
|
|
|
3) The matrix rc2i is the first stage in the transformation from
|
|
celestial to terrestrial coordinates:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
|
|
|
|
= RC2T * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), ERA is the Earth
|
|
Rotation Angle and RPOM is the polar motion matrix.
|
|
|
|
4) Although its name does not include "00", This function is in fact
|
|
specific to the IAU 2000 models.
|
|
|
|
Called:
|
|
C2ixys celestial-to-intermediate matrix, given X,Y and s
|
|
S00 the CIO locator s, given X,Y, IAU 2000A
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func C2ixy(date1, date2 float64, x, y float64, rc2i *[3][3]float64) {
|
|
/* Compute s and then the matrix. */
|
|
C2ixys(x, y, S00(date1, date2, x, y), rc2i)
|
|
}
|
|
|
|
/*
|
|
C2ixys Celestial-to-intermediate matrix given CIP and s
|
|
Form the celestial to intermediate-frame-of-date matrix given the CIP
|
|
X,Y and the CIO locator s.
|
|
|
|
Given:
|
|
x,y float64 Celestial Intermediate Pole (Note 1)
|
|
s float64 the CIO locator s (Note 2)
|
|
|
|
Returned:
|
|
rc2i [3][3]float64 celestial-to-intermediate matrix (Note 3)
|
|
|
|
Notes:
|
|
|
|
1) The Celestial Intermediate Pole coordinates are the x,y
|
|
components of the unit vector in the Geocentric Celestial
|
|
Reference System.
|
|
|
|
2) The CIO locator s (in radians) positions the Celestial
|
|
Intermediate Origin on the equator of the CIP.
|
|
|
|
3) The matrix rc2i is the first stage in the transformation from
|
|
celestial to terrestrial coordinates:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
|
|
|
|
= RC2T * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), ERA is the Earth
|
|
Rotation Angle and RPOM is the polar motion matrix.
|
|
|
|
Called:
|
|
Ir initialize r-matrix to identity
|
|
Rz rotate around Z-axis
|
|
Ry rotate around Y-axis
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func C2ixys(x, y, s float64, rc2i *[3][3]float64) {
|
|
var r2, e, d float64
|
|
|
|
/* Obtain the spherical angles E and d. */
|
|
r2 = x*x + y*y
|
|
// e = (r2 > 0.0) ? atan2(y, x) : 0.0;
|
|
if r2 > 0.0 {
|
|
e = atan2(y, x)
|
|
} else {
|
|
e = 0.0
|
|
}
|
|
d = atan(sqrt(r2 / (1.0 - r2)))
|
|
|
|
/* Form the matrix. */
|
|
Ir(rc2i)
|
|
Rz(e, rc2i)
|
|
Ry(d, rc2i)
|
|
Rz(-(e + s), rc2i)
|
|
}
|
|
|
|
/*
|
|
C2t00a Celestial-to-terrestrial matrix, IAU 2000A
|
|
Form the celestial to terrestrial matrix given the date, the UT1 and
|
|
the polar motion, using the IAU 2000A precession-nutation model.
|
|
|
|
Given:
|
|
tta,ttb float64 TT as a 2-part Julian Date (Note 1)
|
|
uta,utb float64 UT1 as a 2-part Julian Date (Note 1)
|
|
xp,yp float64 CIP coordinates (radians, Note 2)
|
|
|
|
Returned:
|
|
rc2t [3][3]float64 celestial-to-terrestrial matrix (Note 3)
|
|
|
|
Notes:
|
|
|
|
1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates,
|
|
apportioned in any convenient way between the arguments uta and
|
|
utb. For example, JD(UT1)=2450123.7 could be expressed in any of
|
|
these ways, among others:
|
|
|
|
uta utb
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution is
|
|
acceptable. The J2000 and MJD methods are good compromises
|
|
between resolution and convenience. In the case of uta,utb, the
|
|
date & time method is best matched to the Earth rotation angle
|
|
algorithm used: maximum precision is delivered when the uta
|
|
argument is for 0hrs UT1 on the day in question and the utb
|
|
argument lies in the range 0 to 1, or vice versa.
|
|
|
|
2) The arguments xp and yp are the coordinates (in radians) of the
|
|
Celestial Intermediate Pole with respect to the International
|
|
Terrestrial Reference System (see IERS Conventions 2003),
|
|
measured along the meridians 0 and 90 deg west respectively.
|
|
|
|
3) The matrix rc2t transforms from celestial to terrestrial
|
|
coordinates:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * RC2I * [CRS]
|
|
|
|
= rc2t * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), RC2I is the
|
|
celestial-to-intermediate matrix, ERA is the Earth rotation
|
|
angle and RPOM is the polar motion matrix.
|
|
|
|
4) A faster, but slightly less accurate, result (about 1 mas) can
|
|
be obtained by using instead the iauC2t00b function.
|
|
|
|
Called:
|
|
C2i00a celestial-to-intermediate matrix, IAU 2000A
|
|
Era00 Earth rotation angle, IAU 2000
|
|
Sp00 the TIO locator s', IERS 2000
|
|
Pom00 polar motion matrix
|
|
C2tcio form CIO-based celestial-to-terrestrial matrix
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func C2t00a(tta, ttb float64, uta, utb float64, xp, yp float64, rc2t *[3][3]float64) {
|
|
var rc2i, rpom [3][3]float64
|
|
var era, sp float64
|
|
|
|
/* Form the celestial-to-intermediate matrix for this TT (IAU 2000A). */
|
|
C2i00a(tta, ttb, &rc2i)
|
|
|
|
/* Predict the Earth rotation angle for this UT1. */
|
|
era = Era00(uta, utb)
|
|
|
|
/* Estimate s'. */
|
|
sp = Sp00(tta, ttb)
|
|
|
|
/* Form the polar motion matrix. */
|
|
Pom00(xp, yp, sp, &rpom)
|
|
|
|
/* Combine to form the celestial-to-terrestrial matrix. */
|
|
C2tcio(rc2i, era, rpom, rc2t)
|
|
}
|
|
|
|
/*
|
|
C2t00b Celestial-to-terrestrial matrix, IAU 2000B
|
|
Form the celestial to terrestrial matrix given the date, the UT1 and
|
|
the polar motion, using the IAU 2000B precession-nutation model.
|
|
|
|
Given:
|
|
tta,ttb float64 TT as a 2-part Julian Date (Note 1)
|
|
uta,utb float64 UT1 as a 2-part Julian Date (Note 1)
|
|
xp,yp float64 coordinates of the pole (radians, Note 2)
|
|
|
|
Returned:
|
|
rc2t [3][3]float64 celestial-to-terrestrial matrix (Note 3)
|
|
|
|
Notes:
|
|
|
|
1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates,
|
|
apportioned in any convenient way between the arguments uta and
|
|
utb. For example, JD(UT1)=2450123.7 could be expressed in any of
|
|
these ways, among others:
|
|
|
|
uta utb
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution is
|
|
acceptable. The J2000 and MJD methods are good compromises
|
|
between resolution and convenience. In the case of uta,utb, the
|
|
date & time method is best matched to the Earth rotation angle
|
|
algorithm used: maximum precision is delivered when the uta
|
|
argument is for 0hrs UT1 on the day in question and the utb
|
|
argument lies in the range 0 to 1, or vice versa.
|
|
|
|
2) The arguments xp and yp are the coordinates (in radians) of the
|
|
Celestial Intermediate Pole with respect to the International
|
|
Terrestrial Reference System (see IERS Conventions 2003),
|
|
measured along the meridians 0 and 90 deg west respectively.
|
|
|
|
3) The matrix rc2t transforms from celestial to terrestrial
|
|
coordinates:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * RC2I * [CRS]
|
|
|
|
= rc2t * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), RC2I is the
|
|
celestial-to-intermediate matrix, ERA is the Earth rotation
|
|
angle and RPOM is the polar motion matrix.
|
|
|
|
4) The present function is faster, but slightly less accurate (about
|
|
1 mas), than the iauC2t00a function.
|
|
|
|
Called:
|
|
C2i00b celestial-to-intermediate matrix, IAU 2000B
|
|
Era00 Earth rotation angle, IAU 2000
|
|
Pom00 polar motion matrix
|
|
C2tcio form CIO-based celestial-to-terrestrial matrix
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func C2t00b(tta, ttb float64, uta, utb float64, xp, yp float64, rc2t *[3][3]float64) {
|
|
var rc2i, rpom [3][3]float64
|
|
var era float64
|
|
|
|
/* Form the celestial-to-intermediate matrix for this TT (IAU 2000B). */
|
|
C2i00b(tta, ttb, &rc2i)
|
|
|
|
/* Predict the Earth rotation angle for this UT1. */
|
|
era = Era00(uta, utb)
|
|
|
|
/* Form the polar motion matrix (neglecting s'). */
|
|
Pom00(xp, yp, 0.0, &rpom)
|
|
|
|
/* Combine to form the celestial-to-terrestrial matrix. */
|
|
C2tcio(rc2i, era, rpom, rc2t)
|
|
}
|
|
|
|
/*
|
|
C2t06a Celestial-to-terrestrial matrix, IAU 2006/2000A
|
|
Form the celestial to terrestrial matrix given the date, the UT1 and
|
|
the polar motion, using the IAU 2006/2000A precession-nutation
|
|
model.
|
|
|
|
Given:
|
|
tta,ttb float64 TT as a 2-part Julian Date (Note 1)
|
|
uta,utb float64 UT1 as a 2-part Julian Date (Note 1)
|
|
xp,yp float64 coordinates of the pole (radians, Note 2)
|
|
|
|
Returned:
|
|
rc2t [3][3]float64 celestial-to-terrestrial matrix (Note 3)
|
|
|
|
Notes:
|
|
|
|
1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates,
|
|
apportioned in any convenient way between the two arguments. For
|
|
example, JD(UT1)=2450123.7 could be expressed in any of
|
|
these ways, among others:
|
|
|
|
uta utb
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution is
|
|
acceptable. The J2000 and MJD methods are good compromises
|
|
between resolution and convenience. In the case of uta,utb, the
|
|
date & time method is best matched to the Earth rotation angle
|
|
algorithm used: maximum precision is delivered when the uta
|
|
argument is for 0hrs UT1 on the day in question and the utb
|
|
argument lies in the range 0 to 1, or vice versa.
|
|
|
|
2) The arguments xp and yp are the coordinates (in radians) of the
|
|
Celestial Intermediate Pole with respect to the International
|
|
Terrestrial Reference System (see IERS Conventions 2003),
|
|
measured along the meridians 0 and 90 deg west respectively.
|
|
|
|
3) The matrix rc2t transforms from celestial to terrestrial
|
|
coordinates:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * RC2I * [CRS]
|
|
|
|
= rc2t * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), RC2I is the
|
|
celestial-to-intermediate matrix, ERA is the Earth rotation
|
|
angle and RPOM is the polar motion matrix.
|
|
|
|
Called:
|
|
C2i06a celestial-to-intermediate matrix, IAU 2006/2000A
|
|
Era00 Earth rotation angle, IAU 2000
|
|
Sp00 the TIO locator s', IERS 2000
|
|
Pom00 polar motion matrix
|
|
C2tcio form CIO-based celestial-to-terrestrial matrix
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG
|
|
*/
|
|
func C2t06a(tta, ttb float64, uta, utb float64, xp, yp float64, rc2t *[3][3]float64) {
|
|
var rc2i, rpom [3][3]float64
|
|
var era, sp float64
|
|
|
|
/* Form the celestial-to-intermediate matrix for this TT. */
|
|
C2i06a(tta, ttb, &rc2i)
|
|
|
|
/* Predict the Earth rotation angle for this UT1. */
|
|
era = Era00(uta, utb)
|
|
|
|
/* Estimate s'. */
|
|
sp = Sp00(tta, ttb)
|
|
|
|
/* Form the polar motion matrix. */
|
|
Pom00(xp, yp, sp, &rpom)
|
|
|
|
/* Combine to form the celestial-to-terrestrial matrix. */
|
|
C2tcio(rc2i, era, rpom, rc2t)
|
|
}
|
|
|
|
/*
|
|
C2tcio Form CIO-based Celestial-to-terrestrial matrix
|
|
Assemble the celestial to terrestrial matrix from CIO-based
|
|
components (the celestial-to-intermediate matrix, the Earth Rotation
|
|
Angle and the polar motion matrix).
|
|
|
|
Given:
|
|
rc2i [3][3]float64 celestial-to-intermediate matrix
|
|
era float64 Earth rotation angle (radians)
|
|
rpom [3][3]float64 polar-motion matrix
|
|
|
|
Returned:
|
|
rc2t [3][3]float64 celestial-to-terrestrial matrix
|
|
|
|
Notes:
|
|
|
|
1) This function constructs the rotation matrix that transforms
|
|
vectors in the celestial system into vectors in the terrestrial
|
|
system. It does so starting from precomputed components, namely
|
|
the matrix which rotates from celestial coordinates to the
|
|
intermediate frame, the Earth rotation angle and the polar motion
|
|
matrix. One use of the present function is when generating a
|
|
series of celestial-to-terrestrial matrices where only the Earth
|
|
Rotation Angle changes, avoiding the considerable overhead of
|
|
recomputing the precession-nutation more often than necessary to
|
|
achieve given accuracy objectives.
|
|
|
|
2) The relationship between the arguments is as follows:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * rc2i * [CRS]
|
|
|
|
= rc2t * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003).
|
|
|
|
Called:
|
|
Cr copy r-matrix
|
|
Rz rotate around Z-axis
|
|
Rxr product of two r-matrices
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG
|
|
*/
|
|
func C2tcio(rc2i [3][3]float64, era float64, rpom [3][3]float64, rc2t *[3][3]float64) {
|
|
var r [3][3]float64
|
|
|
|
/* Construct the matrix. */
|
|
Cr(rc2i, &r)
|
|
Rz(era, &r)
|
|
Rxr(rpom, r, rc2t)
|
|
}
|
|
|
|
/*
|
|
C2teqx Celestial-to-terrestrial matrix, classical
|
|
Assemble the celestial to terrestrial matrix from equinox-based
|
|
components (the celestial-to-true matrix, the Greenwich Apparent
|
|
Sidereal Time and the polar motion matrix).
|
|
|
|
Given:
|
|
rbpn [3][3]float64 celestial-to-true matrix
|
|
gst float64 Greenwich (apparent) Sidereal Time (radians)
|
|
rpom [3][3]float64 polar-motion matrix
|
|
|
|
Returned:
|
|
rc2t [3][3]float64 celestial-to-terrestrial matrix (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) This function constructs the rotation matrix that transforms
|
|
vectors in the celestial system into vectors in the terrestrial
|
|
system. It does so starting from precomputed components, namely
|
|
the matrix which rotates from celestial coordinates to the
|
|
true equator and equinox of date, the Greenwich Apparent Sidereal
|
|
Time and the polar motion matrix. One use of the present function
|
|
is when generating a series of celestial-to-terrestrial matrices
|
|
where only the Sidereal Time changes, avoiding the considerable
|
|
overhead of recomputing the precession-nutation more often than
|
|
necessary to achieve given accuracy objectives.
|
|
|
|
2) The relationship between the arguments is as follows:
|
|
|
|
[TRS] = rpom * R_3(gst) * rbpn * [CRS]
|
|
|
|
= rc2t * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003).
|
|
|
|
Called:
|
|
Cr copy r-matrix
|
|
Rz rotate around Z-axis
|
|
Rxr product of two r-matrices
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func C2teqx(rbpn [3][3]float64, gst float64, rpom [3][3]float64, rc2t *[3][3]float64) {
|
|
var r [3][3]float64
|
|
|
|
/* Construct the matrix. */
|
|
Cr(rbpn, &r)
|
|
Rz(gst, &r)
|
|
Rxr(rpom, r, rc2t)
|
|
}
|
|
|
|
/*
|
|
C2tpe Celestial-to-terrestrial matrix given nutation
|
|
Form the celestial to terrestrial matrix given the date, the UT1,
|
|
the nutation and the polar motion. IAU 2000.
|
|
|
|
Given:
|
|
tta,ttb float64 TT as a 2-part Julian Date (Note 1)
|
|
uta,utb float64 UT1 as a 2-part Julian Date (Note 1)
|
|
dpsi,deps float64 nutation (Note 2)
|
|
xp,yp float64 coordinates of the pole (radians, Note 3)
|
|
|
|
Returned:
|
|
rc2t [3][3]float64 celestial-to-terrestrial matrix (Note 4)
|
|
|
|
Notes:
|
|
|
|
1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates,
|
|
apportioned in any convenient way between the arguments uta and
|
|
utb. For example, JD(UT1)=2450123.7 could be expressed in any of
|
|
these ways, among others:
|
|
|
|
uta utb
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution is
|
|
acceptable. The J2000 and MJD methods are good compromises
|
|
between resolution and convenience. In the case of uta,utb, the
|
|
date & time method is best matched to the Earth rotation angle
|
|
algorithm used: maximum precision is delivered when the uta
|
|
argument is for 0hrs UT1 on the day in question and the utb
|
|
argument lies in the range 0 to 1, or vice versa.
|
|
|
|
2) The caller is responsible for providing the nutation components;
|
|
they are in longitude and obliquity, in radians and are with
|
|
respect to the equinox and ecliptic of date. For high-accuracy
|
|
applications, free core nutation should be included as well as
|
|
any other relevant corrections to the position of the CIP.
|
|
|
|
3) The arguments xp and yp are the coordinates (in radians) of the
|
|
Celestial Intermediate Pole with respect to the International
|
|
Terrestrial Reference System (see IERS Conventions 2003),
|
|
measured along the meridians 0 and 90 deg west respectively.
|
|
|
|
4) The matrix rc2t transforms from celestial to terrestrial
|
|
coordinates:
|
|
|
|
[TRS] = RPOM * R_3(GST) * RBPN * [CRS]
|
|
|
|
= rc2t * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), RBPN is the
|
|
bias-precession-nutation matrix, GST is the Greenwich (apparent)
|
|
Sidereal Time and RPOM is the polar motion matrix.
|
|
|
|
5) Although its name does not include "00", This function is in fact
|
|
specific to the IAU 2000 models.
|
|
|
|
Called:
|
|
Pn00 bias/precession/nutation results, IAU 2000
|
|
Gmst00 Greenwich mean sidereal time, IAU 2000
|
|
Sp00 the TIO locator s', IERS 2000
|
|
Ee00 equation of the equinoxes, IAU 2000
|
|
Pom00 polar motion matrix
|
|
C2teqx form equinox-based celestial-to-terrestrial matrix
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func C2tpe(tta, ttb float64, uta, utb float64, dpsi, deps float64, xp, yp float64, rc2t *[3][3]float64) {
|
|
var epsa, gmst, ee, sp float64
|
|
var rb, rp, rbp, rn, rbpn, rpom [3][3]float64
|
|
|
|
/* Form the celestial-to-true matrix for this TT. */
|
|
Pn00(tta, ttb, dpsi, deps, &epsa, &rb, &rp, &rbp, &rn, &rbpn)
|
|
|
|
/* Predict the Greenwich Mean Sidereal Time for this UT1 and TT. */
|
|
gmst = Gmst00(uta, utb, tta, ttb)
|
|
|
|
/* Predict the equation of the equinoxes given TT and nutation. */
|
|
ee = Ee00(tta, ttb, epsa, dpsi)
|
|
|
|
/* Estimate s'. */
|
|
sp = Sp00(tta, ttb)
|
|
|
|
/* Form the polar motion matrix. */
|
|
Pom00(xp, yp, sp, &rpom)
|
|
|
|
/* Combine to form the celestial-to-terrestrial matrix. */
|
|
C2teqx(rbpn, gmst+ee, rpom, rc2t)
|
|
}
|
|
|
|
/*
|
|
C2txy Celestial-to-terrestrial matrix given CIP
|
|
Form the celestial to terrestrial matrix given the date, the UT1,
|
|
the CIP coordinates and the polar motion. IAU 2000.
|
|
|
|
Given:
|
|
tta,ttb float64 TT as a 2-part Julian Date (Note 1)
|
|
uta,utb float64 UT1 as a 2-part Julian Date (Note 1)
|
|
x,y float64 Celestial Intermediate Pole (Note 2)
|
|
xp,yp float64 coordinates of the pole (radians, Note 3)
|
|
|
|
Returned:
|
|
rc2t [3][3]float64 celestial-to-terrestrial matrix (Note 4)
|
|
|
|
Notes:
|
|
|
|
1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates,
|
|
apportioned in any convenient way between the arguments uta and
|
|
utb. For example, JD(UT1)=2450123.7 could be expressed in any o
|
|
these ways, among others:
|
|
|
|
uta utb
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution is
|
|
acceptable. The J2000 and MJD methods are good compromises
|
|
between resolution and convenience. In the case of uta,utb, the
|
|
date & time method is best matched to the Earth rotation angle
|
|
algorithm used: maximum precision is delivered when the uta
|
|
argument is for 0hrs UT1 on the day in question and the utb
|
|
argument lies in the range 0 to 1, or vice versa.
|
|
|
|
2) The Celestial Intermediate Pole coordinates are the x,y
|
|
components of the unit vector in the Geocentric Celestial
|
|
Reference System.
|
|
|
|
3) The arguments xp and yp are the coordinates (in radians) of the
|
|
Celestial Intermediate Pole with respect to the International
|
|
Terrestrial Reference System (see IERS Conventions 2003),
|
|
measured along the meridians 0 and 90 deg west respectively.
|
|
|
|
4) The matrix rc2t transforms from celestial to terrestrial
|
|
coordinates:
|
|
|
|
[TRS] = RPOM * R_3(ERA) * RC2I * [CRS]
|
|
|
|
= rc2t * [CRS]
|
|
|
|
where [CRS] is a vector in the Geocentric Celestial Reference
|
|
System and [TRS] is a vector in the International Terrestrial
|
|
Reference System (see IERS Conventions 2003), ERA is the Earth
|
|
Rotation Angle and RPOM is the polar motion matrix.
|
|
|
|
5) Although its name does not include "00", This function is in fact
|
|
specific to the IAU 2000 models.
|
|
|
|
Called:
|
|
C2ixy celestial-to-intermediate matrix, given X,Y
|
|
Era00 Earth rotation angle, IAU 2000
|
|
Sp00 the TIO locator s', IERS 2000
|
|
Pom00 polar motion matrix
|
|
C2tcio form CIO-based celestial-to-terrestrial matrix
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func C2txy(tta, ttb float64, uta, utb float64, x, y float64, xp, yp float64, rc2t *[3][3]float64) {
|
|
var rc2i, rpom [3][3]float64
|
|
var era, sp float64
|
|
|
|
/* Form the celestial-to-intermediate matrix for this TT. */
|
|
C2ixy(tta, ttb, x, y, &rc2i)
|
|
|
|
/* Predict the Earth rotation angle for this UT1. */
|
|
era = Era00(uta, utb)
|
|
|
|
/* Estimate s'. */
|
|
sp = Sp00(tta, ttb)
|
|
|
|
/* Form the polar motion matrix. */
|
|
Pom00(xp, yp, sp, &rpom)
|
|
|
|
/* Combine to form the celestial-to-terrestrial matrix. */
|
|
C2tcio(rc2i, era, rpom, rc2t)
|
|
}
|
|
|
|
/*
|
|
Eo06a Equation of the origins, IAU 2006/2000A
|
|
Equation of the origins, IAU 2006 precession and IAU 2000A nutation.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned (function value):
|
|
float64 the equation of the origins in radians
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The equation of the origins is the distance between the true
|
|
equinox and the celestial intermediate origin and, equivalently,
|
|
the difference between Earth rotation angle and Greenwich
|
|
apparent sidereal time (ERA-GST). It comprises the precession
|
|
(since J2000.0) in right ascension plus the equation of the
|
|
equinoxes (including the small correction terms).
|
|
|
|
Called:
|
|
Pnm06a classical NPB matrix, IAU 2006/2000A
|
|
Bpn2xy extract CIP X,Y coordinates from NPB matrix
|
|
S06 the CIO locator s, given X,Y, IAU 2006
|
|
Eors equation of the origins, given NPB matrix and s
|
|
|
|
References:
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
|
|
|
|
Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
|
|
*/
|
|
func Eo06a(date1, date2 float64) float64 {
|
|
var r [3][3]float64
|
|
var x, y, s, eo float64
|
|
|
|
/* Classical nutation x precession x bias matrix. */
|
|
Pnm06a(date1, date2, &r)
|
|
|
|
/* Extract CIP coordinates. */
|
|
Bpn2xy(r, &x, &y)
|
|
|
|
/* The CIO locator, s. */
|
|
s = S06(date1, date2, x, y)
|
|
|
|
/* Solve for the EO. */
|
|
eo = Eors(r, s)
|
|
|
|
return eo
|
|
|
|
}
|
|
|
|
/*
|
|
Eors Equation of the origins, given NPB matrix and s
|
|
Equation of the origins, given the classical NPB matrix and the
|
|
quantity s.
|
|
|
|
Given:
|
|
rnpb [3][3]float64 classical nutation x precession x bias matrix
|
|
s float64 the quantity s (the CIO locator) in radians
|
|
|
|
Returned (function value):
|
|
float64 the equation of the origins in radians
|
|
|
|
Notes:
|
|
|
|
1) The equation of the origins is the distance between the true
|
|
equinox and the celestial intermediate origin and, equivalently,
|
|
the difference between Earth rotation angle and Greenwich
|
|
apparent sidereal time (ERA-GST). It comprises the precession
|
|
(since J2000.0) in right ascension plus the equation of the
|
|
equinoxes (including the small correction terms).
|
|
|
|
2) The algorithm is from Wallace & Capitaine (2006).
|
|
|
|
References:
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
|
|
|
|
Wallace, P. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
|
|
*/
|
|
func Eors(rnpb [3][3]float64, s float64) float64 {
|
|
var x, ax, xs, ys, zs, p, q, eo float64
|
|
|
|
/* Evaluate Wallace & Capitaine (2006) expression (16). */
|
|
x = rnpb[2][0]
|
|
ax = x / (1.0 + rnpb[2][2])
|
|
xs = 1.0 - ax*x
|
|
ys = -ax * rnpb[2][1]
|
|
zs = -x
|
|
p = rnpb[0][0]*xs + rnpb[0][1]*ys + rnpb[0][2]*zs
|
|
q = rnpb[1][0]*xs + rnpb[1][1]*ys + rnpb[1][2]*zs
|
|
// eo = ((p != 0) || (q != 0)) ? s - atan2(q, p) : s;
|
|
if (p != 0) || (q != 0) {
|
|
eo = s - atan2(q, p)
|
|
} else {
|
|
eo = s
|
|
}
|
|
|
|
return eo
|
|
}
|
|
|
|
/*
|
|
Fw2m Fukushima-Williams angles to r-matrix
|
|
Form rotation matrix given the Fukushima-Williams angles.
|
|
|
|
Given:
|
|
gamb float64 F-W angle gamma_bar (radians)
|
|
phib float64 F-W angle phi_bar (radians)
|
|
psi float64 F-W angle psi (radians)
|
|
eps float64 F-W angle epsilon (radians)
|
|
|
|
Returned:
|
|
r [3][3]float64 rotation matrix
|
|
|
|
Notes:
|
|
|
|
1) Naming the following points:
|
|
|
|
e = J2000.0 ecliptic pole,
|
|
p = GCRS pole,
|
|
E = ecliptic pole of date,
|
|
and P = CIP,
|
|
|
|
the four Fukushima-Williams angles are as follows:
|
|
|
|
gamb = gamma = epE
|
|
phib = phi = pE
|
|
psi = psi = pEP
|
|
eps = epsilon = EP
|
|
|
|
2) The matrix representing the combined effects of frame bias,
|
|
precession and nutation is:
|
|
|
|
NxPxB = R_1(-eps).R_3(-psi).R_1(phib).R_3(gamb)
|
|
|
|
3) The present function can construct three different matrices,
|
|
depending on which angles are supplied as the arguments gamb,
|
|
phib, psi and eps:
|
|
|
|
o To obtain the nutation x precession x frame bias matrix,
|
|
first generate the four precession angles known conventionally
|
|
as gamma_bar, phi_bar, psi_bar and epsilon_A, then generate
|
|
the nutation components Dpsi and Depsilon and add them to
|
|
psi_bar and epsilon_A, and finally call the present function
|
|
using those four angles as arguments.
|
|
|
|
o To obtain the precession x frame bias matrix, generate the
|
|
four precession angles and call the present function.
|
|
|
|
o To obtain the frame bias matrix, generate the four precession
|
|
angles for date J2000.0 and call the present function.
|
|
|
|
The nutation-only and precession-only matrices can if necessary
|
|
be obtained by combining these three appropriately.
|
|
|
|
Called:
|
|
Ir initialize r-matrix to identity
|
|
Rz rotate around Z-axis
|
|
Rx rotate around X-axis
|
|
|
|
References:
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
|
|
|
|
Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
|
|
*/
|
|
func Fw2m(gamb, phib, psi, eps float64, r *[3][3]float64) {
|
|
Ir(r)
|
|
Rz(gamb, r)
|
|
Rx(phib, r)
|
|
Rz(-psi, r)
|
|
Rx(-eps, r)
|
|
}
|
|
|
|
/*
|
|
Fw2xy Fukushima-Williams angles to X,Y
|
|
CIP X,Y given Fukushima-Williams bias-precession-nutation angles.
|
|
|
|
Given:
|
|
gamb float64 F-W angle gamma_bar (radians)
|
|
phib float64 F-W angle phi_bar (radians)
|
|
psi float64 F-W angle psi (radians)
|
|
eps float64 F-W angle epsilon (radians)
|
|
|
|
Returned:
|
|
x,y float64 CIP unit vector X,Y
|
|
|
|
Notes:
|
|
|
|
1) Naming the following points:
|
|
|
|
e = J2000.0 ecliptic pole,
|
|
p = GCRS pole
|
|
E = ecliptic pole of date,
|
|
and P = CIP,
|
|
|
|
the four Fukushima-Williams angles are as follows:
|
|
|
|
gamb = gamma = epE
|
|
phib = phi = pE
|
|
psi = psi = pEP
|
|
eps = epsilon = EP
|
|
|
|
2) The matrix representing the combined effects of frame bias,
|
|
precession and nutation is:
|
|
|
|
NxPxB = R_1(-epsA).R_3(-psi).R_1(phib).R_3(gamb)
|
|
|
|
The returned values x,y are elements [2][0] and [2][1] of the
|
|
matrix. Near J2000.0, they are essentially angles in radians.
|
|
|
|
Called:
|
|
Fw2m F-W angles to r-matrix
|
|
Bpn2xy extract CIP X,Y coordinates from NPB matrix
|
|
|
|
Reference:
|
|
|
|
Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
|
|
*/
|
|
func Fw2xy(gamb, phib float64, psi, eps float64, x, y *float64) {
|
|
var r [3][3]float64
|
|
|
|
/* Form NxPxB matrix. */
|
|
Fw2m(gamb, phib, psi, eps, &r)
|
|
|
|
/* Extract CIP X,Y. */
|
|
Bpn2xy(r, x, y)
|
|
}
|
|
|
|
/*
|
|
Ltp Long-term precession matrix.
|
|
|
|
Given:
|
|
epj float64 Julian epoch (TT)
|
|
|
|
Returned:
|
|
rp [3][3]float64 precession matrix, J2000.0 to date
|
|
|
|
Notes:
|
|
|
|
1) The matrix is in the sense
|
|
|
|
P_date = rp x P_J2000,
|
|
|
|
where P_J2000 is a vector with respect to the J2000.0 mean
|
|
equator and equinox and P_date is the same vector with respect to
|
|
the equator and equinox of epoch epj.
|
|
|
|
2) The Vondrak et al. (2011, 2012) 400 millennia precession model
|
|
agrees with the IAU 2006 precession at J2000.0 and stays within
|
|
100 microarcseconds during the 20th and 21st centuries. It is
|
|
accurate to a few arcseconds throughout the historical period,
|
|
worsening to a few tenths of a degree at the end of the
|
|
+/- 200,000 year time span.
|
|
|
|
Called:
|
|
Ltpequ equator pole, long term
|
|
Ltpecl ecliptic pole, long term
|
|
Pxp vector product
|
|
Pn normalize vector
|
|
|
|
References:
|
|
|
|
Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession
|
|
expressions, valid for long time intervals, Astron.Astrophys. 534,
|
|
A22
|
|
|
|
Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession
|
|
expressions, valid for long time intervals (Corrigendum),
|
|
Astron.Astrophys. 541, C1
|
|
*/
|
|
func Ltp(epj float64, rp *[3][3]float64) {
|
|
|
|
var peqr, pecl, v, eqx [3]float64
|
|
var w float64
|
|
|
|
/* Equator pole (bottom row of matrix). */
|
|
Ltpequ(epj, &peqr)
|
|
|
|
/* Ecliptic pole. */
|
|
Ltpecl(epj, &pecl)
|
|
|
|
/* Equinox (top row of matrix). */
|
|
Pxp(peqr, pecl, &v)
|
|
Pn(v, &w, &eqx)
|
|
|
|
/* Middle row of matrix. */
|
|
Pxp(peqr, eqx, &v)
|
|
|
|
/* Assemble the matrix. */
|
|
for i := 0; i < 3; i++ {
|
|
rp[0][i] = eqx[i]
|
|
rp[1][i] = v[i]
|
|
rp[2][i] = peqr[i]
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
Ltpb Long-term precession matrix, including ICRS frame bias.
|
|
|
|
Given:
|
|
epj float64 Julian epoch (TT)
|
|
|
|
Returned:
|
|
rpb [3][3]float64 precession-bias matrix, J2000.0 to date
|
|
|
|
Notes:
|
|
|
|
1) The matrix is in the sense
|
|
|
|
P_date = rpb x P_ICRS,
|
|
|
|
where P_ICRS is a vector in the Geocentric Celestial Reference
|
|
System, and P_date is the vector with respect to the Celestial
|
|
Intermediate Reference System at that date but with nutation
|
|
neglected.
|
|
|
|
2) A first order frame bias formulation is used, of sub-
|
|
microarcsecond accuracy compared with a full 3D rotation.
|
|
|
|
3) The Vondrak et al. (2011, 2012) 400 millennia precession model
|
|
agrees with the IAU 2006 precession at J2000.0 and stays within
|
|
100 microarcseconds during the 20th and 21st centuries. It is
|
|
accurate to a few arcseconds throughout the historical period,
|
|
worsening to a few tenths of a degree at the end of the
|
|
+/- 200,000 year time span.
|
|
|
|
References:
|
|
|
|
Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession
|
|
expressions, valid for long time intervals, Astron.Astrophys. 534,
|
|
A22
|
|
|
|
Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession
|
|
expressions, valid for long time intervals (Corrigendum),
|
|
Astron.Astrophys. 541, C1
|
|
*/
|
|
func Ltpb(epj float64, rpb *[3][3]float64) {
|
|
/* Frame bias (IERS Conventions 2010, Eqs. 5.21 and 5.33) */
|
|
dx := -0.016617 * DAS2R
|
|
de := -0.0068192 * DAS2R
|
|
dr := -0.0146 * DAS2R
|
|
|
|
var rp [3][3]float64
|
|
|
|
/* Precession matrix. */
|
|
Ltp(epj, &rp)
|
|
|
|
/* Apply the bias. */
|
|
for i := 0; i < 3; i++ {
|
|
rpb[i][0] = rp[i][0] - rp[i][1]*dr + rp[i][2]*dx
|
|
rpb[i][1] = rp[i][0]*dr + rp[i][1] + rp[i][2]*de
|
|
rpb[i][2] = -rp[i][0]*dx - rp[i][1]*de + rp[i][2]
|
|
}
|
|
}
|
|
|
|
/*
|
|
Ltpecl Long-term precession of the ecliptic.
|
|
|
|
Given:
|
|
epj float64 Julian epoch (TT)
|
|
|
|
Returned:
|
|
vec [3]float64 ecliptic pole unit vector
|
|
|
|
Notes:
|
|
|
|
1) The returned vector is with respect to the J2000.0 mean equator
|
|
and equinox.
|
|
|
|
2) The Vondrak et al. (2011, 2012) 400 millennia precession model
|
|
agrees with the IAU 2006 precession at J2000.0 and stays within
|
|
100 microarcseconds during the 20th and 21st centuries. It is
|
|
accurate to a few arcseconds throughout the historical period,
|
|
worsening to a few tenths of a degree at the end of the
|
|
+/- 200,000 year time span.
|
|
|
|
References:
|
|
|
|
Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession
|
|
expressions, valid for long time intervals, Astron.Astrophys. 534,
|
|
A22
|
|
|
|
Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession
|
|
expressions, valid for long time intervals (Corrigendum),
|
|
Astron.Astrophys. 541, C1
|
|
*/
|
|
func Ltpecl(epj float64, vec *[3]float64) {
|
|
|
|
/* Obliquity at J2000.0 (radians). */
|
|
const eps0 = 84381.406 * DAS2R
|
|
|
|
/* Polynomial coefficients */
|
|
const NPOL = 4
|
|
pqpol := [2][4]float64{
|
|
{5851.607687, -0.1189000, -0.00028913, 0.000000101},
|
|
{-1600.886300, 1.1689818, -0.00000020, -0.000000437},
|
|
}
|
|
|
|
/* Periodic coefficients */
|
|
pqper := [][5]float64{
|
|
{708.15, -5486.751211, -684.661560, 667.666730, -5523.863691},
|
|
{2309.00, -17.127623, 2446.283880, -2354.886252, -549.747450},
|
|
{1620.00, -617.517403, 399.671049, -428.152441, -310.998056},
|
|
{492.20, 413.442940, -356.652376, 376.202861, 421.535876},
|
|
{1183.00, 78.614193, -186.387003, 184.778874, -36.776172},
|
|
{622.00, -180.732815, -316.800070, 335.321713, -145.278396},
|
|
{882.00, -87.676083, 198.296701, -185.138669, -34.744450},
|
|
{547.00, 46.140315, 101.135679, -120.972830, 22.885731},
|
|
}
|
|
NPER := len(pqper)
|
|
|
|
/* Miscellaneous */
|
|
|
|
var t, p, q, w, a, s, c float64
|
|
|
|
/* Centuries since J2000. */
|
|
t = (epj - 2000.0) / 100.0
|
|
|
|
/* Initialize P_A and Q_A accumulators. */
|
|
p = 0.0
|
|
q = 0.0
|
|
|
|
/* Periodic terms. */
|
|
w = D2PI * t
|
|
for i := 0; i < NPER; i++ {
|
|
a = w / pqper[i][0]
|
|
s = sin(a)
|
|
c = cos(a)
|
|
p += c*pqper[i][1] + s*pqper[i][3]
|
|
q += c*pqper[i][2] + s*pqper[i][4]
|
|
}
|
|
|
|
/* Polynomial terms. */
|
|
w = 1.0
|
|
for i := 0; i < NPOL; i++ {
|
|
p += pqpol[0][i] * w
|
|
q += pqpol[1][i] * w
|
|
w *= t
|
|
}
|
|
|
|
/* P_A and Q_A (radians). */
|
|
p *= DAS2R
|
|
q *= DAS2R
|
|
|
|
/* Form the ecliptic pole vector. */
|
|
w = 1.0 - p*p - q*q
|
|
if w < 0.0 {
|
|
w = 0.0
|
|
} else {
|
|
w = sqrt(w)
|
|
}
|
|
|
|
s = sin(eps0)
|
|
c = cos(eps0)
|
|
vec[0] = p
|
|
vec[1] = -q*c - w*s
|
|
vec[2] = -q*s + w*c
|
|
}
|
|
|
|
/*
|
|
Ltpequ Long-term precession of the equator.
|
|
|
|
Given:
|
|
epj float64 Julian epoch (TT)
|
|
|
|
Returned:
|
|
veq [3]float64 equator pole unit vector
|
|
|
|
Notes:
|
|
|
|
1) The returned vector is with respect to the J2000.0 mean equator
|
|
and equinox.
|
|
|
|
2) The Vondrak et al. (2011, 2012) 400 millennia precession model
|
|
agrees with the IAU 2006 precession at J2000.0 and stays within
|
|
100 microarcseconds during the 20th and 21st centuries. It is
|
|
accurate to a few arcseconds throughout the historical period,
|
|
worsening to a few tenths of a degree at the end of the
|
|
+/- 200,000 year time span.
|
|
|
|
References:
|
|
|
|
Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession
|
|
expressions, valid for long time intervals, Astron.Astrophys. 534,
|
|
A22
|
|
|
|
Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession
|
|
expressions, valid for long time intervals (Corrigendum),
|
|
Astron.Astrophys. 541, C1
|
|
*/
|
|
func Ltpequ(epj float64, veq *[3]float64) {
|
|
/* Polynomial coefficients */
|
|
const NPOL = 4
|
|
xypol := [2][4]float64{
|
|
{5453.282155, 0.4252841, -0.00037173, -0.000000152},
|
|
{-73750.930350, -0.7675452, -0.00018725, 0.000000231},
|
|
}
|
|
|
|
/* Periodic coefficients */
|
|
xyper := [][5]float64{
|
|
{256.75, -819.940624, 75004.344875, 81491.287984, 1558.515853},
|
|
{708.15, -8444.676815, 624.033993, 787.163481, 7774.939698},
|
|
{274.20, 2600.009459, 1251.136893, 1251.296102, -2219.534038},
|
|
{241.45, 2755.175630, -1102.212834, -1257.950837, -2523.969396},
|
|
{2309.00, -167.659835, -2660.664980, -2966.799730, 247.850422},
|
|
{492.20, 871.855056, 699.291817, 639.744522, -846.485643},
|
|
{396.10, 44.769698, 153.167220, 131.600209, -1393.124055},
|
|
{288.90, -512.313065, -950.865637, -445.040117, 368.526116},
|
|
{231.10, -819.415595, 499.754645, 584.522874, 749.045012},
|
|
{1610.00, -538.071099, -145.188210, -89.756563, 444.704518},
|
|
{620.00, -189.793622, 558.116553, 524.429630, 235.934465},
|
|
{157.87, -402.922932, -23.923029, -13.549067, 374.049623},
|
|
{220.30, 179.516345, -165.405086, -210.157124, -171.330180},
|
|
{1200.00, -9.814756, 9.344131, -44.919798, -22.899655},
|
|
}
|
|
NPER := len(xyper)
|
|
|
|
/* Miscellaneous */
|
|
|
|
var t, x, y, w, a, s, c float64
|
|
|
|
/* Centuries since J2000. */
|
|
t = (epj - 2000.0) / 100.0
|
|
|
|
/* Initialize X and Y accumulators. */
|
|
x = 0.0
|
|
y = 0.0
|
|
|
|
/* Periodic terms. */
|
|
w = D2PI * t
|
|
for i := 0; i < NPER; i++ {
|
|
a = w / xyper[i][0]
|
|
s = sin(a)
|
|
c = cos(a)
|
|
x += c*xyper[i][1] + s*xyper[i][3]
|
|
y += c*xyper[i][2] + s*xyper[i][4]
|
|
}
|
|
|
|
/* Polynomial terms. */
|
|
w = 1.0
|
|
for i := 0; i < NPOL; i++ {
|
|
x += xypol[0][i] * w
|
|
y += xypol[1][i] * w
|
|
w *= t
|
|
}
|
|
|
|
/* X and Y (direction cosines). */
|
|
x *= DAS2R
|
|
y *= DAS2R
|
|
|
|
/* Form the equator pole vector. */
|
|
veq[0] = x
|
|
veq[1] = y
|
|
w = 1.0 - x*x - y*y
|
|
if w < 0.0 {
|
|
veq[2] = 0.0
|
|
} else {
|
|
veq[2] = sqrt(w)
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
Num00a Nutation matrix, IAU 2000A
|
|
Form the matrix of nutation for a given date, IAU 2000A model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rmatn [3][3]float64 nutation matrix
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(true) = rmatn * V(mean), where
|
|
the p-vector V(true) is with respect to the true equatorial triad
|
|
of date and the p-vector V(mean) is with respect to the mean
|
|
equatorial triad of date.
|
|
|
|
3) A faster, but slightly less accurate, result (about 1 mas) can be
|
|
obtained by using instead the iauNum00b function.
|
|
|
|
Called:
|
|
Pn00a bias/precession/nutation, IAU 2000A
|
|
|
|
Reference:
|
|
|
|
Explanatory Supplement to the Astronomical Almanac,
|
|
P. Kenneth Seidelmann (ed), University Science Books (1992),
|
|
Section 3.222-3 (p114).
|
|
*/
|
|
func Num00a(date1, date2 float64, rmatn *[3][3]float64) {
|
|
var dpsi, deps, epsa float64
|
|
var rb, rp, rbp, rbpn [3][3]float64
|
|
|
|
/* Obtain the required matrix (discarding other results). */
|
|
Pn00a(date1, date2,
|
|
&dpsi, &deps, &epsa, &rb, &rp, &rbp, rmatn, &rbpn)
|
|
}
|
|
|
|
/*
|
|
Num00b Nutation matrix, IAU 2000B
|
|
Form the matrix of nutation for a given date, IAU 2000B model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rmatn [3][3]float64 nutation matrix
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(true) = rmatn * V(mean), where
|
|
the p-vector V(true) is with respect to the true equatorial triad
|
|
of date and the p-vector V(mean) is with respect to the mean
|
|
equatorial triad of date.
|
|
|
|
3) The present function is faster, but slightly less accurate (about
|
|
1 mas), than the iauNum00a function.
|
|
|
|
Called:
|
|
Pn00b bias/precession/nutation, IAU 2000B
|
|
|
|
Reference:
|
|
|
|
Explanatory Supplement to the Astronomical Almanac,
|
|
P. Kenneth Seidelmann (ed), University Science Books (1992),
|
|
Section 3.222-3 (p114).
|
|
*/
|
|
func Num00b(date1, date2 float64, rmatn *[3][3]float64) {
|
|
var dpsi, deps, epsa float64
|
|
var rb, rp, rbp, rbpn [3][3]float64
|
|
|
|
/* Obtain the required matrix (discarding other results). */
|
|
Pn00b(date1, date2,
|
|
&dpsi, &deps, &epsa, &rb, &rp, &rbp, rmatn, &rbpn)
|
|
}
|
|
|
|
/*
|
|
Num06a Nutation matrix, IAU 2006/2000A
|
|
Form the matrix of nutation for a given date, IAU 2006/2000A model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rmatn [3][3]float64 nutation matrix
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(true) = rmatn * V(mean), where
|
|
the p-vector V(true) is with respect to the true equatorial triad
|
|
of date and the p-vector V(mean) is with respect to the mean
|
|
equatorial triad of date.
|
|
|
|
Called:
|
|
Obl06 mean obliquity, IAU 2006
|
|
Nut06a nutation, IAU 2006/2000A
|
|
Numat form nutation matrix
|
|
|
|
Reference:
|
|
|
|
Explanatory Supplement to the Astronomical Almanac,
|
|
P. Kenneth Seidelmann (ed), University Science Books (1992),
|
|
Section 3.222-3 (p114).
|
|
*/
|
|
func Num06a(date1, date2 float64, rmatn *[3][3]float64) {
|
|
var eps, dp, de float64
|
|
|
|
/* Mean obliquity. */
|
|
eps = Obl06(date1, date2)
|
|
|
|
/* Nutation components. */
|
|
Nut06a(date1, date2, &dp, &de)
|
|
|
|
/* Nutation matrix. */
|
|
Numat(eps, dp, de, rmatn)
|
|
|
|
}
|
|
|
|
/*
|
|
Numat Nutation matrix, generic Form the matrix of nutation.
|
|
|
|
Given:
|
|
epsa float64 mean obliquity of date (Note 1)
|
|
dpsi,deps float64 nutation (Note 2)
|
|
|
|
Returned:
|
|
rmatn [3][3]float64 nutation matrix (Note 3)
|
|
|
|
Notes:
|
|
|
|
|
|
1) The supplied mean obliquity epsa, must be consistent with the
|
|
precession-nutation models from which dpsi and deps were obtained.
|
|
|
|
2) The caller is responsible for providing the nutation components;
|
|
they are in longitude and obliquity, in radians and are with
|
|
respect to the equinox and ecliptic of date.
|
|
|
|
3) The matrix operates in the sense V(true) = rmatn * V(mean),
|
|
where the p-vector V(true) is with respect to the true
|
|
equatorial triad of date and the p-vector V(mean) is with
|
|
respect to the mean equatorial triad of date.
|
|
|
|
Called:
|
|
Ir initialize r-matrix to identity
|
|
Rx rotate around X-axis
|
|
Rz rotate around Z-axis
|
|
|
|
Reference:
|
|
|
|
Explanatory Supplement to the Astronomical Almanac,
|
|
P. Kenneth Seidelmann (ed), University Science Books (1992),
|
|
Section 3.222-3 (p114).
|
|
*/
|
|
func Numat(epsa, dpsi, deps float64, rmatn *[3][3]float64) {
|
|
/* Build the rotation matrix. */
|
|
Ir(rmatn)
|
|
Rx(epsa, rmatn)
|
|
Rz(-dpsi, rmatn)
|
|
Rx(-(epsa + deps), rmatn)
|
|
}
|
|
|
|
/*
|
|
Nut00a Nutation, IAU 2000A Nutation, IAU 2000A model
|
|
(MHB2000 luni-solar and planetary nutation with free core nutation omitted).
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
dpsi,deps float64 nutation, luni-solar + planetary (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The nutation components in longitude and obliquity are in radians
|
|
and with respect to the equinox and ecliptic of date. The
|
|
obliquity at J2000.0 is assumed to be the Lieske et al. (1977)
|
|
value of 84381.448 arcsec.
|
|
|
|
Both the luni-solar and planetary nutations are included. The
|
|
latter are due to direct planetary nutations and the
|
|
perturbations of the lunar and terrestrial orbits.
|
|
|
|
3) The function computes the MHB2000 nutation series with the
|
|
associated corrections for planetary nutations. It is an
|
|
implementation of the nutation part of the IAU 2000A precession-
|
|
nutation model, formally adopted by the IAU General Assembly in
|
|
2000, namely MHB2000 (Mathews et al. 2002), but with the free
|
|
core nutation (FCN - see Note 4) omitted.
|
|
|
|
4) The full MHB2000 model also contains contributions to the
|
|
nutations in longitude and obliquity due to the free-excitation
|
|
of the free-core-nutation during the period 1979-2000. These FCN
|
|
terms, which are time-dependent and unpredictable, are NOT
|
|
included in the present function and, if required, must be
|
|
independently computed. With the FCN corrections included, the
|
|
present function delivers a pole which is at current epochs
|
|
accurate to a few hundred microarcseconds. The omission of FCN
|
|
introduces further errors of about that size.
|
|
|
|
5) The present function provides classical nutation. The MHB2000
|
|
algorithm, from which it is adapted, deals also with (i) the
|
|
offsets between the GCRS and mean poles and (ii) the adjustments
|
|
in longitude and obliquity due to the changed precession rates.
|
|
These additional functions, namely frame bias and precession
|
|
adjustments, are supported by the SOFA functions iauBi00 and
|
|
Pr00.
|
|
|
|
6) The MHB2000 algorithm also provides "total" nutations, comprising
|
|
the arithmetic sum of the frame bias, precession adjustments,
|
|
luni-solar nutation and planetary nutation. These total
|
|
nutations can be used in combination with an existing IAU 1976
|
|
precession implementation, such as iauPmat76, to deliver GCRS-
|
|
to-true predictions of sub-mas accuracy at current dates.
|
|
However, there are three shortcomings in the MHB2000 model that
|
|
must be taken into account if more accurate or definitive results
|
|
are required (see Wallace 2002):
|
|
|
|
(i) The MHB2000 total nutations are simply arithmetic sums,
|
|
yet in reality the various components are successive Euler
|
|
rotations. This slight lack of rigor leads to cross terms
|
|
that exceed 1 mas after a century. The rigorous procedure
|
|
is to form the GCRS-to-true rotation matrix by applying the
|
|
bias, precession and nutation in that order.
|
|
|
|
(ii) Although the precession adjustments are stated to be with
|
|
respect to Lieske et al. (1977), the MHB2000 model does
|
|
not specify which set of Euler angles are to be used and
|
|
how the adjustments are to be applied. The most literal
|
|
and straightforward procedure is to adopt the 4-rotation
|
|
epsilon_0, psi_A, omega_A, xi_A option, and to add DPSIPR
|
|
to psi_A and DEPSPR to both omega_A and eps_A.
|
|
|
|
(iii) The MHB2000 model predates the determination by Chapront
|
|
et al. (2002) of a 14.6 mas displacement between the
|
|
J2000.0 mean equinox and the origin of the ICRS frame. It
|
|
should, however, be noted that neglecting this displacement
|
|
when calculating star coordinates does not lead to a
|
|
14.6 mas change in right ascension, only a small second-
|
|
order distortion in the pattern of the precession-nutation
|
|
effect.
|
|
|
|
For these reasons, the SOFA functions do not generate the "total
|
|
nutations" directly, though they can of course easily be
|
|
generated by calling iauBi00, iauPr00 and the present function
|
|
and adding the results.
|
|
|
|
7) The MHB2000 model contains 41 instances where the same frequency
|
|
appears multiple times, of which 38 are duplicates and three are
|
|
triplicates. To keep the present code close to the original MHB
|
|
algorithm, this small inefficiency has not been corrected.
|
|
|
|
Called:
|
|
Fal03 mean anomaly of the Moon
|
|
Faf03 mean argument of the latitude of the Moon
|
|
Faom03 mean longitude of the Moon's ascending node
|
|
Fame03 mean longitude of Mercury
|
|
Fave03 mean longitude of Venus
|
|
Fae03 mean longitude of Earth
|
|
Fama03 mean longitude of Mars
|
|
Faju03 mean longitude of Jupiter
|
|
Fasa03 mean longitude of Saturn
|
|
Faur03 mean longitude of Uranus
|
|
Fapa03 general accumulated precession in longitude
|
|
|
|
References:
|
|
|
|
Chapront, J., Chapront-Touze, M. & Francou, G. 2002,
|
|
Astron.Astrophys. 387, 700
|
|
|
|
Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977,
|
|
Astron.Astrophys. 58, 1-16
|
|
|
|
Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res.
|
|
107, B4. The MHB_2000 code itself was obtained on 9th September
|
|
2002 from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A.
|
|
|
|
Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
|
|
Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
|
|
|
|
Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
|
|
Astron.Astrophys.Supp.Ser. 135, 111
|
|
|
|
Wallace, P.T., "Software for Implementing the IAU 2000
|
|
Resolutions", in IERS Workshop 5.1 (2002)
|
|
*/
|
|
func Nut00a(date1, date2 float64, dpsi, deps *float64) {
|
|
var i int
|
|
var t, el, elp, f, d, om, arg, dp, de, sarg, carg,
|
|
al, af, ad, aom, alme, alve, alea, alma,
|
|
alju, alsa, alur, alne, apa, dpsils, depsls,
|
|
dpsipl, depspl float64
|
|
|
|
/* Units of 0.1 microarcsecond to radians */
|
|
const U2R = DAS2R / 1e7
|
|
|
|
/* ------------------------- */
|
|
/* Luni-Solar nutation model */
|
|
/* ------------------------- */
|
|
|
|
/* The units for the sine and cosine coefficients are */
|
|
/* 0.1 microarcsecond and the same per Julian century */
|
|
|
|
xls := []struct {
|
|
nl, nlp, nf, nd, nom int /* coefficients of l,l',F,D,Om */
|
|
sp, spt, cp float64 /* longitude sin, t*sin, cos coefficients */
|
|
ce, cet, se float64 /* obliquity cos, t*cos, sin coefficients */
|
|
}{
|
|
|
|
/* 1- 10 */
|
|
{0, 0, 0, 0, 1,
|
|
-172064161.0, -174666.0, 33386.0, 92052331.0, 9086.0, 15377.0},
|
|
{0, 0, 2, -2, 2,
|
|
-13170906.0, -1675.0, -13696.0, 5730336.0, -3015.0, -4587.0},
|
|
{0, 0, 2, 0, 2, -2276413.0, -234.0, 2796.0, 978459.0, -485.0, 1374.0},
|
|
{0, 0, 0, 0, 2, 2074554.0, 207.0, -698.0, -897492.0, 470.0, -291.0},
|
|
{0, 1, 0, 0, 0, 1475877.0, -3633.0, 11817.0, 73871.0, -184.0, -1924.0},
|
|
{0, 1, 2, -2, 2, -516821.0, 1226.0, -524.0, 224386.0, -677.0, -174.0},
|
|
{1, 0, 0, 0, 0, 711159.0, 73.0, -872.0, -6750.0, 0.0, 358.0},
|
|
{0, 0, 2, 0, 1, -387298.0, -367.0, 380.0, 200728.0, 18.0, 318.0},
|
|
{1, 0, 2, 0, 2, -301461.0, -36.0, 816.0, 129025.0, -63.0, 367.0},
|
|
{0, -1, 2, -2, 2, 215829.0, -494.0, 111.0, -95929.0, 299.0, 132.0},
|
|
|
|
/* 11-20 */
|
|
{0, 0, 2, -2, 1, 128227.0, 137.0, 181.0, -68982.0, -9.0, 39.0},
|
|
{-1, 0, 2, 0, 2, 123457.0, 11.0, 19.0, -53311.0, 32.0, -4.0},
|
|
{-1, 0, 0, 2, 0, 156994.0, 10.0, -168.0, -1235.0, 0.0, 82.0},
|
|
{1, 0, 0, 0, 1, 63110.0, 63.0, 27.0, -33228.0, 0.0, -9.0},
|
|
{-1, 0, 0, 0, 1, -57976.0, -63.0, -189.0, 31429.0, 0.0, -75.0},
|
|
{-1, 0, 2, 2, 2, -59641.0, -11.0, 149.0, 25543.0, -11.0, 66.0},
|
|
{1, 0, 2, 0, 1, -51613.0, -42.0, 129.0, 26366.0, 0.0, 78.0},
|
|
{-2, 0, 2, 0, 1, 45893.0, 50.0, 31.0, -24236.0, -10.0, 20.0},
|
|
{0, 0, 0, 2, 0, 63384.0, 11.0, -150.0, -1220.0, 0.0, 29.0},
|
|
{0, 0, 2, 2, 2, -38571.0, -1.0, 158.0, 16452.0, -11.0, 68.0},
|
|
|
|
/* 21-30 */
|
|
{0, -2, 2, -2, 2, 32481.0, 0.0, 0.0, -13870.0, 0.0, 0.0},
|
|
{-2, 0, 0, 2, 0, -47722.0, 0.0, -18.0, 477.0, 0.0, -25.0},
|
|
{2, 0, 2, 0, 2, -31046.0, -1.0, 131.0, 13238.0, -11.0, 59.0},
|
|
{1, 0, 2, -2, 2, 28593.0, 0.0, -1.0, -12338.0, 10.0, -3.0},
|
|
{-1, 0, 2, 0, 1, 20441.0, 21.0, 10.0, -10758.0, 0.0, -3.0},
|
|
{2, 0, 0, 0, 0, 29243.0, 0.0, -74.0, -609.0, 0.0, 13.0},
|
|
{0, 0, 2, 0, 0, 25887.0, 0.0, -66.0, -550.0, 0.0, 11.0},
|
|
{0, 1, 0, 0, 1, -14053.0, -25.0, 79.0, 8551.0, -2.0, -45.0},
|
|
{-1, 0, 0, 2, 1, 15164.0, 10.0, 11.0, -8001.0, 0.0, -1.0},
|
|
{0, 2, 2, -2, 2, -15794.0, 72.0, -16.0, 6850.0, -42.0, -5.0},
|
|
|
|
/* 31-40 */
|
|
{0, 0, -2, 2, 0, 21783.0, 0.0, 13.0, -167.0, 0.0, 13.0},
|
|
{1, 0, 0, -2, 1, -12873.0, -10.0, -37.0, 6953.0, 0.0, -14.0},
|
|
{0, -1, 0, 0, 1, -12654.0, 11.0, 63.0, 6415.0, 0.0, 26.0},
|
|
{-1, 0, 2, 2, 1, -10204.0, 0.0, 25.0, 5222.0, 0.0, 15.0},
|
|
{0, 2, 0, 0, 0, 16707.0, -85.0, -10.0, 168.0, -1.0, 10.0},
|
|
{1, 0, 2, 2, 2, -7691.0, 0.0, 44.0, 3268.0, 0.0, 19.0},
|
|
{-2, 0, 2, 0, 0, -11024.0, 0.0, -14.0, 104.0, 0.0, 2.0},
|
|
{0, 1, 2, 0, 2, 7566.0, -21.0, -11.0, -3250.0, 0.0, -5.0},
|
|
{0, 0, 2, 2, 1, -6637.0, -11.0, 25.0, 3353.0, 0.0, 14.0},
|
|
{0, -1, 2, 0, 2, -7141.0, 21.0, 8.0, 3070.0, 0.0, 4.0},
|
|
|
|
/* 41-50 */
|
|
{0, 0, 0, 2, 1, -6302.0, -11.0, 2.0, 3272.0, 0.0, 4.0},
|
|
{1, 0, 2, -2, 1, 5800.0, 10.0, 2.0, -3045.0, 0.0, -1.0},
|
|
{2, 0, 2, -2, 2, 6443.0, 0.0, -7.0, -2768.0, 0.0, -4.0},
|
|
{-2, 0, 0, 2, 1, -5774.0, -11.0, -15.0, 3041.0, 0.0, -5.0},
|
|
{2, 0, 2, 0, 1, -5350.0, 0.0, 21.0, 2695.0, 0.0, 12.0},
|
|
{0, -1, 2, -2, 1, -4752.0, -11.0, -3.0, 2719.0, 0.0, -3.0},
|
|
{0, 0, 0, -2, 1, -4940.0, -11.0, -21.0, 2720.0, 0.0, -9.0},
|
|
{-1, -1, 0, 2, 0, 7350.0, 0.0, -8.0, -51.0, 0.0, 4.0},
|
|
{2, 0, 0, -2, 1, 4065.0, 0.0, 6.0, -2206.0, 0.0, 1.0},
|
|
{1, 0, 0, 2, 0, 6579.0, 0.0, -24.0, -199.0, 0.0, 2.0},
|
|
|
|
/* 51-60 */
|
|
{0, 1, 2, -2, 1, 3579.0, 0.0, 5.0, -1900.0, 0.0, 1.0},
|
|
{1, -1, 0, 0, 0, 4725.0, 0.0, -6.0, -41.0, 0.0, 3.0},
|
|
{-2, 0, 2, 0, 2, -3075.0, 0.0, -2.0, 1313.0, 0.0, -1.0},
|
|
{3, 0, 2, 0, 2, -2904.0, 0.0, 15.0, 1233.0, 0.0, 7.0},
|
|
{0, -1, 0, 2, 0, 4348.0, 0.0, -10.0, -81.0, 0.0, 2.0},
|
|
{1, -1, 2, 0, 2, -2878.0, 0.0, 8.0, 1232.0, 0.0, 4.0},
|
|
{0, 0, 0, 1, 0, -4230.0, 0.0, 5.0, -20.0, 0.0, -2.0},
|
|
{-1, -1, 2, 2, 2, -2819.0, 0.0, 7.0, 1207.0, 0.0, 3.0},
|
|
{-1, 0, 2, 0, 0, -4056.0, 0.0, 5.0, 40.0, 0.0, -2.0},
|
|
{0, -1, 2, 2, 2, -2647.0, 0.0, 11.0, 1129.0, 0.0, 5.0},
|
|
|
|
/* 61-70 */
|
|
{-2, 0, 0, 0, 1, -2294.0, 0.0, -10.0, 1266.0, 0.0, -4.0},
|
|
{1, 1, 2, 0, 2, 2481.0, 0.0, -7.0, -1062.0, 0.0, -3.0},
|
|
{2, 0, 0, 0, 1, 2179.0, 0.0, -2.0, -1129.0, 0.0, -2.0},
|
|
{-1, 1, 0, 1, 0, 3276.0, 0.0, 1.0, -9.0, 0.0, 0.0},
|
|
{1, 1, 0, 0, 0, -3389.0, 0.0, 5.0, 35.0, 0.0, -2.0},
|
|
{1, 0, 2, 0, 0, 3339.0, 0.0, -13.0, -107.0, 0.0, 1.0},
|
|
{-1, 0, 2, -2, 1, -1987.0, 0.0, -6.0, 1073.0, 0.0, -2.0},
|
|
{1, 0, 0, 0, 2, -1981.0, 0.0, 0.0, 854.0, 0.0, 0.0},
|
|
{-1, 0, 0, 1, 0, 4026.0, 0.0, -353.0, -553.0, 0.0, -139.0},
|
|
{0, 0, 2, 1, 2, 1660.0, 0.0, -5.0, -710.0, 0.0, -2.0},
|
|
|
|
/* 71-80 */
|
|
{-1, 0, 2, 4, 2, -1521.0, 0.0, 9.0, 647.0, 0.0, 4.0},
|
|
{-1, 1, 0, 1, 1, 1314.0, 0.0, 0.0, -700.0, 0.0, 0.0},
|
|
{0, -2, 2, -2, 1, -1283.0, 0.0, 0.0, 672.0, 0.0, 0.0},
|
|
{1, 0, 2, 2, 1, -1331.0, 0.0, 8.0, 663.0, 0.0, 4.0},
|
|
{-2, 0, 2, 2, 2, 1383.0, 0.0, -2.0, -594.0, 0.0, -2.0},
|
|
{-1, 0, 0, 0, 2, 1405.0, 0.0, 4.0, -610.0, 0.0, 2.0},
|
|
{1, 1, 2, -2, 2, 1290.0, 0.0, 0.0, -556.0, 0.0, 0.0},
|
|
{-2, 0, 2, 4, 2, -1214.0, 0.0, 5.0, 518.0, 0.0, 2.0},
|
|
{-1, 0, 4, 0, 2, 1146.0, 0.0, -3.0, -490.0, 0.0, -1.0},
|
|
{2, 0, 2, -2, 1, 1019.0, 0.0, -1.0, -527.0, 0.0, -1.0},
|
|
|
|
/* 81-90 */
|
|
{2, 0, 2, 2, 2, -1100.0, 0.0, 9.0, 465.0, 0.0, 4.0},
|
|
{1, 0, 0, 2, 1, -970.0, 0.0, 2.0, 496.0, 0.0, 1.0},
|
|
{3, 0, 0, 0, 0, 1575.0, 0.0, -6.0, -50.0, 0.0, 0.0},
|
|
{3, 0, 2, -2, 2, 934.0, 0.0, -3.0, -399.0, 0.0, -1.0},
|
|
{0, 0, 4, -2, 2, 922.0, 0.0, -1.0, -395.0, 0.0, -1.0},
|
|
{0, 1, 2, 0, 1, 815.0, 0.0, -1.0, -422.0, 0.0, -1.0},
|
|
{0, 0, -2, 2, 1, 834.0, 0.0, 2.0, -440.0, 0.0, 1.0},
|
|
{0, 0, 2, -2, 3, 1248.0, 0.0, 0.0, -170.0, 0.0, 1.0},
|
|
{-1, 0, 0, 4, 0, 1338.0, 0.0, -5.0, -39.0, 0.0, 0.0},
|
|
{2, 0, -2, 0, 1, 716.0, 0.0, -2.0, -389.0, 0.0, -1.0},
|
|
|
|
/* 91-100 */
|
|
{-2, 0, 0, 4, 0, 1282.0, 0.0, -3.0, -23.0, 0.0, 1.0},
|
|
{-1, -1, 0, 2, 1, 742.0, 0.0, 1.0, -391.0, 0.0, 0.0},
|
|
{-1, 0, 0, 1, 1, 1020.0, 0.0, -25.0, -495.0, 0.0, -10.0},
|
|
{0, 1, 0, 0, 2, 715.0, 0.0, -4.0, -326.0, 0.0, 2.0},
|
|
{0, 0, -2, 0, 1, -666.0, 0.0, -3.0, 369.0, 0.0, -1.0},
|
|
{0, -1, 2, 0, 1, -667.0, 0.0, 1.0, 346.0, 0.0, 1.0},
|
|
{0, 0, 2, -1, 2, -704.0, 0.0, 0.0, 304.0, 0.0, 0.0},
|
|
{0, 0, 2, 4, 2, -694.0, 0.0, 5.0, 294.0, 0.0, 2.0},
|
|
{-2, -1, 0, 2, 0, -1014.0, 0.0, -1.0, 4.0, 0.0, -1.0},
|
|
{1, 1, 0, -2, 1, -585.0, 0.0, -2.0, 316.0, 0.0, -1.0},
|
|
|
|
/* 101-110 */
|
|
{-1, 1, 0, 2, 0, -949.0, 0.0, 1.0, 8.0, 0.0, -1.0},
|
|
{-1, 1, 0, 1, 2, -595.0, 0.0, 0.0, 258.0, 0.0, 0.0},
|
|
{1, -1, 0, 0, 1, 528.0, 0.0, 0.0, -279.0, 0.0, 0.0},
|
|
{1, -1, 2, 2, 2, -590.0, 0.0, 4.0, 252.0, 0.0, 2.0},
|
|
{-1, 1, 2, 2, 2, 570.0, 0.0, -2.0, -244.0, 0.0, -1.0},
|
|
{3, 0, 2, 0, 1, -502.0, 0.0, 3.0, 250.0, 0.0, 2.0},
|
|
{0, 1, -2, 2, 0, -875.0, 0.0, 1.0, 29.0, 0.0, 0.0},
|
|
{-1, 0, 0, -2, 1, -492.0, 0.0, -3.0, 275.0, 0.0, -1.0},
|
|
{0, 1, 2, 2, 2, 535.0, 0.0, -2.0, -228.0, 0.0, -1.0},
|
|
{-1, -1, 2, 2, 1, -467.0, 0.0, 1.0, 240.0, 0.0, 1.0},
|
|
|
|
/* 111-120 */
|
|
{0, -1, 0, 0, 2, 591.0, 0.0, 0.0, -253.0, 0.0, 0.0},
|
|
{1, 0, 2, -4, 1, -453.0, 0.0, -1.0, 244.0, 0.0, -1.0},
|
|
{-1, 0, -2, 2, 0, 766.0, 0.0, 1.0, 9.0, 0.0, 0.0},
|
|
{0, -1, 2, 2, 1, -446.0, 0.0, 2.0, 225.0, 0.0, 1.0},
|
|
{2, -1, 2, 0, 2, -488.0, 0.0, 2.0, 207.0, 0.0, 1.0},
|
|
{0, 0, 0, 2, 2, -468.0, 0.0, 0.0, 201.0, 0.0, 0.0},
|
|
{1, -1, 2, 0, 1, -421.0, 0.0, 1.0, 216.0, 0.0, 1.0},
|
|
{-1, 1, 2, 0, 2, 463.0, 0.0, 0.0, -200.0, 0.0, 0.0},
|
|
{0, 1, 0, 2, 0, -673.0, 0.0, 2.0, 14.0, 0.0, 0.0},
|
|
{0, -1, -2, 2, 0, 658.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
|
|
/* 121-130 */
|
|
{0, 3, 2, -2, 2, -438.0, 0.0, 0.0, 188.0, 0.0, 0.0},
|
|
{0, 0, 0, 1, 1, -390.0, 0.0, 0.0, 205.0, 0.0, 0.0},
|
|
{-1, 0, 2, 2, 0, 639.0, -11.0, -2.0, -19.0, 0.0, 0.0},
|
|
{2, 1, 2, 0, 2, 412.0, 0.0, -2.0, -176.0, 0.0, -1.0},
|
|
{1, 1, 0, 0, 1, -361.0, 0.0, 0.0, 189.0, 0.0, 0.0},
|
|
{1, 1, 2, 0, 1, 360.0, 0.0, -1.0, -185.0, 0.0, -1.0},
|
|
{2, 0, 0, 2, 0, 588.0, 0.0, -3.0, -24.0, 0.0, 0.0},
|
|
{1, 0, -2, 2, 0, -578.0, 0.0, 1.0, 5.0, 0.0, 0.0},
|
|
{-1, 0, 0, 2, 2, -396.0, 0.0, 0.0, 171.0, 0.0, 0.0},
|
|
{0, 1, 0, 1, 0, 565.0, 0.0, -1.0, -6.0, 0.0, 0.0},
|
|
|
|
/* 131-140 */
|
|
{0, 1, 0, -2, 1, -335.0, 0.0, -1.0, 184.0, 0.0, -1.0},
|
|
{-1, 0, 2, -2, 2, 357.0, 0.0, 1.0, -154.0, 0.0, 0.0},
|
|
{0, 0, 0, -1, 1, 321.0, 0.0, 1.0, -174.0, 0.0, 0.0},
|
|
{-1, 1, 0, 0, 1, -301.0, 0.0, -1.0, 162.0, 0.0, 0.0},
|
|
{1, 0, 2, -1, 2, -334.0, 0.0, 0.0, 144.0, 0.0, 0.0},
|
|
{1, -1, 0, 2, 0, 493.0, 0.0, -2.0, -15.0, 0.0, 0.0},
|
|
{0, 0, 0, 4, 0, 494.0, 0.0, -2.0, -19.0, 0.0, 0.0},
|
|
{1, 0, 2, 1, 2, 337.0, 0.0, -1.0, -143.0, 0.0, -1.0},
|
|
{0, 0, 2, 1, 1, 280.0, 0.0, -1.0, -144.0, 0.0, 0.0},
|
|
{1, 0, 0, -2, 2, 309.0, 0.0, 1.0, -134.0, 0.0, 0.0},
|
|
|
|
/* 141-150 */
|
|
{-1, 0, 2, 4, 1, -263.0, 0.0, 2.0, 131.0, 0.0, 1.0},
|
|
{1, 0, -2, 0, 1, 253.0, 0.0, 1.0, -138.0, 0.0, 0.0},
|
|
{1, 1, 2, -2, 1, 245.0, 0.0, 0.0, -128.0, 0.0, 0.0},
|
|
{0, 0, 2, 2, 0, 416.0, 0.0, -2.0, -17.0, 0.0, 0.0},
|
|
{-1, 0, 2, -1, 1, -229.0, 0.0, 0.0, 128.0, 0.0, 0.0},
|
|
{-2, 0, 2, 2, 1, 231.0, 0.0, 0.0, -120.0, 0.0, 0.0},
|
|
{4, 0, 2, 0, 2, -259.0, 0.0, 2.0, 109.0, 0.0, 1.0},
|
|
{2, -1, 0, 0, 0, 375.0, 0.0, -1.0, -8.0, 0.0, 0.0},
|
|
{2, 1, 2, -2, 2, 252.0, 0.0, 0.0, -108.0, 0.0, 0.0},
|
|
{0, 1, 2, 1, 2, -245.0, 0.0, 1.0, 104.0, 0.0, 0.0},
|
|
|
|
/* 151-160 */
|
|
{1, 0, 4, -2, 2, 243.0, 0.0, -1.0, -104.0, 0.0, 0.0},
|
|
{-1, -1, 0, 0, 1, 208.0, 0.0, 1.0, -112.0, 0.0, 0.0},
|
|
{0, 1, 0, 2, 1, 199.0, 0.0, 0.0, -102.0, 0.0, 0.0},
|
|
{-2, 0, 2, 4, 1, -208.0, 0.0, 1.0, 105.0, 0.0, 0.0},
|
|
{2, 0, 2, 0, 0, 335.0, 0.0, -2.0, -14.0, 0.0, 0.0},
|
|
{1, 0, 0, 1, 0, -325.0, 0.0, 1.0, 7.0, 0.0, 0.0},
|
|
{-1, 0, 0, 4, 1, -187.0, 0.0, 0.0, 96.0, 0.0, 0.0},
|
|
{-1, 0, 4, 0, 1, 197.0, 0.0, -1.0, -100.0, 0.0, 0.0},
|
|
{2, 0, 2, 2, 1, -192.0, 0.0, 2.0, 94.0, 0.0, 1.0},
|
|
{0, 0, 2, -3, 2, -188.0, 0.0, 0.0, 83.0, 0.0, 0.0},
|
|
|
|
/* 161-170 */
|
|
{-1, -2, 0, 2, 0, 276.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{2, 1, 0, 0, 0, -286.0, 0.0, 1.0, 6.0, 0.0, 0.0},
|
|
{0, 0, 4, 0, 2, 186.0, 0.0, -1.0, -79.0, 0.0, 0.0},
|
|
{0, 0, 0, 0, 3, -219.0, 0.0, 0.0, 43.0, 0.0, 0.0},
|
|
{0, 3, 0, 0, 0, 276.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{0, 0, 2, -4, 1, -153.0, 0.0, -1.0, 84.0, 0.0, 0.0},
|
|
{0, -1, 0, 2, 1, -156.0, 0.0, 0.0, 81.0, 0.0, 0.0},
|
|
{0, 0, 0, 4, 1, -154.0, 0.0, 1.0, 78.0, 0.0, 0.0},
|
|
{-1, -1, 2, 4, 2, -174.0, 0.0, 1.0, 75.0, 0.0, 0.0},
|
|
{1, 0, 2, 4, 2, -163.0, 0.0, 2.0, 69.0, 0.0, 1.0},
|
|
|
|
/* 171-180 */
|
|
{-2, 2, 0, 2, 0, -228.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{-2, -1, 2, 0, 1, 91.0, 0.0, -4.0, -54.0, 0.0, -2.0},
|
|
{-2, 0, 0, 2, 2, 175.0, 0.0, 0.0, -75.0, 0.0, 0.0},
|
|
{-1, -1, 2, 0, 2, -159.0, 0.0, 0.0, 69.0, 0.0, 0.0},
|
|
{0, 0, 4, -2, 1, 141.0, 0.0, 0.0, -72.0, 0.0, 0.0},
|
|
{3, 0, 2, -2, 1, 147.0, 0.0, 0.0, -75.0, 0.0, 0.0},
|
|
{-2, -1, 0, 2, 1, -132.0, 0.0, 0.0, 69.0, 0.0, 0.0},
|
|
{1, 0, 0, -1, 1, 159.0, 0.0, -28.0, -54.0, 0.0, 11.0},
|
|
{0, -2, 0, 2, 0, 213.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{-2, 0, 0, 4, 1, 123.0, 0.0, 0.0, -64.0, 0.0, 0.0},
|
|
|
|
/* 181-190 */
|
|
{-3, 0, 0, 0, 1, -118.0, 0.0, -1.0, 66.0, 0.0, 0.0},
|
|
{1, 1, 2, 2, 2, 144.0, 0.0, -1.0, -61.0, 0.0, 0.0},
|
|
{0, 0, 2, 4, 1, -121.0, 0.0, 1.0, 60.0, 0.0, 0.0},
|
|
{3, 0, 2, 2, 2, -134.0, 0.0, 1.0, 56.0, 0.0, 1.0},
|
|
{-1, 1, 2, -2, 1, -105.0, 0.0, 0.0, 57.0, 0.0, 0.0},
|
|
{2, 0, 0, -4, 1, -102.0, 0.0, 0.0, 56.0, 0.0, 0.0},
|
|
{0, 0, 0, -2, 2, 120.0, 0.0, 0.0, -52.0, 0.0, 0.0},
|
|
{2, 0, 2, -4, 1, 101.0, 0.0, 0.0, -54.0, 0.0, 0.0},
|
|
{-1, 1, 0, 2, 1, -113.0, 0.0, 0.0, 59.0, 0.0, 0.0},
|
|
{0, 0, 2, -1, 1, -106.0, 0.0, 0.0, 61.0, 0.0, 0.0},
|
|
|
|
/* 191-200 */
|
|
{0, -2, 2, 2, 2, -129.0, 0.0, 1.0, 55.0, 0.0, 0.0},
|
|
{2, 0, 0, 2, 1, -114.0, 0.0, 0.0, 57.0, 0.0, 0.0},
|
|
{4, 0, 2, -2, 2, 113.0, 0.0, -1.0, -49.0, 0.0, 0.0},
|
|
{2, 0, 0, -2, 2, -102.0, 0.0, 0.0, 44.0, 0.0, 0.0},
|
|
{0, 2, 0, 0, 1, -94.0, 0.0, 0.0, 51.0, 0.0, 0.0},
|
|
{1, 0, 0, -4, 1, -100.0, 0.0, -1.0, 56.0, 0.0, 0.0},
|
|
{0, 2, 2, -2, 1, 87.0, 0.0, 0.0, -47.0, 0.0, 0.0},
|
|
{-3, 0, 0, 4, 0, 161.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{-1, 1, 2, 0, 1, 96.0, 0.0, 0.0, -50.0, 0.0, 0.0},
|
|
{-1, -1, 0, 4, 0, 151.0, 0.0, -1.0, -5.0, 0.0, 0.0},
|
|
|
|
/* 201-210 */
|
|
{-1, -2, 2, 2, 2, -104.0, 0.0, 0.0, 44.0, 0.0, 0.0},
|
|
{-2, -1, 2, 4, 2, -110.0, 0.0, 0.0, 48.0, 0.0, 0.0},
|
|
{1, -1, 2, 2, 1, -100.0, 0.0, 1.0, 50.0, 0.0, 0.0},
|
|
{-2, 1, 0, 2, 0, 92.0, 0.0, -5.0, 12.0, 0.0, -2.0},
|
|
{-2, 1, 2, 0, 1, 82.0, 0.0, 0.0, -45.0, 0.0, 0.0},
|
|
{2, 1, 0, -2, 1, 82.0, 0.0, 0.0, -45.0, 0.0, 0.0},
|
|
{-3, 0, 2, 0, 1, -78.0, 0.0, 0.0, 41.0, 0.0, 0.0},
|
|
{-2, 0, 2, -2, 1, -77.0, 0.0, 0.0, 43.0, 0.0, 0.0},
|
|
{-1, 1, 0, 2, 2, 2.0, 0.0, 0.0, 54.0, 0.0, 0.0},
|
|
{0, -1, 2, -1, 2, 94.0, 0.0, 0.0, -40.0, 0.0, 0.0},
|
|
|
|
/* 211-220 */
|
|
{-1, 0, 4, -2, 2, -93.0, 0.0, 0.0, 40.0, 0.0, 0.0},
|
|
{0, -2, 2, 0, 2, -83.0, 0.0, 10.0, 40.0, 0.0, -2.0},
|
|
{-1, 0, 2, 1, 2, 83.0, 0.0, 0.0, -36.0, 0.0, 0.0},
|
|
{2, 0, 0, 0, 2, -91.0, 0.0, 0.0, 39.0, 0.0, 0.0},
|
|
{0, 0, 2, 0, 3, 128.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{-2, 0, 4, 0, 2, -79.0, 0.0, 0.0, 34.0, 0.0, 0.0},
|
|
{-1, 0, -2, 0, 1, -83.0, 0.0, 0.0, 47.0, 0.0, 0.0},
|
|
{-1, 1, 2, 2, 1, 84.0, 0.0, 0.0, -44.0, 0.0, 0.0},
|
|
{3, 0, 0, 0, 1, 83.0, 0.0, 0.0, -43.0, 0.0, 0.0},
|
|
{-1, 0, 2, 3, 2, 91.0, 0.0, 0.0, -39.0, 0.0, 0.0},
|
|
|
|
/* 221-230 */
|
|
{2, -1, 2, 0, 1, -77.0, 0.0, 0.0, 39.0, 0.0, 0.0},
|
|
{0, 1, 2, 2, 1, 84.0, 0.0, 0.0, -43.0, 0.0, 0.0},
|
|
{0, -1, 2, 4, 2, -92.0, 0.0, 1.0, 39.0, 0.0, 0.0},
|
|
{2, -1, 2, 2, 2, -92.0, 0.0, 1.0, 39.0, 0.0, 0.0},
|
|
{0, 2, -2, 2, 0, -94.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, -1, 2, -1, 1, 68.0, 0.0, 0.0, -36.0, 0.0, 0.0},
|
|
{0, -2, 0, 0, 1, -61.0, 0.0, 0.0, 32.0, 0.0, 0.0},
|
|
{1, 0, 2, -4, 2, 71.0, 0.0, 0.0, -31.0, 0.0, 0.0},
|
|
{1, -1, 0, -2, 1, 62.0, 0.0, 0.0, -34.0, 0.0, 0.0},
|
|
{-1, -1, 2, 0, 1, -63.0, 0.0, 0.0, 33.0, 0.0, 0.0},
|
|
|
|
/* 231-240 */
|
|
{1, -1, 2, -2, 2, -73.0, 0.0, 0.0, 32.0, 0.0, 0.0},
|
|
{-2, -1, 0, 4, 0, 115.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-1, 0, 0, 3, 0, -103.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-2, -1, 2, 2, 2, 63.0, 0.0, 0.0, -28.0, 0.0, 0.0},
|
|
{0, 2, 2, 0, 2, 74.0, 0.0, 0.0, -32.0, 0.0, 0.0},
|
|
{1, 1, 0, 2, 0, -103.0, 0.0, -3.0, 3.0, 0.0, -1.0},
|
|
{2, 0, 2, -1, 2, -69.0, 0.0, 0.0, 30.0, 0.0, 0.0},
|
|
{1, 0, 2, 1, 1, 57.0, 0.0, 0.0, -29.0, 0.0, 0.0},
|
|
{4, 0, 0, 0, 0, 94.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{2, 1, 2, 0, 1, 64.0, 0.0, 0.0, -33.0, 0.0, 0.0},
|
|
|
|
/* 241-250 */
|
|
{3, -1, 2, 0, 2, -63.0, 0.0, 0.0, 26.0, 0.0, 0.0},
|
|
{-2, 2, 0, 2, 1, -38.0, 0.0, 0.0, 20.0, 0.0, 0.0},
|
|
{1, 0, 2, -3, 1, -43.0, 0.0, 0.0, 24.0, 0.0, 0.0},
|
|
{1, 1, 2, -4, 1, -45.0, 0.0, 0.0, 23.0, 0.0, 0.0},
|
|
{-1, -1, 2, -2, 1, 47.0, 0.0, 0.0, -24.0, 0.0, 0.0},
|
|
{0, -1, 0, -1, 1, -48.0, 0.0, 0.0, 25.0, 0.0, 0.0},
|
|
{0, -1, 0, -2, 1, 45.0, 0.0, 0.0, -26.0, 0.0, 0.0},
|
|
{-2, 0, 0, 0, 2, 56.0, 0.0, 0.0, -25.0, 0.0, 0.0},
|
|
{-2, 0, -2, 2, 0, 88.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-1, 0, -2, 4, 0, -75.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 251-260 */
|
|
{1, -2, 0, 0, 0, 85.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 0, 1, 1, 49.0, 0.0, 0.0, -26.0, 0.0, 0.0},
|
|
{-1, 2, 0, 2, 0, -74.0, 0.0, -3.0, -1.0, 0.0, -1.0},
|
|
{1, -1, 2, -2, 1, -39.0, 0.0, 0.0, 21.0, 0.0, 0.0},
|
|
{1, 2, 2, -2, 2, 45.0, 0.0, 0.0, -20.0, 0.0, 0.0},
|
|
{2, -1, 2, -2, 2, 51.0, 0.0, 0.0, -22.0, 0.0, 0.0},
|
|
{1, 0, 2, -1, 1, -40.0, 0.0, 0.0, 21.0, 0.0, 0.0},
|
|
{2, 1, 2, -2, 1, 41.0, 0.0, 0.0, -21.0, 0.0, 0.0},
|
|
{-2, 0, 0, -2, 1, -42.0, 0.0, 0.0, 24.0, 0.0, 0.0},
|
|
{1, -2, 2, 0, 2, -51.0, 0.0, 0.0, 22.0, 0.0, 0.0},
|
|
|
|
/* 261-270 */
|
|
{0, 1, 2, 1, 1, -42.0, 0.0, 0.0, 22.0, 0.0, 0.0},
|
|
{1, 0, 4, -2, 1, 39.0, 0.0, 0.0, -21.0, 0.0, 0.0},
|
|
{-2, 0, 4, 2, 2, 46.0, 0.0, 0.0, -18.0, 0.0, 0.0},
|
|
{1, 1, 2, 1, 2, -53.0, 0.0, 0.0, 22.0, 0.0, 0.0},
|
|
{1, 0, 0, 4, 0, 82.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{1, 0, 2, 2, 0, 81.0, 0.0, -1.0, -4.0, 0.0, 0.0},
|
|
{2, 0, 2, 1, 2, 47.0, 0.0, 0.0, -19.0, 0.0, 0.0},
|
|
{3, 1, 2, 0, 2, 53.0, 0.0, 0.0, -23.0, 0.0, 0.0},
|
|
{4, 0, 2, 0, 1, -45.0, 0.0, 0.0, 22.0, 0.0, 0.0},
|
|
{-2, -1, 2, 0, 0, -44.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
|
|
/* 271-280 */
|
|
{0, 1, -2, 2, 1, -33.0, 0.0, 0.0, 16.0, 0.0, 0.0},
|
|
{1, 0, -2, 1, 0, -61.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{0, -1, -2, 2, 1, 28.0, 0.0, 0.0, -15.0, 0.0, 0.0},
|
|
{2, -1, 0, -2, 1, -38.0, 0.0, 0.0, 19.0, 0.0, 0.0},
|
|
{-1, 0, 2, -1, 2, -33.0, 0.0, 0.0, 21.0, 0.0, 0.0},
|
|
{1, 0, 2, -3, 2, -60.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 2, -2, 3, 48.0, 0.0, 0.0, -10.0, 0.0, 0.0},
|
|
{0, 0, 2, -3, 1, 27.0, 0.0, 0.0, -14.0, 0.0, 0.0},
|
|
{-1, 0, -2, 2, 1, 38.0, 0.0, 0.0, -20.0, 0.0, 0.0},
|
|
{0, 0, 2, -4, 2, 31.0, 0.0, 0.0, -13.0, 0.0, 0.0},
|
|
|
|
/* 281-290 */
|
|
{-2, 1, 0, 0, 1, -29.0, 0.0, 0.0, 15.0, 0.0, 0.0},
|
|
{-1, 0, 0, -1, 1, 28.0, 0.0, 0.0, -15.0, 0.0, 0.0},
|
|
{2, 0, 2, -4, 2, -32.0, 0.0, 0.0, 15.0, 0.0, 0.0},
|
|
{0, 0, 4, -4, 4, 45.0, 0.0, 0.0, -8.0, 0.0, 0.0},
|
|
{0, 0, 4, -4, 2, -44.0, 0.0, 0.0, 19.0, 0.0, 0.0},
|
|
{-1, -2, 0, 2, 1, 28.0, 0.0, 0.0, -15.0, 0.0, 0.0},
|
|
{-2, 0, 0, 3, 0, -51.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 0, -2, 2, 1, -36.0, 0.0, 0.0, 20.0, 0.0, 0.0},
|
|
{-3, 0, 2, 2, 2, 44.0, 0.0, 0.0, -19.0, 0.0, 0.0},
|
|
{-3, 0, 2, 2, 1, 26.0, 0.0, 0.0, -14.0, 0.0, 0.0},
|
|
|
|
/* 291-300 */
|
|
{-2, 0, 2, 2, 0, -60.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{2, -1, 0, 0, 1, 35.0, 0.0, 0.0, -18.0, 0.0, 0.0},
|
|
{-2, 1, 2, 2, 2, -27.0, 0.0, 0.0, 11.0, 0.0, 0.0},
|
|
{1, 1, 0, 1, 0, 47.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{0, 1, 4, -2, 2, 36.0, 0.0, 0.0, -15.0, 0.0, 0.0},
|
|
{-1, 1, 0, -2, 1, -36.0, 0.0, 0.0, 20.0, 0.0, 0.0},
|
|
{0, 0, 0, -4, 1, -35.0, 0.0, 0.0, 19.0, 0.0, 0.0},
|
|
{1, -1, 0, 2, 1, -37.0, 0.0, 0.0, 19.0, 0.0, 0.0},
|
|
{1, 1, 0, 2, 1, 32.0, 0.0, 0.0, -16.0, 0.0, 0.0},
|
|
{-1, 2, 2, 2, 2, 35.0, 0.0, 0.0, -14.0, 0.0, 0.0},
|
|
|
|
/* 301-310 */
|
|
{3, 1, 2, -2, 2, 32.0, 0.0, 0.0, -13.0, 0.0, 0.0},
|
|
{0, -1, 0, 4, 0, 65.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{2, -1, 0, 2, 0, 47.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{0, 0, 4, 0, 1, 32.0, 0.0, 0.0, -16.0, 0.0, 0.0},
|
|
{2, 0, 4, -2, 2, 37.0, 0.0, 0.0, -16.0, 0.0, 0.0},
|
|
{-1, -1, 2, 4, 1, -30.0, 0.0, 0.0, 15.0, 0.0, 0.0},
|
|
{1, 0, 0, 4, 1, -32.0, 0.0, 0.0, 16.0, 0.0, 0.0},
|
|
{1, -2, 2, 2, 2, -31.0, 0.0, 0.0, 13.0, 0.0, 0.0},
|
|
{0, 0, 2, 3, 2, 37.0, 0.0, 0.0, -16.0, 0.0, 0.0},
|
|
{-1, 1, 2, 4, 2, 31.0, 0.0, 0.0, -13.0, 0.0, 0.0},
|
|
|
|
/* 311-320 */
|
|
{3, 0, 0, 2, 0, 49.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-1, 0, 4, 2, 2, 32.0, 0.0, 0.0, -13.0, 0.0, 0.0},
|
|
{1, 1, 2, 2, 1, 23.0, 0.0, 0.0, -12.0, 0.0, 0.0},
|
|
{-2, 0, 2, 6, 2, -43.0, 0.0, 0.0, 18.0, 0.0, 0.0},
|
|
{2, 1, 2, 2, 2, 26.0, 0.0, 0.0, -11.0, 0.0, 0.0},
|
|
{-1, 0, 2, 6, 2, -32.0, 0.0, 0.0, 14.0, 0.0, 0.0},
|
|
{1, 0, 2, 4, 1, -29.0, 0.0, 0.0, 14.0, 0.0, 0.0},
|
|
{2, 0, 2, 4, 2, -27.0, 0.0, 0.0, 12.0, 0.0, 0.0},
|
|
{1, 1, -2, 1, 0, 30.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-3, 1, 2, 1, 2, -11.0, 0.0, 0.0, 5.0, 0.0, 0.0},
|
|
|
|
/* 321-330 */
|
|
{2, 0, -2, 0, 2, -21.0, 0.0, 0.0, 10.0, 0.0, 0.0},
|
|
{-1, 0, 0, 1, 2, -34.0, 0.0, 0.0, 15.0, 0.0, 0.0},
|
|
{-4, 0, 2, 2, 1, -10.0, 0.0, 0.0, 6.0, 0.0, 0.0},
|
|
{-1, -1, 0, 1, 0, -36.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 0, -2, 2, 2, -9.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{1, 0, 0, -1, 2, -12.0, 0.0, 0.0, 5.0, 0.0, 0.0},
|
|
{0, -1, 2, -2, 3, -21.0, 0.0, 0.0, 5.0, 0.0, 0.0},
|
|
{-2, 1, 2, 0, 0, -29.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{0, 0, 2, -2, 4, -15.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{-2, -2, 0, 2, 0, -20.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 331-340 */
|
|
{-2, 0, -2, 4, 0, 28.0, 0.0, 0.0, 0.0, 0.0, -2.0},
|
|
{0, -2, -2, 2, 0, 17.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 2, 0, -2, 1, -22.0, 0.0, 0.0, 12.0, 0.0, 0.0},
|
|
{3, 0, 0, -4, 1, -14.0, 0.0, 0.0, 7.0, 0.0, 0.0},
|
|
{-1, 1, 2, -2, 2, 24.0, 0.0, 0.0, -11.0, 0.0, 0.0},
|
|
{1, -1, 2, -4, 1, 11.0, 0.0, 0.0, -6.0, 0.0, 0.0},
|
|
{1, 1, 0, -2, 2, 14.0, 0.0, 0.0, -6.0, 0.0, 0.0},
|
|
{-3, 0, 2, 0, 0, 24.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-3, 0, 2, 0, 2, 18.0, 0.0, 0.0, -8.0, 0.0, 0.0},
|
|
{-2, 0, 0, 1, 0, -38.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 341-350 */
|
|
{0, 0, -2, 1, 0, -31.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-3, 0, 0, 2, 1, -16.0, 0.0, 0.0, 8.0, 0.0, 0.0},
|
|
{-1, -1, -2, 2, 0, 29.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 2, -4, 1, -18.0, 0.0, 0.0, 10.0, 0.0, 0.0},
|
|
{2, 1, 0, -4, 1, -10.0, 0.0, 0.0, 5.0, 0.0, 0.0},
|
|
{0, 2, 0, -2, 1, -17.0, 0.0, 0.0, 10.0, 0.0, 0.0},
|
|
{1, 0, 0, -3, 1, 9.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{-2, 0, 2, -2, 2, 16.0, 0.0, 0.0, -6.0, 0.0, 0.0},
|
|
{-2, -1, 0, 0, 1, 22.0, 0.0, 0.0, -12.0, 0.0, 0.0},
|
|
{-4, 0, 0, 2, 0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 351-360 */
|
|
{1, 1, 0, -4, 1, -13.0, 0.0, 0.0, 6.0, 0.0, 0.0},
|
|
{-1, 0, 2, -4, 1, -17.0, 0.0, 0.0, 9.0, 0.0, 0.0},
|
|
{0, 0, 4, -4, 1, -14.0, 0.0, 0.0, 8.0, 0.0, 0.0},
|
|
{0, 3, 2, -2, 2, 0.0, 0.0, 0.0, -7.0, 0.0, 0.0},
|
|
{-3, -1, 0, 4, 0, 14.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-3, 0, 0, 4, 1, 19.0, 0.0, 0.0, -10.0, 0.0, 0.0},
|
|
{1, -1, -2, 2, 0, -34.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, -1, 0, 2, 2, -20.0, 0.0, 0.0, 8.0, 0.0, 0.0},
|
|
{1, -2, 0, 0, 1, 9.0, 0.0, 0.0, -5.0, 0.0, 0.0},
|
|
{1, -1, 0, 0, 2, -18.0, 0.0, 0.0, 7.0, 0.0, 0.0},
|
|
|
|
/* 361-370 */
|
|
{0, 0, 0, 1, 2, 13.0, 0.0, 0.0, -6.0, 0.0, 0.0},
|
|
{-1, -1, 2, 0, 0, 17.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, -2, 2, -2, 2, -12.0, 0.0, 0.0, 5.0, 0.0, 0.0},
|
|
{0, -1, 2, -1, 1, 15.0, 0.0, 0.0, -8.0, 0.0, 0.0},
|
|
{-1, 0, 2, 0, 3, -11.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{1, 1, 0, 0, 2, 13.0, 0.0, 0.0, -5.0, 0.0, 0.0},
|
|
{-1, 1, 2, 0, 0, -18.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 2, 0, 0, 0, -35.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, 2, 2, 0, 2, 9.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{-1, 0, 4, -2, 1, -19.0, 0.0, 0.0, 10.0, 0.0, 0.0},
|
|
|
|
/* 371-380 */
|
|
{3, 0, 2, -4, 2, -26.0, 0.0, 0.0, 11.0, 0.0, 0.0},
|
|
{1, 2, 2, -2, 1, 8.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{1, 0, 4, -4, 2, -10.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{-2, -1, 0, 4, 1, 10.0, 0.0, 0.0, -6.0, 0.0, 0.0},
|
|
{0, -1, 0, 2, 2, -21.0, 0.0, 0.0, 9.0, 0.0, 0.0},
|
|
{-2, 1, 0, 4, 0, -15.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-2, -1, 2, 2, 1, 9.0, 0.0, 0.0, -5.0, 0.0, 0.0},
|
|
{2, 0, -2, 2, 0, -29.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 0, 0, 1, 1, -19.0, 0.0, 0.0, 10.0, 0.0, 0.0},
|
|
{0, 1, 0, 2, 2, 12.0, 0.0, 0.0, -5.0, 0.0, 0.0},
|
|
|
|
/* 381-390 */
|
|
{1, -1, 2, -1, 2, 22.0, 0.0, 0.0, -9.0, 0.0, 0.0},
|
|
{-2, 0, 4, 0, 1, -10.0, 0.0, 0.0, 5.0, 0.0, 0.0},
|
|
{2, 1, 0, 0, 1, -20.0, 0.0, 0.0, 11.0, 0.0, 0.0},
|
|
{0, 1, 2, 0, 0, -20.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, -1, 4, -2, 2, -17.0, 0.0, 0.0, 7.0, 0.0, 0.0},
|
|
{0, 0, 4, -2, 4, 15.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{0, 2, 2, 0, 1, 8.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{-3, 0, 0, 6, 0, 14.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, -1, 0, 4, 1, -12.0, 0.0, 0.0, 6.0, 0.0, 0.0},
|
|
{1, -2, 0, 2, 0, 25.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 391-400 */
|
|
{-1, 0, 0, 4, 2, -13.0, 0.0, 0.0, 6.0, 0.0, 0.0},
|
|
{-1, -2, 2, 2, 1, -14.0, 0.0, 0.0, 8.0, 0.0, 0.0},
|
|
{-1, 0, 0, -2, 2, 13.0, 0.0, 0.0, -5.0, 0.0, 0.0},
|
|
{1, 0, -2, -2, 1, -17.0, 0.0, 0.0, 9.0, 0.0, 0.0},
|
|
{0, 0, -2, -2, 1, -12.0, 0.0, 0.0, 6.0, 0.0, 0.0},
|
|
{-2, 0, -2, 0, 1, -10.0, 0.0, 0.0, 5.0, 0.0, 0.0},
|
|
{0, 0, 0, 3, 1, 10.0, 0.0, 0.0, -6.0, 0.0, 0.0},
|
|
{0, 0, 0, 3, 0, -15.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, 1, 0, 4, 0, -22.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, -1, 2, 2, 0, 28.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
|
|
/* 401-410 */
|
|
{-2, 0, 2, 3, 2, 15.0, 0.0, 0.0, -7.0, 0.0, 0.0},
|
|
{1, 0, 0, 2, 2, 23.0, 0.0, 0.0, -10.0, 0.0, 0.0},
|
|
{0, -1, 2, 1, 2, 12.0, 0.0, 0.0, -5.0, 0.0, 0.0},
|
|
{3, -1, 0, 0, 0, 29.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{2, 0, 0, 1, 0, -25.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{1, -1, 2, 0, 0, 22.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 0, 2, 1, 0, -18.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 0, 2, 0, 3, 15.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{3, 1, 0, 0, 0, -23.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{3, -1, 2, -2, 2, 12.0, 0.0, 0.0, -5.0, 0.0, 0.0},
|
|
|
|
/* 411-420 */
|
|
{2, 0, 2, -1, 1, -8.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{1, 1, 2, 0, 0, -19.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 0, 4, -1, 2, -10.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{1, 2, 2, 0, 2, 21.0, 0.0, 0.0, -9.0, 0.0, 0.0},
|
|
{-2, 0, 0, 6, 0, 23.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{0, -1, 0, 4, 1, -16.0, 0.0, 0.0, 8.0, 0.0, 0.0},
|
|
{-2, -1, 2, 4, 1, -19.0, 0.0, 0.0, 9.0, 0.0, 0.0},
|
|
{0, -2, 2, 2, 1, -22.0, 0.0, 0.0, 10.0, 0.0, 0.0},
|
|
{0, -1, 2, 2, 0, 27.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{-1, 0, 2, 3, 1, 16.0, 0.0, 0.0, -8.0, 0.0, 0.0},
|
|
|
|
/* 421-430 */
|
|
{-2, 1, 2, 4, 2, 19.0, 0.0, 0.0, -8.0, 0.0, 0.0},
|
|
{2, 0, 0, 2, 2, 9.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{2, -2, 2, 0, 2, -9.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{-1, 1, 2, 3, 2, -9.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{3, 0, 2, -1, 2, -8.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{4, 0, 2, -2, 1, 18.0, 0.0, 0.0, -9.0, 0.0, 0.0},
|
|
{-1, 0, 0, 6, 0, 16.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{-1, -2, 2, 4, 2, -10.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{-3, 0, 2, 6, 2, -23.0, 0.0, 0.0, 9.0, 0.0, 0.0},
|
|
{-1, 0, 2, 4, 0, 16.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
|
|
/* 431-440 */
|
|
{3, 0, 0, 2, 1, -12.0, 0.0, 0.0, 6.0, 0.0, 0.0},
|
|
{3, -1, 2, 0, 1, -8.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{3, 0, 2, 0, 0, 30.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{1, 0, 4, 0, 2, 24.0, 0.0, 0.0, -10.0, 0.0, 0.0},
|
|
{5, 0, 2, -2, 2, 10.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{0, -1, 2, 4, 1, -16.0, 0.0, 0.0, 7.0, 0.0, 0.0},
|
|
{2, -1, 2, 2, 1, -16.0, 0.0, 0.0, 7.0, 0.0, 0.0},
|
|
{0, 1, 2, 4, 2, 17.0, 0.0, 0.0, -7.0, 0.0, 0.0},
|
|
{1, -1, 2, 4, 2, -24.0, 0.0, 0.0, 10.0, 0.0, 0.0},
|
|
{3, -1, 2, 2, 2, -12.0, 0.0, 0.0, 5.0, 0.0, 0.0},
|
|
|
|
/* 441-450 */
|
|
{3, 0, 2, 2, 1, -24.0, 0.0, 0.0, 11.0, 0.0, 0.0},
|
|
{5, 0, 2, 0, 2, -23.0, 0.0, 0.0, 9.0, 0.0, 0.0},
|
|
{0, 0, 2, 6, 2, -13.0, 0.0, 0.0, 5.0, 0.0, 0.0},
|
|
{4, 0, 2, 2, 2, -15.0, 0.0, 0.0, 7.0, 0.0, 0.0},
|
|
{0, -1, 1, -1, 1, 0.0, 0.0, -1988.0, 0.0, 0.0, -1679.0},
|
|
{-1, 0, 1, 0, 3, 0.0, 0.0, -63.0, 0.0, 0.0, -27.0},
|
|
{0, -2, 2, -2, 3, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 0, -1, 0, 1, 0.0, 0.0, 5.0, 0.0, 0.0, 4.0},
|
|
{2, -2, 0, -2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{-1, 0, 1, 0, 2, 0.0, 0.0, 364.0, 0.0, 0.0, 176.0},
|
|
|
|
/* 451-460 */
|
|
{-1, 0, 1, 0, 1, 0.0, 0.0, -1044.0, 0.0, 0.0, -891.0},
|
|
{-1, -1, 2, -1, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{-2, 2, 0, 2, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-1, 0, 1, 0, 0, 0.0, 0.0, 330.0, 0.0, 0.0, 0.0},
|
|
{-4, 1, 2, 2, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-3, 0, 2, 1, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-2, -1, 2, 0, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{1, 0, -2, 1, 1, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{2, -1, -2, 0, 1, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{-4, 0, 2, 2, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 461-470 */
|
|
{-3, 1, 0, 3, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, 0, -1, 2, 0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0},
|
|
{0, -2, 0, 0, 2, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{0, -2, 0, 0, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-3, 0, 0, 3, 0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-2, -1, 0, 2, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-1, 0, -2, 3, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-4, 0, 0, 4, 0, -12.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{2, 1, -2, 0, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{2, -1, 0, -2, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
|
|
/* 471-480 */
|
|
{0, 0, 1, -1, 0, -5.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, 2, 0, 1, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-2, 1, 2, 0, 2, -7.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{1, 1, 0, -1, 1, 7.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{1, 0, 1, -2, 1, 0.0, 0.0, -12.0, 0.0, 0.0, -10.0},
|
|
{0, 2, 0, 0, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{1, -1, 2, -3, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-1, 1, 2, -1, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-2, 0, 4, -2, 2, -7.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{-2, 0, 4, -2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
|
|
/* 481-490 */
|
|
{-2, -2, 0, 2, 1, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{-2, 0, -2, 4, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 2, 2, -4, 1, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{1, 1, 2, -4, 2, 7.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{-1, 2, 2, -2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{2, 0, 0, -3, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-1, 2, 0, 0, 1, -5.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{0, 0, 0, -2, 0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, -1, 2, -2, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-1, 1, 0, 0, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
|
|
/* 491-500 */
|
|
{0, 0, 0, -1, 2, -8.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{-2, 1, 0, 1, 0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, -2, 0, -2, 1, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{1, 0, -2, 0, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-3, 1, 0, 2, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, 1, -2, 2, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, -1, 0, 0, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{-3, 0, 0, 2, 0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-3, -1, 0, 2, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{2, 0, 2, -6, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
|
|
/* 501-510 */
|
|
{0, 1, 2, -4, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{2, 0, 0, -4, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{-2, 1, 2, -2, 1, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{0, -1, 2, -4, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{0, 1, 0, -2, 2, 9.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{-1, 0, 0, -2, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{2, 0, -2, -2, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-4, 0, 2, 0, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-1, -1, 0, -1, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{0, 0, -2, 0, 2, 9.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
|
|
/* 511-520 */
|
|
{-3, 0, 0, 1, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, 0, -2, 1, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-2, 0, -2, 2, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{0, 0, -4, 2, 0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-2, -1, -2, 2, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 0, 2, -6, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-1, 0, 2, -4, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{1, 0, 0, -4, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{2, 1, 2, -4, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{2, 1, 2, -4, 1, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
|
|
/* 521-530 */
|
|
{0, 1, 4, -4, 4, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 4, -4, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{-1, -1, -2, 4, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, -3, 0, 2, 0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, 0, -2, 4, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-2, -1, 0, 3, 0, -3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 0, -2, 3, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-2, 0, 0, 3, 1, -5.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{0, -1, 0, 1, 0, -13.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-3, 0, 2, 2, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 531-540 */
|
|
{1, 1, -2, 2, 0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, 1, 0, 2, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{1, -2, 2, -2, 1, 10.0, 0.0, 13.0, 6.0, 0.0, -5.0},
|
|
{0, 0, 1, 0, 2, 0.0, 0.0, 30.0, 0.0, 0.0, 14.0},
|
|
{0, 0, 1, 0, 1, 0.0, 0.0, -162.0, 0.0, 0.0, -138.0},
|
|
{0, 0, 1, 0, 0, 0.0, 0.0, 75.0, 0.0, 0.0, 0.0},
|
|
{-1, 2, 0, 2, 1, -7.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{0, 0, 2, 0, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-2, 0, 2, 0, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{2, 0, 0, -1, 1, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
|
|
/* 541-550 */
|
|
{3, 0, 0, -2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{1, 0, 2, -2, 3, -3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 2, 0, 0, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{2, 0, 2, -3, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-1, 1, 4, -2, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-2, -2, 0, 4, 0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, -3, 0, 2, 0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 0, -2, 4, 0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, -1, 0, 3, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-2, 0, 0, 4, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
|
|
/* 551-560 */
|
|
{-1, 0, 0, 3, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{2, -2, 0, 0, 0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, -1, 0, 1, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, 0, 0, 2, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, -2, 2, 0, 1, -6.0, 0.0, -3.0, 3.0, 0.0, 1.0},
|
|
{-1, 0, 1, 2, 1, 0.0, 0.0, -3.0, 0.0, 0.0, -2.0},
|
|
{-1, 1, 0, 3, 0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, -1, 2, 1, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{0, -1, 2, 0, 0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-2, 1, 2, 2, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
|
|
/* 561-570 */
|
|
{2, -2, 2, -2, 2, -1.0, 0.0, 3.0, 3.0, 0.0, -1.0},
|
|
{1, 1, 0, 1, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{1, 0, 1, 0, 1, 0.0, 0.0, -13.0, 0.0, 0.0, -11.0},
|
|
{1, 0, 1, 0, 0, 3.0, 0.0, 6.0, 0.0, 0.0, 0.0},
|
|
{0, 2, 0, 2, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{2, -1, 2, -2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{0, -1, 4, -2, 1, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{0, 0, 4, -2, 3, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 4, -2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{4, 0, 2, -4, 2, -7.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
|
|
/* 571-580 */
|
|
{2, 2, 2, -2, 2, 8.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{2, 0, 4, -4, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-1, -2, 0, 4, 0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, -3, 2, 2, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{-3, 0, 2, 4, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{-3, 0, 2, -2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-1, -1, 0, -2, 1, 8.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{-3, 0, 0, 0, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{-3, 0, -2, 2, 0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 0, -4, 1, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
|
|
/* 581-590 */
|
|
{-2, 1, 0, -2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-4, 0, 0, 0, 1, -8.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
{-1, 0, 0, -4, 1, -7.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{-3, 0, 0, -2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{0, 0, 0, 3, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{-1, 1, 0, 4, 1, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{1, -2, 2, 0, 1, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{0, 1, 0, 3, 0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-1, 0, 2, 2, 3, 6.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{0, 0, 2, 2, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
|
|
/* 591-600 */
|
|
{-2, 0, 2, 2, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-1, 1, 2, 2, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{3, 0, 0, 0, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{2, 1, 0, 1, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{2, -1, 2, -1, 2, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{0, 0, 2, 0, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{0, 0, 3, 0, 3, 0.0, 0.0, -26.0, 0.0, 0.0, -11.0},
|
|
{0, 0, 3, 0, 2, 0.0, 0.0, -10.0, 0.0, 0.0, -5.0},
|
|
{-1, 2, 2, 2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{-1, 0, 4, 0, 0, -13.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 601-610 */
|
|
{1, 2, 2, 0, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{3, 1, 2, -2, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{1, 1, 4, -2, 2, 7.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{-2, -1, 0, 6, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, -2, 0, 4, 0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-2, 0, 0, 6, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-2, -2, 2, 4, 2, -6.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{0, -3, 2, 2, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{0, 0, 0, 4, 2, -7.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{-1, -1, 2, 3, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
|
|
/* 611-620 */
|
|
{-2, 0, 2, 4, 0, 13.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{2, -1, 0, 2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{1, 0, 0, 3, 0, -3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 0, 4, 1, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{0, 1, 0, 4, 0, -11.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, -1, 2, 1, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{0, 0, 2, 2, 3, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 0, 2, 2, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-1, 0, 2, 2, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-2, 0, 4, 2, 1, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
|
|
/* 621-630 */
|
|
{2, 1, 0, 2, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{2, 1, 0, 2, 0, -12.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{2, -1, 2, 0, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 0, 2, 1, 0, -3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 2, 2, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{2, 0, 2, 0, 3, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{3, 0, 2, 0, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{1, 0, 2, 0, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{1, 0, 3, 0, 3, 0.0, 0.0, -5.0, 0.0, 0.0, -2.0},
|
|
{1, 1, 2, 1, 1, -7.0, 0.0, 0.0, 4.0, 0.0, 0.0},
|
|
|
|
/* 631-640 */
|
|
{0, 2, 2, 2, 2, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{2, 1, 2, 0, 0, -3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{2, 0, 4, -2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{4, 1, 2, -2, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{-1, -1, 0, 6, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{-3, -1, 2, 6, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{-1, 0, 0, 6, 1, -5.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{-3, 0, 2, 6, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{1, -1, 0, 4, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{1, -1, 0, 4, 0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 641-650 */
|
|
{-2, 0, 2, 5, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{1, -2, 2, 2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{3, -1, 0, 2, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, -1, 2, 2, 0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 0, 2, 3, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{-1, 1, 2, 4, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{0, 1, 2, 3, 2, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{-1, 0, 4, 2, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{2, 0, 2, 1, 1, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{5, 0, 0, 0, 0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 651-660 */
|
|
{2, 1, 2, 1, 2, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{1, 0, 4, 0, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{3, 1, 2, 0, 1, 7.0, 0.0, 0.0, -4.0, 0.0, 0.0},
|
|
{3, 0, 4, -2, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{-2, -1, 2, 6, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{0, 0, 0, 6, 0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, -2, 2, 4, 2, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{-2, 0, 2, 6, 1, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0},
|
|
{2, 0, 0, 4, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{2, 0, 0, 4, 0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 661-670 */
|
|
{2, -2, 2, 2, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{0, 0, 2, 4, 0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{1, 0, 2, 3, 2, 7.0, 0.0, 0.0, -3.0, 0.0, 0.0},
|
|
{4, 0, 0, 2, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{2, 0, 2, 2, 0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0},
|
|
{0, 0, 4, 2, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{4, -1, 2, 0, 2, -6.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{3, 0, 2, 1, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{2, 1, 2, 2, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{4, 1, 2, 0, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
|
|
/* 671-678 */
|
|
{-1, -1, 2, 6, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{-1, 0, 2, 6, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{1, -1, 2, 4, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
{1, 1, 2, 4, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0},
|
|
{3, 1, 2, 2, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0},
|
|
{5, 0, 2, 0, 1, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{2, -1, 2, 4, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0},
|
|
{2, 0, 2, 4, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0},
|
|
}
|
|
|
|
/* Number of terms in the luni-solar nutation model */
|
|
NLS := len(xls)
|
|
|
|
/* ------------------------ */
|
|
/* Planetary nutation model */
|
|
/* ------------------------ */
|
|
|
|
/* The units for the sine and cosine coefficients are */
|
|
/* 0.1 microarcsecond */
|
|
|
|
xpl := []struct {
|
|
nl, /* coefficients of l, F, D and Omega */
|
|
nf,
|
|
nd,
|
|
nom,
|
|
nme, /* coefficients of planetary longitudes */
|
|
nve,
|
|
nea,
|
|
nma,
|
|
nju,
|
|
nsa,
|
|
nur,
|
|
nne,
|
|
npa int /* coefficient of general precession */
|
|
sp, cp int /* longitude sin, cos coefficients */
|
|
se, ce int /* obliquity sin, cos coefficients */
|
|
}{
|
|
|
|
/* 1-10 */
|
|
{0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, 0, 1440, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -8, 16, -4, -5, 0, 0, 2, 56, -117, -42, -40},
|
|
{0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, 2, 125, -43, 0, -54},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 2, 0, 5, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -4, 8, -1, -5, 0, 0, 2, 3, -7, -3, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 1, 3, 0, 0, -2},
|
|
{0, 1, -1, 1, 0, 0, 3, -8, 3, 0, 0, 0, 0, -114, 0, 0, 61},
|
|
{-1, 0, 0, 0, 0, 10, -3, 0, 0, 0, 0, 0, 0, -219, 89, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, -2, 6, -3, 0, 2, -3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, -462, 1604, 0, 0},
|
|
|
|
/* 11-20 */
|
|
{0, 1, -1, 1, 0, 0, -5, 8, -3, 0, 0, 0, 0, 99, 0, 0, -53},
|
|
{0, 0, 0, 0, 0, 0, -4, 8, -3, 0, 0, 0, 1, -3, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 4, -8, 1, 5, 0, 0, 2, 0, 6, 2, 0},
|
|
{0, 0, 0, 0, 0, -5, 6, 4, 0, 0, 0, 0, 2, 3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 2, -12, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 1, 14, -218, 117, 8},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 2, -5, 0, 0, 0, 31, -481, -257, -17},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 0, -491, 128, 0, 0},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, -2, 5, 0, 0, 0, -3084, 5123, 2735, 1647},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, -2, 5, 0, 0, 1, -1444, 2409, -1286, -771},
|
|
|
|
/* 21-30 */
|
|
{0, 0, 0, 0, 0, 0, 0, 0, -2, 5, 0, 0, 2, 11, -24, -11, -9},
|
|
{2, -1, -1, 0, 0, 0, 3, -7, 0, 0, 0, 0, 0, 26, -9, 0, 0},
|
|
{1, 0, -2, 0, 0, 19, -21, 3, 0, 0, 0, 0, 0, 103, -60, 0, 0},
|
|
{0, 1, -1, 1, 0, 2, -4, 0, -3, 0, 0, 0, 0, 0, -13, -7, 0},
|
|
{1, 0, -1, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0, -26, -29, -16, 14},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, -4, 10, 0, 0, 0, 9, -27, -14, -5},
|
|
{-2, 0, 2, 1, 0, 0, 2, 0, 0, -5, 0, 0, 0, 12, 0, 0, -6},
|
|
{0, 0, 0, 0, 0, 3, -7, 4, 0, 0, 0, 0, 0, -7, 0, 0, 0},
|
|
{0, -1, 1, 0, 0, 0, 1, 0, 1, -1, 0, 0, 0, 0, 24, 0, 0},
|
|
{-2, 0, 2, 1, 0, 0, 2, 0, -2, 0, 0, 0, 0, 284, 0, 0, -151},
|
|
|
|
/* 31-40 */
|
|
{-1, 0, 0, 0, 0, 18, -16, 0, 0, 0, 0, 0, 0, 226, 101, 0, 0},
|
|
{-2, 1, 1, 2, 0, 0, 1, 0, -2, 0, 0, 0, 0, 0, -8, -2, 0},
|
|
{-1, 1, -1, 1, 0, 18, -17, 0, 0, 0, 0, 0, 0, 0, -6, -3, 0},
|
|
{-1, 0, 1, 1, 0, 0, 2, -2, 0, 0, 0, 0, 0, 5, 0, 0, -3},
|
|
{0, 0, 0, 0, 0, -8, 13, 0, 0, 0, 0, 0, 2, -41, 175, 76, 17},
|
|
{0, 2, -2, 2, 0, -8, 11, 0, 0, 0, 0, 0, 0, 0, 15, 6, 0},
|
|
{0, 0, 0, 0, 0, -8, 13, 0, 0, 0, 0, 0, 1, 425, 212, -133, 269},
|
|
{0, 1, -1, 1, 0, -8, 12, 0, 0, 0, 0, 0, 0, 1200, 598, 319, -641},
|
|
{0, 0, 0, 0, 0, 8, -13, 0, 0, 0, 0, 0, 0, 235, 334, 0, 0},
|
|
{0, 1, -1, 1, 0, 8, -14, 0, 0, 0, 0, 0, 0, 11, -12, -7, -6},
|
|
|
|
/* 41-50 */
|
|
{0, 0, 0, 0, 0, 8, -13, 0, 0, 0, 0, 0, 1, 5, -6, 3, 3},
|
|
{-2, 0, 2, 1, 0, 0, 2, 0, -4, 5, 0, 0, 0, -5, 0, 0, 3},
|
|
{-2, 0, 2, 2, 0, 3, -3, 0, 0, 0, 0, 0, 0, 6, 0, 0, -3},
|
|
{-2, 0, 2, 0, 0, 0, 2, 0, -3, 1, 0, 0, 0, 15, 0, 0, 0},
|
|
{0, 0, 0, 1, 0, 3, -5, 0, 2, 0, 0, 0, 0, 13, 0, 0, -7},
|
|
{-2, 0, 2, 0, 0, 0, 2, 0, -4, 3, 0, 0, 0, -6, -9, 0, 0},
|
|
{0, -1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 266, -78, 0, 0},
|
|
{0, 0, 0, 1, 0, 0, -1, 2, 0, 0, 0, 0, 0, -460, -435, -232, 246},
|
|
{0, 1, -1, 2, 0, 0, -2, 2, 0, 0, 0, 0, 0, 0, 15, 7, 0},
|
|
{-1, 1, 0, 1, 0, 3, -5, 0, 0, 0, 0, 0, 0, -3, 0, 0, 2},
|
|
|
|
/* 51-60 */
|
|
{-1, 0, 1, 0, 0, 3, -4, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0},
|
|
{-2, 0, 2, 0, 0, 0, 2, 0, -2, -2, 0, 0, 0, 4, 0, 0, 0},
|
|
{-2, 2, 0, 2, 0, 0, -5, 9, 0, 0, 0, 0, 0, 0, 3, 0, 0},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 4, 2, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 0, 0, 0, 2, 0, -17, -19, -10, 9},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, -9, -11, 6, -5},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, -6, 0, 0, 3},
|
|
{-1, 0, 1, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, -16, 8, 0, 0},
|
|
{0, -1, 1, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0},
|
|
|
|
/* 61-70 */
|
|
{0, 1, -1, 2, 0, 0, -1, 0, 0, 2, 0, 0, 0, 11, 24, 11, -5},
|
|
{0, 0, 0, 1, 0, 0, -9, 17, 0, 0, 0, 0, 0, -3, -4, -2, 1},
|
|
{0, 0, 0, 2, 0, -3, 5, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, -1, 2, 0, 0, 0, 0, -8, -4, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 3, 0, 0},
|
|
{1, 0, -2, 0, 0, 17, -16, 0, -2, 0, 0, 0, 0, 0, 5, 0, 0},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 1, -3, 0, 0, 0, 0, 3, 2, 0},
|
|
{-2, 0, 2, 1, 0, 0, 5, -6, 0, 0, 0, 0, 0, -6, 4, 2, 3},
|
|
{0, -2, 2, 0, 0, 0, 9, -13, 0, 0, 0, 0, 0, -3, -5, 0, 0},
|
|
{0, 1, -1, 2, 0, 0, -1, 0, 0, 1, 0, 0, 0, -5, 0, 0, 2},
|
|
|
|
/* 71-80 */
|
|
{0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 24, 13, -2},
|
|
{0, -1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, -42, 20, 0, 0},
|
|
{0, -2, 2, 0, 0, 5, -6, 0, 0, 0, 0, 0, 0, -10, 233, 0, 0},
|
|
{0, -1, 1, 1, 0, 5, -7, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1},
|
|
{-2, 0, 2, 0, 0, 6, -8, 0, 0, 0, 0, 0, 0, 78, -18, 0, 0},
|
|
{2, 1, -3, 1, 0, -6, 7, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0},
|
|
{0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -3, -1, 0},
|
|
{0, -1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, -4, -2, 1},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 0, 0, 2, 0, 0, 0, -8, -4, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -5, 3, 0},
|
|
|
|
/* 81-90 */
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, -7, 0, 0, 3},
|
|
{0, 0, 0, 0, 0, 0, -8, 15, 0, 0, 0, 0, 2, -14, 8, 3, 6},
|
|
{0, 0, 0, 0, 0, 0, -8, 15, 0, 0, 0, 0, 1, 0, 8, -4, 0},
|
|
{0, 1, -1, 1, 0, 0, -9, 15, 0, 0, 0, 0, 0, 0, 19, 10, 0},
|
|
{0, 0, 0, 0, 0, 0, 8, -15, 0, 0, 0, 0, 0, 45, -22, 0, 0},
|
|
{1, -1, -1, 0, 0, 0, 8, -15, 0, 0, 0, 0, 0, -3, 0, 0, 0},
|
|
{2, 0, -2, 0, 0, 2, -5, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0},
|
|
{-2, 0, 2, 0, 0, 0, 2, 0, -5, 5, 0, 0, 0, 0, 3, 0, 0},
|
|
{2, 0, -2, 1, 0, 0, -6, 8, 0, 0, 0, 0, 0, 3, 5, 3, -2},
|
|
{2, 0, -2, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0, 89, -16, -9, -48},
|
|
|
|
/* 91-100 */
|
|
{-2, 1, 1, 0, 0, 0, 1, 0, -3, 0, 0, 0, 0, 0, 3, 0, 0},
|
|
{-2, 1, 1, 1, 0, 0, 1, 0, -3, 0, 0, 0, 0, -3, 7, 4, 2},
|
|
{-2, 0, 2, 0, 0, 0, 2, 0, -3, 0, 0, 0, 0, -349, -62, 0, 0},
|
|
{-2, 0, 2, 0, 0, 0, 6, -8, 0, 0, 0, 0, 0, -15, 22, 0, 0},
|
|
{-2, 0, 2, 0, 0, 0, 2, 0, -1, -5, 0, 0, 0, -3, 0, 0, 0},
|
|
{-1, 0, 1, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, -53, 0, 0, 0},
|
|
{-1, 1, 1, 1, 0, -20, 20, 0, 0, 0, 0, 0, 0, 5, 0, 0, -3},
|
|
{1, 0, -2, 0, 0, 20, -21, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0},
|
|
{0, 0, 0, 1, 0, 0, 8, -15, 0, 0, 0, 0, 0, 15, -7, -4, -8},
|
|
{0, 2, -2, 1, 0, 0, -10, 15, 0, 0, 0, 0, 0, -3, 0, 0, 1},
|
|
|
|
/* 101-110 */
|
|
{0, -1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -21, -78, 0, 0},
|
|
{0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20, -70, -37, -11},
|
|
{0, 1, -1, 2, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 6, 3, 0},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, -2, 4, 0, 0, 0, 5, 3, 2, -2},
|
|
{2, 0, -2, 1, 0, -6, 8, 0, 0, 0, 0, 0, 0, -17, -4, -2, 9},
|
|
{0, -2, 2, 1, 0, 5, -6, 0, 0, 0, 0, 0, 0, 0, 6, 3, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 32, 15, -8, 17},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 174, 84, 45, -93},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 11, 56, 0, 0},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 0, 1, 0, 0, 0, -66, -12, -6, 35},
|
|
|
|
/* 111-120 */
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 47, 8, 4, -25},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 8, 4, 0},
|
|
{0, 2, -2, 1, 0, 0, -9, 13, 0, 0, 0, 0, 0, 10, -22, -12, -5},
|
|
{0, 0, 0, 1, 0, 0, 7, -13, 0, 0, 0, 0, 0, -3, 0, 0, 2},
|
|
{-2, 0, 2, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, -24, 12, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 9, -17, 0, 0, 0, 0, 0, 5, -6, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -9, 17, 0, 0, 0, 0, 2, 3, 0, 0, -2},
|
|
{1, 0, -1, 1, 0, 0, -3, 4, 0, 0, 0, 0, 0, 4, 3, 1, -2},
|
|
{1, 0, -1, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0, 0, 29, 15, 0},
|
|
{0, 0, 0, 2, 0, 0, -1, 2, 0, 0, 0, 0, 0, -5, -4, -2, 2},
|
|
|
|
/* 121-130 */
|
|
{0, -1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 8, -3, -1, -5},
|
|
{0, -2, 2, 0, 1, 0, -2, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0},
|
|
{0, 0, 0, 0, 0, 3, -5, 0, 2, 0, 0, 0, 0, 10, 0, 0, 0},
|
|
{-2, 0, 2, 1, 0, 0, 2, 0, -3, 1, 0, 0, 0, 3, 0, 0, -2},
|
|
{-2, 0, 2, 1, 0, 3, -3, 0, 0, 0, 0, 0, 0, -5, 0, 0, 3},
|
|
{0, 0, 0, 1, 0, 8, -13, 0, 0, 0, 0, 0, 0, 46, 66, 35, -25},
|
|
{0, -1, 1, 0, 0, 8, -12, 0, 0, 0, 0, 0, 0, -14, 7, 0, 0},
|
|
{0, 2, -2, 1, 0, -8, 11, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0},
|
|
{-1, 0, 1, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, -5, 0, 0, 0},
|
|
{-1, 0, 0, 1, 0, 18, -16, 0, 0, 0, 0, 0, 0, -68, -34, -18, 36},
|
|
|
|
/* 131-140 */
|
|
{0, 1, -1, 1, 0, 0, -1, 0, -1, 1, 0, 0, 0, 0, 14, 7, 0},
|
|
{0, 0, 0, 1, 0, 3, -7, 4, 0, 0, 0, 0, 0, 10, -6, -3, -5},
|
|
{-2, 1, 1, 1, 0, 0, -3, 7, 0, 0, 0, 0, 0, -5, -4, -2, 3},
|
|
{0, 1, -1, 2, 0, 0, -1, 0, -2, 5, 0, 0, 0, -3, 5, 2, 1},
|
|
{0, 0, 0, 1, 0, 0, 0, 0, -2, 5, 0, 0, 0, 76, 17, 9, -41},
|
|
{0, 0, 0, 1, 0, 0, -4, 8, -3, 0, 0, 0, 0, 84, 298, 159, -45},
|
|
{1, 0, 0, 1, 0, -10, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1},
|
|
{0, 2, -2, 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, -3, 0, 0, 2},
|
|
{-1, 0, 0, 1, 0, 10, -3, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1},
|
|
{0, 0, 0, 1, 0, 0, 4, -8, 3, 0, 0, 0, 0, -82, 292, 156, 44},
|
|
|
|
/* 141-150 */
|
|
{0, 0, 0, 1, 0, 0, 0, 0, 2, -5, 0, 0, 0, -73, 17, 9, 39},
|
|
{0, -1, 1, 0, 0, 0, 1, 0, 2, -5, 0, 0, 0, -9, -16, 0, 0},
|
|
{2, -1, -1, 1, 0, 0, 3, -7, 0, 0, 0, 0, 0, 3, 0, -1, -2},
|
|
{-2, 0, 2, 0, 0, 0, 2, 0, 0, -5, 0, 0, 0, -3, 0, 0, 0},
|
|
{0, 0, 0, 1, 0, -3, 7, -4, 0, 0, 0, 0, 0, -9, -5, -3, 5},
|
|
{-2, 0, 2, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0, -439, 0, 0, 0},
|
|
{1, 0, 0, 1, 0, -18, 16, 0, 0, 0, 0, 0, 0, 57, -28, -15, -30},
|
|
{-2, 1, 1, 1, 0, 0, 1, 0, -2, 0, 0, 0, 0, 0, -6, -3, 0},
|
|
{0, 1, -1, 2, 0, -8, 12, 0, 0, 0, 0, 0, 0, -4, 0, 0, 2},
|
|
{0, 0, 0, 1, 0, -8, 13, 0, 0, 0, 0, 0, 0, -40, 57, 30, 21},
|
|
|
|
/* 151-160 */
|
|
{0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 1, 23, 7, 3, -13},
|
|
{0, 1, -1, 1, 0, 0, 0, -2, 0, 0, 0, 0, 0, 273, 80, 43, -146},
|
|
{0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, -449, 430, 0, 0},
|
|
{0, 1, -1, 1, 0, 0, -2, 2, 0, 0, 0, 0, 0, -8, -47, -25, 4},
|
|
{0, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 1, 6, 47, 25, -3},
|
|
{-1, 0, 1, 1, 0, 3, -4, 0, 0, 0, 0, 0, 0, 0, 23, 13, 0},
|
|
{-1, 0, 1, 1, 0, 0, 3, -4, 0, 0, 0, 0, 0, -3, 0, 0, 2},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 0, -2, 0, 0, 0, 3, -4, -2, -2},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 0, 2, 0, 0, 0, -48, -110, -59, 26},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 51, 114, 61, -27},
|
|
|
|
/* 161-170 */
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, -133, 0, 0, 57},
|
|
{0, 1, -1, 0, 0, 3, -6, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0},
|
|
{0, 0, 0, 1, 0, -3, 5, 0, 0, 0, 0, 0, 0, -21, -6, -3, 11},
|
|
{0, 1, -1, 2, 0, -3, 4, 0, 0, 0, 0, 0, 0, 0, -3, -1, 0},
|
|
{0, 0, 0, 1, 0, 0, -2, 4, 0, 0, 0, 0, 0, -11, -21, -11, 6},
|
|
{0, 2, -2, 1, 0, -5, 6, 0, 0, 0, 0, 0, 0, -18, -436, -233, 9},
|
|
{0, -1, 1, 0, 0, 5, -7, 0, 0, 0, 0, 0, 0, 35, -7, 0, 0},
|
|
{0, 0, 0, 1, 0, 5, -8, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0},
|
|
{-2, 0, 2, 1, 0, 6, -8, 0, 0, 0, 0, 0, 0, 11, -3, -1, -6},
|
|
{0, 0, 0, 1, 0, 0, -8, 15, 0, 0, 0, 0, 0, -5, -3, -1, 3},
|
|
|
|
/* 171-180 */
|
|
{-2, 0, 2, 1, 0, 0, 2, 0, -3, 0, 0, 0, 0, -53, -9, -5, 28},
|
|
{-2, 0, 2, 1, 0, 0, 6, -8, 0, 0, 0, 0, 0, 0, 3, 2, 1},
|
|
{1, 0, -1, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0, 4, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, -4, 0, 0},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, -1, 0, 0, 0, 0, -50, 194, 103, 27},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, -13, 52, 28, 7},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -91, 248, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 6, 49, 26, -3},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0, -6, -47, -25, 3},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 3, 0},
|
|
|
|
/* 181-190 */
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 52, 23, 10, -23},
|
|
{0, 1, -1, 2, 0, 0, -1, 0, 0, -1, 0, 0, 0, -3, 0, 0, 1},
|
|
{0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 5, 3, 0},
|
|
{0, -1, 1, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, -4, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -7, 13, 0, 0, 0, 0, 2, -4, 8, 3, 2},
|
|
{0, 0, 0, 0, 0, 0, 7, -13, 0, 0, 0, 0, 0, 10, 0, 0, 0},
|
|
{2, 0, -2, 1, 0, 0, -5, 6, 0, 0, 0, 0, 0, 3, 0, 0, -2},
|
|
{0, 2, -2, 1, 0, 0, -8, 11, 0, 0, 0, 0, 0, 0, 8, 4, 0},
|
|
{0, 2, -2, 1, -1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 4, 1},
|
|
{-2, 0, 2, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, -4, 0, 0, 0},
|
|
|
|
/* 191-200 */
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, -4, 0, 0, 0},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 0, 3, 0, 0, 0, -8, 4, 2, 4},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 8, -4, -2, -4},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 15, 7, 0},
|
|
{-2, 0, 2, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0},
|
|
{0, 0, 0, 2, 0, 0, -4, 8, -3, 0, 0, 0, 0, 0, -7, -3, 0},
|
|
{0, 0, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, -7, -3, 0},
|
|
{2, 0, -2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0, 54, 0, 0, -29},
|
|
{0, 1, -1, 2, 0, 0, -1, 0, 2, 0, 0, 0, 0, 0, 10, 4, 0},
|
|
{0, 1, -1, 2, 0, 0, 0, -2, 0, 0, 0, 0, 0, -7, 0, 0, 3},
|
|
|
|
/* 201-210 */
|
|
{0, 0, 0, 1, 0, 0, 1, -2, 0, 0, 0, 0, 0, -37, 35, 19, 20},
|
|
{0, -1, 1, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 4, 0, 0},
|
|
{0, -1, 1, 0, 0, 0, 1, 0, 0, -2, 0, 0, 0, -4, 9, 0, 0},
|
|
{0, 2, -2, 1, 0, 0, -2, 0, 0, 2, 0, 0, 0, 8, 0, 0, -4},
|
|
{0, 1, -1, 1, 0, 3, -6, 0, 0, 0, 0, 0, 0, -9, -14, -8, 5},
|
|
{0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 1, -3, -9, -5, 3},
|
|
{0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 0, -145, 47, 0, 0},
|
|
{0, 1, -1, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0, -10, 40, 21, 5},
|
|
{0, 0, 0, 0, 0, -3, 5, 0, 0, 0, 0, 0, 1, 11, -49, -26, -7},
|
|
{0, 0, 0, 0, 0, -3, 5, 0, 0, 0, 0, 0, 2, -2150, 0, 0, 932},
|
|
|
|
/* 211-220 */
|
|
{0, 2, -2, 2, 0, -3, 3, 0, 0, 0, 0, 0, 0, -12, 0, 0, 5},
|
|
{0, 0, 0, 0, 0, -3, 5, 0, 0, 0, 0, 0, 2, 85, 0, 0, -37},
|
|
{0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 1, 4, 0, 0, -2},
|
|
{0, 1, -1, 1, 0, 0, 1, -4, 0, 0, 0, 0, 0, 3, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, -86, 153, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 0, 1, -6, 9, 5, 3},
|
|
{0, 1, -1, 1, 0, 0, -3, 4, 0, 0, 0, 0, 0, 9, -13, -7, -5},
|
|
{0, 0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 0, 1, -8, 12, 6, 4},
|
|
{0, 0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 0, 2, -51, 0, 0, 22},
|
|
{0, 0, 0, 0, 0, -5, 8, 0, 0, 0, 0, 0, 2, -11, -268, -116, 5},
|
|
|
|
/* 221-230 */
|
|
{0, 2, -2, 2, 0, -5, 6, 0, 0, 0, 0, 0, 0, 0, 12, 5, 0},
|
|
{0, 0, 0, 0, 0, -5, 8, 0, 0, 0, 0, 0, 2, 0, 7, 3, 0},
|
|
{0, 0, 0, 0, 0, -5, 8, 0, 0, 0, 0, 0, 1, 31, 6, 3, -17},
|
|
{0, 1, -1, 1, 0, -5, 7, 0, 0, 0, 0, 0, 0, 140, 27, 14, -75},
|
|
{0, 0, 0, 0, 0, -5, 8, 0, 0, 0, 0, 0, 1, 57, 11, 6, -30},
|
|
{0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0, 0, -14, -39, 0, 0},
|
|
{0, 1, -1, 2, 0, 0, -1, 0, -1, 0, 0, 0, 0, 0, -6, -2, 0},
|
|
{0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 4, 15, 8, -2},
|
|
{0, -1, 1, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 4, 0, 0},
|
|
{0, 2, -2, 1, 0, 0, -2, 0, 1, 0, 0, 0, 0, -3, 0, 0, 1},
|
|
|
|
/* 231-240 */
|
|
{0, 0, 0, 0, 0, 0, -6, 11, 0, 0, 0, 0, 2, 0, 11, 5, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, -11, 0, 0, 0, 0, 0, 9, 6, 0, 0},
|
|
{0, 0, 0, 0, -1, 0, 4, 0, 0, 0, 0, 0, 2, -4, 10, 4, 2},
|
|
{0, 0, 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0},
|
|
{2, 0, -2, 1, 0, -3, 3, 0, 0, 0, 0, 0, 0, 16, 0, 0, -9},
|
|
{-2, 0, 2, 0, 0, 0, 2, 0, 0, -2, 0, 0, 0, -3, 0, 0, 0},
|
|
{0, 2, -2, 1, 0, 0, -7, 9, 0, 0, 0, 0, 0, 0, 3, 2, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 2, 7, 0, 0, -3},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, -25, 22, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 42, 223, 119, -22},
|
|
|
|
/* 241-250 */
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0, -27, -143, -77, 14},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 9, 49, 26, -5},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, -1166, 0, 0, 505},
|
|
{0, 2, -2, 2, 0, 0, -2, 0, 2, 0, 0, 0, 0, -5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 2, -6, 0, 0, 3},
|
|
{0, 0, 0, 1, 0, 3, -5, 0, 0, 0, 0, 0, 0, -8, 0, 1, 4},
|
|
{0, -1, 1, 0, 0, 3, -4, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0},
|
|
{0, 2, -2, 1, 0, -3, 3, 0, 0, 0, 0, 0, 0, 117, 0, 0, -63},
|
|
{0, 0, 0, 1, 0, 0, 2, -4, 0, 0, 0, 0, 0, -4, 8, 4, 2},
|
|
{0, 2, -2, 1, 0, 0, -4, 4, 0, 0, 0, 0, 0, 3, 0, 0, -2},
|
|
|
|
/* 251-260 */
|
|
{0, 1, -1, 2, 0, -5, 7, 0, 0, 0, 0, 0, 0, -5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0, 0, 31, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -3, 6, 0, 0, 0, 0, 1, -5, 0, 1, 3},
|
|
{0, 1, -1, 1, 0, 0, -4, 6, 0, 0, 0, 0, 0, 4, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, -3, 6, 0, 0, 0, 0, 1, -4, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, -3, 6, 0, 0, 0, 0, 2, -24, -13, -6, 10},
|
|
{0, -1, 1, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0},
|
|
{0, 0, 0, 1, 0, 2, -3, 0, 0, 0, 0, 0, 0, 0, -32, -17, 0},
|
|
{0, 0, 0, 0, 0, 0, -5, 9, 0, 0, 0, 0, 2, 8, 12, 5, -3},
|
|
{0, 0, 0, 0, 0, 0, -5, 9, 0, 0, 0, 0, 1, 3, 0, 0, -1},
|
|
|
|
/* 261-270 */
|
|
{0, 0, 0, 0, 0, 0, 5, -9, 0, 0, 0, 0, 0, 7, 13, 0, 0},
|
|
{0, -1, 1, 0, 0, 0, 1, 0, -2, 0, 0, 0, 0, -3, 16, 0, 0},
|
|
{0, 2, -2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0, 50, 0, 0, -27},
|
|
{-2, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -5, -3, 0},
|
|
{0, -2, 2, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, -6, 10, 0, 0, 0, 0, 0, 1, 0, 5, 3, 1},
|
|
{0, 0, 0, 0, 0, -6, 10, 0, 0, 0, 0, 0, 2, 24, 5, 2, -11},
|
|
{0, 0, 0, 0, 0, -2, 3, 0, 0, 0, 0, 0, 2, 5, -11, -5, -2},
|
|
{0, 0, 0, 0, 0, -2, 3, 0, 0, 0, 0, 0, 1, 30, -3, -2, -16},
|
|
{0, 1, -1, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0, 18, 0, 0, -9},
|
|
|
|
/* 271-280 */
|
|
{0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 0, 8, 614, 0, 0},
|
|
{0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 1, 3, -3, -1, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 6, 17, 9, -3},
|
|
{0, 1, -1, 1, 0, 0, -1, 0, 3, 0, 0, 0, 0, -3, -9, -5, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 6, 3, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, -127, 21, 9, 55},
|
|
{0, 0, 0, 0, 0, 0, 4, -8, 0, 0, 0, 0, 0, 3, 5, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -4, 8, 0, 0, 0, 0, 2, -6, -10, -4, 3},
|
|
{0, -2, 2, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0, 5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -4, 7, 0, 0, 0, 0, 2, 16, 9, 4, -7},
|
|
|
|
/* 281-290 */
|
|
{0, 0, 0, 0, 0, 0, -4, 7, 0, 0, 0, 0, 1, 3, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, 0, 0, 22, 0, 0},
|
|
{0, 0, 0, 1, 0, -2, 3, 0, 0, 0, 0, 0, 0, 0, 19, 10, 0},
|
|
{0, 2, -2, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0, 7, 0, 0, -4},
|
|
{0, 0, 0, 0, 0, 0, -5, 10, 0, 0, 0, 0, 2, 0, -5, -2, 0},
|
|
{0, 0, 0, 1, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, -9, 3, 1, 4},
|
|
{0, 0, 0, 0, 0, 0, -3, 5, 0, 0, 0, 0, 2, 17, 0, 0, -7},
|
|
{0, 0, 0, 0, 0, 0, -3, 5, 0, 0, 0, 0, 1, 0, -3, -2, -1},
|
|
{0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, -20, 34, 0, 0},
|
|
|
|
/* 291-300 */
|
|
{0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 1, -10, 0, 1, 5},
|
|
{0, 1, -1, 1, 0, 1, -3, 0, 0, 0, 0, 0, 0, -4, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, 22, -87, 0, 0},
|
|
{0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 1, -4, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 2, -3, -6, -2, 1},
|
|
{0, 0, 0, 0, 0, -7, 11, 0, 0, 0, 0, 0, 2, -16, -3, -1, 7},
|
|
{0, 0, 0, 0, 0, -7, 11, 0, 0, 0, 0, 0, 1, 0, -3, -2, 0},
|
|
{0, -2, 2, 0, 0, 4, -4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, -68, 39, 0, 0},
|
|
{0, 2, -2, 1, 0, -4, 4, 0, 0, 0, 0, 0, 0, 27, 0, 0, -14},
|
|
|
|
/* 301-310 */
|
|
{0, -1, 1, 0, 0, 4, -5, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, -25, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, -4, 7, 0, 0, 0, 0, 0, 1, -12, -3, -2, 6},
|
|
{0, 1, -1, 1, 0, -4, 6, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, -4, 7, 0, 0, 0, 0, 0, 2, 3, 66, 29, -1},
|
|
{0, 0, 0, 0, 0, -4, 6, 0, 0, 0, 0, 0, 2, 490, 0, 0, -213},
|
|
{0, 0, 0, 0, 0, -4, 6, 0, 0, 0, 0, 0, 1, -22, 93, 49, 12},
|
|
{0, 1, -1, 1, 0, -4, 5, 0, 0, 0, 0, 0, 0, -7, 28, 15, 4},
|
|
{0, 0, 0, 0, 0, -4, 6, 0, 0, 0, 0, 0, 1, -3, 13, 7, 2},
|
|
{0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0, 0, -46, 14, 0, 0},
|
|
|
|
/* 311-320 */
|
|
{-2, 0, 2, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 0},
|
|
{0, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0},
|
|
{0, 0, 0, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, -28, 0, 0, 15},
|
|
{0, 0, 0, 0, 0, 0, -1, 0, 5, 0, 0, 0, 2, 5, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, 0, 3, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -1, 3, 0, 0, 0, 0, 2, -11, 0, 0, 5},
|
|
{0, 0, 0, 0, 0, 0, -7, 12, 0, 0, 0, 0, 2, 0, 3, 1, 0},
|
|
{0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 2, -3, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 1, 25, 106, 57, -13},
|
|
|
|
/* 321-330 */
|
|
{0, 1, -1, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 5, 21, 11, -3},
|
|
{0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 1485, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 1, -7, -32, -17, 4},
|
|
{0, 1, -1, 1, 0, 1, -2, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0},
|
|
{0, 0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 2, -6, -3, -2, 3},
|
|
{0, 0, 0, 0, 0, 0, -1, 0, 4, 0, 0, 0, 2, 30, -6, -2, -13},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, -4, 0, 0, 0, 0, -4, 4, 0, 0},
|
|
{0, 0, 0, 1, 0, -1, 1, 0, 0, 0, 0, 0, 0, -19, 0, 0, 10},
|
|
{0, 0, 0, 0, 0, 0, -6, 10, 0, 0, 0, 0, 2, 0, 4, 2, -1},
|
|
{0, 0, 0, 0, 0, 0, -6, 10, 0, 0, 0, 0, 0, 0, 3, 0, 0},
|
|
|
|
/* 331-340 */
|
|
{0, 2, -2, 1, 0, 0, -3, 0, 3, 0, 0, 0, 0, 4, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, -3, 7, 0, 0, 0, 0, 2, 0, -3, -1, 0},
|
|
{-2, 0, 2, 0, 0, 4, -4, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -5, 8, 0, 0, 0, 0, 2, 5, 3, 1, -2},
|
|
{0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0, 0, 11, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -1, 0, 3, 0, 0, 0, 2, 118, 0, 0, -52},
|
|
{0, 0, 0, 0, 0, 0, -1, 0, 3, 0, 0, 0, 1, 0, -5, -3, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, -3, 0, 0, 0, 0, -28, 36, 0, 0},
|
|
{0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, 0, 5, -5, 0, 0},
|
|
{0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 0, 0, 1, 14, -59, -31, -8},
|
|
|
|
/* 341-350 */
|
|
{0, 1, -1, 1, 0, -2, 3, 0, 0, 0, 0, 0, 0, 0, 9, 5, 1},
|
|
{0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 0, 0, 2, -458, 0, 0, 198},
|
|
{0, 0, 0, 0, 0, -6, 9, 0, 0, 0, 0, 0, 2, 0, -45, -20, 0},
|
|
{0, 0, 0, 0, 0, -6, 9, 0, 0, 0, 0, 0, 1, 9, 0, 0, -5},
|
|
{0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0},
|
|
{0, 0, 0, 1, 0, 0, 1, 0, -2, 0, 0, 0, 0, 0, -4, -2, -1},
|
|
{0, 2, -2, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0, 11, 0, 0, -6},
|
|
{0, 0, 0, 0, 0, 0, -4, 6, 0, 0, 0, 0, 2, 6, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0, -16, 23, 0, 0},
|
|
{0, 0, 0, 1, 0, 3, -4, 0, 0, 0, 0, 0, 0, 0, -4, -2, 0},
|
|
|
|
/* 351-360 */
|
|
{0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0, 2, -5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, -2, 0, 0, 0, 0, -166, 269, 0, 0},
|
|
{0, 0, 0, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0, 15, 0, 0, -8},
|
|
{0, 0, 0, 0, 0, -5, 9, 0, 0, 0, 0, 0, 2, 10, 0, 0, -4},
|
|
{0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, -78, 45, 0, 0},
|
|
{0, 0, 0, 0, 0, -3, 4, 0, 0, 0, 0, 0, 2, 0, -5, -2, 0},
|
|
{0, 0, 0, 0, 0, -3, 4, 0, 0, 0, 0, 0, 1, 7, 0, 0, -4},
|
|
{0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, 0, -5, 328, 0, 0},
|
|
{0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, 1, 3, 0, 0, -2},
|
|
{0, 0, 0, 1, 0, 0, 2, -2, 0, 0, 0, 0, 0, 5, 0, 0, -2},
|
|
|
|
/* 361-370 */
|
|
{0, 0, 0, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0, 0, 3, 1, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 0, -3, 0, 0, 0, -3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 1, -5, 0, 0, 0, -3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 1, 0, -4, -2, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, -1223, -26, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 1, 0, 7, 3, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, -3, 5, 0, 0, 0, 3, 0, 0, 0},
|
|
{0, 0, 0, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 0, -2, 0, 0, 0, -6, 20, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, -368, 0, 0, 0},
|
|
|
|
/* 371-380 */
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, -75, 0, 0, 0},
|
|
{0, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0, 11, 0, 0, -6},
|
|
{0, 0, 0, 1, 0, 0, -2, 2, 0, 0, 0, 0, 0, 3, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, -8, 14, 0, 0, 0, 0, 0, 2, -3, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 2, -5, 0, 0, 0, -13, -30, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -8, 3, 0, 0, 0, 0, 21, 3, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -8, 3, 0, 0, 0, 2, -3, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, -4, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, -27, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -8, 3, 0, 0, 0, 0, -19, -11, 0, 0},
|
|
|
|
/* 381-390 */
|
|
{0, 0, 0, 0, 0, 0, -3, 8, -3, 0, 0, 0, 2, -4, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, -2, 5, 0, 0, 2, 0, 5, 2, 0},
|
|
{0, 0, 0, 0, 0, -8, 12, 0, 0, 0, 0, 0, 2, -6, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, -8, 12, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 1, -2, 0, 0, 0, -1, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 2, -14, 0, 0, 6},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 6, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, -74, 0, 0, 32},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 2, 0, -3, -1, 0},
|
|
{0, 2, -2, 1, 0, -5, 5, 0, 0, 0, 0, 0, 0, 4, 0, 0, -2},
|
|
|
|
/* 391-400 */
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 8, 11, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 3, 2, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, -262, 0, 0, 114},
|
|
{0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0},
|
|
{0, 0, 0, 0, 0, -3, 6, 0, 0, 0, 0, 0, 1, -7, 0, 0, 4},
|
|
{0, 0, 0, 0, 0, -3, 6, 0, 0, 0, 0, 0, 2, 0, -27, -12, 0},
|
|
{0, 0, 0, 0, 0, 0, -1, 4, 0, 0, 0, 0, 2, -19, -8, -4, 8},
|
|
{0, 0, 0, 0, 0, -5, 7, 0, 0, 0, 0, 0, 2, 202, 0, 0, -87},
|
|
{0, 0, 0, 0, 0, -5, 7, 0, 0, 0, 0, 0, 1, -8, 35, 19, 5},
|
|
{0, 1, -1, 1, 0, -5, 6, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0},
|
|
|
|
/* 401-410 */
|
|
{0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0, 0, 16, -5, 0, 0},
|
|
{0, 2, -2, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0, 5, 0, 0, -3},
|
|
{0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, -3, 0, 0},
|
|
{0, 0, 0, 0, -1, 0, 3, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, -35, -48, -21, 15},
|
|
{0, 0, 0, 0, 0, 0, -2, 6, 0, 0, 0, 0, 2, -3, -5, -2, 1},
|
|
{0, 0, 0, 1, 0, 2, -2, 0, 0, 0, 0, 0, 0, 6, 0, 0, -3},
|
|
{0, 0, 0, 0, 0, 0, -6, 9, 0, 0, 0, 0, 2, 3, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0, 0, -5, 0, 0},
|
|
{0, 0, 0, 0, 0, -2, 2, 0, 0, 0, 0, 0, 1, 12, 55, 29, -6},
|
|
|
|
/* 411-420 */
|
|
{0, 1, -1, 1, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0},
|
|
{0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, -598, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 1, -3, -13, -7, 1},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 2, -5, -7, -3, 2},
|
|
{0, 0, 0, 0, 0, 0, -5, 7, 0, 0, 0, 0, 2, 3, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0, 5, -7, 0, 0},
|
|
{0, 0, 0, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0, 4, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0, 16, -6, 0, 0},
|
|
{0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, 0, 8, -3, 0, 0},
|
|
{0, 0, 0, 0, 0, -1, 3, 0, 0, 0, 0, 0, 1, 8, -31, -16, -4},
|
|
|
|
/* 421-430 */
|
|
{0, 1, -1, 1, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0},
|
|
{0, 0, 0, 0, 0, -1, 3, 0, 0, 0, 0, 0, 2, 113, 0, 0, -49},
|
|
{0, 0, 0, 0, 0, -7, 10, 0, 0, 0, 0, 0, 2, 0, -24, -10, 0},
|
|
{0, 0, 0, 0, 0, -7, 10, 0, 0, 0, 0, 0, 1, 4, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 27, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, -4, 8, 0, 0, 0, 0, 0, 2, -3, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, -4, 5, 0, 0, 0, 0, 0, 2, 0, -4, -2, 0},
|
|
{0, 0, 0, 0, 0, -4, 5, 0, 0, 0, 0, 0, 1, 5, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2, -13, 0, 0, 6},
|
|
|
|
/* 431-440 */
|
|
{0, 0, 0, 0, 0, 0, -2, 0, 5, 0, 0, 0, 2, 5, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, -18, -10, -4, 8},
|
|
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -4, -28, 0, 0},
|
|
{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, -5, 6, 3, 2},
|
|
{0, 0, 0, 0, 0, -9, 13, 0, 0, 0, 0, 0, 2, -3, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, -1, 5, 0, 0, 0, 0, 2, -5, -9, -4, 2},
|
|
{0, 0, 0, 0, 0, 0, -2, 0, 4, 0, 0, 0, 2, 17, 0, 0, -7},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, -4, 0, 0, 0, 0, 11, 4, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, -2, 7, 0, 0, 0, 0, 2, 0, -6, -2, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, -3, 0, 0, 0, 0, 83, 15, 0, 0},
|
|
|
|
/* 441-450 */
|
|
{0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 0, 1, -4, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 0, 2, 0, -114, -49, 0},
|
|
{0, 0, 0, 0, 0, -6, 8, 0, 0, 0, 0, 0, 2, 117, 0, 0, -51},
|
|
{0, 0, 0, 0, 0, -6, 8, 0, 0, 0, 0, 0, 1, -5, 19, 10, 2},
|
|
{0, 0, 0, 0, 0, 6, -8, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0},
|
|
{0, 0, 0, 1, 0, 0, 2, 0, -2, 0, 0, 0, 0, -3, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, -3, 9, 0, 0, 0, 0, 2, 0, -3, -1, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, 3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 2, 0, -6, -2, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0, 393, 3, 0, 0},
|
|
|
|
/* 451-460 */
|
|
{0, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 1, -4, 21, 11, 2},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 2, -6, 0, -1, 3},
|
|
{0, 0, 0, 0, 0, -5, 10, 0, 0, 0, 0, 0, 2, -3, 8, 4, 1},
|
|
{0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 8, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 2, 18, -29, -13, -8},
|
|
{0, 0, 0, 0, 0, -3, 3, 0, 0, 0, 0, 0, 1, 8, 34, 18, -4},
|
|
{0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 1, 3, 12, 6, -1},
|
|
{0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 2, 54, -15, -7, -24},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, -3, 0, 0, 0, 0, 3, 0, 0},
|
|
|
|
/* 461-470 */
|
|
{0, 0, 0, 0, 0, 0, -5, 13, 0, 0, 0, 0, 2, 3, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, -1, 0, 0, 0, 0, 0, 35, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, -1, 0, 0, 0, 2, -154, -30, -13, 67},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, -2, 0, 0, 0, 15, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, -2, 0, 0, 1, 0, 4, 2, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 0, 9, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 2, 80, -71, -31, -35},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, -1, 0, 0, 2, 0, -20, -9, 0},
|
|
{0, 0, 0, 0, 0, 0, -6, 15, 0, 0, 0, 0, 2, 11, 5, 2, -5},
|
|
{0, 0, 0, 0, 0, -8, 15, 0, 0, 0, 0, 0, 2, 61, -96, -42, -27},
|
|
|
|
/* 471-480 */
|
|
{0, 0, 0, 0, 0, -3, 9, -4, 0, 0, 0, 0, 2, 14, 9, 4, -6},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 2, -5, 0, 0, 2, -11, -6, -3, 5},
|
|
{0, 0, 0, 0, 0, 0, -2, 8, -1, -5, 0, 0, 2, 0, -3, -1, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, -8, 3, 0, 0, 0, 2, 123, -415, -180, -53},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 7, -32, -17, -4},
|
|
{0, 1, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -9, -5, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, -4, 2, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, -89, 0, 0, 38},
|
|
|
|
/* 481-490 */
|
|
{0, 0, 0, 0, 0, 0, -6, 16, -4, -5, 0, 0, 2, 0, -86, -19, -6},
|
|
{0, 0, 0, 0, 0, 0, -2, 8, -3, 0, 0, 0, 2, 0, 0, -19, 6},
|
|
{0, 0, 0, 0, 0, 0, -2, 8, -3, 0, 0, 0, 2, -123, -416, -180, 53},
|
|
{0, 0, 0, 0, 0, 0, 6, -8, 1, 5, 0, 0, 2, 0, -3, -1, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, -2, 5, 0, 0, 2, 12, -6, -3, -5},
|
|
{0, 0, 0, 0, 0, 3, -5, 4, 0, 0, 0, 0, 2, -13, 9, 4, 6},
|
|
{0, 0, 0, 0, 0, -8, 11, 0, 0, 0, 0, 0, 2, 0, -15, -7, 0},
|
|
{0, 0, 0, 0, 0, -8, 11, 0, 0, 0, 0, 0, 1, 3, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, -8, 11, 0, 0, 0, 0, 0, 2, -62, -97, -42, 27},
|
|
{0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 2, -11, 5, 2, 5},
|
|
|
|
/* 491-500 */
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 2, 0, -19, -8, 0},
|
|
{0, 0, 0, 0, 0, 3, -3, 0, 2, 0, 0, 0, 2, -3, 0, 0, 1},
|
|
{0, 2, -2, 1, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, 4, 2, 0},
|
|
{0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0},
|
|
{0, 2, -2, 1, 0, 0, -4, 8, -3, 0, 0, 0, 0, 0, 4, 2, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 2, -85, -70, -31, 37},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 163, -12, -5, -72},
|
|
{0, 0, 0, 0, 0, -3, 7, 0, 0, 0, 0, 0, 2, -63, -16, -7, 28},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 2, -21, -32, -14, 9},
|
|
{0, 0, 0, 0, 0, -5, 6, 0, 0, 0, 0, 0, 2, 0, -3, -1, 0},
|
|
|
|
/* 501-510 */
|
|
{0, 0, 0, 0, 0, -5, 6, 0, 0, 0, 0, 0, 1, 3, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0},
|
|
{0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, 2, 3, 10, 4, -1},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 3, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, -1, 6, 0, 0, 0, 0, 2, 0, -7, -3, 0},
|
|
{0, 0, 0, 0, 0, 0, 7, -9, 0, 0, 0, 0, 2, 0, -4, -2, 0},
|
|
{0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 0, 6, 19, 0, 0},
|
|
{0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 2, 5, -173, -75, -2},
|
|
{0, 0, 0, 0, 0, 0, 6, -7, 0, 0, 0, 0, 2, 0, -7, -3, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 2, 7, -12, -5, -3},
|
|
|
|
/* 511-520 */
|
|
{0, 0, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 1, -3, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 2, 3, -4, -2, -1},
|
|
{0, 0, 0, 0, 0, -7, 9, 0, 0, 0, 0, 0, 2, 74, 0, 0, -32},
|
|
{0, 0, 0, 0, 0, -7, 9, 0, 0, 0, 0, 0, 1, -3, 12, 6, 2},
|
|
{0, 0, 0, 0, 0, 0, 4, -3, 0, 0, 0, 0, 2, 26, -14, -6, -11},
|
|
{0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 2, 19, 0, 0, -8},
|
|
{0, 0, 0, 0, 0, -4, 4, 0, 0, 0, 0, 0, 1, 6, 24, 13, -3},
|
|
{0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 1, 0, -10, -5, 0},
|
|
{0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 2, 11, -3, -1, -5},
|
|
|
|
/* 521-530 */
|
|
{0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 2, 3, 0, 1, -1},
|
|
{0, 0, 0, 0, 0, 0, -3, 0, 5, 0, 0, 0, 2, 3, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 5, -23, -12, -3},
|
|
{0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, -339, 0, 0, 147},
|
|
{0, 0, 0, 0, 0, -9, 12, 0, 0, 0, 0, 0, 2, 0, -10, -5, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, 0, -4, 0, 0, 0, 0, 5, 0, 0, 0},
|
|
{0, 2, -2, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 7, -8, 0, 0, 0, 0, 2, 0, -4, -2, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, 0, -3, 0, 0, 0, 0, 18, -3, 0, 0},
|
|
|
|
/* 531-540 */
|
|
{0, 0, 0, 0, 0, 0, 3, 0, -3, 0, 0, 0, 2, 9, -11, -5, -4},
|
|
{0, 0, 0, 0, 0, -2, 6, 0, 0, 0, 0, 0, 2, -8, 0, 0, 4},
|
|
{0, 0, 0, 0, 0, -6, 7, 0, 0, 0, 0, 0, 1, 3, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 6, -7, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 2, 6, -9, -4, -2},
|
|
{0, 0, 0, 0, 0, 0, 3, 0, -2, 0, 0, 0, 0, -4, -12, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, 0, -2, 0, 0, 0, 2, 67, -91, -39, -29},
|
|
{0, 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 2, 30, -18, -8, -13},
|
|
{0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 2, 0, -114, -50, 0},
|
|
|
|
/* 541-550 */
|
|
{0, 0, 0, 0, 0, 0, 3, 0, -1, 0, 0, 0, 2, 0, 0, 0, 23},
|
|
{0, 0, 0, 0, 0, 0, 3, 0, -1, 0, 0, 0, 2, 517, 16, 7, -224},
|
|
{0, 0, 0, 0, 0, 0, 3, 0, 0, -2, 0, 0, 2, 0, -7, -3, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 2, 143, -3, -1, -62},
|
|
{0, 0, 0, 0, 0, 0, 3, 0, 0, -1, 0, 0, 2, 29, 0, 0, -13},
|
|
{0, 2, -2, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0, -4, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, -8, 16, 0, 0, 0, 0, 0, 2, -6, 0, 0, 3},
|
|
{0, 0, 0, 0, 0, 0, 3, 0, 2, -5, 0, 0, 2, 5, 12, 5, -2},
|
|
{0, 0, 0, 0, 0, 0, 7, -8, 3, 0, 0, 0, 2, -25, 0, 0, 11},
|
|
{0, 0, 0, 0, 0, 0, -5, 16, -4, -5, 0, 0, 2, -3, 0, 0, 1},
|
|
|
|
/* 551-560 */
|
|
{0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 4, 2, 0},
|
|
{0, 0, 0, 0, 0, 0, -1, 8, -3, 0, 0, 0, 2, -22, 12, 5, 10},
|
|
{0, 0, 0, 0, 0, -8, 10, 0, 0, 0, 0, 0, 2, 50, 0, 0, -22},
|
|
{0, 0, 0, 0, 0, -8, 10, 0, 0, 0, 0, 0, 1, 0, 7, 4, 0},
|
|
{0, 0, 0, 0, 0, -8, 10, 0, 0, 0, 0, 0, 2, 0, 3, 1, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, -4, 4, 2, 2},
|
|
{0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 2, -5, -11, -5, 2},
|
|
{0, 0, 0, 0, 0, -3, 8, 0, 0, 0, 0, 0, 2, 0, 4, 2, 0},
|
|
{0, 0, 0, 0, 0, -5, 5, 0, 0, 0, 0, 0, 1, 4, 17, 9, -2},
|
|
{0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0},
|
|
|
|
/* 561-570 */
|
|
{0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 1, 0, -4, -2, 0},
|
|
{0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 2, -8, 0, 0, 4},
|
|
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 4, -15, -8, -2},
|
|
{0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 370, -8, 0, -160},
|
|
{0, 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 2, 0, 0, -3, 0},
|
|
{0, 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 2, 0, 3, 1, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, -5, 0, 0, 0, 0, 2, -6, 3, 1, 3},
|
|
{0, 0, 0, 0, 0, 7, -8, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 2, -10, 0, 0, 4},
|
|
|
|
/* 571-580 */
|
|
{0, 0, 0, 0, 0, 4, -3, 0, 0, 0, 0, 0, 2, 0, 9, 4, 0},
|
|
{0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 2, 4, 17, 7, -2},
|
|
{0, 0, 0, 0, 0, -9, 11, 0, 0, 0, 0, 0, 2, 34, 0, 0, -15},
|
|
{0, 0, 0, 0, 0, -9, 11, 0, 0, 0, 0, 0, 1, 0, 5, 3, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, 0, -4, 0, 0, 0, 2, -5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 4, 0, -3, 0, 0, 0, 2, -37, -7, -3, 16},
|
|
{0, 0, 0, 0, 0, -6, 6, 0, 0, 0, 0, 0, 1, 3, 13, 7, -2},
|
|
{0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 0, 1, 0, -3, -2, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, 0, -2, 0, 0, 0, 2, -184, -3, -1, 80},
|
|
|
|
/* 581-590 */
|
|
{0, 0, 0, 0, 0, 0, 6, -4, 0, 0, 0, 0, 2, -3, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 1, 0, -10, -6, -1},
|
|
{0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 2, 31, -6, 0, -13},
|
|
{0, 0, 0, 0, 0, 0, 4, 0, -1, 0, 0, 0, 2, -3, -32, -14, 1},
|
|
{0, 0, 0, 0, 0, 0, 4, 0, 0, -2, 0, 0, 2, -7, 0, 0, 3},
|
|
{0, 0, 0, 0, 0, 0, 5, -2, 0, 0, 0, 0, 2, 0, -8, -4, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, -4, 0, 0},
|
|
{0, 0, 0, 0, 0, 8, -9, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0},
|
|
{0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 0, 2, 0, 3, 1, 0},
|
|
|
|
/* 591-600 */
|
|
{0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 2, 19, -23, -10, 2},
|
|
{0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, -10},
|
|
{0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 1, 0, 3, 2, 0},
|
|
{0, 0, 0, 0, 0, -7, 7, 0, 0, 0, 0, 0, 1, 0, 9, 5, -1},
|
|
{0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 1, 0, -7, -4, 0},
|
|
{0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 2, 8, -4, 0, -4},
|
|
{0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0},
|
|
{0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, 0, -4, 0, 0, 0, 2, -3, 0, 0, 1},
|
|
|
|
/* 601-610 */
|
|
{0, 0, 0, 0, 0, 0, 5, 0, -3, 0, 0, 0, 2, -9, 0, 1, 4},
|
|
{0, 0, 0, 0, 0, 0, 5, 0, -2, 0, 0, 0, 2, 3, 12, 5, -1},
|
|
{0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 17, -3, -1, 0},
|
|
{0, 0, 0, 0, 0, -8, 8, 0, 0, 0, 0, 0, 1, 0, 7, 4, 0},
|
|
{0, 0, 0, 0, 0, 8, -8, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 0, 1, 0, -5, -3, 0},
|
|
{0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 0, 2, 14, -3, 0, -1},
|
|
{0, 0, 0, 0, 0, -9, 9, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0},
|
|
{0, 0, 0, 0, 0, -9, 9, 0, 0, 0, 0, 0, 1, 0, 0, 0, -5},
|
|
{0, 0, 0, 0, 0, -9, 9, 0, 0, 0, 0, 0, 1, 0, 5, 3, 0},
|
|
|
|
/* 611-620 */
|
|
{0, 0, 0, 0, 0, 9, -9, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 6, -4, 0, 0, 0, 0, 0, 1, 0, -3, -2, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 2, 9, 4, 3},
|
|
{0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4},
|
|
{0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 4, 2, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 6, 0, 0, -3},
|
|
{0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 5, 0, 0, -2},
|
|
|
|
/* 621-630 */
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, -1},
|
|
{1, 0, -2, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0, -3, 0, 0, 0},
|
|
{1, 0, -2, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0},
|
|
{1, 0, -2, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 7, 0, 0, 0},
|
|
{1, 0, -2, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0},
|
|
{-1, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0},
|
|
{-1, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0, 6, 0, 0, 0},
|
|
{-1, 0, 2, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, -4, 0, 0},
|
|
{1, 0, -2, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, -4, 0, 0},
|
|
{-2, 0, 2, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, 5, 0, 0, 0},
|
|
|
|
/* 631-640 */
|
|
{-1, 0, 0, 0, 0, 0, 2, 0, -3, 0, 0, 0, 0, -3, 0, 0, 0},
|
|
{-1, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 4, 0, 0, 0},
|
|
{-1, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0},
|
|
{-1, 0, 2, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0},
|
|
{1, -1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0},
|
|
{-1, 0, 2, 0, 0, 0, 2, 0, -3, 0, 0, 0, 0, 13, 0, 0, 0},
|
|
{-2, 0, 0, 0, 0, 0, 2, 0, -3, 0, 0, 0, 0, 21, 11, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, -5, 0, 0},
|
|
{-1, 1, -1, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -5, -2, 0},
|
|
{1, 1, -1, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0},
|
|
|
|
/* 641-650 */
|
|
{-1, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, -5, 0, 0},
|
|
{-1, 0, 2, 1, 0, 0, 2, 0, -2, 0, 0, 0, 0, -3, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0, 20, 10, 0, 0},
|
|
{-1, 0, 2, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0, -34, 0, 0, 0},
|
|
{-1, 0, 2, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0},
|
|
{1, 0, -2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0, 3, 0, 0, -2},
|
|
{1, 2, -2, 2, 0, -3, 3, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1},
|
|
{1, 2, -2, 2, 0, 0, -2, 0, 2, 0, 0, 0, 0, -6, 0, 0, 3},
|
|
{1, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 3, 0, 0, 0},
|
|
|
|
/* 651-660 */
|
|
{0, 0, -2, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0},
|
|
{0, 0, -2, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 4, 0, 0, 0},
|
|
{0, 2, 0, 2, 0, -2, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1},
|
|
{0, 2, 0, 2, 0, 0, -1, 0, 1, 0, 0, 0, 0, 6, 0, 0, -3},
|
|
{0, 2, 0, 2, 0, -1, 1, 0, 0, 0, 0, 0, 0, -8, 0, 0, 3},
|
|
{0, 2, 0, 2, 0, -2, 3, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0},
|
|
{0, 0, 2, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0, -3, 0, 0, 0},
|
|
{0, 1, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -3, -2, 0},
|
|
{1, 2, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 126, -63, -27, -55},
|
|
{-1, 2, 0, 2, 0, 10, -3, 0, 0, 0, 0, 0, 0, -5, 0, 1, 2},
|
|
|
|
/* 661-670 */
|
|
{0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, -3, 28, 15, 2},
|
|
{1, 2, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 5, 0, 1, -2},
|
|
{0, 2, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, 9, 4, 1},
|
|
{0, 2, 0, 2, 0, 0, -4, 8, -3, 0, 0, 0, 0, 0, 9, 4, -1},
|
|
{-1, 2, 0, 2, 0, 0, -4, 8, -3, 0, 0, 0, 0, -126, -63, -27, 55},
|
|
{2, 2, -2, 2, 0, 0, -2, 0, 3, 0, 0, 0, 0, 3, 0, 0, -1},
|
|
{1, 2, 0, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0, 21, -11, -6, -11},
|
|
{0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0},
|
|
{-1, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, -21, -11, -6, 11},
|
|
{-2, 2, 2, 2, 0, 0, 2, 0, -2, 0, 0, 0, 0, -3, 0, 0, 1},
|
|
|
|
/* 671-680 */
|
|
{0, 2, 0, 2, 0, 2, -3, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0},
|
|
{0, 2, 0, 2, 0, 1, -1, 0, 0, 0, 0, 0, 0, 8, 0, 0, -4},
|
|
{0, 2, 0, 2, 0, 0, 1, 0, -1, 0, 0, 0, 0, -6, 0, 0, 3},
|
|
{0, 2, 0, 2, 0, 2, -2, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1},
|
|
{-1, 2, 2, 2, 0, 0, -1, 0, 1, 0, 0, 0, 0, 3, 0, 0, -1},
|
|
{1, 2, 0, 2, 0, -1, 1, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1},
|
|
{-1, 2, 2, 2, 0, 0, 2, 0, -3, 0, 0, 0, 0, -5, 0, 0, 2},
|
|
{2, 2, 0, 2, 0, 0, 2, 0, -3, 0, 0, 0, 0, 24, -12, -5, -11},
|
|
{1, 2, 0, 2, 0, 0, -4, 8, -3, 0, 0, 0, 0, 0, 3, 1, 0},
|
|
{1, 2, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, 3, 1, 0},
|
|
|
|
/* 681-687 */
|
|
{1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0},
|
|
{0, 2, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, -24, -12, -5, 10},
|
|
{2, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4, 0, -1, -2},
|
|
{-1, 2, 2, 2, 0, 0, 2, 0, -2, 0, 0, 0, 0, 13, 0, 0, -6},
|
|
{-1, 2, 2, 2, 0, 3, -3, 0, 0, 0, 0, 0, 0, 7, 0, 0, -3},
|
|
{1, 2, 0, 2, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1},
|
|
{0, 2, 2, 2, 0, 0, 2, 0, -2, 0, 0, 0, 0, 3, 0, 0, -1},
|
|
}
|
|
|
|
/* Number of terms in the planetary nutation model */
|
|
NPL := len(xpl)
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
|
|
/* Interval between fundamental date J2000.0 and given date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* ------------------- */
|
|
/* LUNI-SOLAR NUTATION */
|
|
/* ------------------- */
|
|
|
|
/* Fundamental (Delaunay) arguments */
|
|
|
|
/* Mean anomaly of the Moon (IERS 2003). */
|
|
el = Fal03(t)
|
|
|
|
/* Mean anomaly of the Sun (MHB2000). */
|
|
elp = fmod(1287104.79305+
|
|
t*(129596581.0481+
|
|
t*(-0.5532+
|
|
t*(0.000136+
|
|
t*(-0.00001149)))), TURNAS) * DAS2R
|
|
|
|
/* Mean longitude of the Moon minus that of the ascending node */
|
|
/* (IERS 2003. */
|
|
f = Faf03(t)
|
|
|
|
/* Mean elongation of the Moon from the Sun (MHB2000). */
|
|
d = fmod(1072260.70369+
|
|
t*(1602961601.2090+
|
|
t*(-6.3706+
|
|
t*(0.006593+
|
|
t*(-0.00003169)))), TURNAS) * DAS2R
|
|
|
|
/* Mean longitude of the ascending node of the Moon (IERS 2003). */
|
|
om = Faom03(t)
|
|
|
|
/* Initialize the nutation values. */
|
|
dp = 0.0
|
|
de = 0.0
|
|
|
|
/* Summation of luni-solar nutation series (in reverse order). */
|
|
for i = NLS - 1; i >= 0; i-- {
|
|
|
|
/* Argument and functions. */
|
|
arg = fmod(float64(xls[i].nl)*el+
|
|
float64(xls[i].nlp)*elp+
|
|
float64(xls[i].nf)*f+
|
|
float64(xls[i].nd)*d+
|
|
float64(xls[i].nom)*om, D2PI)
|
|
sarg = sin(arg)
|
|
carg = cos(arg)
|
|
|
|
/* Term. */
|
|
dp += (xls[i].sp+xls[i].spt*t)*sarg + xls[i].cp*carg
|
|
de += (xls[i].ce+xls[i].cet*t)*carg + xls[i].se*sarg
|
|
}
|
|
|
|
/* Convert from 0.1 microarcsec units to radians. */
|
|
dpsils = dp * U2R
|
|
depsls = de * U2R
|
|
|
|
/* ------------------ */
|
|
/* PLANETARY NUTATION */
|
|
/* ------------------ */
|
|
|
|
/* n.b. The MHB2000 code computes the luni-solar and planetary nutation */
|
|
/* in different functions, using slightly different Delaunay */
|
|
/* arguments in the two cases. This behaviour is faithfully */
|
|
/* reproduced here. Use of the IERS 2003 expressions for both */
|
|
/* cases leads to negligible changes, well below */
|
|
/* 0.1 microarcsecond. */
|
|
|
|
/* Mean anomaly of the Moon (MHB2000). */
|
|
al = fmod(2.35555598+8328.6914269554*t, D2PI)
|
|
|
|
/* Mean longitude of the Moon minus that of the ascending node */
|
|
/*(MHB2000). */
|
|
af = fmod(1.627905234+8433.466158131*t, D2PI)
|
|
|
|
/* Mean elongation of the Moon from the Sun (MHB2000). */
|
|
ad = fmod(5.198466741+7771.3771468121*t, D2PI)
|
|
|
|
/* Mean longitude of the ascending node of the Moon (MHB2000). */
|
|
aom = fmod(2.18243920-33.757045*t, D2PI)
|
|
|
|
/* General accumulated precession in longitude (IERS 2003). */
|
|
apa = Fapa03(t)
|
|
|
|
/* Planetary longitudes, Mercury through Uranus (IERS 2003). */
|
|
alme = Fame03(t)
|
|
alve = Fave03(t)
|
|
alea = Fae03(t)
|
|
alma = Fama03(t)
|
|
alju = Faju03(t)
|
|
alsa = Fasa03(t)
|
|
alur = Faur03(t)
|
|
|
|
/* Neptune longitude (MHB2000). */
|
|
alne = fmod(5.321159000+3.8127774000*t, D2PI)
|
|
|
|
/* Initialize the nutation values. */
|
|
dp = 0.0
|
|
de = 0.0
|
|
|
|
/* Summation of planetary nutation series (in reverse order). */
|
|
for i = NPL - 1; i >= 0; i-- {
|
|
|
|
/* Argument and functions. */
|
|
arg = fmod(float64(xpl[i].nl)*al+
|
|
float64(xpl[i].nf)*af+
|
|
float64(xpl[i].nd)*ad+
|
|
float64(xpl[i].nom)*aom+
|
|
float64(xpl[i].nme)*alme+
|
|
float64(xpl[i].nve)*alve+
|
|
float64(xpl[i].nea)*alea+
|
|
float64(xpl[i].nma)*alma+
|
|
float64(xpl[i].nju)*alju+
|
|
float64(xpl[i].nsa)*alsa+
|
|
float64(xpl[i].nur)*alur+
|
|
float64(xpl[i].nne)*alne+
|
|
float64(xpl[i].npa)*apa, D2PI)
|
|
sarg = sin(arg)
|
|
carg = cos(arg)
|
|
|
|
/* Term. */
|
|
dp += float64(xpl[i].sp)*sarg + float64(xpl[i].cp)*carg
|
|
de += float64(xpl[i].se)*sarg + float64(xpl[i].ce)*carg
|
|
|
|
}
|
|
|
|
/* Convert from 0.1 microarcsec units to radians. */
|
|
dpsipl = dp * U2R
|
|
depspl = de * U2R
|
|
|
|
/* ------- */
|
|
/* RESULTS */
|
|
/* ------- */
|
|
|
|
/* Add luni-solar and planetary components. */
|
|
*dpsi = dpsils + dpsipl
|
|
*deps = depsls + depspl
|
|
}
|
|
|
|
/*
|
|
Nut00b Nutation, IAU 2000B Nutation, IAU 2000B model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
dpsi,deps float64 nutation, luni-solar + planetary (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The nutation components in longitude and obliquity are in radians
|
|
and with respect to the equinox and ecliptic of date. The
|
|
obliquity at J2000.0 is assumed to be the Lieske et al. (1977)
|
|
value of 84381.448 arcsec. (The errors that result from using
|
|
this function with the IAU 2006 value of 84381.406 arcsec can be
|
|
neglected.)
|
|
|
|
The nutation model consists only of luni-solar terms, but
|
|
includes also a fixed offset which compensates for certain long-
|
|
period planetary terms (Note 7).
|
|
|
|
3) This function is an implementation of the IAU 2000B abridged
|
|
nutation model formally adopted by the IAU General Assembly in
|
|
2000. The function computes the MHB_2000_SHORT luni-solar
|
|
nutation series (Luzum 2001), but without the associated
|
|
corrections for the precession rate adjustments and the offset
|
|
between the GCRS and J2000.0 mean poles.
|
|
|
|
4) The full IAU 2000A (MHB2000) nutation model contains nearly 1400
|
|
terms. The IAU 2000B model (McCarthy & Luzum 2003) contains only
|
|
77 terms, plus additional simplifications, yet still delivers
|
|
results of 1 mas accuracy at present epochs. This combination of
|
|
accuracy and size makes the IAU 2000B abridged nutation model
|
|
suitable for most practical applications.
|
|
|
|
The function delivers a pole accurate to 1 mas from 1900 to 2100
|
|
(usually better than 1 mas, very occasionally just outside
|
|
1 mas). The full IAU 2000A model, which is implemented in the
|
|
function iauNut00a (q.v.), delivers considerably greater accuracy
|
|
at current dates; however, to realize this improved accuracy,
|
|
corrections for the essentially unpredictable free-core-nutation
|
|
(FCN) must also be included.
|
|
|
|
5) The present function provides classical nutation. The
|
|
MHB_2000_SHORT algorithm, from which it is adapted, deals also
|
|
with (i) the offsets between the GCRS and mean poles and (ii) the
|
|
adjustments in longitude and obliquity due to the changed
|
|
precession rates. These additional functions, namely frame bias
|
|
and precession adjustments, are supported by the SOFA functions
|
|
Bi00 and iauPr00.
|
|
|
|
6) The MHB_2000_SHORT algorithm also provides "total" nutations,
|
|
comprising the arithmetic sum of the frame bias, precession
|
|
adjustments, and nutation (luni-solar + planetary). These total
|
|
nutations can be used in combination with an existing IAU 1976
|
|
precession implementation, such as iauPmat76, to deliver GCRS-
|
|
to-true predictions of mas accuracy at current epochs. However,
|
|
for symmetry with the iauNut00a function (q.v. for the reasons),
|
|
the SOFA functions do not generate the "total nutations"
|
|
directly. Should they be required, they could of course easily
|
|
be generated by calling iauBi00, iauPr00 and the present function
|
|
and adding the results.
|
|
|
|
7) The IAU 2000B model includes "planetary bias" terms that are
|
|
fixed in size but compensate for long-period nutations. The
|
|
amplitudes quoted in McCarthy & Luzum (2003), namely
|
|
Dpsi = -1.5835 mas and Depsilon = +1.6339 mas, are optimized for
|
|
the "total nutations" method described in Note 6. The Luzum
|
|
(2001) values used in this SOFA implementation, namely -0.135 mas
|
|
and +0.388 mas, are optimized for the "rigorous" method, where
|
|
frame bias, precession and nutation are applied separately and in
|
|
that order. During the interval 1995-2050, the SOFA
|
|
implementation delivers a maximum error of 1.001 mas (not
|
|
including FCN).
|
|
|
|
References:
|
|
|
|
Lieske, J.H., Lederle, T., Fricke, W., Morando, B., "Expressions
|
|
for the precession quantities based upon the IAU /1976/ system of
|
|
astronomical constants", Astron.Astrophys. 58, 1-2, 1-16. (1977)
|
|
|
|
Luzum, B., private communication, 2001 (Fortran code
|
|
MHB_2000_SHORT)
|
|
|
|
McCarthy, D.D. & Luzum, B.J., "An abridged model of the
|
|
precession-nutation of the celestial pole", Cel.Mech.Dyn.Astron.
|
|
85, 37-49 (2003)
|
|
|
|
Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
|
|
Francou, G., Laskar, J., Astron.Astrophys. 282, 663-683 (1994)
|
|
*/
|
|
func Nut00b(date1, date2 float64, dpsi, deps *float64) {
|
|
var t, el, elp, f, d, om, arg, dp, de, sarg, carg,
|
|
dpsils, depsls, dpsipl, depspl float64
|
|
var i int
|
|
|
|
/* Units of 0.1 microarcsecond to radians */
|
|
const U2R = DAS2R / 1e7
|
|
|
|
/* ---------------------------------------- */
|
|
/* Fixed offsets in lieu of planetary terms */
|
|
/* ---------------------------------------- */
|
|
|
|
const DPPLAN = -0.135 * DMAS2R
|
|
const DEPLAN = 0.388 * DMAS2R
|
|
|
|
/* --------------------------------------------------- */
|
|
/* Luni-solar nutation: argument and term coefficients */
|
|
/* --------------------------------------------------- */
|
|
|
|
/* The units for the sine and cosine coefficients are */
|
|
/* 0.1 microarcsec and the same per Julian century */
|
|
|
|
x := []struct {
|
|
nl, nlp, nf, nd, nom int /* coefficients of l,l',F,D,Om */
|
|
ps, pst, pc float64 /* longitude sin, t*sin, cos coefficients */
|
|
ec, ect, es float64 /* obliquity cos, t*cos, sin coefficients */
|
|
|
|
}{
|
|
|
|
/* 1-10 */
|
|
{0, 0, 0, 0, 1,
|
|
-172064161.0, -174666.0, 33386.0, 92052331.0, 9086.0, 15377.0},
|
|
{0, 0, 2, -2, 2,
|
|
-13170906.0, -1675.0, -13696.0, 5730336.0, -3015.0, -4587.0},
|
|
{0, 0, 2, 0, 2, -2276413.0, -234.0, 2796.0, 978459.0, -485.0, 1374.0},
|
|
{0, 0, 0, 0, 2, 2074554.0, 207.0, -698.0, -897492.0, 470.0, -291.0},
|
|
{0, 1, 0, 0, 0, 1475877.0, -3633.0, 11817.0, 73871.0, -184.0, -1924.0},
|
|
{0, 1, 2, -2, 2, -516821.0, 1226.0, -524.0, 224386.0, -677.0, -174.0},
|
|
{1, 0, 0, 0, 0, 711159.0, 73.0, -872.0, -6750.0, 0.0, 358.0},
|
|
{0, 0, 2, 0, 1, -387298.0, -367.0, 380.0, 200728.0, 18.0, 318.0},
|
|
{1, 0, 2, 0, 2, -301461.0, -36.0, 816.0, 129025.0, -63.0, 367.0},
|
|
{0, -1, 2, -2, 2, 215829.0, -494.0, 111.0, -95929.0, 299.0, 132.0},
|
|
|
|
/* 11-20 */
|
|
{0, 0, 2, -2, 1, 128227.0, 137.0, 181.0, -68982.0, -9.0, 39.0},
|
|
{-1, 0, 2, 0, 2, 123457.0, 11.0, 19.0, -53311.0, 32.0, -4.0},
|
|
{-1, 0, 0, 2, 0, 156994.0, 10.0, -168.0, -1235.0, 0.0, 82.0},
|
|
{1, 0, 0, 0, 1, 63110.0, 63.0, 27.0, -33228.0, 0.0, -9.0},
|
|
{-1, 0, 0, 0, 1, -57976.0, -63.0, -189.0, 31429.0, 0.0, -75.0},
|
|
{-1, 0, 2, 2, 2, -59641.0, -11.0, 149.0, 25543.0, -11.0, 66.0},
|
|
{1, 0, 2, 0, 1, -51613.0, -42.0, 129.0, 26366.0, 0.0, 78.0},
|
|
{-2, 0, 2, 0, 1, 45893.0, 50.0, 31.0, -24236.0, -10.0, 20.0},
|
|
{0, 0, 0, 2, 0, 63384.0, 11.0, -150.0, -1220.0, 0.0, 29.0},
|
|
{0, 0, 2, 2, 2, -38571.0, -1.0, 158.0, 16452.0, -11.0, 68.0},
|
|
|
|
/* 21-30 */
|
|
{0, -2, 2, -2, 2, 32481.0, 0.0, 0.0, -13870.0, 0.0, 0.0},
|
|
{-2, 0, 0, 2, 0, -47722.0, 0.0, -18.0, 477.0, 0.0, -25.0},
|
|
{2, 0, 2, 0, 2, -31046.0, -1.0, 131.0, 13238.0, -11.0, 59.0},
|
|
{1, 0, 2, -2, 2, 28593.0, 0.0, -1.0, -12338.0, 10.0, -3.0},
|
|
{-1, 0, 2, 0, 1, 20441.0, 21.0, 10.0, -10758.0, 0.0, -3.0},
|
|
{2, 0, 0, 0, 0, 29243.0, 0.0, -74.0, -609.0, 0.0, 13.0},
|
|
{0, 0, 2, 0, 0, 25887.0, 0.0, -66.0, -550.0, 0.0, 11.0},
|
|
{0, 1, 0, 0, 1, -14053.0, -25.0, 79.0, 8551.0, -2.0, -45.0},
|
|
{-1, 0, 0, 2, 1, 15164.0, 10.0, 11.0, -8001.0, 0.0, -1.0},
|
|
{0, 2, 2, -2, 2, -15794.0, 72.0, -16.0, 6850.0, -42.0, -5.0},
|
|
|
|
/* 31-40 */
|
|
{0, 0, -2, 2, 0, 21783.0, 0.0, 13.0, -167.0, 0.0, 13.0},
|
|
{1, 0, 0, -2, 1, -12873.0, -10.0, -37.0, 6953.0, 0.0, -14.0},
|
|
{0, -1, 0, 0, 1, -12654.0, 11.0, 63.0, 6415.0, 0.0, 26.0},
|
|
{-1, 0, 2, 2, 1, -10204.0, 0.0, 25.0, 5222.0, 0.0, 15.0},
|
|
{0, 2, 0, 0, 0, 16707.0, -85.0, -10.0, 168.0, -1.0, 10.0},
|
|
{1, 0, 2, 2, 2, -7691.0, 0.0, 44.0, 3268.0, 0.0, 19.0},
|
|
{-2, 0, 2, 0, 0, -11024.0, 0.0, -14.0, 104.0, 0.0, 2.0},
|
|
{0, 1, 2, 0, 2, 7566.0, -21.0, -11.0, -3250.0, 0.0, -5.0},
|
|
{0, 0, 2, 2, 1, -6637.0, -11.0, 25.0, 3353.0, 0.0, 14.0},
|
|
{0, -1, 2, 0, 2, -7141.0, 21.0, 8.0, 3070.0, 0.0, 4.0},
|
|
|
|
/* 41-50 */
|
|
{0, 0, 0, 2, 1, -6302.0, -11.0, 2.0, 3272.0, 0.0, 4.0},
|
|
{1, 0, 2, -2, 1, 5800.0, 10.0, 2.0, -3045.0, 0.0, -1.0},
|
|
{2, 0, 2, -2, 2, 6443.0, 0.0, -7.0, -2768.0, 0.0, -4.0},
|
|
{-2, 0, 0, 2, 1, -5774.0, -11.0, -15.0, 3041.0, 0.0, -5.0},
|
|
{2, 0, 2, 0, 1, -5350.0, 0.0, 21.0, 2695.0, 0.0, 12.0},
|
|
{0, -1, 2, -2, 1, -4752.0, -11.0, -3.0, 2719.0, 0.0, -3.0},
|
|
{0, 0, 0, -2, 1, -4940.0, -11.0, -21.0, 2720.0, 0.0, -9.0},
|
|
{-1, -1, 0, 2, 0, 7350.0, 0.0, -8.0, -51.0, 0.0, 4.0},
|
|
{2, 0, 0, -2, 1, 4065.0, 0.0, 6.0, -2206.0, 0.0, 1.0},
|
|
{1, 0, 0, 2, 0, 6579.0, 0.0, -24.0, -199.0, 0.0, 2.0},
|
|
|
|
/* 51-60 */
|
|
{0, 1, 2, -2, 1, 3579.0, 0.0, 5.0, -1900.0, 0.0, 1.0},
|
|
{1, -1, 0, 0, 0, 4725.0, 0.0, -6.0, -41.0, 0.0, 3.0},
|
|
{-2, 0, 2, 0, 2, -3075.0, 0.0, -2.0, 1313.0, 0.0, -1.0},
|
|
{3, 0, 2, 0, 2, -2904.0, 0.0, 15.0, 1233.0, 0.0, 7.0},
|
|
{0, -1, 0, 2, 0, 4348.0, 0.0, -10.0, -81.0, 0.0, 2.0},
|
|
{1, -1, 2, 0, 2, -2878.0, 0.0, 8.0, 1232.0, 0.0, 4.0},
|
|
{0, 0, 0, 1, 0, -4230.0, 0.0, 5.0, -20.0, 0.0, -2.0},
|
|
{-1, -1, 2, 2, 2, -2819.0, 0.0, 7.0, 1207.0, 0.0, 3.0},
|
|
{-1, 0, 2, 0, 0, -4056.0, 0.0, 5.0, 40.0, 0.0, -2.0},
|
|
{0, -1, 2, 2, 2, -2647.0, 0.0, 11.0, 1129.0, 0.0, 5.0},
|
|
|
|
/* 61-70 */
|
|
{-2, 0, 0, 0, 1, -2294.0, 0.0, -10.0, 1266.0, 0.0, -4.0},
|
|
{1, 1, 2, 0, 2, 2481.0, 0.0, -7.0, -1062.0, 0.0, -3.0},
|
|
{2, 0, 0, 0, 1, 2179.0, 0.0, -2.0, -1129.0, 0.0, -2.0},
|
|
{-1, 1, 0, 1, 0, 3276.0, 0.0, 1.0, -9.0, 0.0, 0.0},
|
|
{1, 1, 0, 0, 0, -3389.0, 0.0, 5.0, 35.0, 0.0, -2.0},
|
|
{1, 0, 2, 0, 0, 3339.0, 0.0, -13.0, -107.0, 0.0, 1.0},
|
|
{-1, 0, 2, -2, 1, -1987.0, 0.0, -6.0, 1073.0, 0.0, -2.0},
|
|
{1, 0, 0, 0, 2, -1981.0, 0.0, 0.0, 854.0, 0.0, 0.0},
|
|
{-1, 0, 0, 1, 0, 4026.0, 0.0, -353.0, -553.0, 0.0, -139.0},
|
|
{0, 0, 2, 1, 2, 1660.0, 0.0, -5.0, -710.0, 0.0, -2.0},
|
|
|
|
/* 71-77 */
|
|
{-1, 0, 2, 4, 2, -1521.0, 0.0, 9.0, 647.0, 0.0, 4.0},
|
|
{-1, 1, 0, 1, 1, 1314.0, 0.0, 0.0, -700.0, 0.0, 0.0},
|
|
{0, -2, 2, -2, 1, -1283.0, 0.0, 0.0, 672.0, 0.0, 0.0},
|
|
{1, 0, 2, 2, 1, -1331.0, 0.0, 8.0, 663.0, 0.0, 4.0},
|
|
{-2, 0, 2, 2, 2, 1383.0, 0.0, -2.0, -594.0, 0.0, -2.0},
|
|
{-1, 0, 0, 0, 2, 1405.0, 0.0, 4.0, -610.0, 0.0, 2.0},
|
|
{1, 1, 2, -2, 2, 1290.0, 0.0, 0.0, -556.0, 0.0, 0.0},
|
|
}
|
|
|
|
/* Number of terms in the series */
|
|
NLS := len(x)
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
|
|
/* Interval between fundamental epoch J2000.0 and given date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* --------------------*/
|
|
/* LUNI-SOLAR NUTATION */
|
|
/* --------------------*/
|
|
|
|
/* Fundamental (Delaunay) arguments from Simon et al. (1994) */
|
|
|
|
/* Mean anomaly of the Moon. */
|
|
el = fmod(485868.249036+(1717915923.2178)*t, TURNAS) * DAS2R
|
|
|
|
/* Mean anomaly of the Sun. */
|
|
elp = fmod(1287104.79305+(129596581.0481)*t, TURNAS) * DAS2R
|
|
|
|
/* Mean argument of the latitude of the Moon. */
|
|
f = fmod(335779.526232+(1739527262.8478)*t, TURNAS) * DAS2R
|
|
|
|
/* Mean elongation of the Moon from the Sun. */
|
|
d = fmod(1072260.70369+(1602961601.2090)*t, TURNAS) * DAS2R
|
|
|
|
/* Mean longitude of the ascending node of the Moon. */
|
|
om = fmod(450160.398036+(-6962890.5431)*t, TURNAS) * DAS2R
|
|
|
|
/* Initialize the nutation values. */
|
|
dp = 0.0
|
|
de = 0.0
|
|
|
|
/* Summation of luni-solar nutation series (smallest terms first). */
|
|
for i = NLS - 1; i >= 0; i-- {
|
|
|
|
/* Argument and functions. */
|
|
arg = fmod(float64(x[i].nl)*el+
|
|
float64(x[i].nlp)*elp+
|
|
float64(x[i].nf)*f+
|
|
float64(x[i].nd)*d+
|
|
float64(x[i].nom)*om, D2PI)
|
|
sarg = sin(arg)
|
|
carg = cos(arg)
|
|
|
|
/* Term. */
|
|
dp += (x[i].ps+x[i].pst*t)*sarg + x[i].pc*carg
|
|
de += (x[i].ec+x[i].ect*t)*carg + x[i].es*sarg
|
|
}
|
|
|
|
/* Convert from 0.1 microarcsec units to radians. */
|
|
dpsils = dp * U2R
|
|
depsls = de * U2R
|
|
|
|
/* ------------------------------*/
|
|
/* IN LIEU OF PLANETARY NUTATION */
|
|
/* ------------------------------*/
|
|
|
|
/* Fixed offset to correct for missing terms in truncated series. */
|
|
dpsipl = DPPLAN
|
|
depspl = DEPLAN
|
|
|
|
/* --------*/
|
|
/* RESULTS */
|
|
/* --------*/
|
|
|
|
/* Add luni-solar and planetary components. */
|
|
*dpsi = dpsils + dpsipl
|
|
*deps = depsls + depspl
|
|
}
|
|
|
|
/*
|
|
Nut06a Nutation, IAU 2006/2000A
|
|
IAU 2000A nutation with adjustments to match the IAU 2006
|
|
precession.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
dpsi,deps float64 nutation, luni-solar + planetary (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The nutation components in longitude and obliquity are in radians
|
|
and with respect to the mean equinox and ecliptic of date,
|
|
2006 precession model (Hilton et al. 2006, Capitaine et al.
|
|
2005).
|
|
|
|
3) The function first computes the IAU 2000A nutation, then applies
|
|
adjustments for (i) the consequences of the change in obliquity
|
|
from the IAU 1980 ecliptic to the IAU 2006 ecliptic and (ii) the
|
|
secular variation in the Earth's dynamical form factor J2.
|
|
|
|
4) The present function provides classical nutation, complementing
|
|
the IAU 2000 frame bias and IAU 2006 precession. It delivers a
|
|
pole which is at current epochs accurate to a few tens of
|
|
microarcseconds, apart from the free core nutation.
|
|
|
|
Called:
|
|
Nut00a nutation, IAU 2000A
|
|
|
|
References:
|
|
|
|
Chapront, J., Chapront-Touze, M. & Francou, G. 2002,
|
|
Astron.Astrophys. 387, 700
|
|
|
|
Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977,
|
|
Astron.Astrophys. 58, 1-16
|
|
|
|
Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res.
|
|
107, B4. The MHB_2000 code itself was obtained on 9th September
|
|
2002 from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A.
|
|
|
|
Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
|
|
Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683
|
|
|
|
Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999,
|
|
Astron.Astrophys.Supp.Ser. 135, 111
|
|
|
|
Wallace, P.T., "Software for Implementing the IAU 2000
|
|
Resolutions", in IERS Workshop 5.1 (2002)
|
|
*/
|
|
func Nut06a(date1, date2 float64, dpsi, deps *float64) {
|
|
var t, fj2, dp, de float64
|
|
|
|
/* Interval between fundamental date J2000.0 and given date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* Factor correcting for secular variation of J2. */
|
|
fj2 = -2.7774e-6 * t
|
|
|
|
/* Obtain IAU 2000A nutation. */
|
|
Nut00a(date1, date2, &dp, &de)
|
|
|
|
/* Apply P03 adjustments (Wallace & Capitaine, 2006, Eqs.5). */
|
|
*dpsi = dp + dp*(0.4697e-6+fj2)
|
|
*deps = de + de*fj2
|
|
|
|
}
|
|
|
|
/*
|
|
Nut80 Nutation, IAU 1980 Nutation, IAU 1980 model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
dpsi float64 nutation in longitude (radians)
|
|
deps float64 nutation in obliquity (radians)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The nutation components are with respect to the ecliptic of
|
|
date.
|
|
|
|
Called:
|
|
Anpm normalize angle into range +/- pi
|
|
|
|
Reference:
|
|
|
|
Explanatory Supplement to the Astronomical Almanac,
|
|
P. Kenneth Seidelmann (ed), University Science Books (1992),
|
|
Section 3.222 (p111).
|
|
*/
|
|
func Nut80(date1, date2 float64, dpsi, deps *float64) {
|
|
var t, el, elp, f, d, om, dp, de, arg, s, c float64
|
|
var j int
|
|
|
|
/* Units of 0.1 milliarcsecond to radians */
|
|
const U2R = DAS2R / 1e4
|
|
|
|
/* ------------------------------------------------ */
|
|
/* Table of multiples of arguments and coefficients */
|
|
/* ------------------------------------------------ */
|
|
|
|
/* The units for the sine and cosine coefficients are 0.1 mas and */
|
|
/* the same per Julian century */
|
|
|
|
x := []struct {
|
|
nl, nlp, nf, nd, nom int /* coefficients of l,l',F,D,Om */
|
|
sp, spt float64 /* longitude sine, 1 and t coefficients */
|
|
ce, cet float64 /* obliquity cosine, 1 and t coefficients */
|
|
}{
|
|
|
|
/* 1-10 */
|
|
{0, 0, 0, 0, 1, -171996.0, -174.2, 92025.0, 8.9},
|
|
{0, 0, 0, 0, 2, 2062.0, 0.2, -895.0, 0.5},
|
|
{-2, 0, 2, 0, 1, 46.0, 0.0, -24.0, 0.0},
|
|
{2, 0, -2, 0, 0, 11.0, 0.0, 0.0, 0.0},
|
|
{-2, 0, 2, 0, 2, -3.0, 0.0, 1.0, 0.0},
|
|
{1, -1, 0, -1, 0, -3.0, 0.0, 0.0, 0.0},
|
|
{0, -2, 2, -2, 1, -2.0, 0.0, 1.0, 0.0},
|
|
{2, 0, -2, 0, 1, 1.0, 0.0, 0.0, 0.0},
|
|
{0, 0, 2, -2, 2, -13187.0, -1.6, 5736.0, -3.1},
|
|
{0, 1, 0, 0, 0, 1426.0, -3.4, 54.0, -0.1},
|
|
|
|
/* 11-20 */
|
|
{0, 1, 2, -2, 2, -517.0, 1.2, 224.0, -0.6},
|
|
{0, -1, 2, -2, 2, 217.0, -0.5, -95.0, 0.3},
|
|
{0, 0, 2, -2, 1, 129.0, 0.1, -70.0, 0.0},
|
|
{2, 0, 0, -2, 0, 48.0, 0.0, 1.0, 0.0},
|
|
{0, 0, 2, -2, 0, -22.0, 0.0, 0.0, 0.0},
|
|
{0, 2, 0, 0, 0, 17.0, -0.1, 0.0, 0.0},
|
|
{0, 1, 0, 0, 1, -15.0, 0.0, 9.0, 0.0},
|
|
{0, 2, 2, -2, 2, -16.0, 0.1, 7.0, 0.0},
|
|
{0, -1, 0, 0, 1, -12.0, 0.0, 6.0, 0.0},
|
|
{-2, 0, 0, 2, 1, -6.0, 0.0, 3.0, 0.0},
|
|
|
|
/* 21-30 */
|
|
{0, -1, 2, -2, 1, -5.0, 0.0, 3.0, 0.0},
|
|
{2, 0, 0, -2, 1, 4.0, 0.0, -2.0, 0.0},
|
|
{0, 1, 2, -2, 1, 4.0, 0.0, -2.0, 0.0},
|
|
{1, 0, 0, -1, 0, -4.0, 0.0, 0.0, 0.0},
|
|
{2, 1, 0, -2, 0, 1.0, 0.0, 0.0, 0.0},
|
|
{0, 0, -2, 2, 1, 1.0, 0.0, 0.0, 0.0},
|
|
{0, 1, -2, 2, 0, -1.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 0, 0, 2, 1.0, 0.0, 0.0, 0.0},
|
|
{-1, 0, 0, 1, 1, 1.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 2, -2, 0, -1.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 31-40 */
|
|
{0, 0, 2, 0, 2, -2274.0, -0.2, 977.0, -0.5},
|
|
{1, 0, 0, 0, 0, 712.0, 0.1, -7.0, 0.0},
|
|
{0, 0, 2, 0, 1, -386.0, -0.4, 200.0, 0.0},
|
|
{1, 0, 2, 0, 2, -301.0, 0.0, 129.0, -0.1},
|
|
{1, 0, 0, -2, 0, -158.0, 0.0, -1.0, 0.0},
|
|
{-1, 0, 2, 0, 2, 123.0, 0.0, -53.0, 0.0},
|
|
{0, 0, 0, 2, 0, 63.0, 0.0, -2.0, 0.0},
|
|
{1, 0, 0, 0, 1, 63.0, 0.1, -33.0, 0.0},
|
|
{-1, 0, 0, 0, 1, -58.0, -0.1, 32.0, 0.0},
|
|
{-1, 0, 2, 2, 2, -59.0, 0.0, 26.0, 0.0},
|
|
|
|
/* 41-50 */
|
|
{1, 0, 2, 0, 1, -51.0, 0.0, 27.0, 0.0},
|
|
{0, 0, 2, 2, 2, -38.0, 0.0, 16.0, 0.0},
|
|
{2, 0, 0, 0, 0, 29.0, 0.0, -1.0, 0.0},
|
|
{1, 0, 2, -2, 2, 29.0, 0.0, -12.0, 0.0},
|
|
{2, 0, 2, 0, 2, -31.0, 0.0, 13.0, 0.0},
|
|
{0, 0, 2, 0, 0, 26.0, 0.0, -1.0, 0.0},
|
|
{-1, 0, 2, 0, 1, 21.0, 0.0, -10.0, 0.0},
|
|
{-1, 0, 0, 2, 1, 16.0, 0.0, -8.0, 0.0},
|
|
{1, 0, 0, -2, 1, -13.0, 0.0, 7.0, 0.0},
|
|
{-1, 0, 2, 2, 1, -10.0, 0.0, 5.0, 0.0},
|
|
|
|
/* 51-60 */
|
|
{1, 1, 0, -2, 0, -7.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 2, 0, 2, 7.0, 0.0, -3.0, 0.0},
|
|
{0, -1, 2, 0, 2, -7.0, 0.0, 3.0, 0.0},
|
|
{1, 0, 2, 2, 2, -8.0, 0.0, 3.0, 0.0},
|
|
{1, 0, 0, 2, 0, 6.0, 0.0, 0.0, 0.0},
|
|
{2, 0, 2, -2, 2, 6.0, 0.0, -3.0, 0.0},
|
|
{0, 0, 0, 2, 1, -6.0, 0.0, 3.0, 0.0},
|
|
{0, 0, 2, 2, 1, -7.0, 0.0, 3.0, 0.0},
|
|
{1, 0, 2, -2, 1, 6.0, 0.0, -3.0, 0.0},
|
|
{0, 0, 0, -2, 1, -5.0, 0.0, 3.0, 0.0},
|
|
|
|
/* 61-70 */
|
|
{1, -1, 0, 0, 0, 5.0, 0.0, 0.0, 0.0},
|
|
{2, 0, 2, 0, 1, -5.0, 0.0, 3.0, 0.0},
|
|
{0, 1, 0, -2, 0, -4.0, 0.0, 0.0, 0.0},
|
|
{1, 0, -2, 0, 0, 4.0, 0.0, 0.0, 0.0},
|
|
{0, 0, 0, 1, 0, -4.0, 0.0, 0.0, 0.0},
|
|
{1, 1, 0, 0, 0, -3.0, 0.0, 0.0, 0.0},
|
|
{1, 0, 2, 0, 0, 3.0, 0.0, 0.0, 0.0},
|
|
{1, -1, 2, 0, 2, -3.0, 0.0, 1.0, 0.0},
|
|
{-1, -1, 2, 2, 2, -3.0, 0.0, 1.0, 0.0},
|
|
{-2, 0, 0, 0, 1, -2.0, 0.0, 1.0, 0.0},
|
|
|
|
/* 71-80 */
|
|
{3, 0, 2, 0, 2, -3.0, 0.0, 1.0, 0.0},
|
|
{0, -1, 2, 2, 2, -3.0, 0.0, 1.0, 0.0},
|
|
{1, 1, 2, 0, 2, 2.0, 0.0, -1.0, 0.0},
|
|
{-1, 0, 2, -2, 1, -2.0, 0.0, 1.0, 0.0},
|
|
{2, 0, 0, 0, 1, 2.0, 0.0, -1.0, 0.0},
|
|
{1, 0, 0, 0, 2, -2.0, 0.0, 1.0, 0.0},
|
|
{3, 0, 0, 0, 0, 2.0, 0.0, 0.0, 0.0},
|
|
{0, 0, 2, 1, 2, 2.0, 0.0, -1.0, 0.0},
|
|
{-1, 0, 0, 0, 2, 1.0, 0.0, -1.0, 0.0},
|
|
{1, 0, 0, -4, 0, -1.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 81-90 */
|
|
{-2, 0, 2, 2, 2, 1.0, 0.0, -1.0, 0.0},
|
|
{-1, 0, 2, 4, 2, -2.0, 0.0, 1.0, 0.0},
|
|
{2, 0, 0, -4, 0, -1.0, 0.0, 0.0, 0.0},
|
|
{1, 1, 2, -2, 2, 1.0, 0.0, -1.0, 0.0},
|
|
{1, 0, 2, 2, 1, -1.0, 0.0, 1.0, 0.0},
|
|
{-2, 0, 2, 4, 2, -1.0, 0.0, 1.0, 0.0},
|
|
{-1, 0, 4, 0, 2, 1.0, 0.0, 0.0, 0.0},
|
|
{1, -1, 0, -2, 0, 1.0, 0.0, 0.0, 0.0},
|
|
{2, 0, 2, -2, 1, 1.0, 0.0, -1.0, 0.0},
|
|
{2, 0, 2, 2, 2, -1.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 91-100 */
|
|
{1, 0, 0, 2, 1, -1.0, 0.0, 0.0, 0.0},
|
|
{0, 0, 4, -2, 2, 1.0, 0.0, 0.0, 0.0},
|
|
{3, 0, 2, -2, 2, 1.0, 0.0, 0.0, 0.0},
|
|
{1, 0, 2, -2, 0, -1.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 2, 0, 1, 1.0, 0.0, 0.0, 0.0},
|
|
{-1, -1, 0, 2, 1, 1.0, 0.0, 0.0, 0.0},
|
|
{0, 0, -2, 0, 1, -1.0, 0.0, 0.0, 0.0},
|
|
{0, 0, 2, -1, 2, -1.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 0, 2, 0, -1.0, 0.0, 0.0, 0.0},
|
|
{1, 0, -2, -2, 0, -1.0, 0.0, 0.0, 0.0},
|
|
|
|
/* 101-106 */
|
|
{0, -1, 2, 0, 1, -1.0, 0.0, 0.0, 0.0},
|
|
{1, 1, 0, -2, 1, -1.0, 0.0, 0.0, 0.0},
|
|
{1, 0, -2, 2, 0, -1.0, 0.0, 0.0, 0.0},
|
|
{2, 0, 0, 2, 0, 1.0, 0.0, 0.0, 0.0},
|
|
{0, 0, 2, 4, 2, -1.0, 0.0, 0.0, 0.0},
|
|
{0, 1, 0, 1, 0, 1.0, 0.0, 0.0, 0.0},
|
|
}
|
|
|
|
/* Number of terms in the series */
|
|
NT := len(x)
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
|
|
/* Interval between fundamental epoch J2000.0 and given date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* --------------------- */
|
|
/* Fundamental arguments */
|
|
/* --------------------- */
|
|
|
|
/* Mean longitude of Moon minus mean longitude of Moon's perigee. */
|
|
el = Anpm((485866.733+(715922.633+(31.310+0.064*t)*t)*t)*DAS2R + fmod(1325.0*t, 1.0)*D2PI)
|
|
|
|
/* Mean longitude of Sun minus mean longitude of Sun's perigee. */
|
|
elp = Anpm((1287099.804+(1292581.224+(-0.577-0.012*t)*t)*t)*DAS2R + fmod(99.0*t, 1.0)*D2PI)
|
|
|
|
/* Mean longitude of Moon minus mean longitude of Moon's node. */
|
|
f = Anpm((335778.877+(295263.137+(-13.257+0.011*t)*t)*t)*DAS2R + fmod(1342.0*t, 1.0)*D2PI)
|
|
|
|
/* Mean elongation of Moon from Sun. */
|
|
d = Anpm((1072261.307+(1105601.328+(-6.891+0.019*t)*t)*t)*DAS2R + fmod(1236.0*t, 1.0)*D2PI)
|
|
|
|
/* Longitude of the mean ascending node of the lunar orbit on the */
|
|
/* ecliptic, measured from the mean equinox of date. */
|
|
om = Anpm((450160.280+(-482890.539+(7.455+0.008*t)*t)*t)*DAS2R + fmod(-5.0*t, 1.0)*D2PI)
|
|
|
|
/* --------------- */
|
|
/* Nutation series */
|
|
/* --------------- */
|
|
|
|
/* Initialize nutation components. */
|
|
dp = 0.0
|
|
de = 0.0
|
|
|
|
/* Sum the nutation terms, ending with the biggest. */
|
|
for j = NT - 1; j >= 0; j-- {
|
|
|
|
/* Form argument for current term. */
|
|
arg = float64(x[j].nl)*el +
|
|
float64(x[j].nlp)*elp +
|
|
float64(x[j].nf)*f +
|
|
float64(x[j].nd)*d +
|
|
float64(x[j].nom)*om
|
|
|
|
/* Accumulate current nutation term. */
|
|
s = x[j].sp + x[j].spt*t
|
|
c = x[j].ce + x[j].cet*t
|
|
if s != 0.0 {
|
|
dp += s * sin(arg)
|
|
}
|
|
if c != 0.0 {
|
|
de += c * cos(arg)
|
|
}
|
|
}
|
|
|
|
/* Convert results from 0.1 mas units to radians. */
|
|
*dpsi = dp * U2R
|
|
*deps = de * U2R
|
|
}
|
|
|
|
/*
|
|
Nutm80 Nutation matrix, IAU 1980
|
|
Form the matrix of nutation for a given date, IAU 1980 model.
|
|
|
|
Given:
|
|
date1,date2 float64 TDB date (Note 1)
|
|
|
|
Returned:
|
|
rmatn [3][3]float64 nutation matrix
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(true) = rmatn * V(mean),
|
|
where the p-vector V(true) is with respect to the true
|
|
equatorial triad of date and the p-vector V(mean) is with
|
|
respect to the mean equatorial triad of date.
|
|
|
|
Called:
|
|
Nut80 nutation, IAU 1980
|
|
Obl80 mean obliquity, IAU 1980
|
|
Numat form nutation matrix
|
|
*/
|
|
func Nutm80(date1, date2 float64, rmatn *[3][3]float64) {
|
|
var dpsi, deps, epsa float64
|
|
|
|
/* Nutation components and mean obliquity. */
|
|
Nut80(date1, date2, &dpsi, &deps)
|
|
epsa = Obl80(date1, date2)
|
|
|
|
/* Build the rotation matrix. */
|
|
Numat(epsa, dpsi, deps, rmatn)
|
|
}
|
|
|
|
/*
|
|
Obl06 Mean obliquity, IAU 2006
|
|
Mean obliquity of the ecliptic, IAU 2006 precession model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned (function value):
|
|
float64 obliquity of the ecliptic (radians, Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The result is the angle between the ecliptic and mean equator of
|
|
date date1+date2.
|
|
|
|
Reference:
|
|
|
|
Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
|
|
*/
|
|
func Obl06(date1, date2 float64) float64 {
|
|
var t, eps0 float64
|
|
|
|
/* Interval between fundamental date J2000.0 and given date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* Mean obliquity. */
|
|
eps0 = (84381.406 + (-46.836769+(-0.0001831+(0.00200340+(-0.000000576+(-0.0000000434)*t)*t)*t)*t)*t) * DAS2R
|
|
|
|
return eps0
|
|
}
|
|
|
|
/*
|
|
Obl80 Mean obliquity, IAU 1980 Mean obliquity of the ecliptic, IAU 1980 model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned (function value):
|
|
float64 obliquity of the ecliptic (radians, Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The result is the angle between the ecliptic and mean equator of
|
|
date date1+date2.
|
|
|
|
Reference:
|
|
|
|
Explanatory Supplement to the Astronomical Almanac,
|
|
P. Kenneth Seidelmann (ed), University Science Books (1992),
|
|
Expression 3.222-1 (p114).
|
|
*/
|
|
func Obl80(date1, date2 float64) float64 {
|
|
var t, eps0 float64
|
|
|
|
/* Interval between fundamental epoch J2000.0 and given date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* Mean obliquity of date. */
|
|
eps0 = DAS2R * (84381.448 +
|
|
(-46.8150+
|
|
(-0.00059+
|
|
(0.001813)*t)*t)*t)
|
|
|
|
return eps0
|
|
}
|
|
|
|
/*
|
|
Pb06 Zeta, z, theta precession angles, IAU 2006, including bias
|
|
This function forms three Euler angles which implement general
|
|
precession from epoch J2000.0, using the IAU 2006 model. Frame
|
|
bias (the offset between ICRS and mean J2000.0) is included.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
bzeta float64 1st rotation: radians cw around z
|
|
bz float64 3rd rotation: radians cw around z
|
|
btheta float64 2nd rotation: radians ccw around y
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The traditional accumulated precession angles zeta_A, z_A,
|
|
theta_A cannot be obtained in the usual way, namely through
|
|
polynomial expressions, because of the frame bias. The latter
|
|
means that two of the angles undergo rapid changes near this
|
|
date. They are instead the results of decomposing the
|
|
precession-bias matrix obtained by using the Fukushima-Williams
|
|
method, which does not suffer from the problem. The
|
|
decomposition returns values which can be used in the
|
|
conventional formulation and which include frame bias.
|
|
|
|
3) The three angles are returned in the conventional order, which
|
|
is not the same as the order of the corresponding Euler
|
|
rotations. The precession-bias matrix is
|
|
R_3(-z) x R_2(+theta) x R_3(-zeta).
|
|
|
|
4) Should zeta_A, z_A, theta_A angles be required that do not
|
|
contain frame bias, they are available by calling the SOFA
|
|
function iauP06e.
|
|
|
|
Called:
|
|
Pmat06 PB matrix, IAU 2006
|
|
Rz rotate around Z-axis
|
|
*/
|
|
func Pb06(date1, date2 float64, bzeta, bz, btheta *float64) {
|
|
var r [3][3]float64
|
|
var y, x float64
|
|
|
|
/* Precession matrix via Fukushima-Williams angles. */
|
|
Pmat06(date1, date2, &r)
|
|
|
|
/* Solve for z, choosing the +/- pi alternative. */
|
|
y = r[1][2]
|
|
x = -r[0][2]
|
|
if x < 0.0 {
|
|
y = -y
|
|
x = -x
|
|
}
|
|
|
|
// *bz = ( x != 0.0 || y != 0.0 ) ? - atan2(y,x) : 0.0;
|
|
if x != 0.0 || y != 0.0 {
|
|
*bz = -atan2(y, x)
|
|
} else {
|
|
*bz = 0.0
|
|
}
|
|
|
|
/* Derotate it out of the matrix. */
|
|
Rz(*bz, &r)
|
|
|
|
/* Solve for the remaining two angles. */
|
|
y = r[0][2]
|
|
x = r[2][2]
|
|
// *btheta = ( x != 0.0 || y != 0.0 ) ? - atan2(y,x) : 0.0;
|
|
if x != 0.0 || y != 0.0 {
|
|
*btheta = -atan2(y, x)
|
|
} else {
|
|
*btheta = 0.0
|
|
}
|
|
|
|
y = -r[1][0]
|
|
x = r[1][1]
|
|
// *bzeta = ( x != 0.0 || y != 0.0 ) ? - atan2(y,x) : 0.0;
|
|
if x != 0.0 || y != 0.0 {
|
|
*bzeta = -atan2(y, x)
|
|
} else {
|
|
*bzeta = 0.0
|
|
}
|
|
}
|
|
|
|
/*
|
|
Pfw06 Bias-precession Fukushima-Williams angles, IAU 2006
|
|
Precession angles, IAU 2006 (Fukushima-Williams 4-angle formulation).
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
gamb float64 F-W angle gamma_bar (radians)
|
|
phib float64 F-W angle phi_bar (radians)
|
|
psib float64 F-W angle psi_bar (radians)
|
|
epsa float64 F-W angle epsilon_A (radians)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) Naming the following points:
|
|
|
|
e = J2000.0 ecliptic pole,
|
|
p = GCRS pole,
|
|
E = mean ecliptic pole of date,
|
|
and P = mean pole of date,
|
|
|
|
the four Fukushima-Williams angles are as follows:
|
|
|
|
gamb = gamma_bar = epE
|
|
phib = phi_bar = pE
|
|
psib = psi_bar = pEP
|
|
epsa = epsilon_A = EP
|
|
|
|
3) The matrix representing the combined effects of frame bias and
|
|
precession is:
|
|
|
|
PxB = R_1(-epsa).R_3(-psib).R_1(phib).R_3(gamb)
|
|
|
|
4) The matrix representing the combined effects of frame bias,
|
|
precession and nutation is simply:
|
|
|
|
NxPxB = R_1(-epsa-dE).R_3(-psib-dP).R_1(phib).R_3(gamb)
|
|
|
|
where dP and dE are the nutation components with respect to the
|
|
ecliptic of date.
|
|
|
|
Reference:
|
|
|
|
Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
|
|
|
|
Called:
|
|
Obl06 mean obliquity, IAU 2006
|
|
*/
|
|
func Pfw06(date1, date2 float64, gamb, phib, psib, epsa *float64) {
|
|
var t float64
|
|
|
|
/* Interval between fundamental date J2000.0 and given date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* P03 bias+precession angles. */
|
|
*gamb = (-0.052928 + (10.556378+(0.4932044+(-0.00031238+(-0.000002788+(0.0000000260)*t)*t)*t)*t)*t) * DAS2R
|
|
*phib = (84381.412819 + (-46.811016+(0.0511268+(0.00053289+(-0.000000440+(-0.0000000176)*t)*t)*t)*t)*t) * DAS2R
|
|
*psib = (-0.041775 + (5038.481484+(1.5584175+(-0.00018522+(-0.000026452+(-0.0000000148)*t)*t)*t)*t)*t) * DAS2R
|
|
*epsa = Obl06(date1, date2)
|
|
}
|
|
|
|
/*
|
|
Pmat00 Precession matrix (including frame bias), IAU 2000
|
|
Precession matrix (including frame bias) from GCRS to a specified
|
|
date, IAU 2000 model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rbp [3][3]float64 bias-precession matrix (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(date) = rbp * V(GCRS), where
|
|
the p-vector V(GCRS) is with respect to the Geocentric Celestial
|
|
Reference System (IAU, 2000) and the p-vector V(date) is with
|
|
respect to the mean equatorial triad of the given date.
|
|
|
|
Called:
|
|
Bp00 frame bias and precession matrices, IAU 2000
|
|
|
|
Reference:
|
|
|
|
: Trans. International Astronomical Union, Vol. XXIVB; Proc.
|
|
24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6.
|
|
(2000)
|
|
*/
|
|
func Pmat00(date1, date2 float64, rbp *[3][3]float64) {
|
|
var rb, rp [3][3]float64
|
|
|
|
/* Obtain the required matrix (discarding others). */
|
|
Bp00(date1, date2, &rb, &rp, rbp)
|
|
}
|
|
|
|
/*
|
|
Pmat06 Precession matrix (including frame bias), IAU 2006
|
|
Precession matrix (including frame bias) from GCRS to a specified
|
|
date, IAU 2006 model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rbp [3][3]float64 bias-precession matrix (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(date) = rbp * V(GCRS), where
|
|
the p-vector V(GCRS) is with respect to the Geocentric Celestial
|
|
Reference System (IAU, 2000) and the p-vector V(date) is with
|
|
respect to the mean equatorial triad of the given date.
|
|
|
|
Called:
|
|
Pfw06 bias-precession F-W angles, IAU 2006
|
|
Fw2m F-W angles to r-matrix
|
|
|
|
References:
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
|
|
|
|
: Trans. International Astronomical Union, Vol. XXIVB; Proc.
|
|
24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6.
|
|
(2000)
|
|
|
|
Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
|
|
*/
|
|
func Pmat06(date1, date2 float64, rbp *[3][3]float64) {
|
|
var gamb, phib, psib, epsa float64
|
|
|
|
/* Bias-precession Fukushima-Williams angles. */
|
|
Pfw06(date1, date2, &gamb, &phib, &psib, &epsa)
|
|
|
|
/* Form the matrix. */
|
|
Fw2m(gamb, phib, psib, epsa, rbp)
|
|
}
|
|
|
|
/*
|
|
Pmat76 Precession matrix, IAU 1976
|
|
Precession matrix from J2000.0 to a specified date, IAU 1976 model.
|
|
|
|
Given:
|
|
date1,date2 float64 ending date, TT (Note 1)
|
|
|
|
Returned:
|
|
rmatp [3][3]float64 precession matrix, J2000.0 -> date1+date2
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(date) = RMATP * V(J2000),
|
|
where the p-vector V(J2000) is with respect to the mean
|
|
equatorial triad of epoch J2000.0 and the p-vector V(date)
|
|
is with respect to the mean equatorial triad of the given
|
|
date.
|
|
|
|
3) Though the matrix method itself is rigorous, the precession
|
|
angles are expressed through canonical polynomials which are
|
|
valid only for a limited time span. In addition, the IAU 1976
|
|
precession rate is known to be imperfect. The absolute accuracy
|
|
of the present formulation is better than 0.1 arcsec from
|
|
1960AD to 2040AD, better than 1 arcsec from 1640AD to 2360AD,
|
|
and remains below 3 arcsec for the whole of the period
|
|
500BC to 3000AD. The errors exceed 10 arcsec outside the
|
|
range 1200BC to 3900AD, exceed 100 arcsec outside 4200BC to
|
|
5600AD and exceed 1000 arcsec outside 6800BC to 8200AD.
|
|
|
|
Called:
|
|
Prec76 accumulated precession angles, IAU 1976
|
|
Ir initialize r-matrix to identity
|
|
Rz rotate around Z-axis
|
|
Ry rotate around Y-axis
|
|
Cr copy r-matrix
|
|
|
|
References:
|
|
|
|
Lieske, J.H., 1979, Astron.Astrophys. 73, 282.
|
|
equations (6) & (7), p283.
|
|
|
|
Kaplan,G.H., 1981. USNO circular no. 163, pA2.
|
|
*/
|
|
func Pmat76(date1, date2 float64, rmatp *[3][3]float64) {
|
|
var zeta, z, theta float64
|
|
var wmat [3][3]float64
|
|
|
|
/* Precession Euler angles, J2000.0 to specified date. */
|
|
Prec76(DJ00, 0.0, date1, date2, &zeta, &z, &theta)
|
|
|
|
/* Form the rotation matrix. */
|
|
Ir(&wmat)
|
|
Rz(-zeta, &wmat)
|
|
Ry(theta, &wmat)
|
|
Rz(-z, &wmat)
|
|
Cr(wmat, rmatp)
|
|
}
|
|
|
|
/*
|
|
Pn00 B,P,N matrices, IAU 2000, given nutation
|
|
|
|
Precession-nutation, IAU 2000 model: a multi-purpose function,
|
|
supporting classical (equinox-based) use directly and CIO-based
|
|
use indirectly.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
dpsi,deps float64 nutation (Note 2)
|
|
|
|
Returned:
|
|
epsa float64 mean obliquity (Note 3)
|
|
rb [3][3]float64 frame bias matrix (Note 4)
|
|
rp [3][3]float64 precession matrix (Note 5)
|
|
rbp [3][3]float64 bias-precession matrix (Note 6)
|
|
rn [3][3]float64 nutation matrix (Note 7)
|
|
rbpn [3][3]float64 GCRS-to-true matrix (Note 8)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The caller is responsible for providing the nutation components;
|
|
they are in longitude and obliquity, in radians and are with
|
|
respect to the equinox and ecliptic of date. For high-accuracy
|
|
applications, free core nutation should be included as well as
|
|
any other relevant corrections to the position of the CIP.
|
|
|
|
3) The returned mean obliquity is consistent with the IAU 2000
|
|
precession-nutation models.
|
|
|
|
4) The matrix rb transforms vectors from GCRS to J2000.0 mean
|
|
equator and equinox by applying frame bias.
|
|
|
|
5) The matrix rp transforms vectors from J2000.0 mean equator and
|
|
equinox to mean equator and equinox of date by applying
|
|
precession.
|
|
|
|
6) The matrix rbp transforms vectors from GCRS to mean equator and
|
|
equinox of date by applying frame bias then precession. It is
|
|
the product rp x rb.
|
|
|
|
7) The matrix rn transforms vectors from mean equator and equinox of
|
|
date to true equator and equinox of date by applying the nutation
|
|
(luni-solar + planetary).
|
|
|
|
8) The matrix rbpn transforms vectors from GCRS to true equator and
|
|
equinox of date. It is the product rn x rbp, applying frame
|
|
bias, precession and nutation in that order.
|
|
|
|
9) It is permissible to re-use the same array in the returned
|
|
arguments. The arrays are filled in the order given.
|
|
|
|
Called:
|
|
Pr00 IAU 2000 precession adjustments
|
|
Obl80 mean obliquity, IAU 1980
|
|
Bp00 frame bias and precession matrices, IAU 2000
|
|
Cr copy r-matrix
|
|
Numat form nutation matrix
|
|
Rxr product of two r-matrices
|
|
|
|
Reference:
|
|
|
|
Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
*/
|
|
func Pn00(date1, date2 float64, dpsi, deps float64, epsa *float64, rb, rp, rbp, rn, rbpn *[3][3]float64) {
|
|
var dpsipr, depspr float64
|
|
var rbpw, rnw [3][3]float64
|
|
|
|
/* IAU 2000 precession-rate adjustments. */
|
|
Pr00(date1, date2, &dpsipr, &depspr)
|
|
|
|
/* Mean obliquity, consistent with IAU 2000 precession-nutation. */
|
|
*epsa = Obl80(date1, date2) + depspr
|
|
|
|
/* Frame bias and precession matrices and their product. */
|
|
Bp00(date1, date2, rb, rp, &rbpw)
|
|
Cr(rbpw, rbp)
|
|
|
|
/* Nutation matrix. */
|
|
Numat(*epsa, dpsi, deps, &rnw)
|
|
Cr(rnw, rn)
|
|
|
|
/* Bias-precession-nutation matrix (classical). */
|
|
Rxr(rnw, rbpw, rbpn)
|
|
}
|
|
|
|
/*
|
|
Pn00a B,P,N matrices, IAU 2000A
|
|
|
|
Precession-nutation, IAU 2000A model: a multi-purpose function,
|
|
supporting classical (equinox-based) use directly and CIO-based
|
|
use indirectly.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
dpsi,deps float64 nutation (Note 2)
|
|
epsa float64 mean obliquity (Note 3)
|
|
rb [3][3]float64 frame bias matrix (Note 4)
|
|
rp [3][3]float64 precession matrix (Note 5)
|
|
rbp [3][3]float64 bias-precession matrix (Note 6)
|
|
rn [3][3]float64 nutation matrix (Note 7)
|
|
rbpn [3][3]float64 GCRS-to-true matrix (Notes 8,9)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The nutation components (luni-solar + planetary, IAU 2000A) in
|
|
longitude and obliquity are in radians and with respect to the
|
|
equinox and ecliptic of date. Free core nutation is omitted;
|
|
for the utmost accuracy, use the iauPn00 function, where the
|
|
nutation components are caller-specified. For faster but
|
|
slightly less accurate results, use the iauPn00b function.
|
|
|
|
3) The mean obliquity is consistent with the IAU 2000 precession.
|
|
|
|
4) The matrix rb transforms vectors from GCRS to J2000.0 mean
|
|
equator and equinox by applying frame bias.
|
|
|
|
5) The matrix rp transforms vectors from J2000.0 mean equator and
|
|
equinox to mean equator and equinox of date by applying
|
|
precession.
|
|
|
|
6) The matrix rbp transforms vectors from GCRS to mean equator and
|
|
equinox of date by applying frame bias then precession. It is
|
|
the product rp x rb.
|
|
|
|
7) The matrix rn transforms vectors from mean equator and equinox
|
|
of date to true equator and equinox of date by applying the
|
|
nutation (luni-solar + planetary).
|
|
|
|
8) The matrix rbpn transforms vectors from GCRS to true equator and
|
|
equinox of date. It is the product rn x rbp, applying frame
|
|
bias, precession and nutation in that order.
|
|
|
|
9) The X,Y,Z coordinates of the IAU 2000A Celestial Intermediate
|
|
Pole are elements (3,1-3) of the GCRS-to-true matrix,
|
|
i.e. rbpn[2][0-2].
|
|
|
|
10)It is permissible to re-use the same array in the returned
|
|
arguments. The arrays are filled in the stated order.
|
|
|
|
Called:
|
|
Nut00a nutation, IAU 2000A
|
|
Pn00 bias/precession/nutation results, IAU 2000
|
|
|
|
Reference:
|
|
|
|
Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
*/
|
|
func Pn00a(date1, date2 float64, dpsi, deps, epsa *float64, rb, rp, rbp, rn, rbpn *[3][3]float64) {
|
|
/* Nutation. */
|
|
Nut00a(date1, date2, dpsi, deps)
|
|
|
|
/* Remaining results. */
|
|
Pn00(date1, date2, *dpsi, *deps, epsa, rb, rp, rbp, rn, rbpn)
|
|
}
|
|
|
|
/*
|
|
Pn00b B,P,N matrices, IAU 2000B
|
|
|
|
Precession-nutation, IAU 2000B model: a multi-purpose function,
|
|
supporting classical (equinox-based) use directly and CIO-based
|
|
use indirectly.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
dpsi,deps float64 nutation (Note 2)
|
|
epsa float64 mean obliquity (Note 3)
|
|
rb [3][3]float64 frame bias matrix (Note 4)
|
|
rp [3][3]float64 precession matrix (Note 5)
|
|
rbp [3][3]float64 bias-precession matrix (Note 6)
|
|
rn [3][3]float64 nutation matrix (Note 7)
|
|
rbpn [3][3]float64 GCRS-to-true matrix (Notes 8,9)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The nutation components (luni-solar + planetary, IAU 2000B) in
|
|
longitude and obliquity are in radians and with respect to the
|
|
equinox and ecliptic of date. For more accurate results, but
|
|
at the cost of increased computation, use the iauPn00a function.
|
|
For the utmost accuracy, use the iauPn00 function, where the
|
|
nutation components are caller-specified.
|
|
|
|
3) The mean obliquity is consistent with the IAU 2000 precession.
|
|
|
|
4) The matrix rb transforms vectors from GCRS to J2000.0 mean
|
|
equator and equinox by applying frame bias.
|
|
|
|
5) The matrix rp transforms vectors from J2000.0 mean equator and
|
|
equinox to mean equator and equinox of date by applying
|
|
precession.
|
|
|
|
6) The matrix rbp transforms vectors from GCRS to mean equator and
|
|
equinox of date by applying frame bias then precession. It is
|
|
the product rp x rb.
|
|
|
|
7) The matrix rn transforms vectors from mean equator and equinox
|
|
of date to true equator and equinox of date by applying the
|
|
nutation (luni-solar + planetary).
|
|
|
|
8) The matrix rbpn transforms vectors from GCRS to true equator and
|
|
equinox of date. It is the product rn x rbp, applying frame
|
|
bias, precession and nutation in that order.
|
|
|
|
9) The X,Y,Z coordinates of the IAU 2000B Celestial Intermediate
|
|
Pole are elements (3,1-3) of the GCRS-to-true matrix,
|
|
i.e. rbpn[2][0-2].
|
|
|
|
10)It is permissible to re-use the same array in the returned
|
|
arguments. The arrays are filled in the stated order.
|
|
|
|
Called:
|
|
Nut00b nutation, IAU 2000B
|
|
Pn00 bias/precession/nutation results, IAU 2000
|
|
|
|
Reference:
|
|
|
|
Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154 (2003).
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
*/
|
|
func Pn00b(date1, date2 float64, dpsi, deps, epsa *float64, rb, rp, rbp, rn, rbpn *[3][3]float64) {
|
|
/* Nutation. */
|
|
Nut00b(date1, date2, dpsi, deps)
|
|
|
|
/* Remaining results. */
|
|
Pn00(date1, date2, *dpsi, *deps, epsa, rb, rp, rbp, rn, rbpn)
|
|
}
|
|
|
|
/*
|
|
Pn06 Bias precession nutation results, IAU 2006
|
|
|
|
Precession-nutation, IAU 2006 model: a multi-purpose function,
|
|
supporting classical (equinox-based) use directly and CIO-based use
|
|
indirectly.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
dpsi,deps float64 nutation (Note 2)
|
|
|
|
Returned:
|
|
epsa float64 mean obliquity (Note 3)
|
|
rb [3][3]float64 frame bias matrix (Note 4)
|
|
rp [3][3]float64 precession matrix (Note 5)
|
|
rbp [3][3]float64 bias-precession matrix (Note 6)
|
|
rn [3][3]float64 nutation matrix (Note 7)
|
|
rbpn [3][3]float64 GCRS-to-true matrix (Notes 8,9)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The caller is responsible for providing the nutation components;
|
|
they are in longitude and obliquity, in radians and are with
|
|
respect to the equinox and ecliptic of date. For high-accuracy
|
|
applications, free core nutation should be included as well as
|
|
any other relevant corrections to the position of the CIP.
|
|
|
|
3) The returned mean obliquity is consistent with the IAU 2006
|
|
precession.
|
|
|
|
4) The matrix rb transforms vectors from GCRS to J2000.0 mean
|
|
equator and equinox by applying frame bias.
|
|
|
|
5) The matrix rp transforms vectors from J2000.0 mean equator and
|
|
equinox to mean equator and equinox of date by applying
|
|
precession.
|
|
|
|
6) The matrix rbp transforms vectors from GCRS to mean equator and
|
|
equinox of date by applying frame bias then precession. It is
|
|
the product rp x rb.
|
|
|
|
7) The matrix rn transforms vectors from mean equator and equinox
|
|
of date to true equator and equinox of date by applying the
|
|
nutation (luni-solar + planetary).
|
|
|
|
8) The matrix rbpn transforms vectors from GCRS to true equator and
|
|
equinox of date. It is the product rn x rbp, applying frame
|
|
bias, precession and nutation in that order.
|
|
|
|
9) The X,Y,Z coordinates of the Celestial Intermediate Pole are
|
|
elements (3,1-3) of the GCRS-to-true matrix, i.e. rbpn[2][0-2].
|
|
|
|
10)It is permissible to re-use the same array in the returned
|
|
arguments. The arrays are filled in the stated order.
|
|
|
|
Called:
|
|
Pfw06 bias-precession F-W angles, IAU 2006
|
|
Fw2m F-W angles to r-matrix
|
|
Cr copy r-matrix
|
|
Tr transpose r-matrix
|
|
Rxr product of two r-matrices
|
|
|
|
References:
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
|
|
|
|
Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
|
|
*/
|
|
func Pn06(date1, date2 float64, dpsi, deps float64, epsa *float64, rb, rp, rbp, rn, rbpn *[3][3]float64) {
|
|
var gamb, phib, psib, eps float64
|
|
var r1, r2, rt [3][3]float64
|
|
|
|
/* Bias-precession Fukushima-Williams angles of J2000.0 = frame bias. */
|
|
Pfw06(DJM0, DJM00, &gamb, &phib, &psib, &eps)
|
|
|
|
/* B matrix. */
|
|
Fw2m(gamb, phib, psib, eps, &r1)
|
|
Cr(r1, rb)
|
|
|
|
/* Bias-precession Fukushima-Williams angles of date. */
|
|
Pfw06(date1, date2, &gamb, &phib, &psib, &eps)
|
|
|
|
/* Bias-precession matrix. */
|
|
Fw2m(gamb, phib, psib, eps, &r2)
|
|
Cr(r2, rbp)
|
|
|
|
/* Solve for precession matrix. */
|
|
Tr(r1, &rt)
|
|
Rxr(r2, rt, rp)
|
|
|
|
/* Equinox-based bias-precession-nutation matrix. */
|
|
Fw2m(gamb, phib, psib+dpsi, eps+deps, &r1)
|
|
Cr(r1, rbpn)
|
|
|
|
/* Solve for nutation matrix. */
|
|
Tr(r2, &rt)
|
|
Rxr(r1, rt, rn)
|
|
|
|
/* Obliquity, mean of date. */
|
|
*epsa = eps
|
|
|
|
}
|
|
|
|
/*
|
|
Pn06a Bias precession nutation results, IAU 2006/2000A
|
|
|
|
Precession-nutation, IAU 2006/2000A models: a multi-purpose function,
|
|
supporting classical (equinox-based) use directly and CIO-based use
|
|
indirectly.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
dpsi,deps float64 nutation (Note 2)
|
|
epsa float64 mean obliquity (Note 3)
|
|
rb [3][3]float64 frame bias matrix (Note 4)
|
|
rp [3][3]float64 precession matrix (Note 5)
|
|
rbp [3][3]float64 bias-precession matrix (Note 6)
|
|
rn [3][3]float64 nutation matrix (Note 7)
|
|
rbpn [3][3]float64 GCRS-to-true matrix (Notes 8,9)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The nutation components (luni-solar + planetary, IAU 2000A) in
|
|
longitude and obliquity are in radians and with respect to the
|
|
equinox and ecliptic of date. Free core nutation is omitted;
|
|
for the utmost accuracy, use the iauPn06 function, where the
|
|
nutation components are caller-specified.
|
|
|
|
3) The mean obliquity is consistent with the IAU 2006 precession.
|
|
|
|
4) The matrix rb transforms vectors from GCRS to mean J2000.0 by
|
|
applying frame bias.
|
|
|
|
5) The matrix rp transforms vectors from mean J2000.0 to mean of
|
|
date by applying precession.
|
|
|
|
6) The matrix rbp transforms vectors from GCRS to mean of date by
|
|
applying frame bias then precession. It is the product rp x rb.
|
|
|
|
7) The matrix rn transforms vectors from mean of date to true of
|
|
date by applying the nutation (luni-solar + planetary).
|
|
|
|
8) The matrix rbpn transforms vectors from GCRS to true of date
|
|
(CIP/equinox). It is the product rn x rbp, applying frame bias,
|
|
precession and nutation in that order.
|
|
|
|
9) The X,Y,Z coordinates of the IAU 2006/2000A Celestial
|
|
Intermediate Pole are elements (3,1-3) of the GCRS-to-true
|
|
matrix, i.e. rbpn[2][0-2].
|
|
|
|
10)It is permissible to re-use the same array in the returned
|
|
arguments. The arrays are filled in the stated order.
|
|
|
|
Called:
|
|
Nut06a nutation, IAU 2006/2000A
|
|
Pn06 bias/precession/nutation results, IAU 2006
|
|
|
|
Reference:
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
|
|
*/
|
|
func Pn06a(date1, date2 float64, dpsi, deps, epsa *float64, rb, rp, rbp, rn, rbpn *[3][3]float64) {
|
|
/* Nutation. */
|
|
Nut06a(date1, date2, dpsi, deps)
|
|
|
|
/* Remaining results. */
|
|
Pn06(date1, date2, *dpsi, *deps, epsa, rb, rp, rbp, rn, rbpn)
|
|
}
|
|
|
|
/*
|
|
Pnm00a Classical NPB matrix, IAU 2000A
|
|
|
|
Form the matrix of precession-nutation for a given date (including
|
|
frame bias), equinox based, IAU 2000A model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rbpn [3][3]float64 bias-precession-nutation matrix (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways, among
|
|
others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where
|
|
the p-vector V(date) is with respect to the true equatorial triad
|
|
of date date1+date2 and the p-vector V(GCRS) is with respect to
|
|
the Geocentric Celestial Reference System (IAU, 2000).
|
|
|
|
3) A faster, but slightly less accurate, result (about 1 mas) can be
|
|
obtained by using instead the iauPnm00b function.
|
|
|
|
Called:
|
|
Pn00a bias/precession/nutation, IAU 2000A
|
|
|
|
Reference:
|
|
|
|
: Trans. International Astronomical Union, Vol. XXIVB; Proc.
|
|
24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6.
|
|
(2000)
|
|
*/
|
|
func Pnm00a(date1, date2 float64, rbpn *[3][3]float64) {
|
|
var dpsi, deps, epsa float64
|
|
var rb, rp, rbp, rn [3][3]float64
|
|
|
|
/* Obtain the required matrix (discarding other results). */
|
|
Pn00a(date1, date2, &dpsi, &deps, &epsa, &rb, &rp, &rbp, &rn, rbpn)
|
|
}
|
|
|
|
/*
|
|
Pnm00b Classical NPB matrix, IAU 2000B
|
|
|
|
Form the matrix of precession-nutation for a given date (including
|
|
frame bias), equinox-based, IAU 2000B model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rbpn [3][3]float64 bias-precession-nutation matrix (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways, among
|
|
others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where
|
|
the p-vector V(date) is with respect to the true equatorial triad
|
|
of date date1+date2 and the p-vector V(GCRS) is with respect to
|
|
the Geocentric Celestial Reference System (IAU, 2000).
|
|
|
|
3) The present function is faster, but slightly less accurate (about
|
|
1 mas), than the iauPnm00a function.
|
|
|
|
Called:
|
|
Pn00b bias/precession/nutation, IAU 2000B
|
|
|
|
Reference:
|
|
|
|
: Trans. International Astronomical Union, Vol. XXIVB; Proc.
|
|
24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6.
|
|
(2000)
|
|
*/
|
|
func Pnm00b(date1, date2 float64, rbpn *[3][3]float64) {
|
|
var dpsi, deps, epsa float64
|
|
var rb, rp, rbp, rn [3][3]float64
|
|
|
|
/* Obtain the required matrix (discarding other results). */
|
|
Pn00b(date1, date2, &dpsi, &deps, &epsa, &rb, &rp, &rbp, &rn, rbpn)
|
|
}
|
|
|
|
/*
|
|
Pnm06a Classical NPB matrix, IAU 2006/2000A
|
|
|
|
Form the matrix of precession-nutation for a given date (including
|
|
frame bias), equinox based, IAU 2006 precession and IAU 2000A
|
|
nutation models.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rbpn [3][3]float64 bias-precession-nutation matrix (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways, among
|
|
others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where
|
|
the p-vector V(date) is with respect to the true equatorial triad
|
|
of date date1+date2 and the p-vector V(GCRS) is with respect to
|
|
the Geocentric Celestial Reference System (IAU, 2000).
|
|
|
|
Called:
|
|
Pfw06 bias-precession F-W angles, IAU 2006
|
|
Nut06a nutation, IAU 2006/2000A
|
|
Fw2m F-W angles to r-matrix
|
|
|
|
Reference:
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855.
|
|
*/
|
|
func Pnm06a(date1, date2 float64, rbpn *[3][3]float64) {
|
|
var gamb, phib, psib, epsa, dp, de float64
|
|
|
|
/* Fukushima-Williams angles for frame bias and precession. */
|
|
Pfw06(date1, date2, &gamb, &phib, &psib, &epsa)
|
|
|
|
/* Nutation components. */
|
|
Nut06a(date1, date2, &dp, &de)
|
|
|
|
/* Equinox based nutation x precession x bias matrix. */
|
|
Fw2m(gamb, phib, psib+dp, epsa+de, rbpn)
|
|
}
|
|
|
|
/*
|
|
Pnm80 Precession/nutation matrix, IAU 1976/1980
|
|
|
|
Form the matrix of precession/nutation for a given date, IAU 1976
|
|
precession model, IAU 1980 nutation model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
rmatpn [3][3]float64 combined precession/nutation matrix
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The matrix operates in the sense V(date) = rmatpn * V(J2000),
|
|
where the p-vector V(date) is with respect to the true equatorial
|
|
triad of date date1+date2 and the p-vector V(J2000) is with
|
|
respect to the mean equatorial triad of epoch J2000.0.
|
|
|
|
Called:
|
|
Pmat76 precession matrix, IAU 1976
|
|
Nutm80 nutation matrix, IAU 1980
|
|
Rxr product of two r-matrices
|
|
|
|
Reference:
|
|
|
|
Explanatory Supplement to the Astronomical Almanac,
|
|
P. Kenneth Seidelmann (ed), University Science Books (1992),
|
|
Section 3.3 (p145).
|
|
*/
|
|
func Pnm80(date1, date2 float64, rmatpn *[3][3]float64) {
|
|
var rmatp, rmatn [3][3]float64
|
|
|
|
/* Precession matrix, J2000.0 to date. */
|
|
Pmat76(date1, date2, &rmatp)
|
|
|
|
/* Nutation matrix. */
|
|
Nutm80(date1, date2, &rmatn)
|
|
|
|
/* Combine the matrices: PN = N x P. */
|
|
Rxr(rmatn, rmatp, rmatpn)
|
|
}
|
|
|
|
/*
|
|
P06e Precession angles, IAU 2006, equinox based
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned (see Note 2):
|
|
eps0 float64 epsilon_0
|
|
psia float64 psi_A
|
|
oma float64 omega_A
|
|
bpa float64 P_A
|
|
bqa float64 Q_A
|
|
pia float64 pi_A
|
|
bpia float64 Pi_A
|
|
epsa float64 obliquity epsilon_A
|
|
chia float64 chi_A
|
|
za float64 z_A
|
|
zetaa float64 zeta_A
|
|
thetaa float64 theta_A
|
|
pa float64 p_A
|
|
gam float64 F-W angle gamma_J2000
|
|
phi float64 F-W angle phi_J2000
|
|
psi float64 F-W angle psi_J2000
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) This function returns the set of equinox based angles for the
|
|
Capitaine et al. "P03" precession theory, adopted by the IAU in
|
|
2006. The angles are set out in Table 1 of Hilton et al. (2006):
|
|
|
|
eps0 epsilon_0 obliquity at J2000.0
|
|
psia psi_A luni-solar precession
|
|
oma omega_A inclination of equator wrt J2000.0 ecliptic
|
|
bpa P_A ecliptic pole x, J2000.0 ecliptic triad
|
|
bqa Q_A ecliptic pole -y, J2000.0 ecliptic triad
|
|
pia pi_A angle between moving and J2000.0 ecliptics
|
|
bpia Pi_A longitude of ascending node of the ecliptic
|
|
epsa epsilon_A obliquity of the ecliptic
|
|
chia chi_A planetary precession
|
|
za z_A equatorial precession: -3rd 323 Euler angle
|
|
zetaa zeta_A equatorial precession: -1st 323 Euler angle
|
|
thetaa theta_A equatorial precession: 2nd 323 Euler angle
|
|
pa p_A general precession (n.b. see below)
|
|
gam gamma_J2000 J2000.0 RA difference of ecliptic poles
|
|
phi phi_J2000 J2000.0 codeclination of ecliptic pole
|
|
psi psi_J2000 longitude difference of equator poles, J2000.0
|
|
|
|
The returned values are all radians.
|
|
|
|
Note that the t^5 coefficient in the series for p_A from
|
|
Capitaine et al. (2003) is incorrectly signed in Hilton et al.
|
|
(2006).
|
|
|
|
3) Hilton et al. (2006) Table 1 also contains angles that depend on
|
|
models distinct from the P03 precession theory itself, namely the
|
|
2000A frame bias and nutation. The quoted polynomials are
|
|
used in other SOFA functions:
|
|
|
|
. iauXy06 contains the polynomial parts of the X and Y series.
|
|
|
|
. iauS06 contains the polynomial part of the s+XY/2 series.
|
|
|
|
. iauPfw06 implements the series for the Fukushima-Williams
|
|
angles that are with respect to the GCRS pole (i.e. the variants
|
|
that include frame bias).
|
|
|
|
4) The IAU resolution stipulated that the choice of parameterization
|
|
was left to the user, and so an IAU compliant precession
|
|
implementation can be constructed using various combinations of
|
|
the angles returned by the present function.
|
|
|
|
5) The parameterization used by SOFA is the version of the Fukushima-
|
|
Williams angles that refers directly to the GCRS pole. These
|
|
angles may be calculated by calling the function iauPfw06. SOFA
|
|
also supports the direct computation of the CIP GCRS X,Y by
|
|
series, available by calling iauXy06.
|
|
|
|
6) The agreement between the different parameterizations is at the
|
|
1 microarcsecond level in the present era.
|
|
|
|
7) When constructing a precession formulation that refers to the GCRS
|
|
pole rather than the dynamical pole, it may (depending on the
|
|
choice of angles) be necessary to introduce the frame bias
|
|
explicitly.
|
|
|
|
8) It is permissible to re-use the same variable in the returned
|
|
arguments. The quantities are stored in the stated order.
|
|
|
|
References:
|
|
|
|
Capitaine, N., Wallace, P.T. & Chapront, J., 2003,
|
|
Astron.Astrophys., 412, 567
|
|
|
|
Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351
|
|
|
|
Called:
|
|
Obl06 mean obliquity, IAU 2006
|
|
*/
|
|
func P06e(date1, date2 float64, eps0, psia, oma, bpa *float64, bqa, pia, bpia *float64, epsa, chia, za, zetaa *float64,
|
|
thetaa, pa *float64, gam, phi, psi *float64) {
|
|
var t float64
|
|
|
|
/* Interval between fundamental date J2000.0 and given date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* Obliquity at J2000.0. */
|
|
|
|
*eps0 = 84381.406 * DAS2R
|
|
|
|
/* Luni-solar precession. */
|
|
|
|
*psia = (5038.481507 +
|
|
(-1.0790069+
|
|
(-0.00114045+
|
|
(0.000132851+
|
|
(-0.0000000951)*
|
|
t)*t)*t)*t) * t * DAS2R
|
|
|
|
/* Inclination of mean equator with respect to the J2000.0 ecliptic. */
|
|
|
|
*oma = *eps0 + (-0.025754+
|
|
(0.0512623+
|
|
(-0.00772503+
|
|
(-0.000000467+
|
|
(0.0000003337)*
|
|
t)*t)*t)*t)*t*DAS2R
|
|
|
|
/* Ecliptic pole x, J2000.0 ecliptic triad. */
|
|
|
|
*bpa = (4.199094 +
|
|
(0.1939873+
|
|
(-0.00022466+
|
|
(-0.000000912+
|
|
(0.0000000120)*
|
|
t)*t)*t)*t) * t * DAS2R
|
|
|
|
/* Ecliptic pole -y, J2000.0 ecliptic triad. */
|
|
|
|
*bqa = (-46.811015 +
|
|
(0.0510283+
|
|
(0.00052413+
|
|
(-0.000000646+
|
|
(-0.0000000172)*
|
|
t)*t)*t)*t) * t * DAS2R
|
|
|
|
/* Angle between moving and J2000.0 ecliptics. */
|
|
|
|
*pia = (46.998973 +
|
|
(-0.0334926+
|
|
(-0.00012559+
|
|
(0.000000113+
|
|
(-0.0000000022)*
|
|
t)*t)*t)*t) * t * DAS2R
|
|
|
|
/* Longitude of ascending node of the moving ecliptic. */
|
|
|
|
*bpia = (629546.7936 +
|
|
(-867.95758+
|
|
(0.157992+
|
|
(-0.0005371+
|
|
(-0.00004797+
|
|
(0.000000072)*
|
|
t)*t)*t)*t)*t) * DAS2R
|
|
|
|
/* Mean obliquity of the ecliptic. */
|
|
|
|
*epsa = Obl06(date1, date2)
|
|
|
|
/* Planetary precession. */
|
|
|
|
*chia = (10.556403 +
|
|
(-2.3814292+
|
|
(-0.00121197+
|
|
(0.000170663+
|
|
(-0.0000000560)*
|
|
t)*t)*t)*t) * t * DAS2R
|
|
|
|
/* Equatorial precession: minus the third of the 323 Euler angles. */
|
|
|
|
*za = (-2.650545 +
|
|
(2306.077181+
|
|
(1.0927348+
|
|
(0.01826837+
|
|
(-0.000028596+
|
|
(-0.0000002904)*
|
|
t)*t)*t)*t)*t) * DAS2R
|
|
|
|
/* Equatorial precession: minus the first of the 323 Euler angles. */
|
|
|
|
*zetaa = (2.650545 +
|
|
(2306.083227+
|
|
(0.2988499+
|
|
(0.01801828+
|
|
(-0.000005971+
|
|
(-0.0000003173)*
|
|
t)*t)*t)*t)*t) * DAS2R
|
|
|
|
/* Equatorial precession: second of the 323 Euler angles. */
|
|
|
|
*thetaa = (2004.191903 +
|
|
(-0.4294934+
|
|
(-0.04182264+
|
|
(-0.000007089+
|
|
(-0.0000001274)*
|
|
t)*t)*t)*t) * t * DAS2R
|
|
|
|
/* General precession. */
|
|
|
|
*pa = (5028.796195 +
|
|
(1.1054348+
|
|
(0.00007964+
|
|
(-0.000023857+
|
|
(-0.0000000383)*
|
|
t)*t)*t)*t) * t * DAS2R
|
|
|
|
/* Fukushima-Williams angles for precession. */
|
|
|
|
*gam = (10.556403 +
|
|
(0.4932044+
|
|
(-0.00031238+
|
|
(-0.000002788+
|
|
(0.0000000260)*
|
|
t)*t)*t)*t) * t * DAS2R
|
|
|
|
*phi = *eps0 + (-46.811015+
|
|
(0.0511269+
|
|
(0.00053289+
|
|
(-0.000000440+
|
|
(-0.0000000176)*
|
|
t)*t)*t)*t)*t*DAS2R
|
|
|
|
*psi = (5038.481507 +
|
|
(1.5584176+
|
|
(-0.00018522+
|
|
(-0.000026452+
|
|
(-0.0000000148)*
|
|
t)*t)*t)*t) * t * DAS2R
|
|
}
|
|
|
|
/*
|
|
Pom00 Polar-motion matrix, IAU 2000
|
|
|
|
Form the matrix of polar motion for a given date, IAU 2000.
|
|
|
|
Given:
|
|
xp,yp float64 coordinates of the pole (radians, Note 1)
|
|
sp float64 the TIO locator s' (radians, Note 2)
|
|
|
|
Returned:
|
|
rpom [3][3]float64 polar-motion matrix (Note 3)
|
|
|
|
Notes:
|
|
|
|
1) The arguments xp and yp are the coordinates (in radians) of the
|
|
Celestial Intermediate Pole with respect to the International
|
|
Terrestrial Reference System (see IERS Conventions 2003),
|
|
measured along the meridians 0 and 90 deg west respectively.
|
|
|
|
2) The argument sp is the TIO locator s', in radians, which
|
|
positions the Terrestrial Intermediate Origin on the equator. It
|
|
is obtained from polar motion observations by numerical
|
|
integration, and so is in essence unpredictable. However, it is
|
|
dominated by a secular drift of about 47 microarcseconds per
|
|
century, and so can be taken into account by using s' = -47*t,
|
|
where t is centuries since J2000.0. The function iauSp00
|
|
implements this approximation.
|
|
|
|
3) The matrix operates in the sense V(TRS) = rpom * V(CIP), meaning
|
|
that it is the final rotation when computing the pointing
|
|
direction to a celestial source.
|
|
|
|
Called:
|
|
Ir initialize r-matrix to identity
|
|
Rz rotate around Z-axis
|
|
Ry rotate around Y-axis
|
|
Rx rotate around X-axis
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func Pom00(xp, yp, sp float64, rpom *[3][3]float64) {
|
|
/* Construct the matrix. */
|
|
Ir(rpom)
|
|
Rz(sp, rpom)
|
|
Ry(-xp, rpom)
|
|
Rx(-yp, rpom)
|
|
}
|
|
|
|
/*
|
|
Pr00 Adjustments to IAU 1976 precession, IAU 2000
|
|
|
|
Precession-rate part of the IAU 2000 precession-nutation models
|
|
(part of MHB2000).
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
dpsipr,depspr float64 precession corrections (Notes 2,3)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The precession adjustments are expressed as "nutation
|
|
components", corrections in longitude and obliquity with respect
|
|
to the J2000.0 equinox and ecliptic.
|
|
|
|
3) Although the precession adjustments are stated to be with respect
|
|
to Lieske et al. (1977), the MHB2000 model does not specify which
|
|
set of Euler angles are to be used and how the adjustments are to
|
|
be applied. The most literal and straightforward procedure is to
|
|
adopt the 4-rotation epsilon_0, psi_A, omega_A, xi_A option, and
|
|
to add dpsipr to psi_A and depspr to both omega_A and eps_A.
|
|
|
|
4) This is an implementation of one aspect of the IAU 2000A nutation
|
|
model, formally adopted by the IAU General Assembly in 2000,
|
|
namely MHB2000 (Mathews et al. 2002).
|
|
|
|
References:
|
|
|
|
Lieske, J.H., Lederle, T., Fricke, W. & Morando, B., "Expressions
|
|
for the precession quantities based upon the IAU (1976) System of
|
|
Astronomical Constants", Astron.Astrophys., 58, 1-16 (1977)
|
|
|
|
Mathews, P.M., Herring, T.A., Buffet, B.A., "Modeling of nutation
|
|
and precession New nutation series for nonrigid Earth and
|
|
insights into the Earth's interior", J.Geophys.Res., 107, B4,
|
|
2002. The MHB2000 code itself was obtained on 9th September 2002
|
|
from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A.
|
|
|
|
Wallace, P.T., "Software for Implementing the IAU 2000
|
|
Resolutions", in IERS Workshop 5.1 (2002).
|
|
*/
|
|
func Pr00(date1, date2 float64, dpsipr, depspr *float64) {
|
|
var t float64
|
|
|
|
/* Precession and obliquity corrections (radians per century) */
|
|
const PRECOR = -0.29965 * DAS2R
|
|
const OBLCOR = -0.02524 * DAS2R
|
|
|
|
/* Interval between fundamental epoch J2000.0 and given date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* Precession rate contributions with respect to IAU 1976/80. */
|
|
*dpsipr = PRECOR * t
|
|
*depspr = OBLCOR * t
|
|
}
|
|
|
|
/*
|
|
Prec76 Precession, IAU 1976
|
|
|
|
IAU 1976 precession model.
|
|
|
|
This function forms the three Euler angles which implement general
|
|
precession between two dates, using the IAU 1976 model (as for the
|
|
FK5 catalog).
|
|
|
|
Given:
|
|
date01,date02 float64 TDB starting date (Note 1)
|
|
date11,date12 float64 TDB ending date (Note 1)
|
|
|
|
Returned:
|
|
zeta float64 1st rotation: radians cw around z
|
|
z float64 3rd rotation: radians cw around z
|
|
theta float64 2nd rotation: radians ccw around y
|
|
|
|
Notes:
|
|
|
|
1) The dates date01+date02 and date11+date12 are Julian Dates,
|
|
apportioned in any convenient way between the arguments daten1
|
|
and daten2. For example, JD(TDB)=2450123.7 could be expressed in
|
|
any of these ways, among others:
|
|
|
|
daten1 daten2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in cases
|
|
where the loss of several decimal digits of resolution is
|
|
acceptable. The J2000 method is best matched to the way the
|
|
argument is handled internally and will deliver the optimum
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
The two dates may be expressed using different methods, but at
|
|
the risk of losing some resolution.
|
|
|
|
2) The accumulated precession angles zeta, z, theta are expressed
|
|
through canonical polynomials which are valid only for a limited
|
|
time span. In addition, the IAU 1976 precession rate is known to
|
|
be imperfect. The absolute accuracy of the present formulation
|
|
is better than 0.1 arcsec from 1960AD to 2040AD, better than
|
|
1 arcsec from 1640AD to 2360AD, and remains below 3 arcsec for
|
|
the whole of the period 500BC to 3000AD. The errors exceed
|
|
10 arcsec outside the range 1200BC to 3900AD, exceed 100 arcsec
|
|
outside 4200BC to 5600AD and exceed 1000 arcsec outside 6800BC to
|
|
8200AD.
|
|
|
|
3) The three angles are returned in the conventional order, which
|
|
is not the same as the order of the corresponding Euler
|
|
rotations. The precession matrix is
|
|
R_3(-z) x R_2(+theta) x R_3(-zeta).
|
|
|
|
Reference:
|
|
|
|
Lieske, J.H., 1979, Astron.Astrophys. 73, 282, equations
|
|
(6) & (7), p283.
|
|
*/
|
|
func Prec76(date01, date02 float64, date11, date12 float64, zeta, z, theta *float64) {
|
|
var t0, t, tas2r, w float64
|
|
|
|
/* Interval between fundamental epoch J2000.0 and start date (JC). */
|
|
t0 = ((date01 - DJ00) + date02) / DJC
|
|
|
|
/* Interval over which precession required (JC). */
|
|
t = ((date11 - date01) + (date12 - date02)) / DJC
|
|
|
|
/* Euler angles. */
|
|
tas2r = t * DAS2R
|
|
w = 2306.2181 + (1.39656-0.000139*t0)*t0
|
|
|
|
*zeta = (w + ((0.30188-0.000344*t0)+0.017998*t)*t) * tas2r
|
|
|
|
*z = (w + ((1.09468+0.000066*t0)+0.018203*t)*t) * tas2r
|
|
|
|
*theta = ((2004.3109 + (-0.85330-0.000217*t0)*t0) + ((-0.42665-0.000217*t0)-0.041833*t)*t) * tas2r
|
|
}
|
|
|
|
/*
|
|
S00 The CIO locator s, given X,Y, IAU 2000
|
|
|
|
The CIO locator s, positioning the Celestial Intermediate Origin on
|
|
the equator of the Celestial Intermediate Pole, given the CIP's X,Y
|
|
coordinates. Compatible with IAU 2000A precession-nutation.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
x,y float64 CIP coordinates (Note 3)
|
|
|
|
Returned (function value):
|
|
float64 the CIO locator s in radians (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The CIO locator s is the difference between the right ascensions
|
|
of the same point in two systems: the two systems are the GCRS
|
|
and the CIP,CIO, and the point is the ascending node of the
|
|
CIP equator. The quantity s remains below 0.1 arcsecond
|
|
throughout 1900-2100.
|
|
|
|
3) The series used to compute s is in fact for s+XY/2, where X and Y
|
|
are the x and y components of the CIP unit vector; this series
|
|
is more compact than a direct series for s would be. This
|
|
function requires X,Y to be supplied by the caller, who is
|
|
responsible for providing values that are consistent with the
|
|
supplied date.
|
|
|
|
4) The model is consistent with the IAU 2000A precession-nutation.
|
|
|
|
Called:
|
|
Fal03 mean anomaly of the Moon
|
|
Falp03 mean anomaly of the Sun
|
|
Faf03 mean argument of the latitude of the Moon
|
|
Fad03 mean elongation of the Moon from the Sun
|
|
Faom03 mean longitude of the Moon's ascending node
|
|
Fave03 mean longitude of Venus
|
|
Fae03 mean longitude of Earth
|
|
Fapa03 general accumulated precession in longitude
|
|
|
|
References:
|
|
|
|
Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func S00(date1, date2 float64, x, y float64) float64 {
|
|
/* Time since J2000.0, in Julian centuries */
|
|
var t float64
|
|
|
|
/* Miscellaneous */
|
|
var i, j int
|
|
var a, w0, w1, w2, w3, w4, w5 float64
|
|
|
|
/* Fundamental arguments */
|
|
var fa [8]float64
|
|
|
|
/* Returned value */
|
|
var s float64
|
|
|
|
/* --------------------- */
|
|
/* The series for s+XY/2 */
|
|
/* --------------------- */
|
|
|
|
type TERM struct {
|
|
nfa [8]int /* coefficients of l,l',F,D,Om,LVe,LE,pA */
|
|
s, c float64 /* sine and cosine coefficients */
|
|
}
|
|
|
|
/* Polynomial coefficients */
|
|
sp := []float64{
|
|
|
|
/* 1-6 */
|
|
94.00e-6,
|
|
3808.35e-6,
|
|
-119.94e-6,
|
|
-72574.09e-6,
|
|
27.70e-6,
|
|
15.61e-6,
|
|
}
|
|
|
|
/* Terms of order t^0 */
|
|
s0 := []TERM{
|
|
|
|
/* 1-10 */
|
|
{[8]int{0, 0, 0, 0, 1, 0, 0, 0}, -2640.73e-6, 0.39e-6},
|
|
{[8]int{0, 0, 0, 0, 2, 0, 0, 0}, -63.53e-6, 0.02e-6},
|
|
{[8]int{0, 0, 2, -2, 3, 0, 0, 0}, -11.75e-6, -0.01e-6},
|
|
{[8]int{0, 0, 2, -2, 1, 0, 0, 0}, -11.21e-6, -0.01e-6},
|
|
{[8]int{0, 0, 2, -2, 2, 0, 0, 0}, 4.57e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, 0, 3, 0, 0, 0}, -2.02e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, 0, 1, 0, 0, 0}, -1.98e-6, 0.00e-6},
|
|
{[8]int{0, 0, 0, 0, 3, 0, 0, 0}, 1.72e-6, 0.00e-6},
|
|
{[8]int{0, 1, 0, 0, 1, 0, 0, 0}, 1.41e-6, 0.01e-6},
|
|
{[8]int{0, 1, 0, 0, -1, 0, 0, 0}, 1.26e-6, 0.01e-6},
|
|
|
|
/* 11-20 */
|
|
{[8]int{1, 0, 0, 0, -1, 0, 0, 0}, 0.63e-6, 0.00e-6},
|
|
{[8]int{1, 0, 0, 0, 1, 0, 0, 0}, 0.63e-6, 0.00e-6},
|
|
{[8]int{0, 1, 2, -2, 3, 0, 0, 0}, -0.46e-6, 0.00e-6},
|
|
{[8]int{0, 1, 2, -2, 1, 0, 0, 0}, -0.45e-6, 0.00e-6},
|
|
{[8]int{0, 0, 4, -4, 4, 0, 0, 0}, -0.36e-6, 0.00e-6},
|
|
{[8]int{0, 0, 1, -1, 1, -8, 12, 0}, 0.24e-6, 0.12e-6},
|
|
{[8]int{0, 0, 2, 0, 0, 0, 0, 0}, -0.32e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, 0, 2, 0, 0, 0}, -0.28e-6, 0.00e-6},
|
|
{[8]int{1, 0, 2, 0, 3, 0, 0, 0}, -0.27e-6, 0.00e-6},
|
|
{[8]int{1, 0, 2, 0, 1, 0, 0, 0}, -0.26e-6, 0.00e-6},
|
|
|
|
/* 21-30 */
|
|
{[8]int{0, 0, 2, -2, 0, 0, 0, 0}, 0.21e-6, 0.00e-6},
|
|
{[8]int{0, 1, -2, 2, -3, 0, 0, 0}, -0.19e-6, 0.00e-6},
|
|
{[8]int{0, 1, -2, 2, -1, 0, 0, 0}, -0.18e-6, 0.00e-6},
|
|
{[8]int{0, 0, 0, 0, 0, 8, -13, -1}, 0.10e-6, -0.05e-6},
|
|
{[8]int{0, 0, 0, 2, 0, 0, 0, 0}, -0.15e-6, 0.00e-6},
|
|
{[8]int{2, 0, -2, 0, -1, 0, 0, 0}, 0.14e-6, 0.00e-6},
|
|
{[8]int{0, 1, 2, -2, 2, 0, 0, 0}, 0.14e-6, 0.00e-6},
|
|
{[8]int{1, 0, 0, -2, 1, 0, 0, 0}, -0.14e-6, 0.00e-6},
|
|
{[8]int{1, 0, 0, -2, -1, 0, 0, 0}, -0.14e-6, 0.00e-6},
|
|
{[8]int{0, 0, 4, -2, 4, 0, 0, 0}, -0.13e-6, 0.00e-6},
|
|
|
|
/* 31-33 */
|
|
{[8]int{0, 0, 2, -2, 4, 0, 0, 0}, 0.11e-6, 0.00e-6},
|
|
{[8]int{1, 0, -2, 0, -3, 0, 0, 0}, -0.11e-6, 0.00e-6},
|
|
{[8]int{1, 0, -2, 0, -1, 0, 0, 0}, -0.11e-6, 0.00e-6},
|
|
}
|
|
|
|
/* Terms of order t^1 */
|
|
s1 := []TERM{
|
|
|
|
/* 1-3 */
|
|
{[8]int{0, 0, 0, 0, 2, 0, 0, 0}, -0.07e-6, 3.57e-6},
|
|
{[8]int{0, 0, 0, 0, 1, 0, 0, 0}, 1.71e-6, -0.03e-6},
|
|
{[8]int{0, 0, 2, -2, 3, 0, 0, 0}, 0.00e-6, 0.48e-6},
|
|
}
|
|
|
|
/* Terms of order t^2 */
|
|
s2 := []TERM{
|
|
|
|
/* 1-10 */
|
|
{[8]int{0, 0, 0, 0, 1, 0, 0, 0}, 743.53e-6, -0.17e-6},
|
|
{[8]int{0, 0, 2, -2, 2, 0, 0, 0}, 56.91e-6, 0.06e-6},
|
|
{[8]int{0, 0, 2, 0, 2, 0, 0, 0}, 9.84e-6, -0.01e-6},
|
|
{[8]int{0, 0, 0, 0, 2, 0, 0, 0}, -8.85e-6, 0.01e-6},
|
|
{[8]int{0, 1, 0, 0, 0, 0, 0, 0}, -6.38e-6, -0.05e-6},
|
|
{[8]int{1, 0, 0, 0, 0, 0, 0, 0}, -3.07e-6, 0.00e-6},
|
|
{[8]int{0, 1, 2, -2, 2, 0, 0, 0}, 2.23e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, 0, 1, 0, 0, 0}, 1.67e-6, 0.00e-6},
|
|
{[8]int{1, 0, 2, 0, 2, 0, 0, 0}, 1.30e-6, 0.00e-6},
|
|
{[8]int{0, 1, -2, 2, -2, 0, 0, 0}, 0.93e-6, 0.00e-6},
|
|
|
|
/* 11-20 */
|
|
{[8]int{1, 0, 0, -2, 0, 0, 0, 0}, 0.68e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, -2, 1, 0, 0, 0}, -0.55e-6, 0.00e-6},
|
|
{[8]int{1, 0, -2, 0, -2, 0, 0, 0}, 0.53e-6, 0.00e-6},
|
|
{[8]int{0, 0, 0, 2, 0, 0, 0, 0}, -0.27e-6, 0.00e-6},
|
|
{[8]int{1, 0, 0, 0, 1, 0, 0, 0}, -0.27e-6, 0.00e-6},
|
|
{[8]int{1, 0, -2, -2, -2, 0, 0, 0}, -0.26e-6, 0.00e-6},
|
|
{[8]int{1, 0, 0, 0, -1, 0, 0, 0}, -0.25e-6, 0.00e-6},
|
|
{[8]int{1, 0, 2, 0, 1, 0, 0, 0}, 0.22e-6, 0.00e-6},
|
|
{[8]int{2, 0, 0, -2, 0, 0, 0, 0}, -0.21e-6, 0.00e-6},
|
|
{[8]int{2, 0, -2, 0, -1, 0, 0, 0}, 0.20e-6, 0.00e-6},
|
|
|
|
/* 21-25 */
|
|
{[8]int{0, 0, 2, 2, 2, 0, 0, 0}, 0.17e-6, 0.00e-6},
|
|
{[8]int{2, 0, 2, 0, 2, 0, 0, 0}, 0.13e-6, 0.00e-6},
|
|
{[8]int{2, 0, 0, 0, 0, 0, 0, 0}, -0.13e-6, 0.00e-6},
|
|
{[8]int{1, 0, 2, -2, 2, 0, 0, 0}, -0.12e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, 0, 0, 0, 0, 0}, -0.11e-6, 0.00e-6},
|
|
}
|
|
|
|
/* Terms of order t^3 */
|
|
s3 := []TERM{
|
|
|
|
/* 1-4 */
|
|
{[8]int{0, 0, 0, 0, 1, 0, 0, 0}, 0.30e-6, -23.51e-6},
|
|
{[8]int{0, 0, 2, -2, 2, 0, 0, 0}, -0.03e-6, -1.39e-6},
|
|
{[8]int{0, 0, 2, 0, 2, 0, 0, 0}, -0.01e-6, -0.24e-6},
|
|
{[8]int{0, 0, 0, 0, 2, 0, 0, 0}, 0.00e-6, 0.22e-6},
|
|
}
|
|
|
|
/* Terms of order t^4 */
|
|
s4 := []TERM{
|
|
|
|
/* 1-1 */
|
|
{[8]int{0, 0, 0, 0, 1, 0, 0, 0}, -0.26e-6, -0.01e-6},
|
|
}
|
|
|
|
/* Number of terms in the series */
|
|
NS0 := len(s0)
|
|
NS1 := len(s1)
|
|
NS2 := len(s2)
|
|
NS3 := len(s3)
|
|
NS4 := len(s4)
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
|
|
/* Interval between fundamental epoch J2000.0 and current date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* Fundamental Arguments (from IERS Conventions 2003) */
|
|
|
|
/* Mean anomaly of the Moon. */
|
|
fa[0] = Fal03(t)
|
|
|
|
/* Mean anomaly of the Sun. */
|
|
fa[1] = Falp03(t)
|
|
|
|
/* Mean longitude of the Moon minus that of the ascending node. */
|
|
fa[2] = Faf03(t)
|
|
|
|
/* Mean elongation of the Moon from the Sun. */
|
|
fa[3] = Fad03(t)
|
|
|
|
/* Mean longitude of the ascending node of the Moon. */
|
|
fa[4] = Faom03(t)
|
|
|
|
/* Mean longitude of Venus. */
|
|
fa[5] = Fave03(t)
|
|
|
|
/* Mean longitude of Earth. */
|
|
fa[6] = Fae03(t)
|
|
|
|
/* General precession in longitude. */
|
|
fa[7] = Fapa03(t)
|
|
|
|
/* Evaluate s. */
|
|
w0 = sp[0]
|
|
w1 = sp[1]
|
|
w2 = sp[2]
|
|
w3 = sp[3]
|
|
w4 = sp[4]
|
|
w5 = sp[5]
|
|
|
|
for i = NS0 - 1; i >= 0; i-- {
|
|
a = 0.0
|
|
for j = 0; j < 8; j++ {
|
|
a += float64(s0[i].nfa[j]) * fa[j]
|
|
}
|
|
w0 += s0[i].s*sin(a) + s0[i].c*cos(a)
|
|
}
|
|
|
|
for i = NS1 - 1; i >= 0; i-- {
|
|
a = 0.0
|
|
for j = 0; j < 8; j++ {
|
|
a += float64(s1[i].nfa[j]) * fa[j]
|
|
}
|
|
w1 += s1[i].s*sin(a) + s1[i].c*cos(a)
|
|
}
|
|
|
|
for i = NS2 - 1; i >= 0; i-- {
|
|
a = 0.0
|
|
for j = 0; j < 8; j++ {
|
|
a += float64(s2[i].nfa[j]) * fa[j]
|
|
}
|
|
w2 += s2[i].s*sin(a) + s2[i].c*cos(a)
|
|
}
|
|
|
|
for i = NS3 - 1; i >= 0; i-- {
|
|
a = 0.0
|
|
for j = 0; j < 8; j++ {
|
|
a += float64(s3[i].nfa[j]) * fa[j]
|
|
}
|
|
w3 += s3[i].s*sin(a) + s3[i].c*cos(a)
|
|
}
|
|
|
|
for i = NS4 - 1; i >= 0; i-- {
|
|
a = 0.0
|
|
for j = 0; j < 8; j++ {
|
|
a += float64(s4[i].nfa[j]) * fa[j]
|
|
}
|
|
w4 += s4[i].s*sin(a) + s4[i].c*cos(a)
|
|
}
|
|
|
|
s = (w0+
|
|
(w1+
|
|
(w2+
|
|
(w3+
|
|
(w4+
|
|
w5*t)*t)*t)*t)*t)*DAS2R - x*y/2.0
|
|
|
|
return s
|
|
}
|
|
|
|
/*
|
|
S00a The CIO locator s, IAU 2000A
|
|
|
|
The CIO locator s, positioning the Celestial Intermediate Origin on
|
|
the equator of the Celestial Intermediate Pole, using the IAU 2000A
|
|
precession-nutation model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned (function value):
|
|
float64 the CIO locator s in radians (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The CIO locator s is the difference between the right ascensions
|
|
of the same point in two systems. The two systems are the GCRS
|
|
and the CIP,CIO, and the point is the ascending node of the
|
|
CIP equator. The CIO locator s remains a small fraction of
|
|
1 arcsecond throughout 1900-2100.
|
|
|
|
3) The series used to compute s is in fact for s+XY/2, where X and Y
|
|
are the x and y components of the CIP unit vector; this series
|
|
is more compact than a direct series for s would be. The present
|
|
function uses the full IAU 2000A nutation model when predicting
|
|
the CIP position. Faster results, with no significant loss of
|
|
accuracy, can be obtained via the function iauS00b, which uses
|
|
instead the IAU 2000B truncated model.
|
|
|
|
Called:
|
|
Pnm00a classical NPB matrix, IAU 2000A
|
|
Bnp2xy extract CIP X,Y from the BPN matrix
|
|
S00 the CIO locator s, given X,Y, IAU 2000A
|
|
|
|
References:
|
|
|
|
Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func S00a(date1, date2 float64) float64 {
|
|
var rbpn [3][3]float64
|
|
var x, y, s float64
|
|
|
|
/* Bias-precession-nutation-matrix, IAU 2000A. */
|
|
Pnm00a(date1, date2, &rbpn)
|
|
|
|
/* Extract the CIP coordinates. */
|
|
Bpn2xy(rbpn, &x, &y)
|
|
|
|
/* Compute the CIO locator s, given the CIP coordinates. */
|
|
s = S00(date1, date2, x, y)
|
|
|
|
return s
|
|
}
|
|
|
|
/*
|
|
S00b The CIO locator s, IAU 2000B
|
|
|
|
The CIO locator s, positioning the Celestial Intermediate Origin on
|
|
the equator of the Celestial Intermediate Pole, using the IAU 2000B
|
|
precession-nutation model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned (function value):
|
|
float64 the CIO locator s in radians (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The CIO locator s is the difference between the right ascensions
|
|
of the same point in two systems. The two systems are the GCRS
|
|
and the CIP,CIO, and the point is the ascending node of the
|
|
CIP equator. The CIO locator s remains a small fraction of
|
|
1 arcsecond throughout 1900-2100.
|
|
|
|
3) The series used to compute s is in fact for s+XY/2, where X and Y
|
|
are the x and y components of the CIP unit vector; this series
|
|
is more compact than a direct series for s would be. The present
|
|
function uses the IAU 2000B truncated nutation model when
|
|
predicting the CIP position. The function iauS00a uses instead
|
|
the full IAU 2000A model, but with no significant increase in
|
|
accuracy and at some cost in speed.
|
|
|
|
Called:
|
|
Pnm00b classical NPB matrix, IAU 2000B
|
|
Bnp2xy extract CIP X,Y from the BPN matrix
|
|
S00 the CIO locator s, given X,Y, IAU 2000A
|
|
|
|
References:
|
|
|
|
Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func S00b(date1, date2 float64) float64 {
|
|
var rbpn [3][3]float64
|
|
var x, y, s float64
|
|
|
|
/* Bias-precession-nutation-matrix, IAU 2000B. */
|
|
Pnm00b(date1, date2, &rbpn)
|
|
|
|
/* Extract the CIP coordinates. */
|
|
Bpn2xy(rbpn, &x, &y)
|
|
|
|
/* Compute the CIO locator s, given the CIP coordinates. */
|
|
s = S00(date1, date2, x, y)
|
|
|
|
return s
|
|
}
|
|
|
|
/*
|
|
S06 The CIO locator s, given X,Y, IAU 2006
|
|
|
|
The CIO locator s, positioning the Celestial Intermediate Origin on
|
|
the equator of the Celestial Intermediate Pole, given the CIP's X,Y
|
|
coordinates. Compatible with IAU 2006/2000A precession-nutation.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
x,y float64 CIP coordinates (Note 3)
|
|
|
|
Returned (function value):
|
|
float64 the CIO locator s in radians (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The CIO locator s is the difference between the right ascensions
|
|
of the same point in two systems: the two systems are the GCRS
|
|
and the CIP,CIO, and the point is the ascending node of the
|
|
CIP equator. The quantity s remains below 0.1 arcsecond
|
|
throughout 1900-2100.
|
|
|
|
3) The series used to compute s is in fact for s+XY/2, where X and Y
|
|
are the x and y components of the CIP unit vector; this series
|
|
is more compact than a direct series for s would be. This
|
|
function requires X,Y to be supplied by the caller, who is
|
|
responsible for providing values that are consistent with the
|
|
supplied date.
|
|
|
|
4) The model is consistent with the "P03" precession (Capitaine et
|
|
al. 2003), adopted by IAU 2006 Resolution 1, 2006, and the
|
|
2000A nutation (with P03 adjustments).
|
|
|
|
Called:
|
|
Fal03 mean anomaly of the Moon
|
|
Falp03 mean anomaly of the Sun
|
|
Faf03 mean argument of the latitude of the Moon
|
|
Fad03 mean elongation of the Moon from the Sun
|
|
Faom03 mean longitude of the Moon's ascending node
|
|
Fave03 mean longitude of Venus
|
|
Fae03 mean longitude of Earth
|
|
Fapa03 general accumulated precession in longitude
|
|
|
|
References:
|
|
|
|
Capitaine, N., Wallace, P.T. & Chapront, J., 2003, Astron.
|
|
Astrophys. 432, 355
|
|
|
|
McCarthy, D.D., Petit, G. (eds.) 2004, IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG
|
|
*/
|
|
func S06(date1, date2 float64, x, y float64) float64 {
|
|
/* Time since J2000.0, in Julian centuries */
|
|
var t float64
|
|
|
|
/* Miscellaneous */
|
|
var i, j int
|
|
var a, w0, w1, w2, w3, w4, w5 float64
|
|
|
|
/* Fundamental arguments */
|
|
var fa [8]float64
|
|
|
|
/* Returned value */
|
|
var s float64
|
|
|
|
/* --------------------- */
|
|
/* The series for s+XY/2 */
|
|
/* --------------------- */
|
|
|
|
type TERM struct {
|
|
nfa [8]int /* coefficients of l,l',F,D,Om,LVe,LE,pA */
|
|
s, c float64 /* sine and cosine coefficients */
|
|
}
|
|
|
|
/* Polynomial coefficients */
|
|
sp := []float64{
|
|
|
|
/* 1-6 */
|
|
94.00e-6,
|
|
3808.65e-6,
|
|
-122.68e-6,
|
|
-72574.11e-6,
|
|
27.98e-6,
|
|
15.62e-6,
|
|
}
|
|
|
|
/* Terms of order t^0 */
|
|
s0 := []TERM{
|
|
|
|
/* 1-10 */
|
|
{[8]int{0, 0, 0, 0, 1, 0, 0, 0}, -2640.73e-6, 0.39e-6},
|
|
{[8]int{0, 0, 0, 0, 2, 0, 0, 0}, -63.53e-6, 0.02e-6},
|
|
{[8]int{0, 0, 2, -2, 3, 0, 0, 0}, -11.75e-6, -0.01e-6},
|
|
{[8]int{0, 0, 2, -2, 1, 0, 0, 0}, -11.21e-6, -0.01e-6},
|
|
{[8]int{0, 0, 2, -2, 2, 0, 0, 0}, 4.57e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, 0, 3, 0, 0, 0}, -2.02e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, 0, 1, 0, 0, 0}, -1.98e-6, 0.00e-6},
|
|
{[8]int{0, 0, 0, 0, 3, 0, 0, 0}, 1.72e-6, 0.00e-6},
|
|
{[8]int{0, 1, 0, 0, 1, 0, 0, 0}, 1.41e-6, 0.01e-6},
|
|
{[8]int{0, 1, 0, 0, -1, 0, 0, 0}, 1.26e-6, 0.01e-6},
|
|
|
|
/* 11-20 */
|
|
{[8]int{1, 0, 0, 0, -1, 0, 0, 0}, 0.63e-6, 0.00e-6},
|
|
{[8]int{1, 0, 0, 0, 1, 0, 0, 0}, 0.63e-6, 0.00e-6},
|
|
{[8]int{0, 1, 2, -2, 3, 0, 0, 0}, -0.46e-6, 0.00e-6},
|
|
{[8]int{0, 1, 2, -2, 1, 0, 0, 0}, -0.45e-6, 0.00e-6},
|
|
{[8]int{0, 0, 4, -4, 4, 0, 0, 0}, -0.36e-6, 0.00e-6},
|
|
{[8]int{0, 0, 1, -1, 1, -8, 12, 0}, 0.24e-6, 0.12e-6},
|
|
{[8]int{0, 0, 2, 0, 0, 0, 0, 0}, -0.32e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, 0, 2, 0, 0, 0}, -0.28e-6, 0.00e-6},
|
|
{[8]int{1, 0, 2, 0, 3, 0, 0, 0}, -0.27e-6, 0.00e-6},
|
|
{[8]int{1, 0, 2, 0, 1, 0, 0, 0}, -0.26e-6, 0.00e-6},
|
|
|
|
/* 21-30 */
|
|
{[8]int{0, 0, 2, -2, 0, 0, 0, 0}, 0.21e-6, 0.00e-6},
|
|
{[8]int{0, 1, -2, 2, -3, 0, 0, 0}, -0.19e-6, 0.00e-6},
|
|
{[8]int{0, 1, -2, 2, -1, 0, 0, 0}, -0.18e-6, 0.00e-6},
|
|
{[8]int{0, 0, 0, 0, 0, 8, -13, -1}, 0.10e-6, -0.05e-6},
|
|
{[8]int{0, 0, 0, 2, 0, 0, 0, 0}, -0.15e-6, 0.00e-6},
|
|
{[8]int{2, 0, -2, 0, -1, 0, 0, 0}, 0.14e-6, 0.00e-6},
|
|
{[8]int{0, 1, 2, -2, 2, 0, 0, 0}, 0.14e-6, 0.00e-6},
|
|
{[8]int{1, 0, 0, -2, 1, 0, 0, 0}, -0.14e-6, 0.00e-6},
|
|
{[8]int{1, 0, 0, -2, -1, 0, 0, 0}, -0.14e-6, 0.00e-6},
|
|
{[8]int{0, 0, 4, -2, 4, 0, 0, 0}, -0.13e-6, 0.00e-6},
|
|
|
|
/* 31-33 */
|
|
{[8]int{0, 0, 2, -2, 4, 0, 0, 0}, 0.11e-6, 0.00e-6},
|
|
{[8]int{1, 0, -2, 0, -3, 0, 0, 0}, -0.11e-6, 0.00e-6},
|
|
{[8]int{1, 0, -2, 0, -1, 0, 0, 0}, -0.11e-6, 0.00e-6},
|
|
}
|
|
|
|
/* Terms of order t^1 */
|
|
s1 := []TERM{
|
|
|
|
/* 1 - 3 */
|
|
{[8]int{0, 0, 0, 0, 2, 0, 0, 0}, -0.07e-6, 3.57e-6},
|
|
{[8]int{0, 0, 0, 0, 1, 0, 0, 0}, 1.73e-6, -0.03e-6},
|
|
{[8]int{0, 0, 2, -2, 3, 0, 0, 0}, 0.00e-6, 0.48e-6},
|
|
}
|
|
|
|
/* Terms of order t^2 */
|
|
s2 := []TERM{
|
|
|
|
/* 1-10 */
|
|
{[8]int{0, 0, 0, 0, 1, 0, 0, 0}, 743.52e-6, -0.17e-6},
|
|
{[8]int{0, 0, 2, -2, 2, 0, 0, 0}, 56.91e-6, 0.06e-6},
|
|
{[8]int{0, 0, 2, 0, 2, 0, 0, 0}, 9.84e-6, -0.01e-6},
|
|
{[8]int{0, 0, 0, 0, 2, 0, 0, 0}, -8.85e-6, 0.01e-6},
|
|
{[8]int{0, 1, 0, 0, 0, 0, 0, 0}, -6.38e-6, -0.05e-6},
|
|
{[8]int{1, 0, 0, 0, 0, 0, 0, 0}, -3.07e-6, 0.00e-6},
|
|
{[8]int{0, 1, 2, -2, 2, 0, 0, 0}, 2.23e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, 0, 1, 0, 0, 0}, 1.67e-6, 0.00e-6},
|
|
{[8]int{1, 0, 2, 0, 2, 0, 0, 0}, 1.30e-6, 0.00e-6},
|
|
{[8]int{0, 1, -2, 2, -2, 0, 0, 0}, 0.93e-6, 0.00e-6},
|
|
|
|
/* 11-20 */
|
|
{[8]int{1, 0, 0, -2, 0, 0, 0, 0}, 0.68e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, -2, 1, 0, 0, 0}, -0.55e-6, 0.00e-6},
|
|
{[8]int{1, 0, -2, 0, -2, 0, 0, 0}, 0.53e-6, 0.00e-6},
|
|
{[8]int{0, 0, 0, 2, 0, 0, 0, 0}, -0.27e-6, 0.00e-6},
|
|
{[8]int{1, 0, 0, 0, 1, 0, 0, 0}, -0.27e-6, 0.00e-6},
|
|
{[8]int{1, 0, -2, -2, -2, 0, 0, 0}, -0.26e-6, 0.00e-6},
|
|
{[8]int{1, 0, 0, 0, -1, 0, 0, 0}, -0.25e-6, 0.00e-6},
|
|
{[8]int{1, 0, 2, 0, 1, 0, 0, 0}, 0.22e-6, 0.00e-6},
|
|
{[8]int{2, 0, 0, -2, 0, 0, 0, 0}, -0.21e-6, 0.00e-6},
|
|
{[8]int{2, 0, -2, 0, -1, 0, 0, 0}, 0.20e-6, 0.00e-6},
|
|
|
|
/* 21-25 */
|
|
{[8]int{0, 0, 2, 2, 2, 0, 0, 0}, 0.17e-6, 0.00e-6},
|
|
{[8]int{2, 0, 2, 0, 2, 0, 0, 0}, 0.13e-6, 0.00e-6},
|
|
{[8]int{2, 0, 0, 0, 0, 0, 0, 0}, -0.13e-6, 0.00e-6},
|
|
{[8]int{1, 0, 2, -2, 2, 0, 0, 0}, -0.12e-6, 0.00e-6},
|
|
{[8]int{0, 0, 2, 0, 0, 0, 0, 0}, -0.11e-6, 0.00e-6},
|
|
}
|
|
|
|
/* Terms of order t^3 */
|
|
s3 := []TERM{
|
|
|
|
/* 1-4 */
|
|
{[8]int{0, 0, 0, 0, 1, 0, 0, 0}, 0.30e-6, -23.42e-6},
|
|
{[8]int{0, 0, 2, -2, 2, 0, 0, 0}, -0.03e-6, -1.46e-6},
|
|
{[8]int{0, 0, 2, 0, 2, 0, 0, 0}, -0.01e-6, -0.25e-6},
|
|
{[8]int{0, 0, 0, 0, 2, 0, 0, 0}, 0.00e-6, 0.23e-6},
|
|
}
|
|
|
|
/* Terms of order t^4 */
|
|
s4 := []TERM{
|
|
|
|
/* 1-1 */
|
|
{[8]int{0, 0, 0, 0, 1, 0, 0, 0}, -0.26e-6, -0.01e-6},
|
|
}
|
|
|
|
/* Number of terms in the series */
|
|
NS0 := len(s0)
|
|
NS1 := len(s1)
|
|
NS2 := len(s2)
|
|
NS3 := len(s3)
|
|
NS4 := len(s4)
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
|
|
/* Interval between fundamental epoch J2000.0 and current date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* Fundamental Arguments (from IERS Conventions 2003) */
|
|
|
|
/* Mean anomaly of the Moon. */
|
|
fa[0] = Fal03(t)
|
|
|
|
/* Mean anomaly of the Sun. */
|
|
fa[1] = Falp03(t)
|
|
|
|
/* Mean longitude of the Moon minus that of the ascending node. */
|
|
fa[2] = Faf03(t)
|
|
|
|
/* Mean elongation of the Moon from the Sun. */
|
|
fa[3] = Fad03(t)
|
|
|
|
/* Mean longitude of the ascending node of the Moon. */
|
|
fa[4] = Faom03(t)
|
|
|
|
/* Mean longitude of Venus. */
|
|
fa[5] = Fave03(t)
|
|
|
|
/* Mean longitude of Earth. */
|
|
fa[6] = Fae03(t)
|
|
|
|
/* General precession in longitude. */
|
|
fa[7] = Fapa03(t)
|
|
|
|
/* Evaluate s. */
|
|
w0 = sp[0]
|
|
w1 = sp[1]
|
|
w2 = sp[2]
|
|
w3 = sp[3]
|
|
w4 = sp[4]
|
|
w5 = sp[5]
|
|
|
|
for i = NS0 - 1; i >= 0; i-- {
|
|
a = 0.0
|
|
for j = 0; j < 8; j++ {
|
|
a += float64(s0[i].nfa[j]) * fa[j]
|
|
}
|
|
w0 += s0[i].s*sin(a) + s0[i].c*cos(a)
|
|
}
|
|
|
|
for i = NS1 - 1; i >= 0; i-- {
|
|
a = 0.0
|
|
for j = 0; j < 8; j++ {
|
|
a += float64(s1[i].nfa[j]) * fa[j]
|
|
}
|
|
w1 += s1[i].s*sin(a) + s1[i].c*cos(a)
|
|
}
|
|
|
|
for i = NS2 - 1; i >= 0; i-- {
|
|
a = 0.0
|
|
for j = 0; j < 8; j++ {
|
|
a += float64(s2[i].nfa[j]) * fa[j]
|
|
}
|
|
w2 += s2[i].s*sin(a) + s2[i].c*cos(a)
|
|
}
|
|
|
|
for i = NS3 - 1; i >= 0; i-- {
|
|
a = 0.0
|
|
for j = 0; j < 8; j++ {
|
|
a += float64(s3[i].nfa[j]) * fa[j]
|
|
}
|
|
w3 += s3[i].s*sin(a) + s3[i].c*cos(a)
|
|
}
|
|
|
|
for i = NS4 - 1; i >= 0; i-- {
|
|
a = 0.0
|
|
for j = 0; j < 8; j++ {
|
|
a += float64(s4[i].nfa[j]) * fa[j]
|
|
}
|
|
w4 += s4[i].s*sin(a) + s4[i].c*cos(a)
|
|
}
|
|
|
|
s = (w0+(w1+(w2+(w3+(w4+w5*t)*t)*t)*t)*t)*DAS2R - x*y/2.0
|
|
|
|
return s
|
|
}
|
|
|
|
/*
|
|
S06a The CIO locator s, IAU 2006/2000A
|
|
|
|
The CIO locator s, positioning the Celestial Intermediate Origin on
|
|
the equator of the Celestial Intermediate Pole, using the IAU 2006
|
|
precession and IAU 2000A nutation models.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned (function value):
|
|
float64 the CIO locator s in radians (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The CIO locator s is the difference between the right ascensions
|
|
of the same point in two systems. The two systems are the GCRS
|
|
and the CIP,CIO, and the point is the ascending node of the
|
|
CIP equator. The CIO locator s remains a small fraction of
|
|
1 arcsecond throughout 1900-2100.
|
|
|
|
3) The series used to compute s is in fact for s+XY/2, where X and Y
|
|
are the x and y components of the CIP unit vector; this series is
|
|
more compact than a direct series for s would be. The present
|
|
function uses the full IAU 2000A nutation model when predicting
|
|
the CIP position.
|
|
|
|
Called:
|
|
Pnm06a classical NPB matrix, IAU 2006/2000A
|
|
Bpn2xy extract CIP X,Y coordinates from NPB matrix
|
|
S06 the CIO locator s, given X,Y, IAU 2006
|
|
|
|
References:
|
|
|
|
Capitaine, N., Chapront, J., Lambert, S. and Wallace, P.,
|
|
"Expressions for the Celestial Intermediate Pole and Celestial
|
|
Ephemeris Origin consistent with the IAU 2000A precession-
|
|
nutation model", Astron.Astrophys. 400, 1145-1154 (2003)
|
|
|
|
n.b. The celestial ephemeris origin (CEO) was renamed "celestial
|
|
intermediate origin" (CIO) by IAU 2006 Resolution 2.
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG
|
|
|
|
Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
|
|
*/
|
|
func S06a(date1, date2 float64) float64 {
|
|
var rnpb [3][3]float64
|
|
var x, y, s float64
|
|
|
|
/* Bias-precession-nutation-matrix, IAU 20006/2000A. */
|
|
Pnm06a(date1, date2, &rnpb)
|
|
|
|
/* Extract the CIP coordinates. */
|
|
Bpn2xy(rnpb, &x, &y)
|
|
|
|
/* Compute the CIO locator s, given the CIP coordinates. */
|
|
s = S06(date1, date2, x, y)
|
|
|
|
return s
|
|
}
|
|
|
|
/*
|
|
Sp00 The TIO locator s', IERS 2003
|
|
|
|
The TIO locator s', positioning the Terrestrial Intermediate Origin
|
|
on the equator of the Celestial Intermediate Pole.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned (function value):
|
|
float64 the TIO locator s' in radians (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The TIO locator s' is obtained from polar motion observations by
|
|
numerical integration, and so is in essence unpredictable.
|
|
However, it is dominated by a secular drift of about
|
|
47 microarcseconds per century, which is the approximation
|
|
evaluated by the present function.
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func Sp00(date1, date2 float64) float64 {
|
|
var t, sp float64
|
|
|
|
/* Interval between fundamental epoch J2000.0 and current date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* Approximate s'. */
|
|
sp = -47e-6 * t * DAS2R
|
|
|
|
return sp
|
|
}
|
|
|
|
/*
|
|
Xy06 CIP, IAU 2006/2000A, from series
|
|
|
|
X,Y coordinates of celestial intermediate pole from series based
|
|
on IAU 2006 precession and IAU 2000A nutation.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
x,y float64 CIP X,Y coordinates (Note 2)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The X,Y coordinates are those of the unit vector towards the
|
|
celestial intermediate pole. They represent the combined effects
|
|
of frame bias, precession and nutation.
|
|
|
|
3) The fundamental arguments used are as adopted in IERS Conventions
|
|
(2003) and are from Simon et al. (1994) and Souchay et al.
|
|
(1999).
|
|
|
|
4) This is an alternative to the angles-based method, via the SOFA
|
|
function iauFw2xy and as used in iauXys06a for example. The two
|
|
methods agree at the 1 microarcsecond level (at present), a
|
|
negligible amount compared with the intrinsic accuracy of the
|
|
models. However, it would be unwise to mix the two methods
|
|
(angles-based and series-based) in a single application.
|
|
|
|
Called:
|
|
Fal03 mean anomaly of the Moon
|
|
Falp03 mean anomaly of the Sun
|
|
Faf03 mean argument of the latitude of the Moon
|
|
Fad03 mean elongation of the Moon from the Sun
|
|
Faom03 mean longitude of the Moon's ascending node
|
|
Fame03 mean longitude of Mercury
|
|
Fave03 mean longitude of Venus
|
|
Fae03 mean longitude of Earth
|
|
Fama03 mean longitude of Mars
|
|
Faju03 mean longitude of Jupiter
|
|
Fasa03 mean longitude of Saturn
|
|
Faur03 mean longitude of Uranus
|
|
Fane03 mean longitude of Neptune
|
|
Fapa03 general accumulated precession in longitude
|
|
|
|
References:
|
|
|
|
Capitaine, N., Wallace, P.T. & Chapront, J., 2003,
|
|
Astron.Astrophys., 412, 567
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG
|
|
|
|
Simon, J.L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
|
|
Francou, G. & Laskar, J., Astron.Astrophys., 1994, 282, 663
|
|
|
|
Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M., 1999,
|
|
Astron.Astrophys.Supp.Ser. 135, 111
|
|
|
|
Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
|
|
*/
|
|
func Xy06(date1, date2 float64, x, y *float64) {
|
|
/* Maximum power of T in the polynomials for X and Y */
|
|
const MAXPT = 5
|
|
|
|
/* Polynomial coefficients (arcsec, X then Y). */
|
|
xyp := [2][MAXPT + 1]float64{
|
|
{-0.016617,
|
|
2004.191898,
|
|
-0.4297829,
|
|
-0.19861834,
|
|
0.000007578,
|
|
0.0000059285,
|
|
},
|
|
{-0.006951,
|
|
-0.025896,
|
|
-22.4072747,
|
|
0.00190059,
|
|
0.001112526,
|
|
0.0000001358,
|
|
},
|
|
}
|
|
|
|
/* Fundamental-argument multipliers: luni-solar terms */
|
|
mfals := [][5]int{
|
|
|
|
/* 1-10 */
|
|
{0, 0, 0, 0, 1},
|
|
{0, 0, 2, -2, 2},
|
|
{0, 0, 2, 0, 2},
|
|
{0, 0, 0, 0, 2},
|
|
{0, 1, 0, 0, 0},
|
|
{0, 1, 2, -2, 2},
|
|
{1, 0, 0, 0, 0},
|
|
{0, 0, 2, 0, 1},
|
|
{1, 0, 2, 0, 2},
|
|
{0, 1, -2, 2, -2},
|
|
|
|
/* 11-20 */
|
|
{0, 0, 2, -2, 1},
|
|
{1, 0, -2, 0, -2},
|
|
{1, 0, 0, -2, 0},
|
|
{1, 0, 0, 0, 1},
|
|
{1, 0, 0, 0, -1},
|
|
{1, 0, -2, -2, -2},
|
|
{1, 0, 2, 0, 1},
|
|
{2, 0, -2, 0, -1},
|
|
{0, 0, 0, 2, 0},
|
|
{0, 0, 2, 2, 2},
|
|
|
|
/* 21-30 */
|
|
{2, 0, 0, -2, 0},
|
|
{0, 2, -2, 2, -2},
|
|
{2, 0, 2, 0, 2},
|
|
{1, 0, 2, -2, 2},
|
|
{1, 0, -2, 0, -1},
|
|
{2, 0, 0, 0, 0},
|
|
{0, 0, 2, 0, 0},
|
|
{0, 1, 0, 0, 1},
|
|
{1, 0, 0, -2, -1},
|
|
{0, 2, 2, -2, 2},
|
|
|
|
/* 31-40 */
|
|
{0, 0, 2, -2, 0},
|
|
{1, 0, 0, -2, 1},
|
|
{0, 1, 0, 0, -1},
|
|
{0, 2, 0, 0, 0},
|
|
{1, 0, -2, -2, -1},
|
|
{1, 0, 2, 2, 2},
|
|
{0, 1, 2, 0, 2},
|
|
{2, 0, -2, 0, 0},
|
|
{0, 0, 2, 2, 1},
|
|
{0, 1, -2, 0, -2},
|
|
|
|
/* 41-50 */
|
|
{0, 0, 0, 2, 1},
|
|
{1, 0, 2, -2, 1},
|
|
{2, 0, 0, -2, -1},
|
|
{2, 0, 2, -2, 2},
|
|
{2, 0, 2, 0, 1},
|
|
{0, 0, 0, 2, -1},
|
|
{0, 1, -2, 2, -1},
|
|
{1, 1, 0, -2, 0},
|
|
{2, 0, 0, -2, 1},
|
|
{1, 0, 0, 2, 0},
|
|
|
|
/* 51-60 */
|
|
{0, 1, 2, -2, 1},
|
|
{1, -1, 0, 0, 0},
|
|
{0, 1, -1, 1, -1},
|
|
{2, 0, -2, 0, -2},
|
|
{0, 1, 0, -2, 0},
|
|
{1, 0, 0, -1, 0},
|
|
{3, 0, 2, 0, 2},
|
|
{0, 0, 0, 1, 0},
|
|
{1, -1, 2, 0, 2},
|
|
{1, 1, -2, -2, -2},
|
|
|
|
/* 61-70 */
|
|
{1, 0, -2, 0, 0},
|
|
{2, 0, 0, 0, -1},
|
|
{0, 1, -2, -2, -2},
|
|
{1, 1, 2, 0, 2},
|
|
{2, 0, 0, 0, 1},
|
|
{1, 1, 0, 0, 0},
|
|
{1, 0, -2, 2, -1},
|
|
{1, 0, 2, 0, 0},
|
|
{1, -1, 0, -1, 0},
|
|
{1, 0, 0, 0, 2},
|
|
|
|
/* 71-80 */
|
|
{1, 0, -1, 0, -1},
|
|
{0, 0, 2, 1, 2},
|
|
{1, 0, -2, -4, -2},
|
|
{1, -1, 0, -1, -1},
|
|
{1, 0, 2, 2, 1},
|
|
{0, 2, -2, 2, -1},
|
|
{1, 0, 0, 0, -2},
|
|
{2, 0, -2, -2, -2},
|
|
{1, 1, 2, -2, 2},
|
|
{2, 0, -2, -4, -2},
|
|
|
|
/* 81-90 */
|
|
{1, 0, -4, 0, -2},
|
|
{2, 0, 2, -2, 1},
|
|
{1, 0, 0, -1, -1},
|
|
{2, 0, 2, 2, 2},
|
|
{3, 0, 0, 0, 0},
|
|
{1, 0, 0, 2, 1},
|
|
{0, 0, 2, -2, -1},
|
|
{3, 0, 2, -2, 2},
|
|
{0, 0, 4, -2, 2},
|
|
{1, 0, 0, -4, 0},
|
|
|
|
/* 91-100 */
|
|
{0, 1, 2, 0, 1},
|
|
{2, 0, 0, -4, 0},
|
|
{1, 1, 0, -2, -1},
|
|
{2, 0, -2, 0, 1},
|
|
{0, 0, 2, 0, -1},
|
|
{0, 1, -2, 0, -1},
|
|
{0, 1, 0, 0, 2},
|
|
{0, 0, 2, -1, 2},
|
|
{0, 0, 2, 4, 2},
|
|
{2, 1, 0, -2, 0},
|
|
|
|
/* 101-110 */
|
|
{1, 1, 0, -2, 1},
|
|
{1, -1, 0, -2, 0},
|
|
{1, -1, 0, -1, -2},
|
|
{1, -1, 0, 0, 1},
|
|
{0, 1, -2, 2, 0},
|
|
{0, 1, 0, 0, -2},
|
|
{1, -1, 2, 2, 2},
|
|
{1, 0, 0, 2, -1},
|
|
{1, -1, -2, -2, -2},
|
|
{3, 0, 2, 0, 1},
|
|
|
|
/* 111-120 */
|
|
{0, 1, 2, 2, 2},
|
|
{1, 0, 2, -2, 0},
|
|
{1, 1, -2, -2, -1},
|
|
{1, 0, 2, -4, 1},
|
|
{0, 1, -2, -2, -1},
|
|
{2, -1, 2, 0, 2},
|
|
{0, 0, 0, 2, 2},
|
|
{1, -1, 2, 0, 1},
|
|
{1, -1, -2, 0, -2},
|
|
{0, 1, 0, 2, 0},
|
|
|
|
/* 121-130 */
|
|
{0, 1, 2, -2, 0},
|
|
{0, 0, 0, 1, 1},
|
|
{1, 0, -2, -2, 0},
|
|
{0, 3, 2, -2, 2},
|
|
{2, 1, 2, 0, 2},
|
|
{1, 1, 0, 0, 1},
|
|
{2, 0, 0, 2, 0},
|
|
{1, 1, 2, 0, 1},
|
|
{1, 0, 0, -2, -2},
|
|
{1, 0, -2, 2, 0},
|
|
|
|
/* 131-140 */
|
|
{1, 0, -1, 0, -2},
|
|
{0, 1, 0, -2, 1},
|
|
{0, 1, 0, 1, 0},
|
|
{0, 0, 0, 1, -1},
|
|
{1, 0, -2, 2, -2},
|
|
{1, -1, 0, 0, -1},
|
|
{0, 0, 0, 4, 0},
|
|
{1, -1, 0, 2, 0},
|
|
{1, 0, 2, 1, 2},
|
|
{1, 0, 2, -1, 2},
|
|
|
|
/* 141-150 */
|
|
{0, 0, 2, 1, 1},
|
|
{1, 0, 0, -2, 2},
|
|
{1, 0, -2, 0, 1},
|
|
{1, 0, -2, -4, -1},
|
|
{0, 0, 2, 2, 0},
|
|
{1, 1, 2, -2, 1},
|
|
{1, 0, -2, 1, -1},
|
|
{0, 0, 1, 0, 1},
|
|
{2, 0, -2, -2, -1},
|
|
{4, 0, 2, 0, 2},
|
|
|
|
/* 151-160 */
|
|
{2, -1, 0, 0, 0},
|
|
{2, 1, 2, -2, 2},
|
|
{0, 1, 2, 1, 2},
|
|
{1, 0, 4, -2, 2},
|
|
{1, 1, 0, 0, -1},
|
|
{2, 0, 2, 0, 0},
|
|
{2, 0, -2, -4, -1},
|
|
{1, 0, -1, 0, 0},
|
|
{1, 0, 0, 1, 0},
|
|
{0, 1, 0, 2, 1},
|
|
|
|
/* 161-170 */
|
|
{1, 0, -4, 0, -1},
|
|
{1, 0, 0, -4, -1},
|
|
{2, 0, 2, 2, 1},
|
|
{2, 1, 0, 0, 0},
|
|
{0, 0, 2, -3, 2},
|
|
{1, 2, 0, -2, 0},
|
|
{0, 3, 0, 0, 0},
|
|
{0, 0, 4, 0, 2},
|
|
{0, 0, 2, -4, 1},
|
|
{2, 0, 0, -2, -2},
|
|
|
|
/* 171-180 */
|
|
{1, 1, -2, -4, -2},
|
|
{0, 1, 0, -2, -1},
|
|
{0, 0, 0, 4, 1},
|
|
{3, 0, 2, -2, 1},
|
|
{1, 0, 2, 4, 2},
|
|
{1, 1, -2, 0, -2},
|
|
{0, 0, 4, -2, 1},
|
|
{2, -2, 0, -2, 0},
|
|
{2, 1, 0, -2, -1},
|
|
{0, 2, 0, -2, 0},
|
|
|
|
/* 181-190 */
|
|
{1, 0, 0, -1, 1},
|
|
{1, 1, 2, 2, 2},
|
|
{3, 0, 0, 0, -1},
|
|
{2, 0, 0, -4, -1},
|
|
{3, 0, 2, 2, 2},
|
|
{0, 0, 2, 4, 1},
|
|
{0, 2, -2, -2, -2},
|
|
{1, -1, 0, -2, -1},
|
|
{0, 0, 2, -1, 1},
|
|
{2, 0, 0, 2, 1},
|
|
|
|
/* 191-200 */
|
|
{1, -1, -2, 2, -1},
|
|
{0, 0, 0, 2, -2},
|
|
{2, 0, 0, -4, 1},
|
|
{1, 0, 0, -4, 1},
|
|
{2, 0, 2, -4, 1},
|
|
{4, 0, 2, -2, 2},
|
|
{2, 1, -2, 0, -1},
|
|
{2, 1, -2, -4, -2},
|
|
{3, 0, 0, -4, 0},
|
|
{1, -1, 2, 2, 1},
|
|
|
|
/* 201-210 */
|
|
{1, -1, -2, 0, -1},
|
|
{0, 2, 0, 0, 1},
|
|
{1, 2, -2, -2, -2},
|
|
{1, 1, 0, -4, 0},
|
|
{2, 0, 0, -2, 2},
|
|
{0, 2, 2, -2, 1},
|
|
{1, 0, 2, 0, -1},
|
|
{2, 1, 0, -2, 1},
|
|
{2, -1, -2, 0, -1},
|
|
{1, -1, -2, -2, -1},
|
|
|
|
/* 211-220 */
|
|
{0, 1, -2, 1, -2},
|
|
{1, 0, -4, 2, -2},
|
|
{0, 1, 2, 2, 1},
|
|
{3, 0, 0, 0, 1},
|
|
{2, -1, 2, 2, 2},
|
|
{0, 1, -2, -4, -2},
|
|
{1, 0, -2, -3, -2},
|
|
{2, 0, 0, 0, 2},
|
|
{1, -1, 0, -2, -2},
|
|
{2, 0, -2, 2, -1},
|
|
|
|
/* 221-230 */
|
|
{0, 2, -2, 0, -2},
|
|
{3, 0, -2, 0, -1},
|
|
{2, -1, 2, 0, 1},
|
|
{1, 0, -2, -1, -2},
|
|
{0, 0, 2, 0, 3},
|
|
{2, 0, -4, 0, -2},
|
|
{2, 1, 0, -4, 0},
|
|
{1, 1, -2, 1, -1},
|
|
{0, 2, 2, 0, 2},
|
|
{1, -1, 2, -2, 2},
|
|
|
|
/* 231-240 */
|
|
{1, -1, 0, -2, 1},
|
|
{2, 1, 2, 0, 1},
|
|
{1, 0, 2, -4, 2},
|
|
{1, 1, -2, 0, -1},
|
|
{1, 1, 0, 2, 0},
|
|
{1, 0, 0, -3, 0},
|
|
{2, 0, 2, -1, 2},
|
|
{0, 2, 0, 0, -1},
|
|
{2, -1, 0, -2, 0},
|
|
{4, 0, 0, 0, 0},
|
|
|
|
/* 241-250 */
|
|
{2, 1, -2, -2, -2},
|
|
{0, 2, -2, 2, 0},
|
|
{1, 0, 2, 1, 1},
|
|
{1, 0, -1, 0, -3},
|
|
{3, -1, 2, 0, 2},
|
|
{2, 0, 2, -2, 0},
|
|
{1, -2, 0, 0, 0},
|
|
{2, 0, 0, 0, -2},
|
|
{1, 0, 0, 4, 0},
|
|
{0, 1, 0, 1, 1},
|
|
|
|
/* 251-260 */
|
|
{1, 0, 2, 2, 0},
|
|
{0, 1, 0, 2, -1},
|
|
{0, 1, 0, 1, -1},
|
|
{0, 0, 2, -2, 3},
|
|
{3, 1, 2, 0, 2},
|
|
{1, 1, 2, 1, 2},
|
|
{1, 1, -2, 2, -1},
|
|
{2, -1, 2, -2, 2},
|
|
{1, -2, 2, 0, 2},
|
|
{1, 0, 2, -4, 0},
|
|
|
|
/* 261-270 */
|
|
{0, 0, 1, 0, 0},
|
|
{1, 0, 2, -3, 1},
|
|
{1, -2, 0, -2, 0},
|
|
{2, 0, 0, 2, -1},
|
|
{1, 1, 2, -4, 1},
|
|
{4, 0, 2, 0, 1},
|
|
{0, 1, 2, 1, 1},
|
|
{1, 2, 2, -2, 2},
|
|
{2, 0, 2, 1, 2},
|
|
{2, 1, 2, -2, 1},
|
|
|
|
/* 271-280 */
|
|
{1, 0, 2, -1, 1},
|
|
{1, 0, 4, -2, 1},
|
|
{1, -1, 2, -2, 1},
|
|
{0, 1, 0, -4, 0},
|
|
{3, 0, -2, -2, -2},
|
|
{0, 0, 4, -4, 2},
|
|
{2, 0, -4, -2, -2},
|
|
{2, -2, 0, -2, -1},
|
|
{1, 0, 2, -2, -1},
|
|
{2, 0, -2, -6, -2},
|
|
|
|
/* 281-290 */
|
|
{1, 0, -2, 1, -2},
|
|
{1, 0, -2, 2, 1},
|
|
{1, -1, 0, 2, -1},
|
|
{1, 0, -2, 1, 0},
|
|
{2, -1, 0, -2, 1},
|
|
{1, -1, 0, 2, 1},
|
|
{2, 0, -2, -2, 0},
|
|
{1, 0, 2, -3, 2},
|
|
{0, 0, 0, 4, -1},
|
|
{2, -1, 0, 0, 1},
|
|
|
|
/* 291-300 */
|
|
{2, 0, 4, -2, 2},
|
|
{0, 0, 2, 3, 2},
|
|
{0, 1, 4, -2, 2},
|
|
{0, 1, -2, 2, 1},
|
|
{1, 1, 0, 2, 1},
|
|
{1, 0, 0, 4, 1},
|
|
{0, 0, 4, 0, 1},
|
|
{2, 0, 0, -3, 0},
|
|
{1, 0, 0, -1, -2},
|
|
{1, -2, -2, -2, -2},
|
|
|
|
/* 301-310 */
|
|
{3, 0, 0, 2, 0},
|
|
{2, 0, 2, -4, 2},
|
|
{1, 1, -2, -4, -1},
|
|
{1, 0, -2, -6, -2},
|
|
{2, -1, 0, 0, -1},
|
|
{2, -1, 0, 2, 0},
|
|
{0, 1, 2, -2, -1},
|
|
{1, 1, 0, 1, 0},
|
|
{1, 2, 0, -2, -1},
|
|
{1, 0, 0, 1, -1},
|
|
|
|
/* 311-320 */
|
|
{0, 0, 1, 0, 2},
|
|
{3, 1, 2, -2, 2},
|
|
{1, 0, -4, -2, -2},
|
|
{1, 0, 2, 4, 1},
|
|
{1, -2, 2, 2, 2},
|
|
{1, -1, -2, -4, -2},
|
|
{0, 0, 2, -4, 2},
|
|
{0, 0, 2, -3, 1},
|
|
{2, 1, -2, 0, 0},
|
|
{3, 0, -2, -2, -1},
|
|
|
|
/* 321-330 */
|
|
{2, 0, 2, 4, 2},
|
|
{0, 0, 0, 0, 3},
|
|
{2, -1, -2, -2, -2},
|
|
{2, 0, 0, -1, 0},
|
|
{3, 0, 2, -4, 2},
|
|
{2, 1, 2, 2, 2},
|
|
{0, 0, 3, 0, 3},
|
|
{1, 1, 2, 2, 1},
|
|
{2, 1, 0, 0, -1},
|
|
{1, 2, 0, -2, 1},
|
|
|
|
/* 331-340 */
|
|
{3, 0, 2, 2, 1},
|
|
{1, -1, -2, 2, -2},
|
|
{1, 1, 0, -1, 0},
|
|
{1, 2, 0, 0, 0},
|
|
{1, 0, 4, 0, 2},
|
|
{1, -1, 2, 4, 2},
|
|
{2, 1, 0, 0, 1},
|
|
{1, 0, 0, 2, 2},
|
|
{1, -1, -2, 2, 0},
|
|
{0, 2, -2, -2, -1},
|
|
|
|
/* 341-350 */
|
|
{2, 0, -2, 0, 2},
|
|
{5, 0, 2, 0, 2},
|
|
{3, 0, -2, -6, -2},
|
|
{1, -1, 2, -1, 2},
|
|
{3, 0, 0, -4, -1},
|
|
{1, 0, 0, 1, 1},
|
|
{1, 0, -4, 2, -1},
|
|
{0, 1, 2, -4, 1},
|
|
{1, 2, 2, 0, 2},
|
|
{0, 1, 0, -2, -2},
|
|
|
|
/* 351-360 */
|
|
{0, 0, 2, -1, 0},
|
|
{1, 0, 1, 0, 1},
|
|
{0, 2, 0, -2, 1},
|
|
{3, 0, 2, 0, 0},
|
|
{1, 1, -2, 1, 0},
|
|
{2, 1, -2, -4, -1},
|
|
{3, -1, 0, 0, 0},
|
|
{2, -1, -2, 0, 0},
|
|
{4, 0, 2, -2, 1},
|
|
{2, 0, -2, 2, 0},
|
|
|
|
/* 361-370 */
|
|
{1, 1, 2, -2, 0},
|
|
{1, 0, -2, 4, -1},
|
|
{1, 0, -2, -2, 1},
|
|
{2, 0, 2, -4, 0},
|
|
{1, 1, 0, -2, -2},
|
|
{1, 1, -2, -2, 0},
|
|
{1, 0, 1, -2, 1},
|
|
{2, -1, -2, -4, -2},
|
|
{3, 0, -2, 0, -2},
|
|
{0, 1, -2, -2, 0},
|
|
|
|
/* 371-380 */
|
|
{3, 0, 0, -2, -1},
|
|
{1, 0, -2, -3, -1},
|
|
{0, 1, 0, -4, -1},
|
|
{1, -2, 2, -2, 1},
|
|
{0, 1, -2, 1, -1},
|
|
{1, -1, 0, 0, 2},
|
|
{2, 0, 0, 1, 0},
|
|
{1, -2, 0, 2, 0},
|
|
{1, 2, -2, -2, -1},
|
|
{0, 0, 4, -4, 1},
|
|
|
|
/* 381-390 */
|
|
{0, 1, 2, 4, 2},
|
|
{0, 1, -4, 2, -2},
|
|
{3, 0, -2, 0, 0},
|
|
{2, -1, 2, 2, 1},
|
|
{0, 1, -2, -4, -1},
|
|
{4, 0, 2, 2, 2},
|
|
{2, 0, -2, -3, -2},
|
|
{2, 0, 0, -6, 0},
|
|
{1, 0, 2, 0, 3},
|
|
{3, 1, 0, 0, 0},
|
|
|
|
/* 391-400 */
|
|
{3, 0, 0, -4, 1},
|
|
{1, -1, 2, 0, 0},
|
|
{1, -1, 0, -4, 0},
|
|
{2, 0, -2, 2, -2},
|
|
{1, 1, 0, -2, 2},
|
|
{4, 0, 0, -2, 0},
|
|
{2, 2, 0, -2, 0},
|
|
{0, 1, 2, 0, 0},
|
|
{1, 1, 0, -4, 1},
|
|
{1, 0, 0, -4, -2},
|
|
|
|
/* 401-410 */
|
|
{0, 0, 0, 1, 2},
|
|
{3, 0, 0, 2, 1},
|
|
{1, 1, 0, -4, -1},
|
|
{0, 0, 2, 2, -1},
|
|
{1, 1, 2, 0, 0},
|
|
{1, -1, 2, -4, 1},
|
|
{1, 1, 0, 0, 2},
|
|
{0, 0, 2, 6, 2},
|
|
{4, 0, -2, -2, -1},
|
|
{2, 1, 0, -4, -1},
|
|
|
|
/* 411-420 */
|
|
{0, 0, 0, 3, 1},
|
|
{1, -1, -2, 0, 0},
|
|
{0, 0, 2, 1, 0},
|
|
{1, 0, 0, 2, -2},
|
|
{3, -1, 2, 2, 2},
|
|
{3, -1, 2, -2, 2},
|
|
{1, 0, 0, -1, 2},
|
|
{1, -2, 2, -2, 2},
|
|
{0, 1, 0, 2, 2},
|
|
{0, 1, -2, -1, -2},
|
|
|
|
/* 421-430 */
|
|
{1, 1, -2, 0, 0},
|
|
{0, 2, 2, -2, 0},
|
|
{3, -1, -2, -1, -2},
|
|
{1, 0, 0, -6, 0},
|
|
{1, 0, -2, -4, 0},
|
|
{2, 1, 0, -4, 1},
|
|
{2, 0, 2, 0, -1},
|
|
{2, 0, -4, 0, -1},
|
|
{0, 0, 3, 0, 2},
|
|
{2, 1, -2, -2, -1},
|
|
|
|
/* 431-440 */
|
|
{1, -2, 0, 0, 1},
|
|
{2, -1, 0, -4, 0},
|
|
{0, 0, 0, 3, 0},
|
|
{5, 0, 2, -2, 2},
|
|
{1, 2, -2, -4, -2},
|
|
{1, 0, 4, -4, 2},
|
|
{0, 0, 4, -1, 2},
|
|
{3, 1, 0, -4, 0},
|
|
{3, 0, 0, -6, 0},
|
|
{2, 0, 0, 2, 2},
|
|
|
|
/* 441-450 */
|
|
{2, -2, 2, 0, 2},
|
|
{1, 0, 0, -3, 1},
|
|
{1, -2, -2, 0, -2},
|
|
{1, -1, -2, -3, -2},
|
|
{0, 0, 2, -2, -2},
|
|
{2, 0, -2, -4, 0},
|
|
{1, 0, -4, 0, 0},
|
|
{0, 1, 0, -1, 0},
|
|
{4, 0, 0, 0, -1},
|
|
{3, 0, 2, -1, 2},
|
|
|
|
/* 451-460 */
|
|
{3, -1, 2, 0, 1},
|
|
{2, 0, 2, -1, 1},
|
|
{1, 2, 2, -2, 1},
|
|
{1, 1, 0, 2, -1},
|
|
{0, 2, 2, 0, 1},
|
|
{3, 1, 2, 0, 1},
|
|
{1, 1, 2, 1, 1},
|
|
{1, 1, 0, -1, 1},
|
|
{1, -2, 0, -2, -1},
|
|
{4, 0, 0, -4, 0},
|
|
|
|
/* 461-470 */
|
|
{2, 1, 0, 2, 0},
|
|
{1, -1, 0, 4, 0},
|
|
{0, 1, 0, -2, 2},
|
|
{0, 0, 2, 0, -2},
|
|
{1, 0, -1, 0, 1},
|
|
{3, 0, 2, -2, 0},
|
|
{2, 0, 2, 2, 0},
|
|
{1, 2, 0, -4, 0},
|
|
{1, -1, 0, -3, 0},
|
|
{0, 1, 0, 4, 0},
|
|
|
|
/* 471 - 480 */
|
|
{0, 1, -2, 0, 0},
|
|
{2, 2, 2, -2, 2},
|
|
{0, 0, 0, 1, -2},
|
|
{0, 2, -2, 0, -1},
|
|
{4, 0, 2, -4, 2},
|
|
{2, 0, -4, 2, -2},
|
|
{2, -1, -2, 0, -2},
|
|
{1, 1, 4, -2, 2},
|
|
{1, 1, 2, -4, 2},
|
|
{1, 0, 2, 3, 2},
|
|
|
|
/* 481-490 */
|
|
{1, 0, 0, 4, -1},
|
|
{0, 0, 0, 4, 2},
|
|
{2, 0, 0, 4, 0},
|
|
{1, 1, -2, 2, 0},
|
|
{2, 1, 2, 1, 2},
|
|
{2, 1, 2, -4, 1},
|
|
{2, 0, 2, 1, 1},
|
|
{2, 0, -4, -2, -1},
|
|
{2, 0, -2, -6, -1},
|
|
{2, -1, 2, -1, 2},
|
|
|
|
/* 491-500 */
|
|
{1, -2, 2, 0, 1},
|
|
{1, -2, 0, -2, 1},
|
|
{1, -1, 0, -4, -1},
|
|
{0, 2, 2, 2, 2},
|
|
{0, 2, -2, -4, -2},
|
|
{0, 1, 2, 3, 2},
|
|
{0, 1, 0, -4, 1},
|
|
{3, 0, 0, -2, 1},
|
|
{2, 1, -2, 0, 1},
|
|
{2, 0, 4, -2, 1},
|
|
|
|
/* 501-510 */
|
|
{2, 0, 0, -3, -1},
|
|
{2, -2, 0, -2, 1},
|
|
{2, -1, 2, -2, 1},
|
|
{1, 0, 0, -6, -1},
|
|
{1, -2, 0, 0, -1},
|
|
{1, -2, -2, -2, -1},
|
|
{0, 1, 4, -2, 1},
|
|
{0, 0, 2, 3, 1},
|
|
{2, -1, 0, -1, 0},
|
|
{1, 3, 0, -2, 0},
|
|
|
|
/* 511-520 */
|
|
{0, 3, 0, -2, 0},
|
|
{2, -2, 2, -2, 2},
|
|
{0, 0, 4, -2, 0},
|
|
{4, -1, 2, 0, 2},
|
|
{2, 2, -2, -4, -2},
|
|
{4, 1, 2, 0, 2},
|
|
{4, -1, -2, -2, -2},
|
|
{2, 1, 0, -2, -2},
|
|
{2, 1, -2, -6, -2},
|
|
{2, 0, 0, -1, 1},
|
|
|
|
/* 521-530 */
|
|
{2, -1, -2, 2, -1},
|
|
{1, 1, -2, 2, -2},
|
|
{1, 1, -2, -3, -2},
|
|
{1, 0, 3, 0, 3},
|
|
{1, 0, -2, 1, 1},
|
|
{1, 0, -2, 0, 2},
|
|
{1, -1, 2, 1, 2},
|
|
{1, -1, 0, 0, -2},
|
|
{1, -1, -4, 2, -2},
|
|
{0, 3, -2, -2, -2},
|
|
|
|
/* 531-540 */
|
|
{0, 1, 0, 4, 1},
|
|
{0, 0, 4, 2, 2},
|
|
{3, 0, -2, -2, 0},
|
|
{2, -2, 0, 0, 0},
|
|
{1, 1, 2, -4, 0},
|
|
{1, 1, 0, -3, 0},
|
|
{1, 0, 2, -3, 0},
|
|
{1, -1, 2, -2, 0},
|
|
{0, 2, 0, 2, 0},
|
|
{0, 0, 2, 4, 0},
|
|
|
|
/* 541-550 */
|
|
{1, 0, 1, 0, 0},
|
|
{3, 1, 2, -2, 1},
|
|
{3, 0, 4, -2, 2},
|
|
{3, 0, 2, 1, 2},
|
|
{3, 0, 0, 2, -1},
|
|
{3, 0, 0, 0, 2},
|
|
{3, 0, -2, 2, -1},
|
|
{2, 0, 4, -4, 2},
|
|
{2, 0, 2, -3, 2},
|
|
{2, 0, 0, 4, 1},
|
|
|
|
/* 551-560 */
|
|
{2, 0, 0, -3, 1},
|
|
{2, 0, -4, 2, -1},
|
|
{2, 0, -2, -2, 1},
|
|
{2, -2, 2, 2, 2},
|
|
{2, -2, 0, -2, -2},
|
|
{2, -1, 0, 2, 1},
|
|
{2, -1, 0, 2, -1},
|
|
{1, 1, 2, 4, 2},
|
|
{1, 1, 0, 1, 1},
|
|
{1, 1, 0, 1, -1},
|
|
|
|
/* 561-570 */
|
|
{1, 1, -2, -6, -2},
|
|
{1, 0, 0, -3, -1},
|
|
{1, 0, -4, -2, -1},
|
|
{1, 0, -2, -6, -1},
|
|
{1, -2, 2, 2, 1},
|
|
{1, -2, -2, 2, -1},
|
|
{1, -1, -2, -4, -1},
|
|
{0, 2, 0, 0, 2},
|
|
{0, 1, 2, -4, 2},
|
|
{0, 1, -2, 4, -1},
|
|
|
|
/* 571-580 */
|
|
{5, 0, 0, 0, 0},
|
|
{3, 0, 0, -3, 0},
|
|
{2, 2, 0, -4, 0},
|
|
{1, -1, 2, 2, 0},
|
|
{0, 1, 0, 3, 0},
|
|
{4, 0, -2, 0, -1},
|
|
{3, 0, -2, -6, -1},
|
|
{3, 0, -2, -1, -1},
|
|
{2, 1, 2, 2, 1},
|
|
{2, 1, 0, 2, 1},
|
|
|
|
/* 581-590 */
|
|
{2, 0, 2, 4, 1},
|
|
{2, 0, 2, -6, 1},
|
|
{2, 0, 2, -2, -1},
|
|
{2, 0, 0, -6, -1},
|
|
{2, -1, -2, -2, -1},
|
|
{1, 2, 2, 0, 1},
|
|
{1, 2, 0, 0, 1},
|
|
{1, 0, 4, 0, 1},
|
|
{1, 0, 2, -6, 1},
|
|
{1, 0, 2, -4, -1},
|
|
|
|
/* 591-600 */
|
|
{1, 0, -1, -2, -1},
|
|
{1, -1, 2, 4, 1},
|
|
{1, -1, 2, -3, 1},
|
|
{1, -1, 0, 4, 1},
|
|
{1, -1, -2, 1, -1},
|
|
{0, 1, 2, -2, 3},
|
|
{3, 0, 0, -2, 0},
|
|
{1, 0, 1, -2, 0},
|
|
{0, 2, 0, -4, 0},
|
|
{0, 0, 2, -4, 0},
|
|
|
|
/* 601-610 */
|
|
{0, 0, 1, -1, 0},
|
|
{0, 0, 0, 6, 0},
|
|
{0, 2, 0, 0, -2},
|
|
{0, 1, -2, 2, -3},
|
|
{4, 0, 0, 2, 0},
|
|
{3, 0, 0, -1, 0},
|
|
{3, -1, 0, 2, 0},
|
|
{2, 1, 0, 1, 0},
|
|
{2, 1, 0, -6, 0},
|
|
{2, -1, 2, 0, 0},
|
|
|
|
/* 611-620 */
|
|
{1, 0, 2, -1, 0},
|
|
{1, -1, 0, 1, 0},
|
|
{1, -1, -2, -2, 0},
|
|
{0, 1, 2, 2, 0},
|
|
{0, 0, 2, -3, 0},
|
|
{2, 2, 0, -2, -1},
|
|
{2, -1, -2, 0, 1},
|
|
{1, 2, 2, -4, 1},
|
|
{0, 1, 4, -4, 2},
|
|
{0, 0, 0, 3, 2},
|
|
|
|
/* 621-630 */
|
|
{5, 0, 2, 0, 1},
|
|
{4, 1, 2, -2, 2},
|
|
{4, 0, -2, -2, 0},
|
|
{3, 1, 2, 2, 2},
|
|
{3, 1, 0, -2, 0},
|
|
{3, 1, -2, -6, -2},
|
|
{3, 0, 0, 0, -2},
|
|
{3, 0, -2, -4, -2},
|
|
{3, -1, 0, -3, 0},
|
|
{3, -1, 0, -2, 0},
|
|
|
|
/* 631-640 */
|
|
{2, 1, 2, 0, 0},
|
|
{2, 1, 2, -4, 2},
|
|
{2, 1, 2, -2, 0},
|
|
{2, 1, 0, -3, 0},
|
|
{2, 1, -2, 0, -2},
|
|
{2, 0, 0, -4, 2},
|
|
{2, 0, 0, -4, -2},
|
|
{2, 0, -2, -5, -2},
|
|
{2, -1, 2, 4, 2},
|
|
{2, -1, 0, -2, 2},
|
|
|
|
/* 641-650 */
|
|
{1, 3, -2, -2, -2},
|
|
{1, 1, 0, 0, -2},
|
|
{1, 1, 0, -6, 0},
|
|
{1, 1, -2, 1, -2},
|
|
{1, 1, -2, -1, -2},
|
|
{1, 0, 2, 1, 0},
|
|
{1, 0, 0, 3, 0},
|
|
{1, 0, 0, -4, 2},
|
|
{1, 0, -2, 4, -2},
|
|
{1, -2, 0, -1, 0},
|
|
|
|
/* 651-NFLS */
|
|
{0, 1, -4, 2, -1},
|
|
{1, 0, -2, 0, -3},
|
|
{0, 0, 4, -4, 4},
|
|
}
|
|
|
|
/* Number of frequencies: luni-solar */
|
|
NFLS := len(mfals)
|
|
|
|
/* Fundamental-argument multipliers: planetary terms */
|
|
mfapl := [][14]int{
|
|
|
|
/* 1-10 */
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, -2, 5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 1, -1, 1, 0, -8, 12, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, -1, 2, 0, 0, 0, 0, 0},
|
|
|
|
/* 11-20 */
|
|
{0, 0, 0, 0, 0, 0, 8, -13, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 2, -5, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, -5, 6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, -1, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -8, 3, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -8, 3, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 21-30 */
|
|
{0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 1, 0, 0, -4, 8, -3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, 4, -8, 3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 1, -1, 1, 0, 0, 0, -2, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, -1, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1},
|
|
{2, 0, 0, -2, 0, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
|
|
/* 31-40 */
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 8, -13, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 1},
|
|
{2, 0, 0, -2, 0, 0, 0, -2, 0, 3, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, -1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0},
|
|
|
|
/* 41-50 */
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 1, -1, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, 0, -2, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 8, -13, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 2},
|
|
{1, 0, 0, 0, 0, 0, -18, 16, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2},
|
|
|
|
/* 51-60 */
|
|
{0, 0, 1, -1, 1, 0, -5, 7, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, -10, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 0, 0, -5, 6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, -1, 0, 0, 0, 2},
|
|
{1, 0, 2, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1},
|
|
{1, 0, -2, 0, -2, 0, 0, 4, -8, 3, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 2, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 61-70 */
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, -2},
|
|
{0, 0, 1, -1, 1, 0, 0, 3, -8, 3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 8, -11, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -3, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0},
|
|
|
|
/* 71-80 */
|
|
{0, 0, 0, 0, 0, 0, 6, -8, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 8, -15, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, -2, 0, 0, 0, 2},
|
|
{0, 0, 1, -1, 1, 0, 0, -5, 8, -3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 81-90 */
|
|
{2, 0, 0, -2, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0, -1},
|
|
{2, 0, 0, -2, 0, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 8, -13, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, 0, 0, -2, 5, 0, 0, 0},
|
|
{1, 0, 0, -1, 0, 0, -3, 4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2},
|
|
{1, 0, 0, 0, -1, 0, -18, 16, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, 0, 0, 2, -5, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0},
|
|
|
|
/* 91-100 */
|
|
{1, 0, 0, -2, 0, 0, 19, -21, 3, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, -8, 13, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 1, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 7, -9, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2},
|
|
{1, 0, 0, 0, 1, 0, -18, 16, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -16, 4, 5, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 3, -7, 0, 0, 0, 0, 0, -2},
|
|
|
|
/* 101-110 */
|
|
{0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1},
|
|
{2, 0, 0, -2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, -1, 0, 0, -2, 0, 3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2},
|
|
|
|
/* 111-120 */
|
|
{0, 0, 0, 0, 1, 0, 0, 1, -2, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2},
|
|
{0, 0, 2, -2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, -3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, 0, 0, -6, 8, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -2, 2, 0, 0, 0, 0, 0},
|
|
|
|
/* 121-130 */
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 8, -10, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 1, -1, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0, -2},
|
|
{1, 0, 0, -1, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0},
|
|
|
|
/* 131-140 */
|
|
{0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, 0, -3, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 1, 0, 2, -3, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 141-150 */
|
|
{1, 0, 0, -1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 9, -11, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 8, -15, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, -4, 5, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, 0, -1, 0, 0, 0, 2},
|
|
|
|
/* 151-160 */
|
|
{1, 0, 0, -1, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, -4, 10, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -4, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, -2},
|
|
{0, 0, 2, -2, 1, 0, -4, 4, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 161-170 */
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -3, 0, 0, 0, 0, 2},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 0, 0, 2, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -9, 13, 0, 0, 0, 0, 0},
|
|
{2, 0, 2, 0, 2, 0, 0, 2, 0, -3, 0, 0, 0, 0},
|
|
|
|
/* 171-180 */
|
|
{0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 1, -1, 2, 0, 0, -1, 0, 0, 2, 0, 0, 0},
|
|
{1, 0, 0, -1, -1, 0, -3, 4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1},
|
|
{1, 0, 2, 0, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0},
|
|
{1, 0, -2, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, -2, 4, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0},
|
|
|
|
/* 181-190 */
|
|
{0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 2, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, -8, 3, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 6, -10, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 7, -8, 3, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 1, 0, -3, 5, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, -5, 7, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 1},
|
|
|
|
/* 191-200 */
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, -1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 7, -10, 0, 0, 0, 0, 0, -2},
|
|
{1, 0, 0, -2, 0, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 2, -5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, -8, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 1, -1, 1, 0, 0, -9, 15, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, -2, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, -1, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0},
|
|
|
|
/* 201-210 */
|
|
{0, 0, 0, 0, 0, 0, 0, 1, -4, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 0, -1, 0, 0, 2},
|
|
{2, 0, 0, -2, 1, 0, -6, 8, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 1, -1, 1, 0, 3, -6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 8, -14, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 211-220 */
|
|
{0, 0, 0, 0, 1, 0, 0, 8, -15, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, 1, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 2},
|
|
{2, 0, -1, -1, 0, 0, 0, 3, -7, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -3, 4, 0, 0, 0, 0, 0},
|
|
|
|
/* 221-230 */
|
|
{2, 0, 0, -2, 0, 0, 0, -6, 8, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, 0, 0, 0, -5, 6, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -9, 4, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, -2},
|
|
|
|
/* 231-240 */
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, -4, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1},
|
|
{0, 0, 0, 0, 0, 0, 7, -11, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 3, -5, 4, 0, 0, 0, 0, 2},
|
|
{0, 0, 1, -1, 0, 0, 0, -1, 0, -1, 1, 0, 0, 0},
|
|
{2, 0, 0, 0, 0, 0, 0, -2, 0, 3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 8, -15, 0, 0, 0, 0, -2},
|
|
{0, 0, 1, -1, 2, 0, 0, -2, 2, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 0, -1},
|
|
|
|
/* 241-250 */
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, -1, 1, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -8, 3, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 2, -4, 0, -3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 3, -5, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, -3, 0, 0, 0, 2},
|
|
{0, 0, 2, -2, 2, 0, -8, 11, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -8, 3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -2, 0, 0, 0},
|
|
|
|
/* 251-260 */
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -9, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 7, -9, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, -2, -2, -2, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, -2, 5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 1},
|
|
|
|
/* 261-270 */
|
|
{0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 2, -5, 0, 0, 2},
|
|
{2, 0, 0, -2, -1, 0, 0, -2, 0, 0, 5, 0, 0, 0},
|
|
{2, 0, 0, -2, -1, 0, -6, 8, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, -2, 0, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 8, -8, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, 2, -5, 0, 0, 2},
|
|
{0, 0, 0, 0, 1, 0, 3, -7, 4, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0},
|
|
|
|
/* 271-280 */
|
|
{0, 0, 1, -1, 0, 0, 0, -1, 0, -2, 5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, -3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -15, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 2},
|
|
{1, 0, 0, -1, 0, 0, 0, -3, 4, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, -3, 7, -4, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, 0, -2, 0, 0, 0, 2},
|
|
|
|
/* 281-290 */
|
|
{0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 2, -2, 2, 0, -5, 6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 2, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -8, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -11, 0, 0, 0, 0, -2},
|
|
|
|
/* 291-300 */
|
|
{0, 0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, -2},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 3, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, 0, -1, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 9, -12, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 1, -1, 0, 0, -8, 12, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, -2, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, -1},
|
|
|
|
/* 301-310 */
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 1, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 1, -1, -1, 0, 0, 0, -2, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, -5, 0, 0, 0, 0, -2},
|
|
{2, 0, 0, -2, 0, 0, 0, -2, 0, 3, -1, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 0, -2, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -9, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, 2},
|
|
|
|
/* 311-320 */
|
|
{0, 0, 0, 0, 0, 0, 9, -9, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 3, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, 2, -4, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1},
|
|
{0, 0, 1, -1, 2, 0, 0, -1, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -9, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2},
|
|
{0, 0, 2, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0},
|
|
|
|
/* 321-330 */
|
|
{0, 0, 2, 0, 2, 0, 0, -4, 8, -3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, 0, -3, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0},
|
|
{2, 0, -1, -1, -1, 0, 0, -1, 0, 3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, -3, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 5, -10, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 8, -13, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 2, -2, 1, -1, 0, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 0, 2, 0, 0},
|
|
|
|
/* 331-340 */
|
|
{0, 0, 0, 0, 1, 0, 3, -5, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, -2, 0, 0, 0, -2, 0, 3, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 0, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 9, -9, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, 0, 2, 0, 1, -1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -8, 11, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -2, 0, 0, 2, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, -1, 2, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 2, -6, 0, 0, 0, 0, 0, -2},
|
|
|
|
/* 341-350 */
|
|
{0, 0, 0, 0, 0, 0, 0, 8, -15, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -2, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 7, -13, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, -2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 2},
|
|
{0, 0, 2, -2, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 8, -8, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 8, -10, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 1},
|
|
|
|
/* 351-360 */
|
|
{0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, -4, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, -1, 0, 0, -5, 6, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 0, 0, -2},
|
|
{2, 0, -1, -1, -1, 0, 0, 3, -7, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, 0, 2, 0, -1, 1, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 361-370 */
|
|
{2, 0, 0, -2, 0, 0, 0, -2, 0, 4, -3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -11, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, 1, 0, 0, -6, 8, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -8, 1, 5, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -5, 0, 0, 0, 0, 2},
|
|
{1, 0, -2, -2, -2, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 2, 0, 0, 0, -2, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 2, 0, 0, -4, 8, -3, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1},
|
|
|
|
/* 371-380 */
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -7, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, 0, 0, -2, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, 0, -2, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, -6, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 3, -5, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 7, -13, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 2},
|
|
|
|
/* 381-390 */
|
|
{0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 2, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, -8, 15, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, -2, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
{2, 0, -1, -1, -1, 0, 0, -1, 0, 2, 0, 0, 0, 0},
|
|
{1, 0, 2, -2, 2, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{1, 0, -1, 1, -1, 0, -18, 17, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, 0, 2, 0, 0, 1, 0, -1, 0, 0, 0, 0},
|
|
{0, 0, 2, 0, 2, 0, 0, -1, 0, 1, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, -1, 0, -5, 6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 2, 0, 0, -1, 0, 1, 0, 0, 0, 0},
|
|
|
|
/* 391-400 */
|
|
{0, 0, 0, 0, 1, 0, 2, -2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 8, -16, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2},
|
|
{0, 0, 0, 0, 2, 0, 0, -1, 2, 0, 0, 0, 0, 0},
|
|
{2, 0, -1, -1, -2, 0, 0, -1, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, -10, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, -2, 4, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2},
|
|
{2, 0, 0, -2, -1, 0, 0, -2, 0, 4, -5, 0, 0, 0},
|
|
|
|
/* 401-410 */
|
|
{2, 0, 0, -2, -1, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
{2, 0, -1, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 1, -1, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, -1, -1, 0, 0, -2, 2, 0, 0, 0, 0, 0},
|
|
{1, 0, -1, -1, -1, 0, 20, -20, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 1, -2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, -2, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 5, -8, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0},
|
|
|
|
/* 411-420 */
|
|
{0, 0, 0, 0, 0, 0, 9, -11, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -3, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 6, -7, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 0, -2, 0, 0, 0},
|
|
{0, 0, 1, -1, 2, 0, 0, -1, 0, -2, 5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0},
|
|
|
|
/* 421-430 */
|
|
{0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -6, 0, 0, 0, 0, -2},
|
|
{1, 0, 0, -2, 0, 0, 20, -21, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 8, -12, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 2, 0, 0, -1, 0, -1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 8, -12, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 9, -17, 0, 0, 0, 0, 0},
|
|
|
|
/* 431-440 */
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -8, 1, 5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -7, 0, 0, 0, 0, -2},
|
|
{1, 0, 0, -1, 1, 0, 0, -3, 4, 0, 0, 0, 0, 0},
|
|
{1, 0, -2, 0, -2, 0, -10, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, -9, 17, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, -4, 0, 0, 0, 0, 0, -2},
|
|
{1, 0, -2, -2, -2, 0, 0, -2, 0, 3, 0, 0, 0, 0},
|
|
{1, 0, -1, 1, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 441-450 */
|
|
{0, 0, 2, -2, 2, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 2, 0, 0, -1, 0, 0, 1, 0, 0, 0},
|
|
{0, 0, 1, -1, 2, 0, -5, 7, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, 2, -2, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -10, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, 0, -4, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, -5, 0, 0, 0, -2},
|
|
|
|
/* 451-460 */
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -5, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 1},
|
|
{1, 0, 0, -2, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -7, 4, 0, 0, 0, 0, 0},
|
|
{2, 0, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, 1, 0, -2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -10, 0, 0, 0, 0, -2},
|
|
|
|
/* 461-470 */
|
|
{1, 0, 0, -1, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, 4, -8, 3, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -4, 8, -3, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -3, 0, 3, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, -5, 5, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 1, -3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -4, 6, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 0, -1, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, -5, 6, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 471-480 */
|
|
{0, 0, 0, 0, 1, 0, 3, -4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 7, -10, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 3, -8, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 7, -9, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 7, -8, 0, 0, 0, 0, 2},
|
|
|
|
/* 481-490 */
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -8, 3, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 0, -2, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, -1},
|
|
{2, 0, 0, -2, -1, 0, 0, -6, 8, 0, 0, 0, 0, 0},
|
|
{2, 0, -1, -1, 1, 0, 0, 3, -7, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -7, 9, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, -1},
|
|
|
|
/* 491-500 */
|
|
{0, 0, 1, -1, 2, 0, -8, 12, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{1, 0, 0, -2, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 7, -8, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, 1, 0, 0, -5, 6, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, -1, 0, 0, -2, 0, 3, -1, 0, 0, 0},
|
|
{1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, -2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{1, 0, 0, -2, -1, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
|
|
/* 501-510 */
|
|
{1, 0, 0, -1, -1, 0, 0, -3, 4, 0, 0, 0, 0, 0},
|
|
{1, 0, -1, 0, -1, 0, -3, 5, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -4, 4, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, -8, 11, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 0, 0, 0, -9, 13, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, 1, -4, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, 0, -1, 0, 1, -3, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, 7, -13, 0, 0, 0, 0, 0},
|
|
|
|
/* 511-520 */
|
|
{0, 0, 0, 0, 1, 0, 0, 2, 0, -2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, -2, 2, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 7, -11, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 6, -4, 0, 0, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, 1},
|
|
|
|
/* 521-530 */
|
|
{0, 0, 0, 0, 0, 0, 1, -4, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 9, -17, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -8, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -4, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, 0, 0, 0, -4, 8, -3, 0, 0, 0, 0},
|
|
|
|
/* 531-540 */
|
|
{2, 0, 0, -2, 0, 0, -2, 2, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, 0, -4, 8, -3, 0, 0, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, -2, 0, 0, 17, -16, 0, -2, 0, 0, 0, 0},
|
|
{1, 0, 0, -1, 0, 0, 0, -2, 2, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 0, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, -4, 0, 0, 0, 0},
|
|
|
|
/* 541-550 */
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 2},
|
|
{2, 0, 0, -2, 0, 0, 0, -4, 4, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, 0, 0, 0, -2, 0, 2, 2, 0, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, -2, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, -2, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0},
|
|
{1, 0, 0, -2, 0, 0, 0, -4, 8, -3, 0, 0, 0, 0},
|
|
|
|
/* 551-560 */
|
|
{1, 0, 0, -2, 0, 0, -2, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 0, 0, -4, 4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, 3, -6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, 0, -2, 2, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, -4, 5, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, -3, 4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 2, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0},
|
|
|
|
/* 561-570 */
|
|
{0, 0, 0, 0, 0, 0, 8, -9, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0},
|
|
{2, 0, -2, -2, -2, 0, 0, -2, 0, 2, 0, 0, 0, 0},
|
|
{1, 0, 0, 0, 1, 0, -10, 3, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, 0, -1, 0, -10, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, 0, 2, 0, 2, -3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, 0, 2, 0, 2, -2, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 571-580 */
|
|
{0, 0, 2, 0, 2, 0, -2, 3, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, 0, 2, 0, -2, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0},
|
|
{2, 0, 2, -2, 2, 0, 0, -2, 0, 3, 0, 0, 0, 0},
|
|
{2, 0, 1, -3, 1, 0, -6, 7, 0, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, 0, 0, 2, -5, 0, 0, 0, 0, 0, 0},
|
|
{2, 0, 0, -2, 0, 0, 0, -2, 0, 5, -5, 0, 0, 0},
|
|
{2, 0, 0, -2, 0, 0, 0, -2, 0, 1, 5, 0, 0, 0},
|
|
{2, 0, 0, -2, 0, 0, 0, -2, 0, 0, 5, 0, 0, 0},
|
|
|
|
/* 581-590 */
|
|
{2, 0, 0, -2, 0, 0, 0, -2, 0, 0, 2, 0, 0, 0},
|
|
{2, 0, 0, -2, 0, 0, -4, 4, 0, 0, 0, 0, 0, 0},
|
|
{2, 0, -2, 0, -2, 0, 0, 5, -9, 0, 0, 0, 0, 0},
|
|
{2, 0, -1, -1, 0, 0, 0, -1, 0, 3, 0, 0, 0, 0},
|
|
{1, 0, 2, 0, 2, 0, 1, -1, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 2, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0},
|
|
{1, 0, 2, 0, 2, 0, 0, -4, 8, -3, 0, 0, 0, 0},
|
|
{1, 0, 2, 0, 2, 0, -1, 1, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 2, -2, 2, 0, -3, 3, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0},
|
|
|
|
/* 591-600 */
|
|
{1, 0, 0, 0, 0, 0, 0, -2, 0, 3, 0, 0, 0, 0},
|
|
{1, 0, 0, -2, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0},
|
|
{1, 0, -2, -2, -2, 0, 0, 1, 0, -1, 0, 0, 0, 0},
|
|
{1, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
{1, 0, -1, -1, 0, 0, 0, 8, -15, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, 2, 2, 0, 0, 2, 0, -2, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -2, 0, 1, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 1, 0, 0, -10, 15, 0, 0, 0, 0, 0},
|
|
{0, 0, 2, -2, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0},
|
|
|
|
/* 601-610 */
|
|
{0, 0, 1, -1, 2, 0, 0, -1, 0, 0, -1, 0, 0, 0},
|
|
{0, 0, 1, -1, 2, 0, -3, 4, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, -4, 6, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 1, 0, -1, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, 0, -1, 0, 0, -2, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, -2, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 1, -1, -1, 0, -5, 7, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 2, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0},
|
|
|
|
/* 611-620 */
|
|
{0, 0, 0, 2, 0, 0, -2, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 2, 0, -3, 5, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 1, 0, -1, 2, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 9, -13, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 8, -14, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 8, -11, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, -8, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 6, -7, 0, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, -2},
|
|
|
|
/* 621-630 */
|
|
{0, 0, 0, 0, 0, 0, 5, -6, -4, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 4, -8, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 3, -3, 0, 2, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 7, -12, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, -2},
|
|
|
|
/* 631-640 */
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -8, 1, 5, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -4, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 6, -10, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, 0, -4, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -9, 0, 0, 0, 0, -1},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -8, 3, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -16, 4, 5, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 5, -13, 0, 0, 0, 0, -2},
|
|
|
|
/* 641-650 */
|
|
{0, 0, 0, 0, 0, 0, 0, 3, 0, -5, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -9, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 3, -7, 0, 0, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, 0, 0, -3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 2, -8, 1, 5, 0, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 1, -5, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -3, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 1, 0, -3, 5, 0, 0, 0},
|
|
|
|
/* 651-NFPL */
|
|
{0, 0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -6, 3, 0, -2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2},
|
|
{0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
|
|
}
|
|
|
|
/* Number of frequencies: planetary */
|
|
NFPL := len(mfapl)
|
|
|
|
/* Pointers into amplitudes array, one pointer per frequency */
|
|
nc := []int{
|
|
|
|
/* 1-100 */
|
|
1, 21, 37, 51, 65, 79, 91, 103, 115, 127,
|
|
139, 151, 163, 172, 184, 196, 207, 219, 231, 240,
|
|
252, 261, 273, 285, 297, 309, 318, 327, 339, 351,
|
|
363, 372, 384, 396, 405, 415, 423, 435, 444, 452,
|
|
460, 467, 474, 482, 490, 498, 506, 513, 521, 528,
|
|
536, 543, 551, 559, 566, 574, 582, 590, 597, 605,
|
|
613, 620, 628, 636, 644, 651, 658, 666, 674, 680,
|
|
687, 695, 702, 710, 717, 725, 732, 739, 746, 753,
|
|
760, 767, 774, 782, 790, 798, 805, 812, 819, 826,
|
|
833, 840, 846, 853, 860, 867, 874, 881, 888, 895,
|
|
|
|
/* 101-200 */
|
|
901, 908, 914, 921, 928, 934, 941, 948, 955, 962,
|
|
969, 976, 982, 989, 996, 1003, 1010, 1017, 1024, 1031,
|
|
1037, 1043, 1050, 1057, 1064, 1071, 1078, 1084, 1091, 1098,
|
|
1104, 1112, 1118, 1124, 1131, 1138, 1145, 1151, 1157, 1164,
|
|
1171, 1178, 1185, 1192, 1199, 1205, 1212, 1218, 1226, 1232,
|
|
1239, 1245, 1252, 1259, 1266, 1272, 1278, 1284, 1292, 1298,
|
|
1304, 1310, 1316, 1323, 1329, 1335, 1341, 1347, 1353, 1359,
|
|
1365, 1371, 1377, 1383, 1389, 1396, 1402, 1408, 1414, 1420,
|
|
1426, 1434, 1440, 1446, 1452, 1459, 1465, 1471, 1477, 1482,
|
|
1488, 1493, 1499, 1504, 1509, 1514, 1520, 1527, 1532, 1538,
|
|
|
|
/* 201-300 */
|
|
1543, 1548, 1553, 1558, 1564, 1569, 1574, 1579, 1584, 1589,
|
|
1594, 1596, 1598, 1600, 1602, 1605, 1608, 1610, 1612, 1617,
|
|
1619, 1623, 1625, 1627, 1629, 1632, 1634, 1640, 1642, 1644,
|
|
1646, 1648, 1650, 1652, 1654, 1658, 1660, 1662, 1664, 1668,
|
|
1670, 1672, 1673, 1675, 1679, 1681, 1683, 1684, 1686, 1688,
|
|
1690, 1693, 1695, 1697, 1701, 1703, 1705, 1707, 1709, 1711,
|
|
1712, 1715, 1717, 1721, 1723, 1725, 1727, 1729, 1731, 1733,
|
|
1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753,
|
|
1755, 1757, 1759, 1761, 1762, 1764, 1766, 1768, 1769, 1771,
|
|
1773, 1775, 1777, 1779, 1781, 1783, 1785, 1787, 1788, 1790,
|
|
|
|
/* 301-400 */
|
|
1792, 1794, 1796, 1798, 1800, 1802, 1804, 1806, 1807, 1809,
|
|
1811, 1815, 1817, 1819, 1821, 1823, 1825, 1827, 1829, 1831,
|
|
1833, 1835, 1837, 1839, 1840, 1842, 1844, 1848, 1850, 1852,
|
|
1854, 1856, 1858, 1859, 1860, 1862, 1864, 1866, 1868, 1869,
|
|
1871, 1873, 1875, 1877, 1879, 1881, 1883, 1885, 1887, 1889,
|
|
1891, 1892, 1896, 1898, 1900, 1901, 1903, 1905, 1907, 1909,
|
|
1910, 1911, 1913, 1915, 1919, 1921, 1923, 1927, 1929, 1931,
|
|
1933, 1935, 1937, 1939, 1943, 1945, 1947, 1948, 1949, 1951,
|
|
1953, 1955, 1957, 1958, 1960, 1962, 1964, 1966, 1968, 1970,
|
|
1971, 1973, 1974, 1975, 1977, 1979, 1980, 1981, 1982, 1984,
|
|
|
|
/* 401-500 */
|
|
1986, 1988, 1990, 1992, 1994, 1995, 1997, 1999, 2001, 2003,
|
|
2005, 2007, 2008, 2009, 2011, 2013, 2015, 2017, 2019, 2021,
|
|
2023, 2024, 2025, 2027, 2029, 2031, 2033, 2035, 2037, 2041,
|
|
2043, 2045, 2046, 2047, 2049, 2051, 2053, 2055, 2056, 2057,
|
|
2059, 2061, 2063, 2065, 2067, 2069, 2070, 2071, 2072, 2074,
|
|
2076, 2078, 2080, 2082, 2084, 2086, 2088, 2090, 2092, 2094,
|
|
2095, 2096, 2097, 2099, 2101, 2105, 2106, 2107, 2108, 2109,
|
|
2110, 2111, 2113, 2115, 2119, 2121, 2123, 2125, 2127, 2129,
|
|
2131, 2133, 2135, 2136, 2137, 2139, 2141, 2143, 2145, 2147,
|
|
2149, 2151, 2153, 2155, 2157, 2159, 2161, 2163, 2165, 2167,
|
|
|
|
/* 501-600 */
|
|
2169, 2171, 2173, 2175, 2177, 2179, 2181, 2183, 2185, 2186,
|
|
2187, 2188, 2192, 2193, 2195, 2197, 2199, 2201, 2203, 2205,
|
|
2207, 2209, 2211, 2213, 2217, 2219, 2221, 2223, 2225, 2227,
|
|
2229, 2231, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240,
|
|
2241, 2244, 2246, 2248, 2250, 2252, 2254, 2256, 2258, 2260,
|
|
2262, 2264, 2266, 2268, 2270, 2272, 2274, 2276, 2278, 2280,
|
|
2282, 2284, 2286, 2288, 2290, 2292, 2294, 2296, 2298, 2300,
|
|
2302, 2303, 2304, 2305, 2306, 2307, 2309, 2311, 2313, 2315,
|
|
2317, 2319, 2321, 2323, 2325, 2327, 2329, 2331, 2333, 2335,
|
|
2337, 2341, 2343, 2345, 2347, 2349, 2351, 2352, 2355, 2356,
|
|
|
|
/* 601-700 */
|
|
2357, 2358, 2359, 2361, 2363, 2364, 2365, 2366, 2367, 2368,
|
|
2369, 2370, 2371, 2372, 2373, 2374, 2376, 2378, 2380, 2382,
|
|
2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393,
|
|
2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403,
|
|
2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413,
|
|
2414, 2415, 2417, 2418, 2430, 2438, 2445, 2453, 2460, 2468,
|
|
2474, 2480, 2488, 2496, 2504, 2512, 2520, 2527, 2535, 2543,
|
|
2550, 2558, 2566, 2574, 2580, 2588, 2596, 2604, 2612, 2619,
|
|
2627, 2634, 2642, 2648, 2656, 2664, 2671, 2679, 2685, 2693,
|
|
2701, 2709, 2717, 2725, 2733, 2739, 2747, 2753, 2761, 2769,
|
|
|
|
/* 701-800 */
|
|
2777, 2785, 2793, 2801, 2809, 2817, 2825, 2833, 2841, 2848,
|
|
2856, 2864, 2872, 2878, 2884, 2892, 2898, 2906, 2914, 2922,
|
|
2930, 2938, 2944, 2952, 2958, 2966, 2974, 2982, 2988, 2996,
|
|
3001, 3009, 3017, 3025, 3032, 3039, 3045, 3052, 3059, 3067,
|
|
3069, 3076, 3083, 3090, 3098, 3105, 3109, 3111, 3113, 3120,
|
|
3124, 3128, 3132, 3136, 3140, 3144, 3146, 3150, 3158, 3161,
|
|
3165, 3166, 3168, 3172, 3176, 3180, 3182, 3185, 3189, 3193,
|
|
3194, 3197, 3200, 3204, 3208, 3212, 3216, 3219, 3221, 3222,
|
|
3226, 3230, 3234, 3238, 3242, 3243, 3247, 3251, 3254, 3258,
|
|
3262, 3266, 3270, 3274, 3275, 3279, 3283, 3287, 3289, 3293,
|
|
|
|
/* 801-900 */
|
|
3296, 3300, 3303, 3307, 3311, 3315, 3319, 3321, 3324, 3327,
|
|
3330, 3334, 3338, 3340, 3342, 3346, 3350, 3354, 3358, 3361,
|
|
3365, 3369, 3373, 3377, 3381, 3385, 3389, 3393, 3394, 3398,
|
|
3402, 3406, 3410, 3413, 3417, 3421, 3425, 3429, 3433, 3435,
|
|
3439, 3443, 3446, 3450, 3453, 3457, 3458, 3461, 3464, 3468,
|
|
3472, 3476, 3478, 3481, 3485, 3489, 3493, 3497, 3501, 3505,
|
|
3507, 3511, 3514, 3517, 3521, 3524, 3525, 3527, 3529, 3533,
|
|
3536, 3540, 3541, 3545, 3548, 3551, 3555, 3559, 3563, 3567,
|
|
3569, 3570, 3574, 3576, 3578, 3582, 3586, 3590, 3593, 3596,
|
|
3600, 3604, 3608, 3612, 3616, 3620, 3623, 3626, 3630, 3632,
|
|
|
|
/* 901-1000 */
|
|
3636, 3640, 3643, 3646, 3648, 3652, 3656, 3660, 3664, 3667,
|
|
3669, 3671, 3675, 3679, 3683, 3687, 3689, 3693, 3694, 3695,
|
|
3699, 3703, 3705, 3707, 3710, 3713, 3717, 3721, 3725, 3729,
|
|
3733, 3736, 3740, 3744, 3748, 3752, 3754, 3757, 3759, 3763,
|
|
3767, 3770, 3773, 3777, 3779, 3783, 3786, 3790, 3794, 3798,
|
|
3801, 3805, 3809, 3813, 3817, 3821, 3825, 3827, 3831, 3835,
|
|
3836, 3837, 3840, 3844, 3848, 3852, 3856, 3859, 3863, 3867,
|
|
3869, 3871, 3875, 3879, 3883, 3887, 3890, 3894, 3898, 3901,
|
|
3905, 3909, 3913, 3917, 3921, 3922, 3923, 3924, 3926, 3930,
|
|
3932, 3936, 3938, 3940, 3944, 3948, 3952, 3956, 3959, 3963,
|
|
|
|
/* 1001-1100 */
|
|
3965, 3969, 3973, 3977, 3979, 3981, 3982, 3986, 3989, 3993,
|
|
3997, 4001, 4004, 4006, 4009, 4012, 4016, 4020, 4024, 4026,
|
|
4028, 4032, 4036, 4040, 4044, 4046, 4050, 4054, 4058, 4060,
|
|
4062, 4063, 4064, 4068, 4071, 4075, 4077, 4081, 4083, 4087,
|
|
4089, 4091, 4095, 4099, 4101, 4103, 4105, 4107, 4111, 4115,
|
|
4119, 4123, 4127, 4129, 4131, 4135, 4139, 4141, 4143, 4145,
|
|
4149, 4153, 4157, 4161, 4165, 4169, 4173, 4177, 4180, 4183,
|
|
4187, 4191, 4195, 4198, 4201, 4205, 4209, 4212, 4213, 4216,
|
|
4217, 4221, 4223, 4226, 4230, 4234, 4236, 4240, 4244, 4248,
|
|
4252, 4256, 4258, 4262, 4264, 4266, 4268, 4270, 4272, 4276,
|
|
|
|
/* 1101-1200 */
|
|
4279, 4283, 4285, 4287, 4289, 4293, 4295, 4299, 4300, 4301,
|
|
4305, 4309, 4313, 4317, 4319, 4323, 4325, 4329, 4331, 4333,
|
|
4335, 4337, 4341, 4345, 4349, 4351, 4353, 4357, 4361, 4365,
|
|
4367, 4369, 4373, 4377, 4381, 4383, 4387, 4389, 4391, 4395,
|
|
4399, 4403, 4407, 4411, 4413, 4414, 4415, 4418, 4419, 4421,
|
|
4423, 4427, 4429, 4431, 4433, 4435, 4437, 4439, 4443, 4446,
|
|
4450, 4452, 4456, 4458, 4460, 4462, 4466, 4469, 4473, 4477,
|
|
4481, 4483, 4487, 4489, 4491, 4493, 4497, 4499, 4501, 4504,
|
|
4506, 4510, 4513, 4514, 4515, 4518, 4521, 4522, 4525, 4526,
|
|
4527, 4530, 4533, 4534, 4537, 4541, 4542, 4543, 4544, 4545,
|
|
|
|
/* 1201-1300 */
|
|
4546, 4547, 4550, 4553, 4554, 4555, 4558, 4561, 4564, 4567,
|
|
4568, 4571, 4574, 4575, 4578, 4581, 4582, 4585, 4586, 4588,
|
|
4590, 4592, 4596, 4598, 4602, 4604, 4608, 4612, 4613, 4616,
|
|
4619, 4622, 4623, 4624, 4625, 4626, 4629, 4632, 4633, 4636,
|
|
4639, 4640, 4641, 4642, 4643, 4644, 4645, 4648, 4649, 4650,
|
|
4651, 4652, 4653, 4656, 4657, 4660, 4661, 4664, 4667, 4670,
|
|
4671, 4674, 4675, 4676, 4677, 4678, 4681, 4682, 4683, 4684,
|
|
4687, 4688, 4689, 4692, 4693, 4696, 4697, 4700, 4701, 4702,
|
|
4703, 4704, 4707, 4708, 4711, 4712, 4715, 4716, 4717, 4718,
|
|
4719, 4720, 4721, 4722, 4723, 4726, 4729, 4730, 4733, 4736,
|
|
|
|
/* 1301-(NFLS+NFPL) */
|
|
4737, 4740, 4741, 4742, 4745, 4746, 4749, 4752, 4753,
|
|
}
|
|
|
|
/* Amplitude coefficients (microarcsec); indexed using the nc array. */
|
|
a := []float64{
|
|
|
|
/* 1-105 */
|
|
-6844318.44, 9205236.26, 1328.67, 1538.18, 205833.11,
|
|
153041.79, -3309.73, 853.32, 2037.98, -2301.27,
|
|
81.46, 120.56, -20.39, -15.22, 1.73, -1.61, -0.10, 0.11,
|
|
-0.02, -0.02, -523908.04, 573033.42, -544.75, -458.66,
|
|
12814.01, 11714.49, 198.97, -290.91, 155.74, -143.27,
|
|
-2.75, -1.03, -1.27, -1.16, 0.00, -0.01, -90552.22,
|
|
97846.69, 111.23, 137.41, 2187.91, 2024.68, 41.44, -51.26,
|
|
26.92, -24.46, -0.46, -0.28, -0.22, -0.20, 82168.76,
|
|
-89618.24, -27.64, -29.05, -2004.36, -1837.32,
|
|
-36.07, 48.00, -24.43, 22.41, 0.47, 0.24, 0.20, 0.18,
|
|
58707.02, 7387.02, 470.05, -192.40, 164.33, -1312.21,
|
|
-179.73, -28.93, -17.36, -1.83, -0.50, 3.57, 0.00, 0.13,
|
|
-20557.78, 22438.42, -20.84, -17.40, 501.82, 459.68,
|
|
59.20, -67.30, 6.08, -5.61, -1.36, -1.19, 28288.28,
|
|
-674.99, -34.69, 35.80, -15.07, -632.54, -11.19, 0.78, -8.41,
|
|
0.17, 0.01, 0.07, -15406.85, 20069.50, 15.12,
|
|
|
|
/* 106-219 */
|
|
31.80, 448.76, 344.50, -5.77, 1.41, 4.59, -5.02, 0.17,
|
|
0.24, -11991.74, 12902.66, 32.46, 36.70, 288.49,
|
|
268.14, 5.70, -7.06, 3.57, -3.23, -0.06, -0.04,
|
|
-8584.95, -9592.72, 4.42, -13.20, -214.50, 192.06,
|
|
23.87, 29.83, 2.54, 2.40, 0.60, -0.48, 5095.50,
|
|
-6918.22, 7.19, 3.92, -154.91, -113.94, 2.86, -1.04,
|
|
-1.52, 1.73, -0.07, -0.10, -4910.93, -5331.13,
|
|
0.76, 0.40, -119.21, 109.81, 2.16, 3.20, 1.46, 1.33,
|
|
0.04, -0.02, -6245.02, -123.48, -6.68, -8.20, -2.76,
|
|
139.64, 2.71, 0.15, 1.86, 2511.85, -3323.89, 1.07,
|
|
-0.90, -74.33, -56.17, 1.16, -0.01, -0.75, 0.83, -0.02,
|
|
-0.04, 2307.58, 3143.98, -7.52, 7.50, 70.31, -51.60, 1.46,
|
|
0.16, -0.69, -0.79, 0.02, -0.05, 2372.58, 2554.51, 5.93,
|
|
-6.60, 57.12, -53.05, -0.96, -1.24, -0.71, -0.64, -0.01,
|
|
-2053.16, 2636.13, 5.13, 7.80, 58.94, 45.91, -0.42,
|
|
-0.12, 0.61, -0.66, 0.02, 0.03, -1825.49,
|
|
|
|
/* 220-339 */
|
|
-2423.59, 1.23, -2.00, -54.19, 40.82, -1.07, -1.02,
|
|
0.54, 0.61, -0.04, 0.04, 2521.07, -122.28, -5.97, 2.90,
|
|
-2.73, -56.37, -0.82, 0.13, -0.75, -1534.09, 1645.01,
|
|
6.29, 6.80, 36.78, 34.30, 0.92, -1.25, 0.46, -0.41,
|
|
-0.02, -0.01, 1898.27, 47.70, -0.72, 2.50, 1.07, -42.45,
|
|
-0.94, 0.02, -0.56, -1292.02, -1387.00, 0.00,
|
|
0.00, -31.01, 28.89, 0.68, 0.00, 0.38, 0.35, -0.01,
|
|
-0.01, -1234.96, 1323.81, 5.21, 5.90, 29.60, 27.61,
|
|
0.74, -1.22, 0.37, -0.33, -0.02, -0.01, 1137.48,
|
|
-1233.89, -0.04, -0.30, -27.59, -25.43, -0.61, 1.00,
|
|
-0.34, 0.31, 0.01, 0.01, -813.13, -1075.60, 0.40,
|
|
0.30, -24.05, 18.18, -0.40, -0.01, 0.24, 0.27, -0.01,
|
|
0.01, 1163.22, -60.90, -2.94, 1.30, -1.36, -26.01, -0.58,
|
|
0.07, -0.35, 1029.70, -55.55, -2.63, 1.10, -1.25, -23.02,
|
|
-0.52, 0.06, -0.31, -556.26, 852.85, 3.16, -4.48, 19.06,
|
|
12.44, -0.81, -0.27, 0.17, -0.21, 0.00, 0.02, -603.52,
|
|
|
|
/* 340-467 */
|
|
-800.34, 0.44, 0.10, -17.90, 13.49, -0.08, -0.01, 0.18,
|
|
0.20, -0.01, 0.01, -628.24, 684.99, -0.64, -0.50, 15.32,
|
|
14.05, 3.18, -4.19, 0.19, -0.17, -0.09, -0.07, -866.48,
|
|
-16.26, 0.52, -1.30, -0.36, 19.37, 0.43, -0.01, 0.26,
|
|
-512.37, 695.54, -1.47, -1.40, 15.55, 11.46, -0.16, 0.03,
|
|
0.15, -0.17, 0.01, 0.01, 506.65, 643.75, 2.54, -2.62,
|
|
14.40, -11.33, -0.77, -0.06, -0.15, -0.16, 0.00, 0.01,
|
|
664.57, 16.81, -0.40, 1.00, 0.38, -14.86, -3.71, -0.09,
|
|
-0.20, 405.91, 522.11, 0.99, -1.50, 11.67, -9.08, -0.25,
|
|
-0.02, -0.12, -0.13, -305.78, 326.60, 1.75, 1.90, 7.30,
|
|
6.84, 0.20, -0.04, 300.99, -325.03, -0.44, -0.50, -7.27,
|
|
-6.73, -1.01, 0.01, 0.00, 0.08, 0.00, 0.02, 438.51,
|
|
10.47, -0.56, -0.20, 0.24, -9.81, -0.24, 0.01, -0.13,
|
|
-264.02, 335.24, 0.99, 1.40, 7.49, 5.90, -0.27, -0.02,
|
|
284.09, 307.03, 0.32, -0.40, 6.87, -6.35, -0.99, -0.01,
|
|
-250.54, 327.11, 0.08, 0.40, 7.31, 5.60, -0.30, 230.72,
|
|
|
|
/* 468-595 */
|
|
-304.46, 0.08, -0.10, -6.81, -5.16, 0.27, 229.78, 304.17,
|
|
-0.60, 0.50, 6.80, -5.14, 0.33, 0.01, 256.30, -276.81,
|
|
-0.28, -0.40, -6.19, -5.73, -0.14, 0.01, -212.82, 269.45,
|
|
0.84, 1.20, 6.02, 4.76, 0.14, -0.02, 196.64, 272.05,
|
|
-0.84, 0.90, 6.08, -4.40, 0.35, 0.02, 188.95, 272.22,
|
|
-0.12, 0.30, 6.09, -4.22, 0.34, -292.37, -5.10, -0.32,
|
|
-0.40, -0.11, 6.54, 0.14, 0.01, 161.79, -220.67, 0.24,
|
|
0.10, -4.93, -3.62, -0.08, 261.54, -19.94, -0.95, 0.20,
|
|
-0.45, -5.85, -0.13, 0.02, 142.16, -190.79, 0.20, 0.10,
|
|
-4.27, -3.18, -0.07, 187.95, -4.11, -0.24, 0.30, -0.09,
|
|
-4.20, -0.09, 0.01, 0.00, 0.00, -79.08, 167.90, 0.04,
|
|
0.00, 3.75, 1.77, 121.98, 131.04, -0.08, 0.10, 2.93,
|
|
-2.73, -0.06, -172.95, -8.11, -0.40, -0.20, -0.18, 3.87,
|
|
0.09, 0.01, -160.15, -55.30, -14.04, 13.90, -1.23, 3.58,
|
|
0.40, 0.31, -115.40, 123.20, 0.60, 0.70, 2.75, 2.58,
|
|
0.08, -0.01, -168.26, -2.00, 0.20, -0.20, -0.04, 3.76,
|
|
|
|
/* 596-723 */
|
|
0.08, -114.49, 123.20, 0.32, 0.40, 2.75, 2.56, 0.07,
|
|
-0.01, 112.14, 120.70, 0.28, -0.30, 2.70, -2.51, -0.07,
|
|
-0.01, 161.34, 4.03, 0.20, 0.20, 0.09, -3.61, -0.08,
|
|
91.31, 126.64, -0.40, 0.40, 2.83, -2.04, -0.04, 0.01,
|
|
105.29, 112.90, 0.44, -0.50, 2.52, -2.35, -0.07, -0.01,
|
|
98.69, -106.20, -0.28, -0.30, -2.37, -2.21, -0.06, 0.01,
|
|
86.74, -112.94, -0.08, -0.20, -2.53, -1.94, -0.05, -134.81,
|
|
3.51, 0.20, -0.20, 0.08, 3.01, 0.07, 79.03, 107.31,
|
|
-0.24, 0.20, 2.40, -1.77, -0.04, 0.01, 132.81, -10.77,
|
|
-0.52, 0.10, -0.24, -2.97, -0.07, 0.01, -130.31, -0.90,
|
|
0.04, 0.00, 0.00, 2.91, -78.56, 85.32, 0.00, 0.00,
|
|
1.91, 1.76, 0.04, 0.00, 0.00, -41.53, 89.10, 0.02,
|
|
0.00, 1.99, 0.93, 66.03, -71.00, -0.20, -0.20, -1.59,
|
|
-1.48, -0.04, 60.50, 64.70, 0.36, -0.40, 1.45, -1.35,
|
|
-0.04, -0.01, -52.27, -70.01, 0.00, 0.00, -1.57, 1.17,
|
|
0.03, -52.95, 66.29, 0.32, 0.40, 1.48, 1.18, 0.04,
|
|
|
|
/* 724-851 */
|
|
-0.01, 51.02, 67.25, 0.00, 0.00, 1.50, -1.14, -0.03,
|
|
-55.66, -60.92, 0.16, -0.20, -1.36, 1.24, 0.03, -54.81,
|
|
-59.20, -0.08, 0.20, -1.32, 1.23, 0.03, 51.32, -55.60,
|
|
0.00, 0.00, -1.24, -1.15, -0.03, 48.29, 51.80, 0.20,
|
|
-0.20, 1.16, -1.08, -0.03, -45.59, -49.00, -0.12, 0.10,
|
|
-1.10, 1.02, 0.03, 40.54, -52.69, -0.04, -0.10, -1.18,
|
|
-0.91, -0.02, -40.58, -49.51, -1.00, 1.00, -1.11, 0.91,
|
|
0.04, 0.02, -43.76, 46.50, 0.36, 0.40, 1.04, 0.98,
|
|
0.03, -0.01, 62.65, -5.00, -0.24, 0.00, -0.11, -1.40,
|
|
-0.03, 0.01, -38.57, 49.59, 0.08, 0.10, 1.11, 0.86,
|
|
0.02, -33.22, -44.04, 0.08, -0.10, -0.98, 0.74, 0.02,
|
|
37.15, -39.90, -0.12, -0.10, -0.89, -0.83, -0.02, 36.68,
|
|
-39.50, -0.04, -0.10, -0.88, -0.82, -0.02, -53.22, -3.91,
|
|
-0.20, 0.00, -0.09, 1.19, 0.03, 32.43, -42.19, -0.04,
|
|
-0.10, -0.94, -0.73, -0.02, -51.00, -2.30, -0.12, -0.10,
|
|
0.00, 1.14, -29.53, -39.11, 0.04, 0.00, -0.87, 0.66,
|
|
|
|
/* 852-979 */
|
|
0.02, 28.50, -38.92, -0.08, -0.10, -0.87, -0.64, -0.02,
|
|
26.54, 36.95, -0.12, 0.10, 0.83, -0.59, -0.01, 26.54,
|
|
34.59, 0.04, -0.10, 0.77, -0.59, -0.02, 28.35, -32.55,
|
|
-0.16, 0.20, -0.73, -0.63, -0.01, -28.00, 30.40, 0.00,
|
|
0.00, 0.68, 0.63, 0.01, -27.61, 29.40, 0.20, 0.20,
|
|
0.66, 0.62, 0.02, 40.33, 0.40, -0.04, 0.10, 0.00,
|
|
-0.90, -23.28, 31.61, -0.08, -0.10, 0.71, 0.52, 0.01,
|
|
37.75, 0.80, 0.04, 0.10, 0.00, -0.84, 23.66, 25.80,
|
|
0.00, 0.00, 0.58, -0.53, -0.01, 21.01, -27.91, 0.00,
|
|
0.00, -0.62, -0.47, -0.01, -34.81, 2.89, 0.04, 0.00,
|
|
0.00, 0.78, -23.49, -25.31, 0.00, 0.00, -0.57, 0.53,
|
|
0.01, -23.47, 25.20, 0.16, 0.20, 0.56, 0.52, 0.02,
|
|
19.58, 27.50, -0.12, 0.10, 0.62, -0.44, -0.01, -22.67,
|
|
-24.40, -0.08, 0.10, -0.55, 0.51, 0.01, -19.97, 25.00,
|
|
0.12, 0.20, 0.56, 0.45, 0.01, 21.28, -22.80, -0.08,
|
|
-0.10, -0.51, -0.48, -0.01, -30.47, 0.91, 0.04, 0.00,
|
|
|
|
/* 980-1107 */
|
|
0.00, 0.68, 18.58, 24.00, 0.04, -0.10, 0.54, -0.42,
|
|
-0.01, -18.02, 24.40, -0.04, -0.10, 0.55, 0.40, 0.01,
|
|
17.74, 22.50, 0.08, -0.10, 0.50, -0.40, -0.01, -19.41,
|
|
20.70, 0.08, 0.10, 0.46, 0.43, 0.01, -18.64, 20.11,
|
|
0.00, 0.00, 0.45, 0.42, 0.01, -16.75, 21.60, 0.04,
|
|
0.10, 0.48, 0.37, 0.01, -18.42, -20.00, 0.00, 0.00,
|
|
-0.45, 0.41, 0.01, -26.77, 1.41, 0.08, 0.00, 0.00,
|
|
0.60, -26.17, -0.19, 0.00, 0.00, 0.00, 0.59, -15.52,
|
|
20.51, 0.00, 0.00, 0.46, 0.35, 0.01, -25.42, -1.91,
|
|
-0.08, 0.00, -0.04, 0.57, 0.45, -17.42, 18.10, 0.00,
|
|
0.00, 0.40, 0.39, 0.01, 16.39, -17.60, -0.08, -0.10,
|
|
-0.39, -0.37, -0.01, -14.37, 18.91, 0.00, 0.00, 0.42,
|
|
0.32, 0.01, 23.39, -2.40, -0.12, 0.00, 0.00, -0.52,
|
|
14.32, -18.50, -0.04, -0.10, -0.41, -0.32, -0.01, 15.69,
|
|
17.08, 0.00, 0.00, 0.38, -0.35, -0.01, -22.99, 0.50,
|
|
0.04, 0.00, 0.00, 0.51, 0.00, 0.00, 14.47, -17.60,
|
|
|
|
/* 1108-1235 */
|
|
-0.01, 0.00, -0.39, -0.32, -13.33, 18.40, -0.04, -0.10,
|
|
0.41, 0.30, 22.47, -0.60, -0.04, 0.00, 0.00, -0.50,
|
|
-12.78, -17.41, 0.04, 0.00, -0.39, 0.29, 0.01, -14.10,
|
|
-15.31, 0.04, 0.00, -0.34, 0.32, 0.01, 11.98, 16.21,
|
|
-0.04, 0.00, 0.36, -0.27, -0.01, 19.65, -1.90, -0.08,
|
|
0.00, 0.00, -0.44, 19.61, -1.50, -0.08, 0.00, 0.00,
|
|
-0.44, 13.41, -14.30, -0.04, -0.10, -0.32, -0.30, -0.01,
|
|
-13.29, 14.40, 0.00, 0.00, 0.32, 0.30, 0.01, 11.14,
|
|
-14.40, -0.04, 0.00, -0.32, -0.25, -0.01, 12.24, -13.38,
|
|
0.04, 0.00, -0.30, -0.27, -0.01, 10.07, -13.81, 0.04,
|
|
0.00, -0.31, -0.23, -0.01, 10.46, 13.10, 0.08, -0.10,
|
|
0.29, -0.23, -0.01, 16.55, -1.71, -0.08, 0.00, 0.00,
|
|
-0.37, 9.75, -12.80, 0.00, 0.00, -0.29, -0.22, -0.01,
|
|
9.11, 12.80, 0.00, 0.00, 0.29, -0.20, 0.00, 0.00,
|
|
-6.44, -13.80, 0.00, 0.00, -0.31, 0.14, -9.19, -12.00,
|
|
0.00, 0.00, -0.27, 0.21, -10.30, 10.90, 0.08, 0.10,
|
|
|
|
/* 1236-1363 */
|
|
0.24, 0.23, 0.01, 14.92, -0.80, -0.04, 0.00, 0.00,
|
|
-0.33, 10.02, -10.80, 0.00, 0.00, -0.24, -0.22, -0.01,
|
|
-9.75, 10.40, 0.04, 0.00, 0.23, 0.22, 0.01, 9.67,
|
|
-10.40, -0.04, 0.00, -0.23, -0.22, -0.01, -8.28, -11.20,
|
|
0.04, 0.00, -0.25, 0.19, 13.32, -1.41, -0.08, 0.00,
|
|
0.00, -0.30, 8.27, 10.50, 0.04, 0.00, 0.23, -0.19,
|
|
0.00, 0.00, 13.13, 0.00, 0.00, 0.00, 0.00, -0.29,
|
|
-12.93, 0.70, 0.04, 0.00, 0.00, 0.29, 7.91, -10.20,
|
|
0.00, 0.00, -0.23, -0.18, -7.84, -10.00, -0.04, 0.00,
|
|
-0.22, 0.18, 7.44, 9.60, 0.00, 0.00, 0.21, -0.17,
|
|
-7.64, 9.40, 0.08, 0.10, 0.21, 0.17, 0.01, -11.38,
|
|
0.60, 0.04, 0.00, 0.00, 0.25, -7.48, 8.30, 0.00,
|
|
0.00, 0.19, 0.17, -10.98, -0.20, 0.00, 0.00, 0.00,
|
|
0.25, 10.98, 0.20, 0.00, 0.00, 0.00, -0.25, 7.40,
|
|
-7.90, -0.04, 0.00, -0.18, -0.17, -6.09, 8.40, -0.04,
|
|
0.00, 0.19, 0.14, -6.94, -7.49, 0.00, 0.00, -0.17,
|
|
|
|
/* 1364-1491 */
|
|
0.16, 6.92, 7.50, 0.04, 0.00, 0.17, -0.15, 6.20,
|
|
8.09, 0.00, 0.00, 0.18, -0.14, -6.12, 7.80, 0.04,
|
|
0.00, 0.17, 0.14, 5.85, -7.50, 0.00, 0.00, -0.17,
|
|
-0.13, -6.48, 6.90, 0.08, 0.10, 0.15, 0.14, 0.01,
|
|
6.32, 6.90, 0.00, 0.00, 0.15, -0.14, 5.61, -7.20,
|
|
0.00, 0.00, -0.16, -0.13, 9.07, 0.00, 0.00, 0.00,
|
|
0.00, -0.20, 5.25, 6.90, 0.00, 0.00, 0.15, -0.12,
|
|
-8.47, -0.40, 0.00, 0.00, 0.00, 0.19, 6.32, -5.39,
|
|
-1.11, 1.10, -0.12, -0.14, 0.02, 0.02, 5.73, -6.10,
|
|
-0.04, 0.00, -0.14, -0.13, 4.70, 6.60, -0.04, 0.00,
|
|
0.15, -0.11, -4.90, -6.40, 0.00, 0.00, -0.14, 0.11,
|
|
-5.33, 5.60, 0.04, 0.10, 0.13, 0.12, 0.01, -4.81,
|
|
6.00, 0.04, 0.00, 0.13, 0.11, 5.13, 5.50, 0.04,
|
|
0.00, 0.12, -0.11, 4.50, 5.90, 0.00, 0.00, 0.13,
|
|
-0.10, -4.22, 6.10, 0.00, 0.00, 0.14, -4.53, 5.70,
|
|
0.00, 0.00, 0.13, 0.10, 4.18, 5.70, 0.00, 0.00,
|
|
|
|
/* 1492-1619 */
|
|
0.13, -4.75, -5.19, 0.00, 0.00, -0.12, 0.11, -4.06,
|
|
5.60, 0.00, 0.00, 0.13, -3.98, 5.60, -0.04, 0.00,
|
|
0.13, 4.02, -5.40, 0.00, 0.00, -0.12, 4.49, -4.90,
|
|
-0.04, 0.00, -0.11, -0.10, -3.62, -5.40, -0.16, 0.20,
|
|
-0.12, 0.00, 0.01, 4.38, 4.80, 0.00, 0.00, 0.11,
|
|
-6.40, -0.10, 0.00, 0.00, 0.00, 0.14, -3.98, 5.00,
|
|
0.04, 0.00, 0.11, -3.82, -5.00, 0.00, 0.00, -0.11,
|
|
-3.71, 5.07, 0.00, 0.00, 0.11, 4.14, 4.40, 0.00,
|
|
0.00, 0.10, -6.01, -0.50, -0.04, 0.00, 0.00, 0.13,
|
|
-4.04, 4.39, 0.00, 0.00, 0.10, 3.45, -4.72, 0.00,
|
|
0.00, -0.11, 3.31, 4.71, 0.00, 0.00, 0.11, 3.26,
|
|
-4.50, 0.00, 0.00, -0.10, -3.26, -4.50, 0.00, 0.00,
|
|
-0.10, -3.34, -4.40, 0.00, 0.00, -0.10, -3.74, -4.00,
|
|
3.70, 4.00, 3.34, -4.30, 3.30, -4.30, -3.66, 3.90,
|
|
0.04, 3.66, 3.90, 0.04, -3.62, -3.90, -3.61, 3.90,
|
|
-0.20, 5.30, 0.00, 0.00, 0.12, 3.06, 4.30, 3.30,
|
|
|
|
/* 1620-1747 */
|
|
4.00, 0.40, 0.20, 3.10, 4.10, -3.06, 3.90, -3.30,
|
|
-3.60, -3.30, 3.36, 0.01, 3.14, 3.40, -4.57, -0.20,
|
|
0.00, 0.00, 0.00, 0.10, -2.70, -3.60, 2.94, -3.20,
|
|
-2.90, 3.20, 2.47, -3.40, 2.55, -3.30, 2.80, -3.08,
|
|
2.51, 3.30, -4.10, 0.30, -0.12, -0.10, 4.10, 0.20,
|
|
-2.74, 3.00, 2.46, 3.23, -3.66, 1.20, -0.20, 0.20,
|
|
3.74, -0.40, -2.51, -2.80, -3.74, 2.27, -2.90, 0.00,
|
|
0.00, -2.50, 2.70, -2.51, 2.60, -3.50, 0.20, 3.38,
|
|
-2.22, -2.50, 3.26, -0.40, 1.95, -2.60, 3.22, -0.40,
|
|
-0.04, -1.79, -2.60, 1.91, 2.50, 0.74, 3.05, -0.04,
|
|
0.08, 2.11, -2.30, -2.11, 2.20, -1.87, -2.40, 2.03,
|
|
-2.20, -2.03, 2.20, 2.98, 0.00, 0.00, 2.98, -1.71,
|
|
2.40, 2.94, -0.10, -0.12, 0.10, 1.67, 2.40, -1.79,
|
|
2.30, -1.79, 2.20, -1.67, 2.20, 1.79, -2.00, 1.87,
|
|
-1.90, 1.63, -2.10, -1.59, 2.10, 1.55, -2.10, -1.55,
|
|
2.10, -2.59, -0.20, -1.75, -1.90, -1.75, 1.90, -1.83,
|
|
|
|
/* 1748-1875 */
|
|
-1.80, 1.51, 2.00, -1.51, -2.00, 1.71, 1.80, 1.31,
|
|
2.10, -1.43, 2.00, 1.43, 2.00, -2.43, -1.51, 1.90,
|
|
-1.47, 1.90, 2.39, 0.20, -2.39, 1.39, 1.90, 1.39,
|
|
-1.80, 1.47, -1.60, 1.47, -1.60, 1.43, -1.50, -1.31,
|
|
1.60, 1.27, -1.60, -1.27, 1.60, 1.27, -1.60, 2.03,
|
|
1.35, 1.50, -1.39, -1.40, 1.95, -0.20, -1.27, 1.49,
|
|
1.19, 1.50, 1.27, 1.40, 1.15, 1.50, 1.87, -0.10,
|
|
-1.12, -1.50, 1.87, -1.11, -1.50, -1.11, -1.50, 0.00,
|
|
0.00, 1.19, 1.40, 1.27, -1.30, -1.27, -1.30, -1.15,
|
|
1.40, -1.23, 1.30, -1.23, -1.30, 1.22, -1.29, 1.07,
|
|
-1.40, 1.75, -0.20, -1.03, -1.40, -1.07, 1.20, -1.03,
|
|
1.15, 1.07, 1.10, 1.51, -1.03, 1.10, 1.03, -1.10,
|
|
0.00, 0.00, -1.03, -1.10, 0.91, -1.20, -0.88, -1.20,
|
|
-0.88, 1.20, -0.95, 1.10, -0.95, -1.10, 1.43, -1.39,
|
|
0.95, -1.00, -0.95, 1.00, -0.80, 1.10, 0.91, -1.00,
|
|
-1.35, 0.88, 1.00, -0.83, 1.00, -0.91, 0.90, 0.91,
|
|
|
|
/* 1876-2003 */
|
|
0.90, 0.88, -0.90, -0.76, -1.00, -0.76, 1.00, 0.76,
|
|
1.00, -0.72, 1.00, 0.84, -0.90, 0.84, 0.90, 1.23,
|
|
0.00, 0.00, -0.52, -1.10, -0.68, 1.00, 1.19, -0.20,
|
|
1.19, 0.76, 0.90, 1.15, -0.10, 1.15, -0.10, 0.72,
|
|
-0.90, -1.15, -1.15, 0.68, 0.90, -0.68, 0.90, -1.11,
|
|
0.00, 0.00, 0.20, 0.79, 0.80, -1.11, -0.10, 0.00,
|
|
0.00, -0.48, -1.00, -0.76, -0.80, -0.72, -0.80, -1.07,
|
|
-0.10, 0.64, 0.80, -0.64, -0.80, 0.64, 0.80, 0.40,
|
|
0.60, 0.52, -0.50, -0.60, -0.80, -0.71, 0.70, -0.99,
|
|
0.99, 0.56, 0.80, -0.56, 0.80, 0.68, -0.70, 0.68,
|
|
0.70, -0.95, -0.64, 0.70, 0.64, 0.70, -0.60, 0.70,
|
|
-0.60, -0.70, -0.91, -0.10, -0.51, 0.76, -0.91, -0.56,
|
|
0.70, 0.88, 0.88, -0.63, -0.60, 0.55, -0.60, -0.80,
|
|
0.80, -0.80, -0.52, 0.60, 0.52, 0.60, 0.52, -0.60,
|
|
-0.48, 0.60, 0.48, 0.60, 0.48, 0.60, -0.76, 0.44,
|
|
-0.60, 0.52, -0.50, -0.52, 0.50, 0.40, 0.60, -0.40,
|
|
|
|
/* 2004-2131 */
|
|
-0.60, 0.40, -0.60, 0.72, -0.72, -0.51, -0.50, -0.48,
|
|
0.50, 0.48, -0.50, -0.48, 0.50, -0.48, 0.50, 0.48,
|
|
-0.50, -0.48, -0.50, -0.68, -0.68, 0.44, 0.50, -0.64,
|
|
-0.10, -0.64, -0.10, -0.40, 0.50, 0.40, 0.50, 0.40,
|
|
0.50, 0.00, 0.00, -0.40, -0.50, -0.36, -0.50, 0.36,
|
|
-0.50, 0.60, -0.60, 0.40, -0.40, 0.40, 0.40, -0.40,
|
|
0.40, -0.40, 0.40, -0.56, -0.56, 0.36, -0.40, -0.36,
|
|
0.40, 0.36, -0.40, -0.36, -0.40, 0.36, 0.40, 0.36,
|
|
0.40, -0.52, 0.52, 0.52, 0.32, 0.40, -0.32, 0.40,
|
|
-0.32, 0.40, -0.32, 0.40, 0.32, -0.40, -0.32, -0.40,
|
|
0.32, -0.40, 0.28, -0.40, -0.28, 0.40, 0.28, -0.40,
|
|
0.28, 0.40, 0.48, -0.48, 0.48, 0.36, -0.30, -0.36,
|
|
-0.30, 0.00, 0.00, 0.20, 0.40, -0.44, 0.44, -0.44,
|
|
-0.44, -0.44, -0.44, 0.32, -0.30, 0.32, 0.30, 0.24,
|
|
0.30, -0.12, -0.10, -0.28, 0.30, 0.28, 0.30, 0.28,
|
|
0.30, 0.28, -0.30, 0.28, -0.30, 0.28, -0.30, 0.28,
|
|
|
|
/* 2132-2259 */
|
|
0.30, -0.28, 0.30, 0.40, 0.40, -0.24, 0.30, 0.24,
|
|
-0.30, 0.24, -0.30, -0.24, -0.30, 0.24, 0.30, 0.24,
|
|
-0.30, -0.24, 0.30, 0.24, -0.30, -0.24, -0.30, 0.24,
|
|
-0.30, 0.24, 0.30, -0.24, 0.30, -0.24, 0.30, 0.20,
|
|
-0.30, 0.20, -0.30, 0.20, -0.30, 0.20, 0.30, 0.20,
|
|
-0.30, 0.20, -0.30, 0.20, 0.30, 0.20, 0.30, -0.20,
|
|
-0.30, 0.20, -0.30, 0.20, -0.30, -0.36, -0.36, -0.36,
|
|
-0.04, 0.30, 0.12, -0.10, -0.32, -0.24, 0.20, 0.24,
|
|
0.20, 0.20, -0.20, -0.20, -0.20, -0.20, -0.20, 0.20,
|
|
0.20, 0.20, -0.20, 0.20, 0.20, 0.20, 0.20, -0.20,
|
|
-0.20, 0.00, 0.00, -0.20, -0.20, -0.20, 0.20, -0.20,
|
|
0.20, 0.20, -0.20, -0.20, -0.20, 0.20, 0.20, 0.20,
|
|
0.20, 0.20, -0.20, 0.20, -0.20, 0.28, 0.28, 0.28,
|
|
0.28, 0.28, 0.28, -0.28, 0.28, 0.12, 0.00, 0.24,
|
|
0.16, -0.20, 0.16, -0.20, 0.16, -0.20, 0.16, 0.20,
|
|
-0.16, 0.20, 0.16, 0.20, -0.16, 0.20, -0.16, 0.20,
|
|
|
|
/* 2260-2387 */
|
|
-0.16, 0.20, 0.16, -0.20, 0.16, 0.20, 0.16, -0.20,
|
|
-0.16, 0.20, -0.16, -0.20, -0.16, 0.20, 0.16, 0.20,
|
|
0.16, -0.20, 0.16, -0.20, 0.16, 0.20, 0.16, 0.20,
|
|
0.16, 0.20, -0.16, -0.20, 0.16, 0.20, -0.16, 0.20,
|
|
0.16, 0.20, -0.16, -0.20, 0.16, -0.20, 0.16, -0.20,
|
|
-0.16, -0.20, 0.24, -0.24, -0.24, 0.24, 0.24, 0.12,
|
|
0.20, 0.12, 0.20, -0.12, -0.20, 0.12, -0.20, 0.12,
|
|
-0.20, -0.12, 0.20, -0.12, 0.20, -0.12, -0.20, 0.12,
|
|
0.20, 0.12, 0.20, 0.12, -0.20, -0.12, 0.20, 0.12,
|
|
-0.20, -0.12, 0.20, 0.12, 0.20, 0.00, 0.00, -0.12,
|
|
0.20, -0.12, 0.20, 0.12, -0.20, -0.12, 0.20, 0.12,
|
|
0.20, 0.00, -0.21, -0.20, 0.00, 0.00, 0.20, -0.20,
|
|
-0.20, -0.20, 0.20, -0.16, -0.10, 0.00, 0.17, 0.16,
|
|
0.16, 0.16, 0.16, -0.16, 0.16, 0.16, -0.16, 0.16,
|
|
-0.16, 0.16, 0.12, 0.10, 0.12, -0.10, -0.12, 0.10,
|
|
-0.12, 0.10, 0.12, -0.10, -0.12, 0.12, -0.12, 0.12,
|
|
|
|
/* 2388-2515 */
|
|
-0.12, 0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12,
|
|
-0.12, 0.12, 0.12, 0.12, 0.12, -0.12, -0.12, 0.12,
|
|
0.12, 0.12, -0.12, 0.12, -0.12, -0.12, -0.12, 0.12,
|
|
-0.12, -0.12, 0.12, 0.00, 0.11, 0.11, -122.67, 164.70,
|
|
203.78, 273.50, 3.58, 2.74, 6.18, -4.56, 0.00, -0.04,
|
|
0.00, -0.07, 57.44, -77.10, 95.82, 128.60, -1.77, -1.28,
|
|
2.85, -2.14, 82.14, 89.50, 0.00, 0.00, 2.00, -1.84,
|
|
-0.04, 47.73, -64.10, 23.79, 31.90, -1.45, -1.07, 0.69,
|
|
-0.53, -46.38, 50.50, 0.00, 0.00, 1.13, 1.04, 0.02,
|
|
-18.38, 0.00, 63.80, 0.00, 0.00, 0.41, 0.00, -1.43,
|
|
59.07, 0.00, 0.00, 0.00, 0.00, -1.32, 57.28, 0.00,
|
|
0.00, 0.00, 0.00, -1.28, -48.65, 0.00, -1.15, 0.00,
|
|
0.00, 1.09, 0.00, 0.03, -18.30, 24.60, -17.30, -23.20,
|
|
0.56, 0.41, -0.51, 0.39, -16.91, 26.90, 8.43, 13.30,
|
|
0.60, 0.38, 0.31, -0.19, 1.23, -1.70, -19.13, -25.70,
|
|
-0.03, -0.03, -0.58, 0.43, -0.72, 0.90, -17.34, -23.30,
|
|
|
|
/* 2516-2643 */
|
|
0.03, 0.02, -0.52, 0.39, -19.49, -21.30, 0.00, 0.00,
|
|
-0.48, 0.44, 0.01, 20.57, -20.10, 0.64, 0.70, -0.45,
|
|
-0.46, 0.00, -0.01, 4.89, 5.90, -16.55, 19.90, 0.14,
|
|
-0.11, 0.44, 0.37, 18.22, 19.80, 0.00, 0.00, 0.44,
|
|
-0.41, -0.01, 4.89, -5.30, -16.51, -18.00, -0.11, -0.11,
|
|
-0.41, 0.37, -17.86, 0.00, 17.10, 0.00, 0.00, 0.40,
|
|
0.00, -0.38, 0.32, 0.00, 24.42, 0.00, 0.00, -0.01,
|
|
0.00, -0.55, -23.79, 0.00, 0.00, 0.00, 0.00, 0.53,
|
|
14.72, -16.00, -0.32, 0.00, -0.36, -0.33, -0.01, 0.01,
|
|
3.34, -4.50, 11.86, 15.90, -0.11, -0.07, 0.35, -0.27,
|
|
-3.26, 4.40, 11.62, 15.60, 0.09, 0.07, 0.35, -0.26,
|
|
-19.53, 0.00, 5.09, 0.00, 0.00, 0.44, 0.00, -0.11,
|
|
-13.48, 14.70, 0.00, 0.00, 0.33, 0.30, 0.01, 10.86,
|
|
-14.60, 3.18, 4.30, -0.33, -0.24, 0.09, -0.07, -11.30,
|
|
-15.10, 0.00, 0.00, -0.34, 0.25, 0.01, 2.03, -2.70,
|
|
10.82, 14.50, -0.07, -0.05, 0.32, -0.24, 17.46, 0.00,
|
|
|
|
/* 2644-2771 */
|
|
0.00, 0.00, 0.00, -0.39, 16.43, 0.00, 0.52, 0.00,
|
|
0.00, -0.37, 0.00, -0.01, 9.35, 0.00, 13.29, 0.00,
|
|
0.00, -0.21, 0.00, -0.30, -10.42, 11.40, 0.00, 0.00,
|
|
0.25, 0.23, 0.01, 0.44, 0.50, -10.38, 11.30, 0.02,
|
|
-0.01, 0.25, 0.23, -14.64, 0.00, 0.00, 0.00, 0.00,
|
|
0.33, 0.56, 0.80, -8.67, 11.70, 0.02, -0.01, 0.26,
|
|
0.19, 13.88, 0.00, -2.47, 0.00, 0.00, -0.31, 0.00,
|
|
0.06, -1.99, 2.70, 7.72, 10.30, 0.06, 0.04, 0.23,
|
|
-0.17, -0.20, 0.00, 13.05, 0.00, 0.00, 0.00, 0.00,
|
|
-0.29, 6.92, -9.30, 3.34, 4.50, -0.21, -0.15, 0.10,
|
|
-0.07, -6.60, 0.00, 10.70, 0.00, 0.00, 0.15, 0.00,
|
|
-0.24, -8.04, -8.70, 0.00, 0.00, -0.19, 0.18, -10.58,
|
|
0.00, -3.10, 0.00, 0.00, 0.24, 0.00, 0.07, -7.32,
|
|
8.00, -0.12, -0.10, 0.18, 0.16, 1.63, 1.70, 6.96,
|
|
-7.60, 0.03, -0.04, -0.17, -0.16, -3.62, 0.00, 9.86,
|
|
0.00, 0.00, 0.08, 0.00, -0.22, 0.20, -0.20, -6.88,
|
|
|
|
/* 2772-2899 */
|
|
-7.50, 0.00, 0.00, -0.17, 0.15, -8.99, 0.00, 4.02,
|
|
0.00, 0.00, 0.20, 0.00, -0.09, -1.07, 1.40, -5.69,
|
|
-7.70, 0.03, 0.02, -0.17, 0.13, 6.48, -7.20, -0.48,
|
|
-0.50, -0.16, -0.14, -0.01, 0.01, 5.57, -7.50, 1.07,
|
|
1.40, -0.17, -0.12, 0.03, -0.02, 8.71, 0.00, 3.54,
|
|
0.00, 0.00, -0.19, 0.00, -0.08, 0.40, 0.00, 9.27,
|
|
0.00, 0.00, -0.01, 0.00, -0.21, -6.13, 6.70, -1.19,
|
|
-1.30, 0.15, 0.14, -0.03, 0.03, 5.21, -5.70, -2.51,
|
|
-2.60, -0.13, -0.12, -0.06, 0.06, 5.69, -6.20, -0.12,
|
|
-0.10, -0.14, -0.13, -0.01, 2.03, -2.70, 4.53, 6.10,
|
|
-0.06, -0.05, 0.14, -0.10, 5.01, 5.50, -2.51, 2.70,
|
|
0.12, -0.11, 0.06, 0.06, -1.91, 2.60, -4.38, -5.90,
|
|
0.06, 0.04, -0.13, 0.10, 4.65, -6.30, 0.00, 0.00,
|
|
-0.14, -0.10, -5.29, 5.70, 0.00, 0.00, 0.13, 0.12,
|
|
-2.23, -4.00, -4.65, 4.20, -0.09, 0.05, 0.10, 0.10,
|
|
-4.53, 6.10, 0.00, 0.00, 0.14, 0.10, 2.47, 2.70,
|
|
|
|
/* 2900-3027 */
|
|
-4.46, 4.90, 0.06, -0.06, 0.11, 0.10, -5.05, 5.50,
|
|
0.84, 0.90, 0.12, 0.11, 0.02, -0.02, 4.97, -5.40,
|
|
-1.71, 0.00, -0.12, -0.11, 0.00, 0.04, -0.99, -1.30,
|
|
4.22, -5.70, -0.03, 0.02, -0.13, -0.09, 0.99, 1.40,
|
|
4.22, -5.60, 0.03, -0.02, -0.13, -0.09, -4.69, -5.20,
|
|
0.00, 0.00, -0.12, 0.10, -3.42, 0.00, 6.09, 0.00,
|
|
0.00, 0.08, 0.00, -0.14, -4.65, -5.10, 0.00, 0.00,
|
|
-0.11, 0.10, 0.00, 0.00, -4.53, -5.00, 0.00, 0.00,
|
|
-0.11, 0.10, -2.43, -2.70, -3.82, 4.20, -0.06, 0.05,
|
|
0.10, 0.09, 0.00, 0.00, -4.53, 4.90, 0.00, 0.00,
|
|
0.11, 0.10, -4.49, -4.90, 0.00, 0.00, -0.11, 0.10,
|
|
2.67, -2.90, -3.62, -3.90, -0.06, -0.06, -0.09, 0.08,
|
|
3.94, -5.30, 0.00, 0.00, -0.12, -3.38, 3.70, -2.78,
|
|
-3.10, 0.08, 0.08, -0.07, 0.06, 3.18, -3.50, -2.82,
|
|
-3.10, -0.08, -0.07, -0.07, 0.06, -5.77, 0.00, 1.87,
|
|
0.00, 0.00, 0.13, 0.00, -0.04, 3.54, -4.80, -0.64,
|
|
|
|
/* 3028-3155 */
|
|
-0.90, -0.11, 0.00, -0.02, -3.50, -4.70, 0.68, -0.90,
|
|
-0.11, 0.00, -0.02, 5.49, 0.00, 0.00, 0.00, 0.00,
|
|
-0.12, 1.83, -2.50, 2.63, 3.50, -0.06, 0.00, 0.08,
|
|
3.02, -4.10, 0.68, 0.90, -0.09, 0.00, 0.02, 0.00,
|
|
0.00, 5.21, 0.00, 0.00, 0.00, 0.00, -0.12, -3.54,
|
|
3.80, 2.70, 3.60, -1.35, 1.80, 0.08, 0.00, 0.04,
|
|
-2.90, 3.90, 0.68, 0.90, 0.09, 0.00, 0.02, 0.80,
|
|
-1.10, -2.78, -3.70, -0.02, 0.00, -0.08, 4.10, 0.00,
|
|
-2.39, 0.00, 0.00, -0.09, 0.00, 0.05, -1.59, 2.10,
|
|
2.27, 3.00, 0.05, 0.00, 0.07, -2.63, 3.50, -0.48,
|
|
-0.60, -2.94, -3.20, -2.94, 3.20, 2.27, -3.00, -1.11,
|
|
-1.50, -0.07, 0.00, -0.03, -0.56, -0.80, -2.35, 3.10,
|
|
0.00, -0.60, -3.42, 1.90, -0.12, -0.10, 2.63, -2.90,
|
|
2.51, 2.80, -0.64, 0.70, -0.48, -0.60, 2.19, -2.90,
|
|
0.24, -0.30, 2.15, 2.90, 2.15, -2.90, 0.52, 0.70,
|
|
2.07, -2.80, -3.10, 0.00, 1.79, 0.00, 0.00, 0.07,
|
|
|
|
/* 3156-3283 */
|
|
0.00, -0.04, 0.88, 0.00, -3.46, 2.11, 2.80, -0.36,
|
|
0.50, 3.54, -0.20, -3.50, -1.39, 1.50, -1.91, -2.10,
|
|
-1.47, 2.00, 1.39, 1.90, 2.07, -2.30, 0.91, 1.00,
|
|
1.99, -2.70, 3.30, 0.00, 0.60, -0.44, -0.70, -1.95,
|
|
2.60, 2.15, -2.40, -0.60, -0.70, 3.30, 0.84, 0.00,
|
|
-3.10, -3.10, 0.00, -0.72, -0.32, 0.40, -1.87, -2.50,
|
|
1.87, -2.50, 0.32, 0.40, -0.24, 0.30, -1.87, -2.50,
|
|
-0.24, -0.30, 1.87, -2.50, -2.70, 0.00, 1.55, 2.03,
|
|
2.20, -2.98, -1.99, -2.20, 0.12, -0.10, -0.40, 0.50,
|
|
1.59, 2.10, 0.00, 0.00, -1.79, 2.00, -1.03, 1.40,
|
|
-1.15, -1.60, 0.32, 0.50, 1.39, -1.90, 2.35, -1.27,
|
|
1.70, 0.60, 0.80, -0.32, -0.40, 1.35, -1.80, 0.44,
|
|
0.00, 2.23, -0.84, 0.90, -1.27, -1.40, -1.47, 1.60,
|
|
-0.28, -0.30, -0.28, 0.40, -1.27, -1.70, 0.28, -0.40,
|
|
-1.43, -1.50, 0.00, 0.00, -1.27, -1.70, 2.11, -0.32,
|
|
-0.40, -1.23, 1.60, 1.19, -1.30, -0.72, -0.80, 0.72,
|
|
|
|
/* 3284-3411 */
|
|
-0.80, -1.15, -1.30, -1.35, -1.50, -1.19, -1.60, -0.12,
|
|
0.20, 1.79, 0.00, -0.88, -0.28, 0.40, 1.11, 1.50,
|
|
-1.83, 0.00, 0.56, -0.12, 0.10, -1.27, -1.40, 0.00,
|
|
0.00, 1.15, 1.50, -0.12, 0.20, 1.11, 1.50, 0.36,
|
|
-0.50, -1.07, -1.40, -1.11, 1.50, 1.67, 0.00, 0.80,
|
|
-1.11, 0.00, 1.43, 1.23, -1.30, -0.24, -1.19, -1.30,
|
|
-0.24, 0.20, -0.44, -0.90, -0.95, 1.10, 1.07, -1.40,
|
|
1.15, -1.30, 1.03, -1.10, -0.56, -0.60, -0.68, 0.90,
|
|
-0.76, -1.00, -0.24, -0.30, 0.95, -1.30, 0.56, 0.70,
|
|
0.84, -1.10, -0.56, 0.00, -1.55, 0.91, -1.30, 0.28,
|
|
0.30, 0.16, -0.20, 0.95, 1.30, 0.40, -0.50, -0.88,
|
|
-1.20, 0.95, -1.10, -0.48, -0.50, 0.00, 0.00, -1.07,
|
|
1.20, 0.44, -0.50, 0.95, 1.10, 0.00, 0.00, 0.92,
|
|
-1.30, 0.95, 1.00, -0.52, 0.60, 1.59, 0.24, -0.40,
|
|
0.91, 1.20, 0.84, -1.10, -0.44, -0.60, 0.84, 1.10,
|
|
-0.44, 0.60, -0.44, 0.60, -0.84, -1.10, -0.80, 0.00,
|
|
|
|
/* 3412-3539 */
|
|
1.35, 0.76, 0.20, -0.91, -1.00, 0.20, -0.30, -0.91,
|
|
-1.20, -0.95, 1.00, -0.48, -0.50, 0.88, 1.00, 0.48,
|
|
-0.50, -0.95, -1.10, 0.20, -0.20, -0.99, 1.10, -0.84,
|
|
1.10, -0.24, -0.30, 0.20, -0.30, 0.84, 1.10, -1.39,
|
|
0.00, -0.28, -0.16, 0.20, 0.84, 1.10, 0.00, 0.00,
|
|
1.39, 0.00, 0.00, -0.95, 1.00, 1.35, -0.99, 0.00,
|
|
0.88, -0.52, 0.00, -1.19, 0.20, 0.20, 0.76, -1.00,
|
|
0.00, 0.00, 0.76, 1.00, 0.00, 0.00, 0.76, 1.00,
|
|
-0.76, 1.00, 0.00, 0.00, 1.23, 0.76, 0.80, -0.32,
|
|
0.40, -0.72, 0.80, -0.40, -0.40, 0.00, 0.00, -0.80,
|
|
-0.90, -0.68, 0.90, -0.16, -0.20, -0.16, -0.20, 0.68,
|
|
-0.90, -0.36, 0.50, -0.56, -0.80, 0.72, -0.90, 0.44,
|
|
-0.60, -0.48, -0.70, -0.16, 0.00, -1.11, 0.32, 0.00,
|
|
-1.07, 0.60, -0.80, -0.28, -0.40, -0.64, 0.00, 0.91,
|
|
1.11, 0.64, -0.90, 0.76, -0.80, 0.00, 0.00, -0.76,
|
|
-0.80, 1.03, 0.00, -0.36, -0.64, -0.70, 0.36, -0.40,
|
|
|
|
/* 3540-3667 */
|
|
1.07, 0.36, -0.50, -0.52, -0.70, 0.60, 0.00, 0.88,
|
|
0.95, 0.00, 0.48, 0.16, -0.20, 0.60, 0.80, 0.16,
|
|
-0.20, -0.60, -0.80, 0.00, -1.00, 0.12, 0.20, 0.16,
|
|
-0.20, 0.68, 0.70, 0.59, -0.80, -0.99, -0.56, -0.60,
|
|
0.36, -0.40, -0.68, -0.70, -0.68, -0.70, -0.36, -0.50,
|
|
-0.44, 0.60, 0.64, 0.70, -0.12, 0.10, -0.52, 0.60,
|
|
0.36, 0.40, 0.00, 0.00, 0.95, -0.84, 0.00, 0.44,
|
|
0.56, 0.60, 0.32, -0.30, 0.00, 0.00, 0.60, 0.70,
|
|
0.00, 0.00, 0.60, 0.70, -0.12, -0.20, 0.52, -0.70,
|
|
0.00, 0.00, 0.56, 0.70, -0.12, 0.10, -0.52, -0.70,
|
|
0.00, 0.00, 0.88, -0.76, 0.00, -0.44, 0.00, 0.00,
|
|
-0.52, -0.70, 0.52, -0.70, 0.36, -0.40, -0.44, -0.50,
|
|
0.00, 0.00, 0.60, 0.60, 0.84, 0.00, 0.12, -0.24,
|
|
0.00, 0.80, -0.56, 0.60, -0.32, -0.30, 0.48, -0.50,
|
|
0.28, -0.30, -0.48, -0.50, 0.12, 0.20, 0.48, -0.60,
|
|
0.48, 0.60, -0.12, 0.20, 0.24, 0.00, 0.76, -0.52,
|
|
|
|
/* 3668-3795 */
|
|
-0.60, -0.52, 0.60, 0.48, -0.50, -0.24, -0.30, 0.12,
|
|
-0.10, 0.48, 0.60, 0.52, -0.20, 0.36, 0.40, -0.44,
|
|
0.50, -0.24, -0.30, -0.48, -0.60, -0.44, -0.60, -0.12,
|
|
0.10, 0.76, 0.76, 0.20, -0.20, 0.48, 0.50, 0.40,
|
|
-0.50, -0.24, -0.30, 0.44, -0.60, 0.44, -0.60, 0.36,
|
|
0.00, -0.64, 0.72, 0.00, -0.12, 0.00, -0.10, -0.40,
|
|
-0.60, -0.20, -0.20, -0.44, 0.50, -0.44, 0.50, 0.20,
|
|
0.20, -0.44, -0.50, 0.20, -0.20, -0.20, 0.20, -0.44,
|
|
-0.50, 0.64, 0.00, 0.32, -0.36, 0.50, -0.20, -0.30,
|
|
0.12, -0.10, 0.48, 0.50, -0.12, 0.30, -0.36, -0.50,
|
|
0.00, 0.00, 0.48, 0.50, -0.48, 0.50, 0.68, 0.00,
|
|
-0.12, 0.56, -0.40, 0.44, -0.50, -0.12, -0.10, 0.24,
|
|
0.30, -0.40, 0.40, 0.64, 0.00, -0.24, 0.64, 0.00,
|
|
-0.20, 0.00, 0.00, 0.44, -0.50, 0.44, 0.50, -0.12,
|
|
0.20, -0.36, -0.50, 0.12, 0.00, 0.64, -0.40, 0.50,
|
|
0.00, 0.10, 0.00, 0.00, -0.40, 0.50, 0.00, 0.00,
|
|
|
|
/* 3796-3923 */
|
|
-0.40, -0.50, 0.56, 0.00, 0.28, 0.00, 0.10, 0.36,
|
|
0.50, 0.00, -0.10, 0.36, -0.50, 0.36, 0.50, 0.00,
|
|
-0.10, 0.24, -0.20, -0.36, -0.40, 0.16, 0.20, 0.40,
|
|
-0.40, 0.00, 0.00, -0.36, -0.50, -0.36, -0.50, -0.32,
|
|
-0.50, -0.12, 0.10, 0.20, 0.20, -0.36, 0.40, -0.60,
|
|
0.60, 0.28, 0.00, 0.52, 0.12, -0.10, 0.40, 0.40,
|
|
0.00, -0.50, 0.20, -0.20, -0.32, 0.40, 0.16, 0.20,
|
|
-0.16, 0.20, 0.32, 0.40, 0.56, 0.00, -0.12, 0.32,
|
|
-0.40, -0.16, -0.20, 0.00, 0.00, 0.40, 0.40, -0.40,
|
|
-0.40, -0.40, 0.40, -0.36, 0.40, 0.12, 0.10, 0.00,
|
|
0.10, 0.36, 0.40, 0.00, -0.10, 0.36, 0.40, -0.36,
|
|
0.40, 0.00, 0.10, 0.32, 0.00, 0.44, 0.12, 0.20,
|
|
0.28, -0.40, 0.00, 0.00, 0.36, 0.40, 0.32, -0.40,
|
|
-0.16, 0.12, 0.10, 0.32, -0.40, 0.20, 0.30, -0.24,
|
|
0.30, 0.00, 0.10, 0.32, 0.40, 0.00, -0.10, -0.32,
|
|
-0.40, -0.32, 0.40, 0.00, 0.10, -0.52, -0.52, 0.52,
|
|
|
|
/* 3924-4051 */
|
|
0.32, -0.40, 0.00, 0.00, 0.32, 0.40, 0.32, -0.40,
|
|
0.00, 0.00, -0.32, -0.40, -0.32, 0.40, 0.32, 0.40,
|
|
0.00, 0.00, 0.32, 0.40, 0.00, 0.00, -0.32, -0.40,
|
|
0.00, 0.00, 0.32, 0.40, 0.16, 0.20, 0.32, -0.30,
|
|
-0.16, 0.00, -0.48, -0.20, 0.20, -0.28, -0.30, 0.28,
|
|
-0.40, 0.00, 0.00, 0.28, -0.40, 0.00, 0.00, 0.28,
|
|
-0.40, 0.00, 0.00, -0.28, -0.40, 0.28, 0.40, -0.28,
|
|
-0.40, -0.48, -0.20, 0.20, 0.24, 0.30, 0.44, 0.00,
|
|
0.16, 0.24, 0.30, 0.16, -0.20, 0.24, 0.30, -0.12,
|
|
0.20, 0.20, 0.30, -0.16, 0.20, 0.00, 0.00, 0.44,
|
|
-0.32, 0.30, 0.24, 0.00, -0.36, 0.36, 0.00, 0.24,
|
|
0.12, -0.20, 0.20, 0.30, -0.12, 0.00, -0.28, 0.30,
|
|
-0.24, 0.30, 0.12, 0.10, -0.28, -0.30, -0.28, 0.30,
|
|
0.00, 0.00, -0.28, -0.30, 0.00, 0.00, -0.28, -0.30,
|
|
0.00, 0.00, 0.28, 0.30, 0.00, 0.00, -0.28, -0.30,
|
|
-0.28, 0.30, 0.00, 0.00, -0.28, -0.30, 0.00, 0.00,
|
|
|
|
/* 4052-4179 */
|
|
0.28, 0.30, 0.00, 0.00, -0.28, 0.30, 0.28, -0.30,
|
|
-0.28, 0.30, 0.40, 0.40, -0.24, 0.30, 0.00, -0.10,
|
|
0.16, 0.00, 0.36, -0.20, 0.30, -0.12, -0.10, -0.24,
|
|
-0.30, 0.00, 0.00, -0.24, 0.30, -0.24, 0.30, 0.00,
|
|
0.00, -0.24, 0.30, -0.24, 0.30, 0.24, -0.30, 0.00,
|
|
0.00, 0.24, -0.30, 0.00, 0.00, 0.24, 0.30, 0.24,
|
|
-0.30, 0.24, 0.30, -0.24, 0.30, -0.24, 0.30, -0.20,
|
|
0.20, -0.16, -0.20, 0.00, 0.00, -0.32, 0.20, 0.00,
|
|
0.10, 0.20, -0.30, 0.20, -0.20, 0.12, 0.20, -0.16,
|
|
0.20, 0.16, 0.20, 0.20, 0.30, 0.20, 0.30, 0.00,
|
|
0.00, -0.20, 0.30, 0.00, 0.00, 0.20, 0.30, -0.20,
|
|
-0.30, -0.20, -0.30, 0.20, -0.30, 0.00, 0.00, 0.20,
|
|
0.30, 0.00, 0.00, 0.20, 0.30, 0.00, 0.00, 0.20,
|
|
0.30, 0.00, 0.00, 0.20, 0.30, 0.00, 0.00, 0.20,
|
|
-0.30, 0.00, 0.00, -0.20, -0.30, 0.00, 0.00, -0.20,
|
|
0.30, 0.00, 0.00, -0.20, 0.30, 0.00, 0.00, 0.36,
|
|
|
|
/* 4180-4307 */
|
|
0.00, 0.00, 0.36, 0.12, 0.10, -0.24, 0.20, 0.12,
|
|
-0.20, -0.16, -0.20, -0.13, 0.10, 0.22, 0.21, 0.20,
|
|
0.00, -0.28, 0.32, 0.00, -0.12, -0.20, -0.20, 0.12,
|
|
-0.10, 0.12, 0.10, -0.20, 0.20, 0.00, 0.00, -0.32,
|
|
0.32, 0.00, 0.00, 0.32, 0.32, 0.00, 0.00, -0.24,
|
|
-0.20, 0.24, 0.20, 0.20, 0.00, -0.24, 0.00, 0.00,
|
|
-0.24, -0.20, 0.00, 0.00, 0.24, 0.20, -0.24, -0.20,
|
|
0.00, 0.00, -0.24, 0.20, 0.16, -0.20, 0.12, 0.10,
|
|
0.20, 0.20, 0.00, -0.10, -0.12, 0.10, -0.16, -0.20,
|
|
-0.12, -0.10, -0.16, 0.20, 0.20, 0.20, 0.00, 0.00,
|
|
-0.20, 0.20, -0.20, 0.20, -0.20, 0.20, -0.20, 0.20,
|
|
0.20, -0.20, -0.20, -0.20, 0.00, 0.00, -0.20, 0.20,
|
|
0.20, 0.00, -0.20, 0.00, 0.00, -0.20, 0.20, -0.20,
|
|
0.20, -0.20, -0.20, -0.20, -0.20, 0.00, 0.00, 0.20,
|
|
0.20, 0.20, 0.20, 0.12, -0.20, -0.12, -0.10, 0.28,
|
|
-0.28, 0.16, -0.20, 0.00, -0.10, 0.00, 0.10, -0.16,
|
|
|
|
/* 4308-4435 */
|
|
0.20, 0.00, -0.10, -0.16, -0.20, 0.00, -0.10, 0.16,
|
|
-0.20, 0.16, -0.20, 0.00, 0.00, 0.16, 0.20, -0.16,
|
|
0.20, 0.00, 0.00, 0.16, 0.20, 0.16, -0.20, 0.16,
|
|
-0.20, -0.16, 0.20, 0.16, -0.20, 0.00, 0.00, 0.16,
|
|
0.20, 0.00, 0.00, 0.16, 0.20, 0.00, 0.00, -0.16,
|
|
-0.20, 0.16, -0.20, -0.16, -0.20, 0.00, 0.00, -0.16,
|
|
-0.20, 0.00, 0.00, -0.16, 0.20, 0.00, 0.00, 0.16,
|
|
-0.20, 0.16, 0.20, 0.16, 0.20, 0.00, 0.00, -0.16,
|
|
-0.20, 0.00, 0.00, -0.16, -0.20, 0.00, 0.00, 0.16,
|
|
0.20, 0.16, 0.20, 0.00, 0.00, 0.16, 0.20, 0.16,
|
|
-0.20, 0.16, 0.20, 0.00, 0.00, -0.16, 0.20, 0.00,
|
|
0.10, 0.12, -0.20, 0.12, -0.20, 0.00, -0.10, 0.00,
|
|
-0.10, 0.12, 0.20, 0.00, -0.10, -0.12, 0.20, -0.15,
|
|
0.20, -0.24, 0.24, 0.00, 0.00, 0.24, 0.24, 0.12,
|
|
-0.20, -0.12, -0.20, 0.00, 0.00, 0.12, 0.20, 0.12,
|
|
-0.20, 0.12, 0.20, 0.12, 0.20, 0.12, 0.20, 0.12,
|
|
|
|
/* 4436-4563 */
|
|
-0.20, -0.12, 0.20, 0.00, 0.00, 0.12, 0.20, 0.12,
|
|
0.00, -0.20, 0.00, 0.00, -0.12, -0.20, 0.12, -0.20,
|
|
0.00, 0.00, 0.12, 0.20, -0.12, 0.20, -0.12, 0.20,
|
|
0.12, -0.20, 0.00, 0.00, 0.12, 0.20, 0.20, 0.00,
|
|
0.12, 0.00, 0.00, -0.12, 0.20, 0.00, 0.00, -0.12,
|
|
-0.20, 0.00, 0.00, -0.12, -0.20, -0.12, -0.20, 0.00,
|
|
0.00, 0.12, -0.20, 0.12, -0.20, 0.12, 0.20, -0.12,
|
|
-0.20, 0.00, 0.00, 0.12, -0.20, 0.12, -0.20, 0.12,
|
|
0.20, 0.12, 0.00, 0.20, -0.12, -0.20, 0.00, 0.00,
|
|
0.12, 0.20, -0.16, 0.00, 0.16, -0.20, 0.20, 0.00,
|
|
0.00, -0.20, 0.00, 0.00, -0.20, 0.20, 0.00, 0.00,
|
|
0.20, 0.20, -0.20, 0.00, 0.00, -0.20, 0.12, 0.00,
|
|
-0.16, 0.20, 0.00, 0.00, 0.20, 0.12, -0.10, 0.00,
|
|
0.10, 0.16, -0.16, -0.16, -0.16, -0.16, -0.16, 0.00,
|
|
0.00, -0.16, 0.00, 0.00, -0.16, -0.16, -0.16, 0.00,
|
|
0.00, -0.16, 0.00, 0.00, 0.16, 0.00, 0.00, 0.16,
|
|
|
|
/* 4564-4691 */
|
|
0.00, 0.00, 0.16, 0.16, 0.00, 0.00, -0.16, 0.00,
|
|
0.00, -0.16, -0.16, 0.00, 0.00, 0.16, 0.00, 0.00,
|
|
-0.16, -0.16, 0.00, 0.00, -0.16, -0.16, 0.12, 0.10,
|
|
0.12, -0.10, 0.12, 0.10, 0.00, 0.00, 0.12, 0.10,
|
|
-0.12, 0.10, 0.00, 0.00, 0.12, 0.10, 0.12, -0.10,
|
|
0.00, 0.00, -0.12, -0.10, 0.00, 0.00, 0.12, 0.10,
|
|
0.12, 0.00, 0.00, 0.12, 0.00, 0.00, -0.12, 0.00,
|
|
0.00, 0.12, 0.12, 0.12, 0.12, 0.12, 0.00, 0.00,
|
|
0.12, 0.00, 0.00, 0.12, 0.12, 0.00, 0.00, 0.12,
|
|
0.00, 0.00, 0.12, -0.12, -0.12, 0.12, 0.12, -0.12,
|
|
-0.12, 0.00, 0.00, 0.12, -0.12, 0.12, 0.12, -0.12,
|
|
-0.12, 0.00, 0.00, -0.12, -0.12, 0.00, 0.00, -0.12,
|
|
0.12, 0.00, 0.00, 0.12, 0.00, 0.00, 0.12, 0.00,
|
|
0.00, 0.12, -0.12, 0.00, 0.00, -0.12, 0.12, -0.12,
|
|
-0.12, 0.12, 0.00, 0.00, 0.12, 0.12, 0.12, -0.12,
|
|
0.00, 0.00, -0.12, -0.12, -0.12, 0.00, 0.00, -0.12,
|
|
|
|
/* 4692-NA */
|
|
-0.12, 0.00, 0.00, 0.12, 0.12, 0.00, 0.00, -0.12,
|
|
-0.12, -0.12, -0.12, 0.12, 0.00, 0.00, 0.12, -0.12,
|
|
0.00, 0.00, -0.12, -0.12, 0.00, 0.00, 0.12, -0.12,
|
|
-0.12, -0.12, -0.12, 0.12, 0.12, -0.12, -0.12, 0.00,
|
|
0.00, -0.12, 0.00, 0.00, -0.12, 0.12, 0.00, 0.00,
|
|
0.12, 0.00, 0.00, -0.12, -0.12, 0.00, 0.00, -0.12,
|
|
-0.12, 0.12, 0.00, 0.00, 0.12, 0.12, 0.00, 0.00,
|
|
0.12, 0.00, 0.00, 0.12, 0.12, 0.08, 0.00, 0.04,
|
|
}
|
|
|
|
/* Number of amplitude coefficients */
|
|
NA := len(a)
|
|
|
|
/* Amplitude usage: X or Y, sin or cos, power of T. */
|
|
jaxy := []int{0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}
|
|
jasc := []int{0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0}
|
|
japt := []int{0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4}
|
|
|
|
/* Miscellaneous */
|
|
var t, w float64
|
|
var pt [MAXPT + 1]float64
|
|
var fa [14]float64
|
|
var xypr, xypl, xyls, sc [2]float64
|
|
var arg float64
|
|
|
|
var jpt, i, j, jxy, ialast, ifreq, m, ia, jsc int
|
|
|
|
/* ------------------------------------------------------------------ */
|
|
|
|
/* Interval between fundamental date J2000.0 and given date (JC). */
|
|
t = ((date1 - DJ00) + date2) / DJC
|
|
|
|
/* Powers of T. */
|
|
w = 1.0
|
|
for jpt = 0; jpt <= MAXPT; jpt++ {
|
|
pt[jpt] = w
|
|
w *= t
|
|
}
|
|
|
|
/* Initialize totals in X and Y: polynomial, luni-solar, planetary. */
|
|
for jxy = 0; jxy < 2; jxy++ {
|
|
xypr[jxy] = 0.0
|
|
xyls[jxy] = 0.0
|
|
xypl[jxy] = 0.0
|
|
}
|
|
|
|
/* --------------------------------- */
|
|
/* Fundamental arguments (IERS 2003) */
|
|
/* --------------------------------- */
|
|
|
|
/* Mean anomaly of the Moon. */
|
|
fa[0] = Fal03(t)
|
|
|
|
/* Mean anomaly of the Sun. */
|
|
fa[1] = Falp03(t)
|
|
|
|
/* Mean argument of the latitude of the Moon. */
|
|
fa[2] = Faf03(t)
|
|
|
|
/* Mean elongation of the Moon from the Sun. */
|
|
fa[3] = Fad03(t)
|
|
|
|
/* Mean longitude of the ascending node of the Moon. */
|
|
fa[4] = Faom03(t)
|
|
|
|
/* Planetary longitudes, Mercury through Neptune. */
|
|
fa[5] = Fame03(t)
|
|
fa[6] = Fave03(t)
|
|
fa[7] = Fae03(t)
|
|
fa[8] = Fama03(t)
|
|
fa[9] = Faju03(t)
|
|
fa[10] = Fasa03(t)
|
|
fa[11] = Faur03(t)
|
|
fa[12] = Fane03(t)
|
|
|
|
/* General accumulated precession in longitude. */
|
|
fa[13] = Fapa03(t)
|
|
|
|
/* -------------------------------------- */
|
|
/* Polynomial part of precession-nutation */
|
|
/* -------------------------------------- */
|
|
|
|
for jxy = 0; jxy < 2; jxy++ {
|
|
for j = MAXPT; j >= 0; j-- {
|
|
xypr[jxy] += xyp[jxy][j] * pt[j]
|
|
}
|
|
}
|
|
|
|
/* ---------------------------------- */
|
|
/* Nutation periodic terms, planetary */
|
|
/* ---------------------------------- */
|
|
|
|
/* Work backwards through the coefficients per frequency list. */
|
|
ialast = NA
|
|
for ifreq = NFPL - 1; ifreq >= 0; ifreq-- {
|
|
|
|
/* Obtain the argument functions. */
|
|
arg = 0.0
|
|
for i = 0; i < 14; i++ {
|
|
m = mfapl[ifreq][i]
|
|
if m != 0 {
|
|
arg += float64(m) * fa[i]
|
|
}
|
|
}
|
|
sc[0] = sin(arg)
|
|
sc[1] = cos(arg)
|
|
|
|
/* Work backwards through the amplitudes at this frequency. */
|
|
ia = nc[ifreq+NFLS]
|
|
for i = ialast; i >= ia; i-- {
|
|
|
|
/* Coefficient number (0 = 1st). */
|
|
j = i - ia
|
|
|
|
/* X or Y. */
|
|
jxy = jaxy[j]
|
|
|
|
/* Sin or cos. */
|
|
jsc = jasc[j]
|
|
|
|
/* Power of T. */
|
|
jpt = japt[j]
|
|
|
|
/* Accumulate the component. */
|
|
xypl[jxy] += a[i-1] * sc[jsc] * pt[jpt]
|
|
}
|
|
ialast = ia - 1
|
|
}
|
|
|
|
/* ----------------------------------- */
|
|
/* Nutation periodic terms, luni-solar */
|
|
/* ----------------------------------- */
|
|
|
|
/* Continue working backwards through the number of coefficients list. */
|
|
for ifreq = NFLS - 1; ifreq >= 0; ifreq-- {
|
|
|
|
/* Obtain the argument functions. */
|
|
arg = 0.0
|
|
for i = 0; i < 5; i++ {
|
|
m = mfals[ifreq][i]
|
|
if m != 0 {
|
|
arg += float64(m) * fa[i]
|
|
}
|
|
}
|
|
sc[0] = sin(arg)
|
|
sc[1] = cos(arg)
|
|
|
|
/* Work backwards through the amplitudes at this frequency. */
|
|
ia = nc[ifreq]
|
|
for i = ialast; i >= ia; i-- {
|
|
|
|
/* Coefficient number (0 = 1st). */
|
|
j = i - ia
|
|
|
|
/* X or Y. */
|
|
jxy = jaxy[j]
|
|
|
|
/* Sin or cos. */
|
|
jsc = jasc[j]
|
|
|
|
/* Power of T. */
|
|
jpt = japt[j]
|
|
|
|
/* Accumulate the component. */
|
|
xyls[jxy] += a[i-1] * sc[jsc] * pt[jpt]
|
|
}
|
|
ialast = ia - 1
|
|
}
|
|
|
|
/* ------------------------------------ */
|
|
/* Results: CIP unit vector components */
|
|
/* ------------------------------------ */
|
|
|
|
*x = DAS2R * (xypr[0] + (xyls[0]+xypl[0])/1e6)
|
|
*y = DAS2R * (xypr[1] + (xyls[1]+xypl[1])/1e6)
|
|
}
|
|
|
|
/*
|
|
Xys00a CIP and s, IAU 2000A
|
|
|
|
For a given TT date, compute the X,Y coordinates of the Celestial
|
|
Intermediate Pole and the CIO locator s, using the IAU 2000A
|
|
precession-nutation model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
x,y float64 Celestial Intermediate Pole (Note 2)
|
|
s float64 the CIO locator s (Note 3)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The Celestial Intermediate Pole coordinates are the x,y
|
|
components of the unit vector in the Geocentric Celestial
|
|
Reference System.
|
|
|
|
3) The CIO locator s (in radians) positions the Celestial
|
|
Intermediate Origin on the equator of the CIP.
|
|
|
|
4) A faster, but slightly less accurate result (about 1 mas for
|
|
X,Y), can be obtained by using instead the iauXys00b function.
|
|
|
|
Called:
|
|
Pnm00a classical NPB matrix, IAU 2000A
|
|
Bpn2xy extract CIP X,Y coordinates from NPB matrix
|
|
S00 the CIO locator s, given X,Y, IAU 2000A
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func Xys00a(date1, date2 float64, x, y, s *float64) {
|
|
var rbpn [3][3]float64
|
|
|
|
/* Form the bias-precession-nutation matrix, IAU 2000A. */
|
|
Pnm00a(date1, date2, &rbpn)
|
|
|
|
/* Extract X,Y. */
|
|
Bpn2xy(rbpn, x, y)
|
|
|
|
/* Obtain s. */
|
|
*s = S00(date1, date2, *x, *y)
|
|
}
|
|
|
|
/*
|
|
Xys00b CIP and s, IAU 2000B
|
|
|
|
For a given TT date, compute the X,Y coordinates of the Celestial
|
|
Intermediate Pole and the CIO locator s, using the IAU 2000B
|
|
precession-nutation model.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
x,y float64 Celestial Intermediate Pole (Note 2)
|
|
s float64 the CIO locator s (Note 3)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The Celestial Intermediate Pole coordinates are the x,y
|
|
components of the unit vector in the Geocentric Celestial
|
|
Reference System.
|
|
|
|
3) The CIO locator s (in radians) positions the Celestial
|
|
Intermediate Origin on the equator of the CIP.
|
|
|
|
4) The present function is faster, but slightly less accurate (about
|
|
1 mas in X,Y), than the iauXys00a function.
|
|
|
|
Called:
|
|
Pnm00b classical NPB matrix, IAU 2000B
|
|
Bpn2xy extract CIP X,Y coordinates from NPB matrix
|
|
S00 the CIO locator s, given X,Y, IAU 2000A
|
|
|
|
Reference:
|
|
|
|
McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
|
|
IERS Technical Note No. 32, BKG (2004)
|
|
*/
|
|
func Xys00b(date1, date2 float64, x, y, s *float64) {
|
|
var rbpn [3][3]float64
|
|
|
|
/* Form the bias-precession-nutation matrix, IAU 2000A. */
|
|
Pnm00b(date1, date2, &rbpn)
|
|
|
|
/* Extract X,Y. */
|
|
Bpn2xy(rbpn, x, y)
|
|
|
|
/* Obtain s. */
|
|
*s = S00(date1, date2, *x, *y)
|
|
}
|
|
|
|
/*
|
|
Xys06a CIP and s, IAU 2006/2000A
|
|
|
|
For a given TT date, compute the X,Y coordinates of the Celestial
|
|
Intermediate Pole and the CIO locator s, using the IAU 2006
|
|
precession and IAU 2000A nutation models.
|
|
|
|
Given:
|
|
date1,date2 float64 TT as a 2-part Julian Date (Note 1)
|
|
|
|
Returned:
|
|
x,y float64 Celestial Intermediate Pole (Note 2)
|
|
s float64 the CIO locator s (Note 3)
|
|
|
|
Notes:
|
|
|
|
1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
convenient way between the two arguments. For example,
|
|
JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
among others:
|
|
|
|
date1 date2
|
|
|
|
2450123.7 0.0 (JD method)
|
|
2451545.0 -1421.3 (J2000 method)
|
|
2400000.5 50123.2 (MJD method)
|
|
2450123.5 0.2 (date & time method)
|
|
|
|
The JD method is the most natural and convenient to use in
|
|
cases where the loss of several decimal digits of resolution
|
|
is acceptable. The J2000 method is best matched to the way
|
|
the argument is handled internally and will deliver the
|
|
optimum resolution. The MJD method and the date & time methods
|
|
are both good compromises between resolution and convenience.
|
|
|
|
2) The Celestial Intermediate Pole coordinates are the x,y components
|
|
of the unit vector in the Geocentric Celestial Reference System.
|
|
|
|
3) The CIO locator s (in radians) positions the Celestial
|
|
Intermediate Origin on the equator of the CIP.
|
|
|
|
4) Series-based solutions for generating X and Y are also available:
|
|
see Capitaine & Wallace (2006) and iauXy06.
|
|
|
|
Called:
|
|
Pnm06a classical NPB matrix, IAU 2006/2000A
|
|
Bpn2xy extract CIP X,Y coordinates from NPB matrix
|
|
S06 the CIO locator s, given X,Y, IAU 2006
|
|
|
|
References:
|
|
|
|
Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855
|
|
|
|
Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981
|
|
*/
|
|
func Xys06a(date1, date2 float64, x, y, s *float64) {
|
|
var rbpn [3][3]float64
|
|
|
|
/* Form the bias-precession-nutation matrix, IAU 2006/2000A. */
|
|
Pnm06a(date1, date2, &rbpn)
|
|
|
|
/* Extract X,Y. */
|
|
Bpn2xy(rbpn, x, y)
|
|
|
|
/* Obtain s. */
|
|
*s = S06(date1, date2, *x, *y)
|
|
}
|