1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-09-08 22:26:33 -04:00
sdrangel/sdrbase/util/astronomy.cpp
Jon Beniston cddc8c9b83 Star Tracker updates.
Plot Sun and Moon on sky temperature chart.
Plot markers on Galactic line-of-sight chart.
Create animations from Galactic line-of-sight chart.
Allow weather at antenna location to be downloaded from openweathermap.org
Allow target to be entered as Galactic longitude / latitude.
Add azimuth and elevation offsets to support scans around targets.
Add S7, S8 and S9 targets.
Refactor some code from GUI to main plugin, so computed values can be used in other plugins.
2021-10-12 11:07:56 +01:00

3710 lines
184 KiB
C++

///////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2021 Jon Beniston, M7RCE //
// Copyright (C) 2004 Rutherford Appleton Laboratory //
// Copyright (C) 2012 Science and Technology Facilities Council. //
// Copyright (C) 2013-2021, NumFOCUS Foundation. //
// //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation as version 3 of the License, or //
// (at your option) any later version. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License V3 for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
///////////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <QRegExp>
#include <QDateTime>
#include <QDebug>
#include "util/units.h"
#include "astronomy.h"
const double Astronomy::m_boltzmann = 1.380649e-23; //!< Boltzmann constant (k) in J/K
const double Astronomy::m_hydrogenLineFrequency = 1420405751.768; //!< Hydrogen line frequency in Hz
const double Astronomy::m_hydroxylLineFrequency = 1612231000.0; //!< Strongest hydroxyl line frequency in Hz
const double Astronomy::m_deuteriumLineFrequency = 327384000.0; //!< Deuterium line frequency in Hz - https://www.nap.edu/read/21774/chapter/11
const double Astronomy::m_speedOfLight = 299792458.0; // Speed of light in m/s
const double Astronomy::m_hydrogenMass = 1.674e-27; // Mass of hydrogen atom in kg (same as proton)
// Function prototypes
static void palRefz(double zu, double refa, double refb, double *zr);
static void palRefco (double hm, double tdk, double pmb, double rh,
double wl, double phi, double tlr, double eps,
double *refa, double *refb);
static void palRefro( double zobs, double hm, double tdk, double pmb,
double rh, double wl, double phi, double tlr,
double eps, double * ref);
static void palEpv( double date, double ph[3], double vh[3],
double pb[3], double vb[3] );
static int eraEpv00(double date1, double date2,
double pvh[2][3], double pvb[2][3]);
// Calculate Julian date (days since January 1, 4713 BC) from Gregorian calendar date
double Astronomy::julianDate(int year, int month, int day, int hours, int minutes, int seconds)
{
int julian_day;
double julian_date;
// From: https://en.wikipedia.org/wiki/Julian_day
julian_day = (1461 * (year + 4800 + (month - 14)/12))/4 +(367 * (month - 2 - 12 * ((month - 14)/12)))/12 - (3 * ((year + 4900 + (month - 14)/12)/100))/4 + day - 32075;
julian_date = julian_day + (hours/24.0 - 0.5) + minutes/(24.0*60.0) + seconds/(24.0*60.0*60.0);
return julian_date;
}
// Calculate Julian date
double Astronomy::julianDate(QDateTime dt)
{
QDateTime utc = dt.toUTC();
QDate date = utc.date();
QTime time = utc.time();
return julianDate(date.year(), date.month(), date.day(), time.hour(), time.minute(), time.second());
}
// Calculate modified Julian date
double Astronomy::modifiedJulianDate(QDateTime dt)
{
return Astronomy::julianDate(dt) - 2400000.5;
}
// Get Julian date of J2000 Epoch
double Astronomy::jd_j2000(void)
{
static double j2000 = 0.0;
if (j2000 == 0.0) {
j2000 = julianDate(2000, 1, 1, 12, 0, 0);
}
return j2000;
}
// Get Julian date of B1950 Epoch
double Astronomy::jd_b1950(void)
{
static double b1950 = 0.0;
if (b1950 == 0.0) {
b1950 = julianDate(1949, 12, 31, 22, 9, 0);
}
return b1950;
}
// Get Julian date of current time Epoch
double Astronomy::jd_now(void)
{
time_t system_time;
struct tm *utc_time;
// Get current time in seconds since Unix Epoch (1970)
time(&system_time);
// Convert to UTC (GMT)
utc_time = gmtime(&system_time);
// Convert to Julian date
return julianDate(utc_time->tm_year + 1900, utc_time->tm_mon + 1, utc_time->tm_mday,
utc_time->tm_hour, utc_time->tm_min, utc_time->tm_sec);
}
// Precess a RA/DEC between two given Epochs
RADec Astronomy::precess(RADec rd_in, double jd_from, double jd_to)
{
RADec rd_out;
double x, y, z;
double xp, yp, zp;
double ra_rad, dec_rad;
double rot[3][3]; // [row][col]
double ra_deg;
double days_per_century = 36524.219878;
double t0 = (jd_from - jd_b1950())/days_per_century; // Tropical centuries since B1950.0
double t = (jd_to - jd_from)/days_per_century; // Tropical centuries from starting epoch to ending epoch
// From: https://www.cloudynights.com/topic/561254-ra-dec-epoch-conversion/
rot[0][0] = 1.0 - ((29696.0 + 26.0*t0)*t*t - 13.0*t*t*t)*.00000001;
rot[1][0] = ((2234941.0 + 1355.0*t0)*t - 676.0*t*t + 221.0*t*t*t)*.00000001;
rot[2][0] = ((971690.0 - 414.0*t0)*t + 207.0*t*t + 96.0*t*t*t)*.00000001;
rot[0][1] = -rot[1][0];
rot[1][1] = 1.0 - ((24975.0 + 30.0*t0)*t*t - 15.0*t*t*t)*.00000001;
rot[2][1] = -((10858.0 + 2.0*t0)*t*t)*.00000001;
rot[0][2] = -rot[2][0];
rot[1][2] = rot[2][1];
rot[2][2] = 1.0 - ((4721.0 - 4.0*t0)*t*t)*.00000001;
// Hours to degrees
ra_deg = rd_in.ra*(360.0/24.0);
// Convert to rectangular coordinates
ra_rad = Units::degreesToRadians(ra_deg);
dec_rad = Units::degreesToRadians(rd_in.dec);
x = cos(ra_rad) * cos(dec_rad);
y = sin(ra_rad) * cos(dec_rad);
z = sin(dec_rad);
// Rotate
xp = rot[0][0]*x + rot[0][1]*y + rot[0][2]*z;
yp = rot[1][0]*x + rot[1][1]*y + rot[1][2]*z;
zp = rot[2][0]*x + rot[2][1]*y + rot[2][2]*z;
// Convert back to spherical coordinates
rd_out.ra = Units::radiansToDegrees(atan(yp/xp));
if (xp < 0.0) {
rd_out.ra += 180.0;
} else if ((yp < 0) && (xp > 0)) {
rd_out.ra += 360.0;
}
rd_out.dec = Units::radiansToDegrees(asin(zp));
// Degrees to hours
rd_out.ra /= (360.0/24.0);
return rd_out;
}
// Calculate local mean sidereal time (LMST) in degrees
double Astronomy::localSiderealTime(QDateTime dateTime, double longitude)
{
double jd = julianDate(dateTime);
double d = (jd - jd_j2000()); // Days since J2000 epoch (including fraction)
double f = fmod(jd, 1.0); // Fractional part is decimal days
double ut = (f+0.5)*24.0; // Universal time in decimal hours
// https://astronomy.stackexchange.com/questions/24859/local-sidereal-time
// 100.46 is offset for GMST at 0h UT on 1 Jan 2000
// 0.985647 is number of degrees per day over 360 the Earth rotates in one solar day
// Approx to 0.3 arcseconds
return fmod(100.46 + 0.985647 * d + longitude + (360/24) * ut, 360.0);
}
// Convert from J2000 right ascension (decimal hours) and declination (decimal degrees) to altitude and azimuth, for location (decimal degrees) and time
AzAlt Astronomy::raDecToAzAlt(RADec rd, double latitude, double longitude, QDateTime dt, bool j2000)
{
AzAlt aa;
double ra_deg; // Right ascension in degrees
double lst_deg; // Local sidereal time in degrees
double ha; // Hour angle
double a, az;
double dec_rad, lat_rad, ha_rad, alt_rad; // Corresponding variables as radians
double jd = julianDate(dt);
// Precess RA/DEC from J2000 Epoch to desired (typically current) Epoch
if (j2000)
rd = precess(rd, jd_j2000(), jd);
// Calculate local mean sidereal time (LMST) in degrees
// https://astronomy.stackexchange.com/questions/24859/local-sidereal-time
// 100.46 is offset for GMST at 0h UT on 1 Jan 2000
// 0.985647 is number of degrees per day over 360 the Earth rotates in one solar day
// Approx to 0.3 arcseconds
lst_deg = Astronomy::localSiderealTime(dt, longitude);
// Convert right ascension from hours to degrees
ra_deg = rd.ra * (360.0/24.0);
// Calculate hour angle
ha = fmod(lst_deg - ra_deg, 360.0);
// Convert degrees to radians
dec_rad = Units::degreesToRadians(rd.dec);
lat_rad = Units::degreesToRadians(latitude);
ha_rad = Units::degreesToRadians(ha);
// Calculate altitude and azimuth - no correction for atmospheric refraction
// From: http://www.convertalot.com/celestial_horizon_co-ordinates_calculator.html
alt_rad = asin(sin(dec_rad)*sin(lat_rad) + cos(dec_rad)*cos(lat_rad)*cos(ha_rad));
a = Units::radiansToDegrees(acos((sin(dec_rad)-sin(alt_rad)*sin(lat_rad)) / (cos(alt_rad)*cos(lat_rad))));
if (sin(ha_rad) < 0.0) {
az = a;
} else {
az = 360.0 - a;
}
aa.alt = Units::radiansToDegrees(alt_rad);
aa.az = az;
return aa;
}
// Convert from altitude and azimuth, for location (decimal degrees) and time, to Jnow right ascension (decimal hours) and declination (decimal degrees)
// See: http://jonvoisey.net/blog/2018/07/data-converting-alt-az-to-ra-dec-example/ appears to be wrong for HA
// See: https://www.cambridge.org/ca/academic/subjects/physics/amateur-and-popular-astronomy/practical-astronomy-your-calculator-or-spreadsheet-4th-edition?format=PB HOREQ.xls
RADec Astronomy::azAltToRaDec(AzAlt aa, double latitude, double longitude, QDateTime dt)
{
RADec rd;
double lst_deg; // Local sidereal time
double ha_rad, ha_deg; // Hour angle
double alt_rad, az_rad, lat_rad, dec_rad; // Corresponding variables as radians
// Calculate local mean sidereal time (LMST) in degrees (see raDecToAzAlt)
lst_deg = Astronomy::localSiderealTime(dt, longitude);
// Convert degrees to radians
alt_rad = Units::degreesToRadians(aa.alt);
az_rad = Units::degreesToRadians(aa.az);
lat_rad = Units::degreesToRadians(latitude);
// Calculate declination
double sin_dec_rad = sin(lat_rad)*sin(alt_rad)+cos(lat_rad)*cos(alt_rad)*cos(az_rad);
dec_rad = asin(sin_dec_rad);
// Calculate hour angle
if (0)
{
double quotient = (sin(alt_rad)-sin(lat_rad)*sin(dec_rad))/(cos(lat_rad)*cos(dec_rad));
// At extreme altitudes, we seem to get small numerical errors that causes values to be out of range, so clip to [-1,1]
if (quotient < -1.0) {
ha_rad = acos(-1.0);
} else if (quotient > 1.0) {
ha_rad = acos(1.0);
} else {
ha_rad = acos(quotient);
}
}
else
{
double y = -cos(alt_rad)*cos(lat_rad)*sin(az_rad);
double x = sin(alt_rad)-sin(lat_rad)*sin_dec_rad;
ha_rad = atan2(y, x);
}
// Convert radians to degrees
rd.dec = Units::radiansToDegrees(dec_rad);
ha_deg = Units::radiansToDegrees(ha_rad);
// Calculate right ascension in decimal hours
rd.ra = modulo((lst_deg - ha_deg) / (360.0/24.0), 24.0);
return rd;
}
// Needs to work for negative a
double Astronomy::modulo(double a, double b)
{
return a - b * floor(a/b);
}
// Calculate azimuth and altitude angles to the sun from the given latitude and longitude at the given time
// Refer to:
// https://en.wikipedia.org/wiki/Position_of_the_Sun
// https://www.aa.quae.nl/en/reken/zonpositie.html
// Said to be accurate to .01 degree (36") for dates between 1950 and 2050
// although we use slightly more accurate constants and an extra term in the equation
// of centre from the second link
// For an alternative, see: http://www.psa.es/sdg/sunpos.htm
// Most accurate algorithm is supposedly: https://midcdmz.nrel.gov/spa/
void Astronomy::sunPosition(AzAlt& aa, RADec& rd, double latitude, double longitude, QDateTime dt)
{
double jd = julianDate(dt);
double n = (jd - jd_j2000()); // Days since J2000 epoch (including fraction)
double l = 280.461 + 0.9856474 * n; // Mean longitude of the Sun, corrected for the abberation of light
double g = 357.5291 + 0.98560028 * n; // Mean anomaly of the Sun - how far around orbit from perihlion, in degrees
l = modulo(l, 360.0);
g = modulo(g, 360.0);
double gr = Units::degreesToRadians(g);
double la = l + 1.9148 * sin(gr) + 0.0200 * sin(2.0*gr) + 0.0003 * sin(3.0*gr); // Ecliptic longitude (Ecliptic latitude b set to 0)
// Convert la, b=0, which give the position of the Sun in the ecliptic coordinate sytem, to
// equatorial coordinates
double e = 23.4393 - 3.563E-7 * n; // Obliquity of the ecliptic - tilt of Earth's axis of rotation
double er = Units::degreesToRadians(e);
double lr = Units::degreesToRadians(la);
double a = atan2(cos(er) * sin(lr), cos(lr)); // Right ascension, radians
double d = asin(sin(er) * sin(lr)); // Declination, radians
rd.ra = modulo(Units::radiansToDegrees(a), 360.0) / (360.0/24.0); // Convert to hours
rd.dec = Units::radiansToDegrees(d); // Convert to degrees
aa = raDecToAzAlt(rd, latitude, longitude, dt, false);
}
double Astronomy::moonDays(QDateTime dt)
{
QDateTime utc = dt.toUTC();
QDate date = utc.date();
QTime time = utc.time();
int y = date.year();
int m = date.month();
int D = date.day();
int d = 367 * y - 7 * (y + (m+9)/12) / 4 - 3 * ((y + (m-9)/7) / 100 + 1) / 4 + 275*m/9 + D - 730515;
return d + time.hour()/24.0 + time.minute()/(24.0*60.0) + time.second()/(24.0*60.0*60.0);
}
// Calculate azimuth and altitude angles to the moon from the given latitude and longitude at the given time
// Refer to: https://stjarnhimlen.se/comp/ppcomp.html
// Accurate to 4 arcminute
void Astronomy::moonPosition(AzAlt& aa, RADec& rd, double latitude, double longitude, QDateTime dt)
{
double d = moonDays(dt);
double ecl = Units::degreesToRadians(23.4393 - 3.563E-7 * d); // Obliquity of the ecliptic - tilt of Earth's axis of rotation
// Orbital elements for the Sun
double ws = Units::degreesToRadians(282.9404 + 4.70935E-5 * d);
double Ms = Units::degreesToRadians(356.0470 + 0.9856002585 * d);
// Orbital elements for the Moon
double Nm = Units::degreesToRadians(125.1228 - 0.0529538083 * d); // longitude of the ascending node
double im = Units::degreesToRadians(5.1454); // inclination to the ecliptic (plane of the Earth's orbit)
double wm = Units::degreesToRadians(318.0634 + 0.1643573223 * d); // argument of perihelion
double am = 60.2666; // (Earth radii) semi-major axis, or mean distance from Sun
double em = 0.054900; // ecm // eccentricity (0=circle, 0-1=ellipse, 1=parabola)
double Mm = Units::degreesToRadians(115.3654 + 13.0649929509 * d); // mean anomaly (0 at perihelion; increases uniformly with time), degrees
double Em = Mm + em * sin(Mm) * (1.0 + em * cos(Mm)); // Eccentric anomaly in radians
double xv = am * (cos(Em) - em);
double yv = am * (sqrt(1.0 - em*em) * sin(Em));
double vm = atan2(yv, xv); // True anomaly
double rm = sqrt(xv*xv + yv*yv); // Distance
// Compute position in space (for the Moon, this is geocentric)
double xh = rm * (cos(Nm) * cos(vm+wm) - sin(Nm) * sin(vm+wm) * cos(im));
double yh = rm * (sin(Nm) * cos(vm+wm) + cos(Nm) * sin(vm+wm) * cos(im));
double zh = rm * (sin(vm+wm) * sin(im));
// Convert to ecliptic longitude and latitude
double lonecl = atan2(yh, xh);
double latecl = atan2(zh, sqrt(xh*xh+yh*yh));
// Perturbations of the Moon
double Ls = Ms + ws; // Mean Longitude of the Sun (Ns=0)
double Lm = Mm + wm + Nm; // Mean longitude of the Moon
double D = Lm - Ls; // Mean elongation of the Moon
double F = Lm - Nm; // Argument of latitude for the Moon
double dlon;
dlon = -1.274 * sin(Mm - 2*D); // (the Evection)
dlon += +0.658 * sin(2*D); // (the Variation)
dlon += -0.186 * sin(Ms); // (the Yearly Equation)
dlon += -0.059 * sin(2*Mm - 2*D);
dlon += -0.057 * sin(Mm - 2*D + Ms);
dlon += +0.053 * sin(Mm + 2*D);
dlon += +0.046 * sin(2*D - Ms);
dlon += +0.041 * sin(Mm - Ms);
dlon += -0.035 * sin(D); // (the Parallactic Equation)
dlon += -0.031 * sin(Mm + Ms);
dlon += -0.015 * sin(2*F - 2*D);
dlon += +0.011 * sin(Mm - 4*D);
double dlat;
dlat = -0.173 * sin(F - 2*D);
dlat += -0.055 * sin(Mm - F - 2*D);
dlat += -0.046 * sin(Mm + F - 2*D);
dlat += +0.033 * sin(F + 2*D);
dlat += +0.017 * sin(2*Mm + F);
lonecl += Units::degreesToRadians(dlon);
latecl += Units::degreesToRadians(dlat);
rm += -0.58 * cos(Mm - 2*D);
rm += -0.46 * cos(2*D);
// Convert perturbed
xh = rm * cos(lonecl) * cos(latecl);
yh = rm * sin(lonecl) * cos(latecl);
zh = rm * sin(latecl);
// Convert to geocentric coordinates (already the case for the Moon)
double xg = xh;
double yg = yh;
double zg = zh;
// Convert to equatorial cordinates
double xe = xg;
double ye = yg * cos(ecl) - zg * sin(ecl);
double ze = yg * sin(ecl) + zg * cos(ecl);
// Compute right ascension and declination
double ra = atan2(ye, xe);
double dec = atan2(ze, sqrt(xe*xe+ye*ye));
rd.ra = modulo(Units::radiansToDegrees(ra), 360.0) / (360.0/24.0); // Convert to hours
rd.dec = Units::radiansToDegrees(dec); // Convert to degrees
// Convert from geocentric to topocentric
double mpar = asin(1/rm);
double lat = Units::degreesToRadians(latitude);
double gclat = Units::degreesToRadians(latitude - 0.1924 * sin(2.0 * lat));
double rho = 0.99833 + 0.00167 * cos(2*lat);
QTime time = dt.toUTC().time();
double UT = time.hour() + time.minute()/60.0 + time.second()/(60.0*60.0);
double GMST0 = Units::radiansToDegrees(Ls)/15.0 + 12; // In hours
double GMST = GMST0 + UT;
double LST = GMST + longitude/15.0;
double HA = Units::degreesToRadians(LST*15.0 - Units::radiansToDegrees(ra)); // Hour angle in radians
double g = atan(tan(gclat) / cos(HA));
double topRA = ra - mpar * rho * cos(gclat) * sin(HA) / cos(dec);
double topDec;
if (g != 0.0)
topDec = dec - mpar * rho * sin(gclat) * sin(g - dec) / sin(g);
else
topDec = dec - mpar * rho * sin(-dec) * cos(HA);
rd.ra = modulo(Units::radiansToDegrees(topRA), 360.0) / (360.0/24.0); // Convert to hours
rd.dec = Units::radiansToDegrees(topDec); // Convert to degrees
aa = raDecToAzAlt(rd, latitude, longitude, dt, false);
}
// Calculated adjustment to altitude angle from true to apparent due to atmospheric refraction using
// Saemundsson's formula (which is used by Stellarium and is primarily just for
// optical wavelengths)
// See: https://en.wikipedia.org/wiki/Atmospheric_refraction#Calculating_refraction
// Alt is in degrees. 90 = Zenith gives a factor of 0.
// Pressure in millibars
// Temperature in Celsuis
// We divide by 60.0 to get a value in degrees (as original formula is in arcminutes)
double Astronomy::refractionSaemundsson(double alt, double pressure, double temperature)
{
double pt = (pressure/1010.0) * (283.0/(273.0+temperature));
return pt * (1.02 / tan(Units::degreesToRadians(alt+10.3/(alt+5.11))) + 0.0019279) / 60.0;
}
// Calculated adjustment to altitude angle from true to apparent due to atmospheric refraction using
// code from Starlink Positional Astronomy Library. This is more accurate for
// radio than Saemundsson's formula, but also more complex.
// See: https://github.com/Starlink/pal
// Alt is in degrees. 90 = Zenith gives a factor of 0.
// Pressure in millibars
// Temperature in Celsuis
// Humdity in %
// Frequency in Hertz
// Latitude in decimal degrees
// HeightAboveSeaLevel in metres
// Temperature lapse rate in K/km
double Astronomy::refractionPAL(double alt, double pressure, double temperature, double humidity, double frequency,
double latitude, double heightAboveSeaLevel, double temperatureLapseRate)
{
double tdk = Units::celsiusToKelvin(temperature); // Ambient temperature at the observer (K)
double wl = (299792458.0/frequency)*1000000.0; // Wavelength in micrometres
double rh = humidity/100.0; // Relative humidity in range 0-1
double phi = Units::degreesToRadians(latitude); // Latitude of the observer (radian, astronomical)
double tlr = temperatureLapseRate/1000.0; // Temperature lapse rate in the troposphere (K/metre)
double refa, refb;
double z = 90.0-alt;
double zu = Units::degreesToRadians(z);
double zr;
palRefco(heightAboveSeaLevel, tdk, pressure, rh,
wl, phi, tlr, 1E-10,
&refa, &refb);
palRefz(zu, refa, refb, &zr);
return z-Units::radiansToDegrees(zr);
}
double Astronomy::raToDecimal(const QString& value)
{
QRegExp decimal("^([0-9]+(\\.[0-9]+)?)");
QRegExp hms("^([0-9]+)[ h]([0-9]+)[ m]([0-9]+(\\.[0-9]+)?)s?");
if (decimal.exactMatch(value))
return decimal.capturedTexts()[0].toDouble();
else if (hms.exactMatch(value))
{
return Units::hoursMinutesSecondsToDecimal(
hms.capturedTexts()[1].toDouble(),
hms.capturedTexts()[2].toDouble(),
hms.capturedTexts()[3].toDouble());
}
return 0.0;
}
double Astronomy::decToDecimal(const QString& value)
{
QRegExp decimal("^(-?[0-9]+(\\.[0-9]+)?)");
QRegExp dms(QString("^(-?[0-9]+)[ %1d]([0-9]+)[ 'm]([0-9]+(\\.[0-9]+)?)[\"s]?").arg(QChar(0xb0)));
if (decimal.exactMatch(value))
return decimal.capturedTexts()[0].toDouble();
else if (dms.exactMatch(value))
{
return Units::degreesMinutesSecondsToDecimal(
dms.capturedTexts()[1].toDouble(),
dms.capturedTexts()[2].toDouble(),
dms.capturedTexts()[3].toDouble());
}
return 0.0;
}
double Astronomy::lstAndRAToLongitude(double lst, double raHours)
{
double longitude = lst - (raHours * 15.0); // Convert hours to degrees
if (longitude < -180.0)
longitude += 360.0;
else if (longitude > 180.0)
longitude -= 360.0;
return -longitude; // East positive
}
// Return right ascension and declination of North Galactic Pole in J2000 Epoch
// http://www.lsc-group.phys.uwm.edu/lal/lsd/node1777.html
void Astronomy::northGalacticPoleJ2000(double& ra, double& dec)
{
ra = 192.8594813/15.0;
dec = 27.1282511;
}
// Convert from equatorial to Galactic coordinates, J2000 Epoch
void Astronomy::equatorialToGalactic(double ra, double dec, double& l, double& b)
{
const double raRad = Units::degreesToRadians(ra * 15.0);
const double decRad = Units::degreesToRadians(dec);
// Calculate RA and dec for North Galactic pole, J2000
double ngpRa, ngpDec;
northGalacticPoleJ2000(ngpRa, ngpDec);
const double ngpRaRad = Units::degreesToRadians(ngpRa * 15.0);
const double ngpDecRad = Units::degreesToRadians(ngpDec);
// Calculate galactic longitude in radians
double bRad = asin(sin(ngpDecRad)*sin(decRad)+cos(ngpDecRad)*cos(decRad)*cos(raRad - ngpRaRad));
// Calculate galactic latitiude in radians
double lRad = atan2(sin(decRad)-sin(bRad)*sin(ngpDecRad), cos(decRad)*cos(ngpDecRad)*sin(raRad - ngpRaRad));
// Ascending node of the galactic plane in degrees
double lAscend = 33.0;
// Convert to degrees in range -90,90 and 0,360
b = Units::radiansToDegrees(bRad);
l = Units::radiansToDegrees(lRad) + lAscend;
if (l < 0.0) {
l += 360.0;
}
if (l > 360.0) {
l -= 360.0;
}
}
// Convert from Galactic to equatorial coordinates, J2000 Epoch
void Astronomy::galacticToEquatorial(double l, double b, double& ra, double& dec)
{
const double lRad = Units::degreesToRadians(l);
const double bRad = Units::degreesToRadians(b);
// Calculate RA and dec for North Galactic pole, J2000
double ngpRa, ngpDec;
northGalacticPoleJ2000(ngpRa, ngpDec);
const double ngpRaRad = Units::degreesToRadians(ngpRa * 15.0);
const double ngpDecRad = Units::degreesToRadians(ngpDec);
// Galactic longitude of North Celestial Pole
const double ncpLRad = Units::degreesToRadians(122.93129);
// Calculate declination in radians
double decRad = asin(sin(bRad)*sin(ngpDecRad)+cos(bRad)*cos(ngpDecRad)*cos(lRad - ncpLRad));
// Calculate right ascension in radians
double y = sin(lRad-ncpLRad);
double x = cos(lRad-ncpLRad)*sin(ngpDecRad)-tan(bRad)*cos(ngpDecRad);
double raRad = atan2(y, x) + (ngpRaRad - M_PI);
// Convert to degrees
dec = Units::radiansToDegrees(decRad);
ra = Units::radiansToDegrees(raRad) / 15.0;
if (ra < 0.0) {
ra += 24.0;
} else if (ra >= 24.0) {
ra -= 24.0;
}
}
// Calculate velocity in m/s given a Doppler shift from frequency f0 to frequency f in Hz
// Non-relativistic "radio definition"
// + velocity is approaching
double Astronomy::dopplerToVelocity(double f, double f0)
{
return m_speedOfLight * f / f0 - m_speedOfLight;
}
// Calculate Doppler shift in Hz given a velocity in m/s
double Astronomy::velocityToDoppler(double v, double f0)
{
return f0 * (v + m_speedOfLight) / m_speedOfLight;
}
// Get velocity (km/s) in a given direction due to the Earth's rotation
// Adapted from palRverot
double Astronomy::earthRotationVelocity(RADec rd, double latitude, double longitude, QDateTime dt)
{
const double earthSpeed = 0.4655; // km/s (Earth's circumference / seconds in one sideral day)
double latRad = Units::degreesToRadians(latitude);
double raRad = Units::degreesToRadians(rd.ra * (360.0/24.0));
double decRad = Units::degreesToRadians(rd.dec);
double st = Astronomy::localSiderealTime(dt, longitude);
double a = Units::degreesToRadians(st) - raRad;
return -earthSpeed * cos(latRad) * sin(a) * cos(decRad);
}
// Get velocity (km/s) in a given direction due to the Earth's orbit around the Sun in barcycentric reference frame
double Astronomy::earthOrbitVelocityBCRS(RADec rd, QDateTime dt)
{
double ph[3];
double vh[3];
double pb[3];
double vb[3];
double date = Astronomy::modifiedJulianDate(dt);
// Get Earth position and velocity
palEpv(date, ph, vh, pb, vb);
// Convert from AU/day to km/s
double vel[3];
for (int i = 0; i < 3; i++) {
vel[i] = vb[i] * 1.731e3;
}
// Equatorial to cartesian vector
double raRad = Units::degreesToRadians(rd.ra * (360.0/24.0));
double decRad = Units::degreesToRadians(rd.dec);
double cp = cos(decRad);
double vd[3];
vd[0] = cos(raRad) * cp;
vd[1] = sin(raRad) * cp;
vd[2] = sin(decRad);
// Calculate component of velocity along target direction via dot product
return vel[0] * vd[0] + vel[1] * vd[1] + vel[2] * vd[2];
}
// Get velocity (km/s) in a given direction due to the Sun's motion w.r.t. Local Standard of Rest
// Adapted from palRvlsrk
// See: https://advlabwiki.johnshopkins.edu/images/Vlsr.pdf
double Astronomy::sunVelocityLSRK(RADec rd)
{
// Solar motion - 20 km/s towards RA 18h Dec +30d (1900)
// expressed as J2000.0 equatorial cartesian vector
// Some other s/w uses 18h03m50.29s, +30:00:16.8 (J2000) -> {0.01934,-17.31968,10.001411}
const double va[3] = {0.29000, -17.31726, 10.00141};
double vb[3];
// Equatorial to cartesian vector
double raRad = Units::degreesToRadians(rd.ra * (360.0/24.0));
double decRad = Units::degreesToRadians(rd.dec);
double cp = cos(decRad);
vb[0] = cos(raRad) * cp;
vb[1] = sin(raRad) * cp;
vb[2] = sin(decRad);
// Calculate component of velocity along target direction via dot product
return va[0] * vb[0] + va[1] * vb[1] + va[2] * vb[2];
}
// Get velocity (km/s) of Earth based observer in a given direction due to the Sun's and Earth's motion w.r.t. Local Standard of Rest
double Astronomy::observerVelocityLSRK(RADec rd, double latitude, double longitude, QDateTime dt)
{
double vRot = Astronomy::earthRotationVelocity(rd, latitude, longitude, dt);
double vOrbit = Astronomy::earthOrbitVelocityBCRS(rd, dt);
double vSun = Astronomy::sunVelocityLSRK(rd);
return vRot + vOrbit + vSun;
}
// Calculate thermal noise power for a given temperature in Kelvin and bandwidth in Hz
double Astronomy::noisePowerdBm(double temp, double bw)
{
return 10.0 * std::log10(m_boltzmann * temp * bw) + 30.0;
}
// Calculate noise temperature for a given power in dBm and bandwidth in Hz
double Astronomy::noiseTemp(double dBm, double bw)
{
return std::pow(10.0, ((dBm - 30.0) / 10.0)) / (m_boltzmann * bw);
}
// The following functions are from Starlink Positional Astronomy Library
// https://github.com/Starlink/pal
/* Pi */
static const double PAL__DPI = 3.1415926535897932384626433832795028841971693993751;
/* 2Pi */
static const double PAL__D2PI = 6.2831853071795864769252867665590057683943387987502;
/* pi/180: degrees to radians */
static const double PAL__DD2R = 0.017453292519943295769236907684886127134428718885417;
/* Radians to degrees */
static const double PAL__DR2D = 57.295779513082320876798154814105170332405472466564;
/* Start of SLA modified Julian date epoch */
static const double PAL__MJD0 = 2400000.5;
/* DMAX(A,B) - return maximum value - evaluates arguments multiple times */
#define DMAX(A,B) ((A) > (B) ? (A) : (B) )
/* DMIN(A,B) - return minimum value - evaluates arguments multiple times */
#define DMIN(A,B) ((A) < (B) ? (A) : (B) )
// Normalize angle into range +/- pi
double palDrange( double angle ) {
double result = fmod( angle, PAL__D2PI );
if( result > PAL__DPI ) {
result -= PAL__D2PI;
} else if( result < -PAL__DPI ) {
result += PAL__D2PI;
}
return result;
}
// Calculate stratosphere parameters
static void pal1Atms ( double rt, double tt, double dnt, double gamal,
double r, double * dn, double * rdndr ) {
double b;
double w;
b = gamal / tt;
w = (dnt - 1.0) * exp( -b * (r-rt) );
*dn = 1.0 + w;
*rdndr = -r * b * w;
}
// Calculate troposphere parameters
static void pal1Atmt ( double r0, double t0, double alpha, double gamm2,
double delm2, double c1, double c2, double c3, double c4,
double c5, double c6, double r,
double *t, double *dn, double *rdndr ) {
double tt0;
double tt0gm2;
double tt0dm2;
*t = DMAX( DMIN( t0 - alpha*(r-r0), 320.0), 100.0 );
tt0 = *t / t0;
tt0gm2 = pow( tt0, gamm2 );
tt0dm2 = pow( tt0, delm2 );
*dn = 1.0 + ( c1 * tt0gm2 - ( c2 - c5 / *t ) * tt0dm2 ) * tt0;
*rdndr = r * ( -c3 * tt0gm2 + ( c4 - c6 / tt0 ) * tt0dm2 );
}
// Adjust unrefracted zenith distance
static void palRefz ( double zu, double refa, double refb, double *zr ) {
/* Constants */
/* Largest usable ZD (deg) */
const double D93 = 93.0;
/* ZD at which one model hands over to the other (radians) */
const double Z83 = 83.0 * PAL__DD2R;
/* coefficients for high ZD model (used beyond ZD 83 deg) */
const double C1 = +0.55445;
const double C2 = -0.01133;
const double C3 = +0.00202;
const double C4 = +0.28385;
const double C5 = +0.02390;
/* High-ZD-model prefiction (deg) for that point */
const double REF83 = (C1+C2*7.0+C3*49.0)/(1.0+C4*7.0+C5*49.0);
double zu1,zl,s,c,t,tsq,tcu,ref,e,e2;
/* perform calculations for zu or 83 deg, whichever is smaller */
zu1 = DMIN(zu,Z83);
/* functions of ZD */
zl = zu1;
s = sin(zl);
c = cos(zl);
t = s/c;
tsq = t*t;
tcu = t*tsq;
/* refracted zd (mathematically to better than 1 mas at 70 deg) */
zl = zl-(refa*t+refb*tcu)/(1.0+(refa+3.0*refb*tsq)/(c*c));
/* further iteration */
s = sin(zl);
c = cos(zl);
t = s/c;
tsq = t*t;
tcu = t*tsq;
ref = zu1-zl+
(zl-zu1+refa*t+refb*tcu)/(1.0+(refa+3.0*refb*tsq)/(c*c));
/* special handling for large zu */
if (zu > zu1) {
e = 90.0-DMIN(D93,zu*PAL__DR2D);
e2 = e*e;
ref = (ref/REF83)*(C1+C2*e+C3*e2)/(1.0+C4*e+C5*e2);
}
/* return refracted zd */
*zr = zu-ref;
}
// Determine constants in atmospheric refraction model
static void palRefco ( double hm, double tdk, double pmb, double rh,
double wl, double phi, double tlr, double eps,
double *refa, double *refb ) {
double r1, r2;
/* Sample zenith distances: arctan(1) and arctan(4) */
const double ATN1 = 0.7853981633974483;
const double ATN4 = 1.325817663668033;
/* Determine refraction for the two sample zenith distances */
palRefro(ATN1,hm,tdk,pmb,rh,wl,phi,tlr,eps,&r1);
palRefro(ATN4,hm,tdk,pmb,rh,wl,phi,tlr,eps,&r2);
/* Solve for refraction constants */
*refa = (64.0*r1-r2)/60.0;
*refb = (r2-4.0*r1)/60.0;
}
// Atmospheric refraction for radio and optical/IR wavelengths
static void palRefro( double zobs, double hm, double tdk, double pmb,
double rh, double wl, double phi, double tlr,
double eps, double * ref ) {
/*
* Fixed parameters
*/
/* 93 degrees in radians */
const double D93 = 1.623156204;
/* Universal gas constant */
const double GCR = 8314.32;
/* Molecular weight of dry air */
const double DMD = 28.9644;
/* Molecular weight of water vapour */
const double DMW = 18.0152;
/* Mean Earth radius (metre) */
const double S = 6378120.;
/* Exponent of temperature dependence of water vapour pressure */
const double DELTA = 18.36;
/* Height of tropopause (metre) */
const double HT = 11000.;
/* Upper limit for refractive effects (metre) */
const double HS = 80000.;
/* Numerical integration: maximum number of strips. */
const int ISMAX=16384l;
/* Local variables */
int is, k, n, i, j;
int optic, loop; /* booleans */
double zobs1,zobs2,hmok,tdkok,pmbok,rhok,wlok,alpha,
tol,wlsq,gb,a,gamal,gamma,gamm2,delm2,
tdc,psat,pwo,w,
c1,c2,c3,c4,c5,c6,r0,tempo,dn0,rdndr0,sk0,f0,
rt,tt,dnt,rdndrt,sine,zt,ft,dnts,rdndrp,zts,fts,
rs,dns,rdndrs,zs,fs,refold,z0,zrange,fb,ff,fo,fe,
h,r,sz,rg,dr,tg,dn,rdndr,t,f,refp,reft;
/* The refraction integrand */
#define refi(DN,RDNDR) RDNDR/(DN+RDNDR)
/* Transform ZOBS into the normal range. */
zobs1 = palDrange(zobs);
zobs2 = DMIN(fabs(zobs1),D93);
/* keep other arguments within safe bounds. */
hmok = DMIN(DMAX(hm,-1e3),HS);
tdkok = DMIN(DMAX(tdk,100.0),500.0);
pmbok = DMIN(DMAX(pmb,0.0),10000.0);
rhok = DMIN(DMAX(rh,0.0),1.0);
wlok = DMAX(wl,0.1);
alpha = DMIN(DMAX(fabs(tlr),0.001),0.01);
/* tolerance for iteration. */
tol = DMIN(DMAX(fabs(eps),1e-12),0.1)/2.0;
/* decide whether optical/ir or radio case - switch at 100 microns. */
optic = wlok < 100.0;
/* set up model atmosphere parameters defined at the observer. */
wlsq = wlok*wlok;
gb = 9.784*(1.0-0.0026*cos(phi+phi)-0.00000028*hmok);
if (optic) {
a = (287.6155+(1.62887+0.01360/wlsq)/wlsq) * 273.15e-6/1013.25;
} else {
a = 77.6890e-6;
}
gamal = (gb*DMD)/GCR;
gamma = gamal/alpha;
gamm2 = gamma-2.0;
delm2 = DELTA-2.0;
tdc = tdkok-273.15;
psat = pow(10.0,(0.7859+0.03477*tdc)/(1.0+0.00412*tdc)) *
(1.0+pmbok*(4.5e-6+6.0e-10*tdc*tdc));
if (pmbok > 0.0) {
pwo = rhok*psat/(1.0-(1.0-rhok)*psat/pmbok);
} else {
pwo = 0.0;
}
w = pwo*(1.0-DMW/DMD)*gamma/(DELTA-gamma);
c1 = a*(pmbok+w)/tdkok;
if (optic) {
c2 = (a*w+11.2684e-6*pwo)/tdkok;
} else {
c2 = (a*w+6.3938e-6*pwo)/tdkok;
}
c3 = (gamma-1.0)*alpha*c1/tdkok;
c4 = (DELTA-1.0)*alpha*c2/tdkok;
if (optic) {
c5 = 0.0;
c6 = 0.0;
} else {
c5 = 375463e-6*pwo/tdkok;
c6 = c5*delm2*alpha/(tdkok*tdkok);
}
/* conditions at the observer. */
r0 = S+hmok;
pal1Atmt(r0,tdkok,alpha,gamm2,delm2,c1,c2,c3,c4,c5,c6,
r0,&tempo,&dn0,&rdndr0);
sk0 = dn0*r0*sin(zobs2);
f0 = refi(dn0,rdndr0);
/* conditions in the troposphere at the tropopause. */
rt = S+DMAX(HT,hmok);
pal1Atmt(r0,tdkok,alpha,gamm2,delm2,c1,c2,c3,c4,c5,c6,
rt,&tt,&dnt,&rdndrt);
sine = sk0/(rt*dnt);
zt = atan2(sine,sqrt(DMAX(1.0-sine*sine,0.0)));
ft = refi(dnt,rdndrt);
/* conditions in the stratosphere at the tropopause. */
pal1Atms(rt,tt,dnt,gamal,rt,&dnts,&rdndrp);
sine = sk0/(rt*dnts);
zts = atan2(sine,sqrt(DMAX(1.0-sine*sine,0.0)));
fts = refi(dnts,rdndrp);
/* conditions at the stratosphere limit. */
rs = S+HS;
pal1Atms(rt,tt,dnt,gamal,rs,&dns,&rdndrs);
sine = sk0/(rs*dns);
zs = atan2(sine,sqrt(DMAX(1.0-sine*sine,0.0)));
fs = refi(dns,rdndrs);
/* variable initialization to avoid compiler warning. */
reft = 0.0;
/* integrate the refraction integral in two parts; first in the
* troposphere (k=1), then in the stratosphere (k=2). */
for (k=1; k<=2; k++) {
/* initialize previous refraction to ensure at least two iterations. */
refold = 1.0;
/* start off with 8 strips. */
is = 8;
/* start z, z range, and start and end values. */
if (k==1) {
z0 = zobs2;
zrange = zt-z0;
fb = f0;
ff = ft;
} else {
z0 = zts;
zrange = zs-z0;
fb = fts;
ff = fs;
}
/* sums of odd and even values. */
fo = 0.0;
fe = 0.0;
/* first time through the loop we have to do every point. */
n = 1;
/* start of iteration loop (terminates at specified precision). */
loop = 1;
while (loop) {
/* strip width. */
h = zrange/((double)is);
/* initialize distance from earth centre for quadrature pass. */
if (k == 1) {
r = r0;
} else {
r = rt;
}
/* one pass (no need to compute evens after first time). */
for (i=1; i<is; i+=n) {
/* sine of observed zenith distance. */
sz = sin(z0+h*(double)(i));
/* find r (to the nearest metre, maximum four iterations). */
if (sz > 1e-20) {
w = sk0/sz;
rg = r;
dr = 1.0e6;
j = 0;
while ( fabs(dr) > 1.0 && j < 4 ) {
j++;
if (k==1) {
pal1Atmt(r0,tdkok,alpha,gamm2,delm2,
c1,c2,c3,c4,c5,c6,rg,&tg,&dn,&rdndr);
} else {
pal1Atms(rt,tt,dnt,gamal,rg,&dn,&rdndr);
}
dr = (rg*dn-w)/(dn+rdndr);
rg = rg-dr;
}
r = rg;
}
/* find the refractive index and integrand at r. */
if (k==1) {
pal1Atmt(r0,tdkok,alpha,gamm2,delm2,
c1,c2,c3,c4,c5,c6,r,&t,&dn,&rdndr);
} else {
pal1Atms(rt,tt,dnt,gamal,r,&dn,&rdndr);
}
f = refi(dn,rdndr);
/* accumulate odd and (first time only) even values. */
if (n==1 && i%2 == 0) {
fe += f;
} else {
fo += f;
}
}
/* evaluate the integrand using simpson's rule. */
refp = h*(fb+4.0*fo+2.0*fe+ff)/3.0;
/* has the required precision been achieved (or can't be)? */
if (fabs(refp-refold) > tol && is < ISMAX) {
/* no: prepare for next iteration.*/
/* save current value for convergence test. */
refold = refp;
/* double the number of strips. */
is += is;
/* sum of all current values = sum of next pass's even values. */
fe += fo;
/* prepare for new odd values. */
fo = 0.0;
/* skip even values next time. */
n = 2;
} else {
/* yes: save troposphere component and terminate the loop. */
if (k==1) reft = refp;
loop = 0;
}
}
}
/* result. */
*ref = reft+refp;
if (zobs1 < 0.0) *ref = -(*ref);
}
// Earth position and velocity with respect to the BCRS
static void palEpv( double date, double ph[3], double vh[3],
double pb[3], double vb[3] ) {
int i;
double pvh[2][3];
double pvb[2][3];
eraEpv00( PAL__MJD0, date, pvh, pvb );
/* Copy into output arrays */
for (i=0; i<3; i++) {
ph[i] = pvh[0][i];
vh[i] = pvh[1][i];
pb[i] = pvb[0][i];
vb[i] = pvb[1][i];
}
}
// The following functions are from ERFA (Essential Routines for Fundamental Astronomy)
// https://github.com/liberfa/erfa.git
/* Days per Julian year */
#define ERFA_DJY (365.25)
/* Reference epoch (J2000.0), Julian Date */
#define ERFA_DJ00 (2451545.0)
static int eraEpv00(double date1, double date2,
double pvh[2][3], double pvb[2][3])
/*
** - - - - - - - - -
** e r a E p v 0 0
** - - - - - - - - -
**
** Earth position and velocity, heliocentric and barycentric, with
** respect to the Barycentric Celestial Reference System.
**
** Given:
** date1,date2 double TDB date (Note 1)
**
** Returned:
** pvh double[2][3] heliocentric Earth position/velocity
** pvb double[2][3] barycentric Earth position/velocity
**
** Returned (function value):
** int status: 0 = OK
** +1 = warning: date outside
** the range 1900-2100 AD
**
** Notes:
**
** 1) The TDB date date1+date2 is a Julian Date, apportioned in any
** convenient way between the two arguments. For example,
** JD(TDB)=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. However,
** the accuracy of the result is more likely to be limited by the
** algorithm itself than the way the date has been expressed.
**
** n.b. TT can be used instead of TDB in most applications.
**
** 2) On return, the arrays pvh and pvb contain the following:
**
** pvh[0][0] x }
** pvh[0][1] y } heliocentric position, au
** pvh[0][2] z }
**
** pvh[1][0] xdot }
** pvh[1][1] ydot } heliocentric velocity, au/d
** pvh[1][2] zdot }
**
** pvb[0][0] x }
** pvb[0][1] y } barycentric position, au
** pvb[0][2] z }
**
** pvb[1][0] xdot }
** pvb[1][1] ydot } barycentric velocity, au/d
** pvb[1][2] zdot }
**
** The vectors are with respect to the Barycentric Celestial
** Reference System. The time unit is one day in TDB.
**
** 3) The function is a SIMPLIFIED SOLUTION from the planetary theory
** VSOP2000 (X. Moisson, P. Bretagnon, 2001, Celes. Mechanics &
** Dyn. Astron., 80, 3/4, 205-213) and is an adaptation of original
** Fortran code supplied by P. Bretagnon (private comm., 2000).
**
** 4) Comparisons over the time span 1900-2100 with this simplified
** solution and the JPL DE405 ephemeris give the following results:
**
** RMS max
** Heliocentric:
** position error 3.7 11.2 km
** velocity error 1.4 5.0 mm/s
**
** Barycentric:
** position error 4.6 13.4 km
** velocity error 1.4 4.9 mm/s
**
** Comparisons with the JPL DE406 ephemeris show that by 1800 and
** 2200 the position errors are approximately double their 1900-2100
** size. By 1500 and 2500 the deterioration is a factor of 10 and
** by 1000 and 3000 a factor of 60. The velocity accuracy falls off
** at about half that rate.
**
** 5) It is permissible to use the same array for pvh and pvb, which
** will receive the barycentric values.
**
** This revision: 2021 May 11
**
** Copyright (C) 2013-2021, NumFOCUS Foundation.
** Derived, with permission, from the SOFA library. See notes at end of file.
*/
{
/*
** Matrix elements for orienting the analytical model to DE405.
**
** The corresponding Euler angles are:
**
** d ' "
** 1st rotation - 23 26 21.4091 about the x-axis (obliquity)
** 2nd rotation + 0.0475 about the z-axis (RA offset)
**
** These were obtained empirically, by comparisons with DE405 over
** 1900-2100.
*/
static const double am12 = 0.000000211284,
am13 = -0.000000091603,
am21 = -0.000000230286,
am22 = 0.917482137087,
am23 = -0.397776982902,
am32 = 0.397776982902,
am33 = 0.917482137087;
/*
** ----------------------
** Ephemeris Coefficients
** ----------------------
**
** The ephemeris consists of harmonic terms for predicting (i) the Sun
** to Earth vector and (ii) the Solar-System-barycenter to Sun vector
** respectively. The coefficients are stored in arrays which, although
** 1-demensional, contain groups of three. Each triplet of
** coefficients is the amplitude, phase and frequency for one term in
** the model, and each array contains the number of terms called for by
** the model.
**
** There are eighteen such arrays, named as follows:
**
** array model power of T component
**
** e0x Sun-to-Earth 0 x
** e0y Sun-to-Earth 0 y
** e0z Sun-to-Earth 0 z
**
** e1x Sun-to-Earth 1 x
** e1y Sun-to-Earth 1 y
** e1z Sun-to-Earth 1 z
**
** e2x Sun-to-Earth 2 x
** e2y Sun-to-Earth 2 y
** e2z Sun-to-Earth 2 z
**
** s0x SSB-to-Sun 0 x
** s0y SSB-to-Sun 0 y
** s0z SSB-to-Sun 0 z
**
** s1x SSB-to-Sun 1 x
** s1y SSB-to-Sun 1 y
** s1z SSB-to-Sun 1 z
**
** s2x SSB-to-Sun 2 x
** s2y SSB-to-Sun 2 y
** s2z SSB-to-Sun 2 z
*/
/* Sun-to-Earth, T^0, X */
static const double e0x[] = {
0.9998292878132e+00, 0.1753485171504e+01, 0.6283075850446e+01,
0.8352579567414e-02, 0.1710344404582e+01, 0.1256615170089e+02,
0.5611445335148e-02, 0.0000000000000e+00, 0.0000000000000e+00,
0.1046664295572e-03, 0.1667225416770e+01, 0.1884922755134e+02,
0.3110842534677e-04, 0.6687513390251e+00, 0.8399684731857e+02,
0.2552413503550e-04, 0.5830637358413e+00, 0.5296909721118e+00,
0.2137207845781e-04, 0.1092330954011e+01, 0.1577343543434e+01,
0.1680240182951e-04, 0.4955366134987e+00, 0.6279552690824e+01,
0.1679012370795e-04, 0.6153014091901e+01, 0.6286599010068e+01,
0.1445526946777e-04, 0.3472744100492e+01, 0.2352866153506e+01,
0.1091038246184e-04, 0.3689845786119e+01, 0.5223693906222e+01,
0.9344399733932e-05, 0.6073934645672e+01, 0.1203646072878e+02,
0.8993182910652e-05, 0.3175705249069e+01, 0.1021328554739e+02,
0.5665546034116e-05, 0.2152484672246e+01, 0.1059381944224e+01,
0.6844146703035e-05, 0.1306964099750e+01, 0.5753384878334e+01,
0.7346610905565e-05, 0.4354980070466e+01, 0.3981490189893e+00,
0.6815396474414e-05, 0.2218229211267e+01, 0.4705732307012e+01,
0.6112787253053e-05, 0.5384788425458e+01, 0.6812766822558e+01,
0.4518120711239e-05, 0.6087604012291e+01, 0.5884926831456e+01,
0.4521963430706e-05, 0.1279424524906e+01, 0.6256777527156e+01,
0.4497426764085e-05, 0.5369129144266e+01, 0.6309374173736e+01,
0.4062190566959e-05, 0.5436473303367e+00, 0.6681224869435e+01,
0.5412193480192e-05, 0.7867838528395e+00, 0.7755226100720e+00,
0.5469839049386e-05, 0.1461440311134e+01, 0.1414349524433e+02,
0.5205264083477e-05, 0.4432944696116e+01, 0.7860419393880e+01,
0.2149759935455e-05, 0.4502237496846e+01, 0.1150676975667e+02,
0.2279109618501e-05, 0.1239441308815e+01, 0.7058598460518e+01,
0.2259282939683e-05, 0.3272430985331e+01, 0.4694002934110e+01,
0.2558950271319e-05, 0.2265471086404e+01, 0.1216800268190e+02,
0.2561581447555e-05, 0.1454740653245e+01, 0.7099330490126e+00,
0.1781441115440e-05, 0.2962068630206e+01, 0.7962980379786e+00,
0.1612005874644e-05, 0.1473255041006e+01, 0.5486777812467e+01,
0.1818630667105e-05, 0.3743903293447e+00, 0.6283008715021e+01,
0.1818601377529e-05, 0.6274174354554e+01, 0.6283142985870e+01,
0.1554475925257e-05, 0.1624110906816e+01, 0.2513230340178e+02,
0.2090948029241e-05, 0.5852052276256e+01, 0.1179062909082e+02,
0.2000176345460e-05, 0.4072093298513e+01, 0.1778984560711e+02,
0.1289535917759e-05, 0.5217019331069e+01, 0.7079373888424e+01,
0.1281135307881e-05, 0.4802054538934e+01, 0.3738761453707e+01,
0.1518229005692e-05, 0.8691914742502e+00, 0.2132990797783e+00,
0.9450128579027e-06, 0.4601859529950e+01, 0.1097707878456e+02,
0.7781119494996e-06, 0.1844352816694e+01, 0.8827390247185e+01,
0.7733407759912e-06, 0.3582790154750e+01, 0.5507553240374e+01,
0.7350644318120e-06, 0.2695277788230e+01, 0.1589072916335e+01,
0.6535928827023e-06, 0.3651327986142e+01, 0.1176985366291e+02,
0.6324624183656e-06, 0.2241302375862e+01, 0.6262300422539e+01,
0.6298565300557e-06, 0.4407122406081e+01, 0.6303851278352e+01,
0.8587037089179e-06, 0.3024307223119e+01, 0.1672837615881e+03,
0.8299954491035e-06, 0.6192539428237e+01, 0.3340612434717e+01,
0.6311263503401e-06, 0.2014758795416e+01, 0.7113454667900e-02,
0.6005646745452e-06, 0.3399500503397e+01, 0.4136910472696e+01,
0.7917715109929e-06, 0.2493386877837e+01, 0.6069776770667e+01,
0.7556958099685e-06, 0.4159491740143e+01, 0.6496374930224e+01,
0.6773228244949e-06, 0.4034162934230e+01, 0.9437762937313e+01,
0.5370708577847e-06, 0.1562219163734e+01, 0.1194447056968e+01,
0.5710804266203e-06, 0.2662730803386e+01, 0.6282095334605e+01,
0.5709824583726e-06, 0.3985828430833e+01, 0.6284056366286e+01,
0.5143950896447e-06, 0.1308144688689e+01, 0.6290189305114e+01,
0.5088010604546e-06, 0.5352817214804e+01, 0.6275962395778e+01,
0.4960369085172e-06, 0.2644267922349e+01, 0.6127655567643e+01,
0.4803137891183e-06, 0.4008844192080e+01, 0.6438496133249e+01,
0.5731747768225e-06, 0.3794550174597e+01, 0.3154687086868e+01,
0.4735947960579e-06, 0.6107118308982e+01, 0.3128388763578e+01,
0.4808348796625e-06, 0.4771458618163e+01, 0.8018209333619e+00,
0.4115073743137e-06, 0.3327111335159e+01, 0.8429241228195e+01,
0.5230575889287e-06, 0.5305708551694e+01, 0.1336797263425e+02,
0.5133977889215e-06, 0.5784230738814e+01, 0.1235285262111e+02,
0.5065815825327e-06, 0.2052064793679e+01, 0.1185621865188e+02,
0.4339831593868e-06, 0.3644994195830e+01, 0.1726015463500e+02,
0.3952928638953e-06, 0.4930376436758e+01, 0.5481254917084e+01,
0.4898498111942e-06, 0.4542084219731e+00, 0.9225539266174e+01,
0.4757490209328e-06, 0.3161126388878e+01, 0.5856477690889e+01,
0.4727701669749e-06, 0.6214993845446e+00, 0.2544314396739e+01,
0.3800966681863e-06, 0.3040132339297e+01, 0.4265981595566e+00,
0.3257301077939e-06, 0.8064977360087e+00, 0.3930209696940e+01,
0.3255810528674e-06, 0.1974147981034e+01, 0.2146165377750e+01,
0.3252029748187e-06, 0.2845924913135e+01, 0.4164311961999e+01,
0.3255505635308e-06, 0.3017900824120e+01, 0.5088628793478e+01,
0.2801345211990e-06, 0.6109717793179e+01, 0.1256967486051e+02,
0.3688987740970e-06, 0.2911550235289e+01, 0.1807370494127e+02,
0.2475153429458e-06, 0.2179146025856e+01, 0.2629832328990e-01,
0.3033457749150e-06, 0.1994161050744e+01, 0.4535059491685e+01,
0.2186743763110e-06, 0.5125687237936e+01, 0.1137170464392e+02,
0.2764777032774e-06, 0.4822646860252e+00, 0.1256262854127e+02,
0.2199028768592e-06, 0.4637633293831e+01, 0.1255903824622e+02,
0.2046482824760e-06, 0.1467038733093e+01, 0.7084896783808e+01,
0.2611209147507e-06, 0.3044718783485e+00, 0.7143069561767e+02,
0.2286079656818e-06, 0.4764220356805e+01, 0.8031092209206e+01,
0.1855071202587e-06, 0.3383637774428e+01, 0.1748016358760e+01,
0.2324669506784e-06, 0.6189088449251e+01, 0.1831953657923e+02,
0.1709528015688e-06, 0.5874966729774e+00, 0.4933208510675e+01,
0.2168156875828e-06, 0.4302994009132e+01, 0.1044738781244e+02,
0.2106675556535e-06, 0.3800475419891e+01, 0.7477522907414e+01,
0.1430213830465e-06, 0.1294660846502e+01, 0.2942463415728e+01,
0.1388396901944e-06, 0.4594797202114e+01, 0.8635942003952e+01,
0.1922258844190e-06, 0.4943044543591e+00, 0.1729818233119e+02,
0.1888460058292e-06, 0.2426943912028e+01, 0.1561374759853e+03,
0.1789449386107e-06, 0.1582973303499e+00, 0.1592596075957e+01,
0.1360803685374e-06, 0.5197240440504e+01, 0.1309584267300e+02,
0.1504038014709e-06, 0.3120360916217e+01, 0.1649636139783e+02,
0.1382769533389e-06, 0.6164702888205e+01, 0.7632943190217e+01,
0.1438059769079e-06, 0.1437423770979e+01, 0.2042657109477e+02,
0.1326303260037e-06, 0.3609688799679e+01, 0.1213955354133e+02,
0.1159244950540e-06, 0.5463018167225e+01, 0.5331357529664e+01,
0.1433118149136e-06, 0.6028909912097e+01, 0.7342457794669e+01,
0.1234623148594e-06, 0.3109645574997e+01, 0.6279485555400e+01,
0.1233949875344e-06, 0.3539359332866e+01, 0.6286666145492e+01,
0.9927196061299e-07, 0.1259321569772e+01, 0.7234794171227e+01,
0.1242302191316e-06, 0.1065949392609e+01, 0.1511046609763e+02,
0.1098402195201e-06, 0.2192508743837e+01, 0.1098880815746e+02,
0.1158191395315e-06, 0.4054411278650e+01, 0.5729506548653e+01,
0.9048475596241e-07, 0.5429764748518e+01, 0.9623688285163e+01,
0.8889853269023e-07, 0.5046586206575e+01, 0.6148010737701e+01,
0.1048694242164e-06, 0.2628858030806e+01, 0.6836645152238e+01,
0.1112308378646e-06, 0.4177292719907e+01, 0.1572083878776e+02,
0.8631729709901e-07, 0.1601345232557e+01, 0.6418140963190e+01,
0.8527816951664e-07, 0.2463888997513e+01, 0.1471231707864e+02,
0.7892139456991e-07, 0.3154022088718e+01, 0.2118763888447e+01,
0.1051782905236e-06, 0.4795035816088e+01, 0.1349867339771e+01,
0.1048219943164e-06, 0.2952983395230e+01, 0.5999216516294e+01,
0.7435760775143e-07, 0.5420547991464e+01, 0.6040347114260e+01,
0.9869574106949e-07, 0.3695646753667e+01, 0.6566935184597e+01,
0.9156886364226e-07, 0.3922675306609e+01, 0.5643178611111e+01,
0.7006834356188e-07, 0.1233968624861e+01, 0.6525804586632e+01,
0.9806170182601e-07, 0.1919542280684e+01, 0.2122839202813e+02,
0.9052289673607e-07, 0.4615902724369e+01, 0.4690479774488e+01,
0.7554200867893e-07, 0.1236863719072e+01, 0.1253985337760e+02,
0.8215741286498e-07, 0.3286800101559e+00, 0.1097355562493e+02,
0.7185178575397e-07, 0.5880942158367e+01, 0.6245048154254e+01,
0.7130726476180e-07, 0.7674871987661e+00, 0.6321103546637e+01,
0.6650894461162e-07, 0.6987129150116e+00, 0.5327476111629e+01,
0.7396888823688e-07, 0.3576824794443e+01, 0.5368044267797e+00,
0.7420588884775e-07, 0.5033615245369e+01, 0.2354323048545e+02,
0.6141181642908e-07, 0.9449927045673e+00, 0.1296430071988e+02,
0.6373557924058e-07, 0.6206342280341e+01, 0.9517183207817e+00,
0.6359474329261e-07, 0.5036079095757e+01, 0.1990745094947e+01,
0.5740173582646e-07, 0.6105106371350e+01, 0.9555997388169e+00,
0.7019864084602e-07, 0.7237747359018e+00, 0.5225775174439e+00,
0.6398054487042e-07, 0.3976367969666e+01, 0.2407292145756e+02,
0.7797092650498e-07, 0.4305423910623e+01, 0.2200391463820e+02,
0.6466760000900e-07, 0.3500136825200e+01, 0.5230807360890e+01,
0.7529417043890e-07, 0.3514779246100e+01, 0.1842262939178e+02,
0.6924571140892e-07, 0.2743457928679e+01, 0.1554202828031e+00,
0.6220798650222e-07, 0.2242598118209e+01, 0.1845107853235e+02,
0.5870209391853e-07, 0.2332832707527e+01, 0.6398972393349e+00,
0.6263953473888e-07, 0.2191105358956e+01, 0.6277552955062e+01,
0.6257781390012e-07, 0.4457559396698e+01, 0.6288598745829e+01,
0.5697304945123e-07, 0.3499234761404e+01, 0.1551045220144e+01,
0.6335438746791e-07, 0.6441691079251e+00, 0.5216580451554e+01,
0.6377258441152e-07, 0.2252599151092e+01, 0.5650292065779e+01,
0.6484841818165e-07, 0.1992812417646e+01, 0.1030928125552e+00,
0.4735551485250e-07, 0.3744672082942e+01, 0.1431416805965e+02,
0.4628595996170e-07, 0.1334226211745e+01, 0.5535693017924e+00,
0.6258152336933e-07, 0.4395836159154e+01, 0.2608790314060e+02,
0.6196171366594e-07, 0.2587043007997e+01, 0.8467247584405e+02,
0.6159556952126e-07, 0.4782499769128e+01, 0.2394243902548e+03,
0.4987741172394e-07, 0.7312257619924e+00, 0.7771377146812e+02,
0.5459280703142e-07, 0.3001376372532e+01, 0.6179983037890e+01,
0.4863461189999e-07, 0.3767222128541e+01, 0.9027992316901e+02,
0.5349912093158e-07, 0.3663594450273e+01, 0.6386168663001e+01,
0.5673725607806e-07, 0.4331187919049e+01, 0.6915859635113e+01,
0.4745485060512e-07, 0.5816195745518e+01, 0.6282970628506e+01,
0.4745379005326e-07, 0.8323672435672e+00, 0.6283181072386e+01,
0.4049002796321e-07, 0.3785023976293e+01, 0.6254626709878e+01,
0.4247084014515e-07, 0.2378220728783e+01, 0.7875671926403e+01,
0.4026912363055e-07, 0.2864103423269e+01, 0.6311524991013e+01,
0.4062935011774e-07, 0.2415408595975e+01, 0.3634620989887e+01,
0.5347771048509e-07, 0.3343479309801e+01, 0.2515860172507e+02,
0.4829494136505e-07, 0.2821742398262e+01, 0.5760498333002e+01,
0.4342554404599e-07, 0.5624662458712e+01, 0.7238675589263e+01,
0.4021599184361e-07, 0.5557250275009e+00, 0.1101510648075e+02,
0.4104900474558e-07, 0.3296691780005e+01, 0.6709674010002e+01,
0.4376532905131e-07, 0.3814443999443e+01, 0.6805653367890e+01,
0.3314590480650e-07, 0.3560229189250e+01, 0.1259245002418e+02,
0.3232421839643e-07, 0.5185389180568e+01, 0.1066495398892e+01,
0.3541176318876e-07, 0.3921381909679e+01, 0.9917696840332e+01,
0.3689831242681e-07, 0.4190658955386e+01, 0.1192625446156e+02,
0.3890605376774e-07, 0.5546023371097e+01, 0.7478166569050e-01,
0.3038559339780e-07, 0.6231032794494e+01, 0.1256621883632e+02,
0.3137083969782e-07, 0.6207063419190e+01, 0.4292330755499e+01,
0.4024004081854e-07, 0.1195257375713e+01, 0.1334167431096e+02,
0.3300234879283e-07, 0.1804694240998e+01, 0.1057540660594e+02,
0.3635399155575e-07, 0.5597811343500e+01, 0.6208294184755e+01,
0.3032668691356e-07, 0.3191059366530e+01, 0.1805292951336e+02,
0.2809652069058e-07, 0.4094348032570e+01, 0.3523159621801e-02,
0.3696955383823e-07, 0.5219282738794e+01, 0.5966683958112e+01,
0.3562894142503e-07, 0.1037247544554e+01, 0.6357857516136e+01,
0.3510598524148e-07, 0.1430020816116e+01, 0.6599467742779e+01,
0.3617736142953e-07, 0.3002911403677e+01, 0.6019991944201e+01,
0.2624524910730e-07, 0.2437046757292e+01, 0.6702560555334e+01,
0.2535824204490e-07, 0.1581594689647e+01, 0.3141537925223e+02,
0.3519787226257e-07, 0.5379863121521e+01, 0.2505706758577e+03,
0.2578406709982e-07, 0.4904222639329e+01, 0.1673046366289e+02,
0.3423887981473e-07, 0.3646448997315e+01, 0.6546159756691e+01,
0.2776083886467e-07, 0.3307829300144e+01, 0.1272157198369e+02,
0.3379592818379e-07, 0.1747541251125e+01, 0.1494531617769e+02,
0.3050255426284e-07, 0.1784689432607e-01, 0.4732030630302e+01,
0.2652378350236e-07, 0.4420055276260e+01, 0.5863591145557e+01,
0.2374498173768e-07, 0.3629773929208e+01, 0.2388894113936e+01,
0.2716451255140e-07, 0.3079623706780e+01, 0.1202934727411e+02,
0.3038583699229e-07, 0.3312487903507e+00, 0.1256608456547e+02,
0.2220681228760e-07, 0.5265520401774e+01, 0.1336244973887e+02,
0.3044156540912e-07, 0.4766664081250e+01, 0.2908881142201e+02,
0.2731859923561e-07, 0.5069146530691e+01, 0.1391601904066e+02,
0.2285603018171e-07, 0.5954935112271e+01, 0.6076890225335e+01,
0.2025006454555e-07, 0.4061789589267e+01, 0.4701116388778e+01,
0.2012597519804e-07, 0.2485047705241e+01, 0.6262720680387e+01,
0.2003406962258e-07, 0.4163779209320e+01, 0.6303431020504e+01,
0.2207863441371e-07, 0.6923839133828e+00, 0.6489261475556e+01,
0.2481374305624e-07, 0.5944173595676e+01, 0.1204357418345e+02,
0.2130923288870e-07, 0.4641013671967e+01, 0.5746271423666e+01,
0.2446370543391e-07, 0.6125796518757e+01, 0.1495633313810e+00,
0.1932492759052e-07, 0.2234572324504e+00, 0.1352175143971e+02,
0.2600122568049e-07, 0.4281012405440e+01, 0.4590910121555e+01,
0.2431754047488e-07, 0.1429943874870e+00, 0.1162474756779e+01,
0.1875902869209e-07, 0.9781803816948e+00, 0.6279194432410e+01,
0.1874381139426e-07, 0.5670368130173e+01, 0.6286957268481e+01,
0.2156696047173e-07, 0.2008985006833e+01, 0.1813929450232e+02,
0.1965076182484e-07, 0.2566186202453e+00, 0.4686889479442e+01,
0.2334816372359e-07, 0.4408121891493e+01, 0.1002183730415e+02,
0.1869937408802e-07, 0.5272745038656e+01, 0.2427287361862e+00,
0.2436236460883e-07, 0.4407720479029e+01, 0.9514313292143e+02,
0.1761365216611e-07, 0.1943892315074e+00, 0.1351787002167e+02,
0.2156289480503e-07, 0.1418570924545e+01, 0.6037244212485e+01,
0.2164748979255e-07, 0.4724603439430e+01, 0.2301353951334e+02,
0.2222286670853e-07, 0.2400266874598e+01, 0.1266924451345e+02,
0.2070901414929e-07, 0.5230348028732e+01, 0.6528907488406e+01,
0.1792745177020e-07, 0.2099190328945e+01, 0.6819880277225e+01,
0.1841802068445e-07, 0.3467527844848e+00, 0.6514761976723e+02,
0.1578401631718e-07, 0.7098642356340e+00, 0.2077542790660e-01,
0.1561690152531e-07, 0.5943349620372e+01, 0.6272439236156e+01,
0.1558591045463e-07, 0.7040653478980e+00, 0.6293712464735e+01,
0.1737356469576e-07, 0.4487064760345e+01, 0.1765478049437e+02,
0.1434755619991e-07, 0.2993391570995e+01, 0.1102062672231e+00,
0.1482187806654e-07, 0.2278049198251e+01, 0.1052268489556e+01,
0.1424812827089e-07, 0.1682114725827e+01, 0.1311972100268e+02,
0.1380282448623e-07, 0.3262668602579e+01, 0.1017725758696e+02,
0.1811481244566e-07, 0.3187771221777e+01, 0.1887552587463e+02,
0.1504446185696e-07, 0.5650162308647e+01, 0.7626583626240e-01,
0.1740776154137e-07, 0.5487068607507e+01, 0.1965104848470e+02,
0.1374339536251e-07, 0.5745688172201e+01, 0.6016468784579e+01,
0.1761377477704e-07, 0.5748060203659e+01, 0.2593412433514e+02,
0.1535138225795e-07, 0.6226848505790e+01, 0.9411464614024e+01,
0.1788140543676e-07, 0.6189318878563e+01, 0.3301902111895e+02,
0.1375002807996e-07, 0.5371812884394e+01, 0.6327837846670e+00,
0.1242115758632e-07, 0.1471687569712e+01, 0.3894181736510e+01,
0.1450977333938e-07, 0.4143836662127e+01, 0.1277945078067e+02,
0.1297579575023e-07, 0.9003477661957e+00, 0.6549682916313e+01,
0.1462667934821e-07, 0.5760505536428e+01, 0.1863592847156e+02,
0.1381774374799e-07, 0.1085471729463e+01, 0.2379164476796e+01,
0.1682333169307e-07, 0.5409870870133e+01, 0.1620077269078e+02,
0.1190812918837e-07, 0.1397205174601e+01, 0.1149965630200e+02,
0.1221434762106e-07, 0.9001804809095e+00, 0.1257326515556e+02,
0.1549934644860e-07, 0.4262528275544e+01, 0.1820933031200e+02,
0.1252138953050e-07, 0.1411642012027e+01, 0.6993008899458e+01,
0.1237078905387e-07, 0.2844472403615e+01, 0.2435678079171e+02,
0.1446953389615e-07, 0.5295835522223e+01, 0.3813291813120e-01,
0.1388446457170e-07, 0.4969428135497e+01, 0.2458316379602e+00,
0.1019339179228e-07, 0.2491369561806e+01, 0.6112403035119e+01,
0.1258880815343e-07, 0.4679426248976e+01, 0.5429879531333e+01,
0.1297768238261e-07, 0.1074509953328e+01, 0.1249137003520e+02,
0.9913505718094e-08, 0.4735097918224e+01, 0.6247047890016e+01,
0.9830453155969e-08, 0.4158649187338e+01, 0.6453748665772e+01,
0.1192615865309e-07, 0.3438208613699e+01, 0.6290122169689e+01,
0.9835874798277e-08, 0.1913300781229e+01, 0.6319103810876e+01,
0.9639087569277e-08, 0.9487683644125e+00, 0.8273820945392e+01,
0.1175716107001e-07, 0.3228141664287e+01, 0.6276029531202e+01,
0.1018926508678e-07, 0.2216607854300e+01, 0.1254537627298e+02,
0.9500087869225e-08, 0.2625116459733e+01, 0.1256517118505e+02,
0.9664192916575e-08, 0.5860562449214e+01, 0.6259197520765e+01,
0.9612858712203e-08, 0.7885682917381e+00, 0.6306954180126e+01,
0.1117645675413e-07, 0.3932148831189e+01, 0.1779695906178e+02,
0.1158864052160e-07, 0.9995605521691e+00, 0.1778273215245e+02,
0.9021043467028e-08, 0.5263769742673e+01, 0.6172869583223e+01,
0.8836134773563e-08, 0.1496843220365e+01, 0.1692165728891e+01,
0.1045872200691e-07, 0.7009039517214e+00, 0.2204125344462e+00,
0.1211463487798e-07, 0.4041544938511e+01, 0.8257698122054e+02,
0.8541990804094e-08, 0.1447586692316e+01, 0.6393282117669e+01,
0.1038720703636e-07, 0.4594249718112e+00, 0.1550861511662e+02,
0.1126722351445e-07, 0.3925550579036e+01, 0.2061856251104e+00,
0.8697373859631e-08, 0.4411341856037e+01, 0.9491756770005e+00,
0.8869380028441e-08, 0.2402659724813e+01, 0.3903911373650e+01,
0.9247014693258e-08, 0.1401579743423e+01, 0.6267823317922e+01,
0.9205062930950e-08, 0.5245978000814e+01, 0.6298328382969e+01,
0.8000745038049e-08, 0.3590803356945e+01, 0.2648454860559e+01,
0.9168973650819e-08, 0.2470150501679e+01, 0.1498544001348e+03,
0.1075444949238e-07, 0.1328606161230e+01, 0.3694923081589e+02,
0.7817298525817e-08, 0.6162256225998e+01, 0.4804209201333e+01,
0.9541469226356e-08, 0.3942568967039e+01, 0.1256713221673e+02,
0.9821910122027e-08, 0.2360246287233e+00, 0.1140367694411e+02,
0.9897822023777e-08, 0.4619805634280e+01, 0.2280573557157e+02,
0.7737289283765e-08, 0.3784727847451e+01, 0.7834121070590e+01,
0.9260204034710e-08, 0.2223352487601e+01, 0.2787043132925e+01,
0.7320252888486e-08, 0.1288694636874e+01, 0.6282655592598e+01,
0.7319785780946e-08, 0.5359869567774e+01, 0.6283496108294e+01,
0.7147219933778e-08, 0.5516616675856e+01, 0.1725663147538e+02,
0.7946502829878e-08, 0.2630459984567e+01, 0.1241073141809e+02,
0.9001711808932e-08, 0.2849815827227e+01, 0.6281591679874e+01,
0.8994041507257e-08, 0.3795244450750e+01, 0.6284560021018e+01,
0.8298582787358e-08, 0.5236413127363e+00, 0.1241658836951e+02,
0.8526596520710e-08, 0.4794605424426e+01, 0.1098419223922e+02,
0.8209822103197e-08, 0.1578752370328e+01, 0.1096996532989e+02,
0.6357049861094e-08, 0.5708926113761e+01, 0.1596186371003e+01,
0.7370473179049e-08, 0.3842402530241e+01, 0.4061219149443e+01,
0.7232154664726e-08, 0.3067548981535e+01, 0.1610006857377e+03,
0.6328765494903e-08, 0.1313930030069e+01, 0.1193336791622e+02,
0.8030064908595e-08, 0.3488500408886e+01, 0.8460828644453e+00,
0.6275464259232e-08, 0.1532061626198e+01, 0.8531963191132e+00,
0.7051897446325e-08, 0.3285859929993e+01, 0.5849364236221e+01,
0.6161593705428e-08, 0.1477341999464e+01, 0.5573142801433e+01,
0.7754683957278e-08, 0.1586118663096e+01, 0.8662240327241e+01,
0.5889928990701e-08, 0.1304887868803e+01, 0.1232342296471e+02,
0.5705756047075e-08, 0.4555333589350e+01, 0.1258692712880e+02,
0.5964178808332e-08, 0.3001762842062e+01, 0.5333900173445e+01,
0.6712446027467e-08, 0.4886780007595e+01, 0.1171295538178e+02,
0.5941809275464e-08, 0.4701509603824e+01, 0.9779108567966e+01,
0.5466993627395e-08, 0.4588357817278e+01, 0.1884211409667e+02,
0.6340512090980e-08, 0.1164543038893e+01, 0.5217580628120e+02,
0.6325505710045e-08, 0.3919171259645e+01, 0.1041998632314e+02,
0.6164789509685e-08, 0.2143828253542e+01, 0.6151533897323e+01,
0.5263330812430e-08, 0.6066564434241e+01, 0.1885275071096e+02,
0.5597087780221e-08, 0.2926316429472e+01, 0.4337116142245e+00,
0.5396556236817e-08, 0.3244303591505e+01, 0.6286362197481e+01,
0.5396615148223e-08, 0.3404304703662e+01, 0.6279789503410e+01,
0.7091832443341e-08, 0.8532377803192e+00, 0.4907302013889e+01,
0.6572352589782e-08, 0.4901966774419e+01, 0.1176433076753e+02,
0.5960236060795e-08, 0.1874672315797e+01, 0.1422690933580e-01,
0.5125480043511e-08, 0.3735726064334e+01, 0.1245594543367e+02,
0.5928241866410e-08, 0.4502033899935e+01, 0.6414617803568e+01,
0.5249600357424e-08, 0.4372334799878e+01, 0.1151388321134e+02,
0.6059171276087e-08, 0.2581617302908e+01, 0.6062663316000e+01,
0.5295235081662e-08, 0.2974811513158e+01, 0.3496032717521e+01,
0.5820561875933e-08, 0.1796073748244e+00, 0.2838593341516e+00,
0.4754696606440e-08, 0.1981998136973e+01, 0.3104930017775e+01,
0.6385053548955e-08, 0.2559174171605e+00, 0.6133512519065e+01,
0.6589828273941e-08, 0.2750967106776e+01, 0.4087944051283e+02,
0.5383376567189e-08, 0.6325947523578e+00, 0.2248384854122e+02,
0.5928941683538e-08, 0.1672304519067e+01, 0.1581959461667e+01,
0.4816060709794e-08, 0.3512566172575e+01, 0.9388005868221e+01,
0.6003381586512e-08, 0.5610932219189e+01, 0.5326786718777e+01,
0.5504225393105e-08, 0.4037501131256e+01, 0.6503488384892e+01,
0.5353772620129e-08, 0.6122774968240e+01, 0.1735668374386e+03,
0.5786253768544e-08, 0.5527984999515e+01, 0.1350651127443e+00,
0.5065706702002e-08, 0.9980765573624e+00, 0.1248988586463e+02,
0.5972838885276e-08, 0.6044489493203e+01, 0.2673594526851e+02,
0.5323585877961e-08, 0.3924265998147e+01, 0.4171425416666e+01,
0.5210772682858e-08, 0.6220111376901e+01, 0.2460261242967e+02,
0.4726549040535e-08, 0.3716043206862e+01, 0.7232251527446e+01,
0.6029425105059e-08, 0.8548704071116e+00, 0.3227113045244e+03,
0.4481542826513e-08, 0.1426925072829e+01, 0.5547199253223e+01,
0.5836024505068e-08, 0.7135651752625e-01, 0.7285056171570e+02,
0.4137046613272e-08, 0.5330767643283e+01, 0.1087398597200e+02,
0.5171977473924e-08, 0.4494262335353e+00, 0.1884570439172e+02,
0.5694429833732e-08, 0.2952369582215e+01, 0.9723862754494e+02,
0.4009158925298e-08, 0.3500003416535e+01, 0.6244942932314e+01,
0.4784939596873e-08, 0.6196709413181e+01, 0.2929661536378e+02,
0.3983725022610e-08, 0.5103690031897e+01, 0.4274518229222e+01,
0.3870535232462e-08, 0.3187569587401e+01, 0.6321208768577e+01,
0.5140501213951e-08, 0.1668924357457e+01, 0.1232032006293e+02,
0.3849034819355e-08, 0.4445722510309e+01, 0.1726726808967e+02,
0.4002383075060e-08, 0.5226224152423e+01, 0.7018952447668e+01,
0.3890719543549e-08, 0.4371166550274e+01, 0.1491901785440e+02,
0.4887084607881e-08, 0.5973556689693e+01, 0.1478866649112e+01,
0.3739939287592e-08, 0.2089084714600e+01, 0.6922973089781e+01,
0.5031925918209e-08, 0.4658371936827e+01, 0.1715706182245e+02,
0.4387748764954e-08, 0.4825580552819e+01, 0.2331413144044e+03,
0.4147398098865e-08, 0.3739003524998e+01, 0.1376059875786e+02,
0.3719089993586e-08, 0.1148941386536e+01, 0.6297302759782e+01,
0.3934238461056e-08, 0.1559893008343e+01, 0.7872148766781e+01,
0.3672471375622e-08, 0.5516145383612e+01, 0.6268848941110e+01,
0.3768911277583e-08, 0.6116053700563e+01, 0.4157198507331e+01,
0.4033388417295e-08, 0.5076821746017e+01, 0.1567108171867e+02,
0.3764194617832e-08, 0.8164676232075e+00, 0.3185192151914e+01,
0.4840628226284e-08, 0.1360479453671e+01, 0.1252801878276e+02,
0.4949443923785e-08, 0.2725622229926e+01, 0.1617106187867e+03,
0.4117393089971e-08, 0.6054459628492e+00, 0.5642198095270e+01,
0.3925754020428e-08, 0.8570462135210e+00, 0.2139354194808e+02,
0.3630551757923e-08, 0.3552067338279e+01, 0.6294805223347e+01,
0.3627274802357e-08, 0.3096565085313e+01, 0.6271346477544e+01,
0.3806143885093e-08, 0.6367751709777e+00, 0.1725304118033e+02,
0.4433254641565e-08, 0.4848461503937e+01, 0.7445550607224e+01,
0.3712319846576e-08, 0.1331950643655e+01, 0.4194847048887e+00,
0.3849847534783e-08, 0.4958368297746e+00, 0.9562891316684e+00,
0.3483955430165e-08, 0.2237215515707e+01, 0.1161697602389e+02,
0.3961912730982e-08, 0.3332402188575e+01, 0.2277943724828e+02,
0.3419978244481e-08, 0.5785600576016e+01, 0.1362553364512e+02,
0.3329417758177e-08, 0.9812676559709e-01, 0.1685848245639e+02,
0.4207206893193e-08, 0.9494780468236e+00, 0.2986433403208e+02,
0.3268548976410e-08, 0.1739332095686e+00, 0.5749861718712e+01,
0.3321880082685e-08, 0.1423354800666e+01, 0.6279143387820e+01,
0.4503173010852e-08, 0.2314972675293e+00, 0.1385561574497e+01,
0.4316599090954e-08, 0.1012646782616e+00, 0.4176041334900e+01,
0.3283493323850e-08, 0.5233306881265e+01, 0.6287008313071e+01,
0.3164033542343e-08, 0.4005597257511e+01, 0.2099539292909e+02,
0.4159720956725e-08, 0.5365676242020e+01, 0.5905702259363e+01,
0.3565176892217e-08, 0.4284440620612e+01, 0.3932462625300e-02,
0.3514440950221e-08, 0.4270562636575e+01, 0.7335344340001e+01,
0.3540596871909e-08, 0.5953553201060e+01, 0.1234573916645e+02,
0.2960769905118e-08, 0.1115180417718e+01, 0.2670964694522e+02,
0.2962213739684e-08, 0.3863811918186e+01, 0.6408777551755e+00,
0.3883556700251e-08, 0.1268617928302e+01, 0.6660449441528e+01,
0.2919225516346e-08, 0.4908605223265e+01, 0.1375773836557e+01,
0.3115158863370e-08, 0.3744519976885e+01, 0.3802769619140e-01,
0.4099438144212e-08, 0.4173244670532e+01, 0.4480965020977e+02,
0.2899531858964e-08, 0.5910601428850e+01, 0.2059724391010e+02,
0.3289733429855e-08, 0.2488050078239e+01, 0.1081813534213e+02,
0.3933075612875e-08, 0.1122363652883e+01, 0.3773735910827e+00,
0.3021403764467e-08, 0.4951973724904e+01, 0.2982630633589e+02,
0.2798598949757e-08, 0.5117057845513e+01, 0.1937891852345e+02,
0.3397421302707e-08, 0.6104159180476e+01, 0.6923953605621e+01,
0.3720398002179e-08, 0.1184933429829e+01, 0.3066615496545e+02,
0.3598484186267e-08, 0.3505282086105e+01, 0.6147450479709e+01,
0.3694594027310e-08, 0.2286651088141e+01, 0.2636725487657e+01,
0.2680444152969e-08, 0.1871816775482e+00, 0.6816289982179e+01,
0.3497574865641e-08, 0.3143251755431e+01, 0.6418701221183e+01,
0.3130274129494e-08, 0.2462167316018e+01, 0.1235996607578e+02,
0.3241119069551e-08, 0.4256374004686e+01, 0.1652265972112e+02,
0.2601960842061e-08, 0.4970362941425e+01, 0.1045450126711e+02,
0.2690601527504e-08, 0.2372657824898e+01, 0.3163918923335e+00,
0.2908688152664e-08, 0.4232652627721e+01, 0.2828699048865e+02,
0.3120456131875e-08, 0.3925747001137e+00, 0.2195415756911e+02,
0.3148855423384e-08, 0.3093478330445e+01, 0.1172006883645e+02,
0.3051044261017e-08, 0.5560948248212e+01, 0.6055599646783e+01,
0.2826006876660e-08, 0.5072790310072e+01, 0.5120601093667e+01,
0.3100034191711e-08, 0.4998530231096e+01, 0.1799603123222e+02,
0.2398771640101e-08, 0.2561739802176e+01, 0.6255674361143e+01,
0.2384002842728e-08, 0.4087420284111e+01, 0.6310477339748e+01,
0.2842146517568e-08, 0.2515048217955e+01, 0.5469525544182e+01,
0.2847674371340e-08, 0.5235326497443e+01, 0.1034429499989e+02,
0.2903722140764e-08, 0.1088200795797e+01, 0.6510552054109e+01,
0.3187610710605e-08, 0.4710624424816e+01, 0.1693792562116e+03,
0.3048869992813e-08, 0.2857975896445e+00, 0.8390110365991e+01,
0.2860216950984e-08, 0.2241619020815e+01, 0.2243449970715e+00,
0.2701117683113e-08, 0.6651573305272e-01, 0.6129297044991e+01,
0.2509891590152e-08, 0.1285135324585e+01, 0.1044027435778e+02,
0.2623200252223e-08, 0.2981229834530e+00, 0.6436854655901e+01,
0.2622541669202e-08, 0.6122470726189e+01, 0.9380959548977e+01,
0.2818435667099e-08, 0.4251087148947e+01, 0.5934151399930e+01,
0.2365196797465e-08, 0.3465070460790e+01, 0.2470570524223e+02,
0.2358704646143e-08, 0.5791603815350e+01, 0.8671969964381e+01,
0.2388299481390e-08, 0.4142483772941e+01, 0.7096626156709e+01,
0.1996041217224e-08, 0.2101901889496e+01, 0.1727188400790e+02,
0.2687593060336e-08, 0.1526689456959e+01, 0.7075506709219e+02,
0.2618913670810e-08, 0.2397684236095e+01, 0.6632000300961e+01,
0.2571523050364e-08, 0.5751929456787e+00, 0.6206810014183e+01,
0.2582135006946e-08, 0.5595464352926e+01, 0.4873985990671e+02,
0.2372530190361e-08, 0.5092689490655e+01, 0.1590676413561e+02,
0.2357178484712e-08, 0.4444363527851e+01, 0.3097883698531e+01,
0.2451590394723e-08, 0.3108251687661e+01, 0.6612329252343e+00,
0.2370045949608e-08, 0.2608133861079e+01, 0.3459636466239e+02,
0.2268997267358e-08, 0.3639717753384e+01, 0.2844914056730e-01,
0.1731432137906e-08, 0.1741898445707e+00, 0.2019909489111e+02,
0.1629869741622e-08, 0.3902225646724e+01, 0.3035599730800e+02,
0.2206215801974e-08, 0.4971131250731e+01, 0.6281667977667e+01,
0.2205469554680e-08, 0.1677462357110e+01, 0.6284483723224e+01,
0.2148792362509e-08, 0.4236259604006e+01, 0.1980482729015e+02,
0.1873733657847e-08, 0.5926814998687e+01, 0.2876692439167e+02,
0.2026573758959e-08, 0.4349643351962e+01, 0.2449240616245e+02,
0.1807770325110e-08, 0.5700940482701e+01, 0.2045286941806e+02,
0.1881174408581e-08, 0.6601286363430e+00, 0.2358125818164e+02,
0.1368023671690e-08, 0.2211098592752e+01, 0.2473415438279e+02,
0.1720017916280e-08, 0.4942488551129e+01, 0.1679593901136e+03,
0.1702427665131e-08, 0.1452233856386e+01, 0.3338575901272e+03,
0.1414032510054e-08, 0.5525357721439e+01, 0.1624205518357e+03,
0.1652626045364e-08, 0.4108794283624e+01, 0.8956999012000e+02,
0.1642957769686e-08, 0.7344335209984e+00, 0.5267006960365e+02,
0.1614952403624e-08, 0.3541213951363e+01, 0.3332657872986e+02,
0.1535988291188e-08, 0.4031094072151e+01, 0.3852657435933e+02,
0.1593193738177e-08, 0.4185136203609e+01, 0.2282781046519e+03,
0.1074569126382e-08, 0.1720485636868e+01, 0.8397383534231e+02,
0.1074408214509e-08, 0.2758613420318e+01, 0.8401985929482e+02,
0.9700199670465e-09, 0.4216686842097e+01, 0.7826370942180e+02,
0.1258433517061e-08, 0.2575068876639e+00, 0.3115650189215e+03,
0.1240303229539e-08, 0.4800844956756e+00, 0.1784300471910e+03,
0.9018345948127e-09, 0.3896756361552e+00, 0.5886454391678e+02,
0.1135301432805e-08, 0.3700805023550e+00, 0.7842370451713e+02,
0.9215887951370e-09, 0.4364579276638e+01, 0.1014262087719e+03,
0.1055401054147e-08, 0.2156564222111e+01, 0.5660027930059e+02,
0.1008725979831e-08, 0.5454015785234e+01, 0.4245678405627e+02,
0.7217398104321e-09, 0.1597772562175e+01, 0.2457074661053e+03,
0.6912033134447e-09, 0.5824090621461e+01, 0.1679936946371e+03,
0.6833881523549e-09, 0.3578778482835e+01, 0.6053048899753e+02,
0.4887304205142e-09, 0.3724362812423e+01, 0.9656299901946e+02,
0.5173709754788e-09, 0.5422427507933e+01, 0.2442876000072e+03,
0.4671353097145e-09, 0.2396106924439e+01, 0.1435713242844e+03,
0.5652608439480e-09, 0.2804028838685e+01, 0.8365903305582e+02,
0.5604061331253e-09, 0.1638816006247e+01, 0.8433466158131e+02,
0.4712723365400e-09, 0.8979003224474e+00, 0.3164282286739e+03,
0.4909967465112e-09, 0.3210426725516e+01, 0.4059982187939e+03,
0.4771358267658e-09, 0.5308027211629e+01, 0.1805255418145e+03,
0.3943451445989e-09, 0.2195145341074e+01, 0.2568537517081e+03,
0.3952109120244e-09, 0.5081189491586e+01, 0.2449975330562e+03,
0.3788134594789e-09, 0.4345171264441e+01, 0.1568131045107e+03,
0.3738330190479e-09, 0.2613062847997e+01, 0.3948519331910e+03,
0.3099866678136e-09, 0.2846760817689e+01, 0.1547176098872e+03,
0.2002962716768e-09, 0.4921360989412e+01, 0.2268582385539e+03,
0.2198291338754e-09, 0.1130360117454e+00, 0.1658638954901e+03,
0.1491958330784e-09, 0.4228195232278e+01, 0.2219950288015e+03,
0.1475384076173e-09, 0.3005721811604e+00, 0.3052819430710e+03,
0.1661626624624e-09, 0.7830125621203e+00, 0.2526661704812e+03,
0.9015823460025e-10, 0.3807792942715e+01, 0.4171445043968e+03 };
/* Sun-to-Earth, T^0, Y */
static const double e0y[] = {
0.9998921098898e+00, 0.1826583913846e+00, 0.6283075850446e+01,
-0.2442700893735e-01, 0.0000000000000e+00, 0.0000000000000e+00,
0.8352929742915e-02, 0.1395277998680e+00, 0.1256615170089e+02,
0.1046697300177e-03, 0.9641423109763e-01, 0.1884922755134e+02,
0.3110841876663e-04, 0.5381140401712e+01, 0.8399684731857e+02,
0.2570269094593e-04, 0.5301016407128e+01, 0.5296909721118e+00,
0.2147389623610e-04, 0.2662510869850e+01, 0.1577343543434e+01,
0.1680344384050e-04, 0.5207904119704e+01, 0.6279552690824e+01,
0.1679117312193e-04, 0.4582187486968e+01, 0.6286599010068e+01,
0.1440512068440e-04, 0.1900688517726e+01, 0.2352866153506e+01,
0.1135139664999e-04, 0.5273108538556e+01, 0.5223693906222e+01,
0.9345482571018e-05, 0.4503047687738e+01, 0.1203646072878e+02,
0.9007418719568e-05, 0.1605621059637e+01, 0.1021328554739e+02,
0.5671536712314e-05, 0.5812849070861e+00, 0.1059381944224e+01,
0.7451401861666e-05, 0.2807346794836e+01, 0.3981490189893e+00,
0.6393470057114e-05, 0.6029224133855e+01, 0.5753384878334e+01,
0.6814275881697e-05, 0.6472990145974e+00, 0.4705732307012e+01,
0.6113705628887e-05, 0.3813843419700e+01, 0.6812766822558e+01,
0.4503851367273e-05, 0.4527804370996e+01, 0.5884926831456e+01,
0.4522249141926e-05, 0.5991783029224e+01, 0.6256777527156e+01,
0.4501794307018e-05, 0.3798703844397e+01, 0.6309374173736e+01,
0.5514927480180e-05, 0.3961257833388e+01, 0.5507553240374e+01,
0.4062862799995e-05, 0.5256247296369e+01, 0.6681224869435e+01,
0.5414900429712e-05, 0.5499032014097e+01, 0.7755226100720e+00,
0.5463153987424e-05, 0.6173092454097e+01, 0.1414349524433e+02,
0.5071611859329e-05, 0.2870244247651e+01, 0.7860419393880e+01,
0.2195112094455e-05, 0.2952338617201e+01, 0.1150676975667e+02,
0.2279139233919e-05, 0.5951775132933e+01, 0.7058598460518e+01,
0.2278386100876e-05, 0.4845456398785e+01, 0.4694002934110e+01,
0.2559088003308e-05, 0.6945321117311e+00, 0.1216800268190e+02,
0.2561079286856e-05, 0.6167224608301e+01, 0.7099330490126e+00,
0.1792755796387e-05, 0.1400122509632e+01, 0.7962980379786e+00,
0.1818715656502e-05, 0.4703347611830e+01, 0.6283142985870e+01,
0.1818744924791e-05, 0.5086748900237e+01, 0.6283008715021e+01,
0.1554518791390e-05, 0.5331008042713e-01, 0.2513230340178e+02,
0.2063265737239e-05, 0.4283680484178e+01, 0.1179062909082e+02,
0.1497613520041e-05, 0.6074207826073e+01, 0.5486777812467e+01,
0.2000617940427e-05, 0.2501426281450e+01, 0.1778984560711e+02,
0.1289731195580e-05, 0.3646340599536e+01, 0.7079373888424e+01,
0.1282657998934e-05, 0.3232864804902e+01, 0.3738761453707e+01,
0.1528915968658e-05, 0.5581433416669e+01, 0.2132990797783e+00,
0.1187304098432e-05, 0.5453576453694e+01, 0.9437762937313e+01,
0.7842782928118e-06, 0.2823953922273e+00, 0.8827390247185e+01,
0.7352892280868e-06, 0.1124369580175e+01, 0.1589072916335e+01,
0.6570189360797e-06, 0.2089154042840e+01, 0.1176985366291e+02,
0.6324967590410e-06, 0.6704855581230e+00, 0.6262300422539e+01,
0.6298289872283e-06, 0.2836414855840e+01, 0.6303851278352e+01,
0.6476686465855e-06, 0.4852433866467e+00, 0.7113454667900e-02,
0.8587034651234e-06, 0.1453511005668e+01, 0.1672837615881e+03,
0.8068948788113e-06, 0.9224087798609e+00, 0.6069776770667e+01,
0.8353786011661e-06, 0.4631707184895e+01, 0.3340612434717e+01,
0.6009324532132e-06, 0.1829498827726e+01, 0.4136910472696e+01,
0.7558158559566e-06, 0.2588596800317e+01, 0.6496374930224e+01,
0.5809279504503e-06, 0.5516818853476e+00, 0.1097707878456e+02,
0.5374131950254e-06, 0.6275674734960e+01, 0.1194447056968e+01,
0.5711160507326e-06, 0.1091905956872e+01, 0.6282095334605e+01,
0.5710183170746e-06, 0.2415001635090e+01, 0.6284056366286e+01,
0.5144373590610e-06, 0.6020336443438e+01, 0.6290189305114e+01,
0.5103108927267e-06, 0.3775634564605e+01, 0.6275962395778e+01,
0.4960654697891e-06, 0.1073450946756e+01, 0.6127655567643e+01,
0.4786385689280e-06, 0.2431178012310e+01, 0.6438496133249e+01,
0.6109911263665e-06, 0.5343356157914e+01, 0.3154687086868e+01,
0.4839898944024e-06, 0.5830833594047e-01, 0.8018209333619e+00,
0.4734822623919e-06, 0.4536080134821e+01, 0.3128388763578e+01,
0.4834741473290e-06, 0.2585090489754e+00, 0.7084896783808e+01,
0.5134858581156e-06, 0.4213317172603e+01, 0.1235285262111e+02,
0.5064004264978e-06, 0.4814418806478e+00, 0.1185621865188e+02,
0.3753476772761e-06, 0.1599953399788e+01, 0.8429241228195e+01,
0.4935264014283e-06, 0.2157417556873e+01, 0.2544314396739e+01,
0.3950929600897e-06, 0.3359394184254e+01, 0.5481254917084e+01,
0.4895849789777e-06, 0.5165704376558e+01, 0.9225539266174e+01,
0.4215241688886e-06, 0.2065368800993e+01, 0.1726015463500e+02,
0.3796773731132e-06, 0.1468606346612e+01, 0.4265981595566e+00,
0.3114178142515e-06, 0.3615638079474e+01, 0.2146165377750e+01,
0.3260664220838e-06, 0.4417134922435e+01, 0.4164311961999e+01,
0.3976996123008e-06, 0.4700866883004e+01, 0.5856477690889e+01,
0.2801459672924e-06, 0.4538902060922e+01, 0.1256967486051e+02,
0.3638931868861e-06, 0.1334197991475e+01, 0.1807370494127e+02,
0.2487013269476e-06, 0.3749275558275e+01, 0.2629832328990e-01,
0.3034165481994e-06, 0.4236622030873e+00, 0.4535059491685e+01,
0.2676278825586e-06, 0.5970848007811e+01, 0.3930209696940e+01,
0.2764903818918e-06, 0.5194636754501e+01, 0.1256262854127e+02,
0.2485149930507e-06, 0.1002434207846e+01, 0.5088628793478e+01,
0.2199305540941e-06, 0.3066773098403e+01, 0.1255903824622e+02,
0.2571106500435e-06, 0.7588312459063e+00, 0.1336797263425e+02,
0.2049751817158e-06, 0.3444977434856e+01, 0.1137170464392e+02,
0.2599707296297e-06, 0.1873128542205e+01, 0.7143069561767e+02,
0.1785018072217e-06, 0.5015891306615e+01, 0.1748016358760e+01,
0.2324833891115e-06, 0.4618271239730e+01, 0.1831953657923e+02,
0.1709711119545e-06, 0.5300003455669e+01, 0.4933208510675e+01,
0.2107159351716e-06, 0.2229819815115e+01, 0.7477522907414e+01,
0.1750333080295e-06, 0.6161485880008e+01, 0.1044738781244e+02,
0.2000598210339e-06, 0.2967357299999e+01, 0.8031092209206e+01,
0.1380920248681e-06, 0.3027007923917e+01, 0.8635942003952e+01,
0.1412460470299e-06, 0.6037597163798e+01, 0.2942463415728e+01,
0.1888459803001e-06, 0.8561476243374e+00, 0.1561374759853e+03,
0.1788370542585e-06, 0.4869736290209e+01, 0.1592596075957e+01,
0.1360893296167e-06, 0.3626411886436e+01, 0.1309584267300e+02,
0.1506846530160e-06, 0.1550975377427e+01, 0.1649636139783e+02,
0.1800913376176e-06, 0.2075826033190e+01, 0.1729818233119e+02,
0.1436261390649e-06, 0.6148876420255e+01, 0.2042657109477e+02,
0.1220227114151e-06, 0.4382583879906e+01, 0.7632943190217e+01,
0.1337883603592e-06, 0.2036644327361e+01, 0.1213955354133e+02,
0.1159326650738e-06, 0.3892276994687e+01, 0.5331357529664e+01,
0.1352853128569e-06, 0.1447950649744e+01, 0.1673046366289e+02,
0.1433408296083e-06, 0.4457854692961e+01, 0.7342457794669e+01,
0.1234701666518e-06, 0.1538818147151e+01, 0.6279485555400e+01,
0.1234027192007e-06, 0.1968523220760e+01, 0.6286666145492e+01,
0.1244024091797e-06, 0.5779803499985e+01, 0.1511046609763e+02,
0.1097934945516e-06, 0.6210975221388e+00, 0.1098880815746e+02,
0.1254611329856e-06, 0.2591963807998e+01, 0.1572083878776e+02,
0.1158247286784e-06, 0.2483612812670e+01, 0.5729506548653e+01,
0.9039078252960e-07, 0.3857554579796e+01, 0.9623688285163e+01,
0.9108024978836e-07, 0.5826368512984e+01, 0.7234794171227e+01,
0.8887068108436e-07, 0.3475694573987e+01, 0.6148010737701e+01,
0.8632374035438e-07, 0.3059070488983e-01, 0.6418140963190e+01,
0.7893186992967e-07, 0.1583194837728e+01, 0.2118763888447e+01,
0.8297650201172e-07, 0.8519770534637e+00, 0.1471231707864e+02,
0.1019759578988e-06, 0.1319598738732e+00, 0.1349867339771e+01,
0.1010037696236e-06, 0.9937860115618e+00, 0.6836645152238e+01,
0.1047727548266e-06, 0.1382138405399e+01, 0.5999216516294e+01,
0.7351993881086e-07, 0.3833397851735e+01, 0.6040347114260e+01,
0.9868771092341e-07, 0.2124913814390e+01, 0.6566935184597e+01,
0.7007321959390e-07, 0.5946305343763e+01, 0.6525804586632e+01,
0.6861411679709e-07, 0.4574654977089e+01, 0.7238675589263e+01,
0.7554519809614e-07, 0.5949232686844e+01, 0.1253985337760e+02,
0.9541880448335e-07, 0.3495242990564e+01, 0.2122839202813e+02,
0.7185606722155e-07, 0.4310113471661e+01, 0.6245048154254e+01,
0.7131360871710e-07, 0.5480309323650e+01, 0.6321103546637e+01,
0.6651142021039e-07, 0.5411097713654e+01, 0.5327476111629e+01,
0.8538618213667e-07, 0.1827849973951e+01, 0.1101510648075e+02,
0.8634954288044e-07, 0.5443584943349e+01, 0.5643178611111e+01,
0.7449415051484e-07, 0.2011535459060e+01, 0.5368044267797e+00,
0.7421047599169e-07, 0.3464562529249e+01, 0.2354323048545e+02,
0.6140694354424e-07, 0.5657556228815e+01, 0.1296430071988e+02,
0.6353525143033e-07, 0.3463816593821e+01, 0.1990745094947e+01,
0.6221964013447e-07, 0.1532259498697e+01, 0.9517183207817e+00,
0.5852480257244e-07, 0.1375396598875e+01, 0.9555997388169e+00,
0.6398637498911e-07, 0.2405645801972e+01, 0.2407292145756e+02,
0.7039744069878e-07, 0.5397541799027e+01, 0.5225775174439e+00,
0.6977997694382e-07, 0.4762347105419e+01, 0.1097355562493e+02,
0.7460629558396e-07, 0.2711944692164e+01, 0.2200391463820e+02,
0.5376577536101e-07, 0.2352980430239e+01, 0.1431416805965e+02,
0.7530607893556e-07, 0.1943940180699e+01, 0.1842262939178e+02,
0.6822928971605e-07, 0.4337651846959e+01, 0.1554202828031e+00,
0.6220772380094e-07, 0.6716871369278e+00, 0.1845107853235e+02,
0.6586950799043e-07, 0.2229714460505e+01, 0.5216580451554e+01,
0.5873800565771e-07, 0.7627013920580e+00, 0.6398972393349e+00,
0.6264346929745e-07, 0.6202785478961e+00, 0.6277552955062e+01,
0.6257929115669e-07, 0.2886775596668e+01, 0.6288598745829e+01,
0.5343536033409e-07, 0.1977241012051e+01, 0.4690479774488e+01,
0.5587849781714e-07, 0.1922923484825e+01, 0.1551045220144e+01,
0.6905100845603e-07, 0.3570757164631e+01, 0.1030928125552e+00,
0.6178957066649e-07, 0.5197558947765e+01, 0.5230807360890e+01,
0.6187270224331e-07, 0.8193497368922e+00, 0.5650292065779e+01,
0.5385664291426e-07, 0.5406336665586e+01, 0.7771377146812e+02,
0.6329363917926e-07, 0.2837760654536e+01, 0.2608790314060e+02,
0.4546018761604e-07, 0.2933580297050e+01, 0.5535693017924e+00,
0.6196091049375e-07, 0.4157871494377e+01, 0.8467247584405e+02,
0.6159555108218e-07, 0.3211703561703e+01, 0.2394243902548e+03,
0.4995340539317e-07, 0.1459098102922e+01, 0.4732030630302e+01,
0.5457031243572e-07, 0.1430457676136e+01, 0.6179983037890e+01,
0.4863461418397e-07, 0.2196425916730e+01, 0.9027992316901e+02,
0.5342947626870e-07, 0.2086612890268e+01, 0.6386168663001e+01,
0.5674296648439e-07, 0.2760204966535e+01, 0.6915859635113e+01,
0.4745783120161e-07, 0.4245368971862e+01, 0.6282970628506e+01,
0.4745676961198e-07, 0.5544725787016e+01, 0.6283181072386e+01,
0.4049796869973e-07, 0.2213984363586e+01, 0.6254626709878e+01,
0.4248333596940e-07, 0.8075781952896e+00, 0.7875671926403e+01,
0.4027178070205e-07, 0.1293268540378e+01, 0.6311524991013e+01,
0.4066543943476e-07, 0.3986141175804e+01, 0.3634620989887e+01,
0.4858863787880e-07, 0.1276112738231e+01, 0.5760498333002e+01,
0.5277398263530e-07, 0.4916111741527e+01, 0.2515860172507e+02,
0.4105635656559e-07, 0.1725805864426e+01, 0.6709674010002e+01,
0.4376781925772e-07, 0.2243642442106e+01, 0.6805653367890e+01,
0.3235827894693e-07, 0.3614135118271e+01, 0.1066495398892e+01,
0.3073244740308e-07, 0.2460873393460e+01, 0.5863591145557e+01,
0.3088609271373e-07, 0.5678431771790e+01, 0.9917696840332e+01,
0.3393022279836e-07, 0.3814017477291e+01, 0.1391601904066e+02,
0.3038686508802e-07, 0.4660216229171e+01, 0.1256621883632e+02,
0.4019677752497e-07, 0.5906906243735e+01, 0.1334167431096e+02,
0.3288834998232e-07, 0.9536146445882e+00, 0.1620077269078e+02,
0.3889973794631e-07, 0.3942205097644e+01, 0.7478166569050e-01,
0.3050438987141e-07, 0.1624810271286e+01, 0.1805292951336e+02,
0.3601142564638e-07, 0.4030467142575e+01, 0.6208294184755e+01,
0.3689015557141e-07, 0.3648878818694e+01, 0.5966683958112e+01,
0.3563471893565e-07, 0.5749584017096e+01, 0.6357857516136e+01,
0.2776183170667e-07, 0.2630124187070e+01, 0.3523159621801e-02,
0.2922350530341e-07, 0.1790346403629e+01, 0.1272157198369e+02,
0.3511076917302e-07, 0.6142198301611e+01, 0.6599467742779e+01,
0.3619351007632e-07, 0.1432421386492e+01, 0.6019991944201e+01,
0.2561254711098e-07, 0.2302822475792e+01, 0.1259245002418e+02,
0.2626903942920e-07, 0.8660470994571e+00, 0.6702560555334e+01,
0.2550187397083e-07, 0.6069721995383e+01, 0.1057540660594e+02,
0.2535873526138e-07, 0.1079020331795e-01, 0.3141537925223e+02,
0.3519786153847e-07, 0.3809066902283e+01, 0.2505706758577e+03,
0.3424651492873e-07, 0.2075435114417e+01, 0.6546159756691e+01,
0.2372676630861e-07, 0.2057803120154e+01, 0.2388894113936e+01,
0.2710980779541e-07, 0.1510068488010e+01, 0.1202934727411e+02,
0.3038710889704e-07, 0.5043617528901e+01, 0.1256608456547e+02,
0.2220364130585e-07, 0.3694793218205e+01, 0.1336244973887e+02,
0.3025880825460e-07, 0.5450618999049e-01, 0.2908881142201e+02,
0.2784493486864e-07, 0.3381164084502e+01, 0.1494531617769e+02,
0.2294414142438e-07, 0.4382309025210e+01, 0.6076890225335e+01,
0.2012723294724e-07, 0.9142212256518e+00, 0.6262720680387e+01,
0.2036357831958e-07, 0.5676172293154e+01, 0.4701116388778e+01,
0.2003474823288e-07, 0.2592767977625e+01, 0.6303431020504e+01,
0.2207144900109e-07, 0.5404976271180e+01, 0.6489261475556e+01,
0.2481664905135e-07, 0.4373284587027e+01, 0.1204357418345e+02,
0.2674949182295e-07, 0.5859182188482e+01, 0.4590910121555e+01,
0.2450554720322e-07, 0.4555381557451e+01, 0.1495633313810e+00,
0.2601975986457e-07, 0.3933165584959e+01, 0.1965104848470e+02,
0.2199860022848e-07, 0.5227977189087e+01, 0.1351787002167e+02,
0.2448121172316e-07, 0.4858060353949e+01, 0.1162474756779e+01,
0.1876014864049e-07, 0.5690546553605e+01, 0.6279194432410e+01,
0.1874513219396e-07, 0.4099539297446e+01, 0.6286957268481e+01,
0.2156380842559e-07, 0.4382594769913e+00, 0.1813929450232e+02,
0.1981691240061e-07, 0.1829784152444e+01, 0.4686889479442e+01,
0.2329992648539e-07, 0.2836254278973e+01, 0.1002183730415e+02,
0.1765184135302e-07, 0.2803494925833e+01, 0.4292330755499e+01,
0.2436368366085e-07, 0.2836897959677e+01, 0.9514313292143e+02,
0.2164089203889e-07, 0.6127522446024e+01, 0.6037244212485e+01,
0.1847755034221e-07, 0.3683163635008e+01, 0.2427287361862e+00,
0.1674798769966e-07, 0.3316993867246e+00, 0.1311972100268e+02,
0.2222542124356e-07, 0.8294097805480e+00, 0.1266924451345e+02,
0.2071074505925e-07, 0.3659492220261e+01, 0.6528907488406e+01,
0.1608224471835e-07, 0.4774492067182e+01, 0.1352175143971e+02,
0.1857583439071e-07, 0.2873120597682e+01, 0.8662240327241e+01,
0.1793018836159e-07, 0.5282441177929e+00, 0.6819880277225e+01,
0.1575391221692e-07, 0.1320789654258e+01, 0.1102062672231e+00,
0.1840132009557e-07, 0.1917110916256e+01, 0.6514761976723e+02,
0.1760917288281e-07, 0.2972635937132e+01, 0.5746271423666e+01,
0.1561779518516e-07, 0.4372569261981e+01, 0.6272439236156e+01,
0.1558687885205e-07, 0.5416424926425e+01, 0.6293712464735e+01,
0.1951359382579e-07, 0.3094448898752e+01, 0.2301353951334e+02,
0.1569144275614e-07, 0.2802103689808e+01, 0.1765478049437e+02,
0.1479130389462e-07, 0.2136435020467e+01, 0.2077542790660e-01,
0.1467828510764e-07, 0.7072627435674e+00, 0.1052268489556e+01,
0.1627627337440e-07, 0.3947607143237e+01, 0.6327837846670e+00,
0.1503498479758e-07, 0.4079248909190e+01, 0.7626583626240e-01,
0.1297967708237e-07, 0.6269637122840e+01, 0.1149965630200e+02,
0.1374416896634e-07, 0.4175657970702e+01, 0.6016468784579e+01,
0.1783812325219e-07, 0.1476540547560e+01, 0.3301902111895e+02,
0.1525884228756e-07, 0.4653477715241e+01, 0.9411464614024e+01,
0.1451067396763e-07, 0.2573001128225e+01, 0.1277945078067e+02,
0.1297713111950e-07, 0.5612799618771e+01, 0.6549682916313e+01,
0.1462784012820e-07, 0.4189661623870e+01, 0.1863592847156e+02,
0.1384185980007e-07, 0.2656915472196e+01, 0.2379164476796e+01,
0.1221497599801e-07, 0.5612515760138e+01, 0.1257326515556e+02,
0.1560574525896e-07, 0.4783414317919e+01, 0.1887552587463e+02,
0.1544598372036e-07, 0.2694431138063e+01, 0.1820933031200e+02,
0.1531678928696e-07, 0.4105103489666e+01, 0.2593412433514e+02,
0.1349321503795e-07, 0.3082437194015e+00, 0.5120601093667e+01,
0.1252030290917e-07, 0.6124072334087e+01, 0.6993008899458e+01,
0.1459243816687e-07, 0.3733103981697e+01, 0.3813291813120e-01,
0.1226103625262e-07, 0.1267127706817e+01, 0.2435678079171e+02,
0.1019449641504e-07, 0.4367790112269e+01, 0.1725663147538e+02,
0.1380789433607e-07, 0.3387201768700e+01, 0.2458316379602e+00,
0.1019453421658e-07, 0.9204143073737e+00, 0.6112403035119e+01,
0.1297929434405e-07, 0.5786874896426e+01, 0.1249137003520e+02,
0.9912677786097e-08, 0.3164232870746e+01, 0.6247047890016e+01,
0.9829386098599e-08, 0.2586762413351e+01, 0.6453748665772e+01,
0.1226807746104e-07, 0.6239068436607e+01, 0.5429879531333e+01,
0.1192691755997e-07, 0.1867380051424e+01, 0.6290122169689e+01,
0.9836499227081e-08, 0.3424716293727e+00, 0.6319103810876e+01,
0.9642862564285e-08, 0.5661372990657e+01, 0.8273820945392e+01,
0.1165184404862e-07, 0.5768367239093e+01, 0.1778273215245e+02,
0.1175794418818e-07, 0.1657351222943e+01, 0.6276029531202e+01,
0.1018948635601e-07, 0.6458292350865e+00, 0.1254537627298e+02,
0.9500383606676e-08, 0.1054306140741e+01, 0.1256517118505e+02,
0.1227512202906e-07, 0.2505278379114e+01, 0.2248384854122e+02,
0.9664792009993e-08, 0.4289737277000e+01, 0.6259197520765e+01,
0.9613285666331e-08, 0.5500597673141e+01, 0.6306954180126e+01,
0.1117906736211e-07, 0.2361405953468e+01, 0.1779695906178e+02,
0.9611378640782e-08, 0.2851310576269e+01, 0.2061856251104e+00,
0.8845354852370e-08, 0.6208777705343e+01, 0.1692165728891e+01,
0.1054046966600e-07, 0.5413091423934e+01, 0.2204125344462e+00,
0.1215539124483e-07, 0.5613969479755e+01, 0.8257698122054e+02,
0.9932460955209e-08, 0.1106124877015e+01, 0.1017725758696e+02,
0.8785804715043e-08, 0.2869224476477e+01, 0.9491756770005e+00,
0.8538084097562e-08, 0.6159640899344e+01, 0.6393282117669e+01,
0.8648994369529e-08, 0.1374901198784e+01, 0.4804209201333e+01,
0.1039063219067e-07, 0.5171080641327e+01, 0.1550861511662e+02,
0.8867983926439e-08, 0.8317320304902e+00, 0.3903911373650e+01,
0.8327495955244e-08, 0.3605591969180e+01, 0.6172869583223e+01,
0.9243088356133e-08, 0.6114299196843e+01, 0.6267823317922e+01,
0.9205657357835e-08, 0.3675153683737e+01, 0.6298328382969e+01,
0.1033269714606e-07, 0.3313328813024e+01, 0.5573142801433e+01,
0.8001706275552e-08, 0.2019980960053e+01, 0.2648454860559e+01,
0.9171858254191e-08, 0.8992015524177e+00, 0.1498544001348e+03,
0.1075327150242e-07, 0.2898669963648e+01, 0.3694923081589e+02,
0.9884866689828e-08, 0.4946715904478e+01, 0.1140367694411e+02,
0.9541835576677e-08, 0.2371787888469e+01, 0.1256713221673e+02,
0.7739903376237e-08, 0.2213775190612e+01, 0.7834121070590e+01,
0.7311962684106e-08, 0.3429378787739e+01, 0.1192625446156e+02,
0.9724904869624e-08, 0.6195878564404e+01, 0.2280573557157e+02,
0.9251628983612e-08, 0.6511509527390e+00, 0.2787043132925e+01,
0.7320763787842e-08, 0.6001083639421e+01, 0.6282655592598e+01,
0.7320296650962e-08, 0.3789073265087e+01, 0.6283496108294e+01,
0.7947032271039e-08, 0.1059659582204e+01, 0.1241073141809e+02,
0.9005277053115e-08, 0.1280315624361e+01, 0.6281591679874e+01,
0.8995601652048e-08, 0.2224439106766e+01, 0.6284560021018e+01,
0.8288040568796e-08, 0.5234914433867e+01, 0.1241658836951e+02,
0.6359381347255e-08, 0.4137989441490e+01, 0.1596186371003e+01,
0.8699572228626e-08, 0.1758411009497e+01, 0.6133512519065e+01,
0.6456797542736e-08, 0.5919285089994e+01, 0.1685848245639e+02,
0.7424573475452e-08, 0.5414616938827e+01, 0.4061219149443e+01,
0.7235671196168e-08, 0.1496516557134e+01, 0.1610006857377e+03,
0.8104015182733e-08, 0.1919918242764e+01, 0.8460828644453e+00,
0.8098576535937e-08, 0.3819615855458e+01, 0.3894181736510e+01,
0.6275292346625e-08, 0.6244264115141e+01, 0.8531963191132e+00,
0.6052432989112e-08, 0.5037731872610e+00, 0.1567108171867e+02,
0.5705651535817e-08, 0.2984557271995e+01, 0.1258692712880e+02,
0.5789650115138e-08, 0.6087038140697e+01, 0.1193336791622e+02,
0.5512132153377e-08, 0.5855668994076e+01, 0.1232342296471e+02,
0.7388890819102e-08, 0.2443128574740e+01, 0.4907302013889e+01,
0.5467593991798e-08, 0.3017561234194e+01, 0.1884211409667e+02,
0.6388519802999e-08, 0.5887386712935e+01, 0.5217580628120e+02,
0.6106777149944e-08, 0.3483461059895e+00, 0.1422690933580e-01,
0.7383420275489e-08, 0.5417387056707e+01, 0.2358125818164e+02,
0.5505208141738e-08, 0.2848193644783e+01, 0.1151388321134e+02,
0.6310757462877e-08, 0.2349882520828e+01, 0.1041998632314e+02,
0.6166904929691e-08, 0.5728575944077e+00, 0.6151533897323e+01,
0.5263442042754e-08, 0.4495796125937e+01, 0.1885275071096e+02,
0.5591828082629e-08, 0.1355441967677e+01, 0.4337116142245e+00,
0.5397051680497e-08, 0.1673422864307e+01, 0.6286362197481e+01,
0.5396992745159e-08, 0.1833502206373e+01, 0.6279789503410e+01,
0.6572913000726e-08, 0.3331122065824e+01, 0.1176433076753e+02,
0.5123421866413e-08, 0.2165327142679e+01, 0.1245594543367e+02,
0.5930495725999e-08, 0.2931146089284e+01, 0.6414617803568e+01,
0.6431797403933e-08, 0.4134407994088e+01, 0.1350651127443e+00,
0.5003182207604e-08, 0.3805420303749e+01, 0.1096996532989e+02,
0.5587731032504e-08, 0.1082469260599e+01, 0.6062663316000e+01,
0.5935263407816e-08, 0.8384333678401e+00, 0.5326786718777e+01,
0.4756019827760e-08, 0.3552588749309e+01, 0.3104930017775e+01,
0.6599951172637e-08, 0.4320826409528e+01, 0.4087944051283e+02,
0.5902606868464e-08, 0.4811879454445e+01, 0.5849364236221e+01,
0.5921147809031e-08, 0.9942628922396e-01, 0.1581959461667e+01,
0.5505382581266e-08, 0.2466557607764e+01, 0.6503488384892e+01,
0.5353771071862e-08, 0.4551978748683e+01, 0.1735668374386e+03,
0.5063282210946e-08, 0.5710812312425e+01, 0.1248988586463e+02,
0.5926120403383e-08, 0.1333998428358e+01, 0.2673594526851e+02,
0.5211016176149e-08, 0.4649315360760e+01, 0.2460261242967e+02,
0.5347075084894e-08, 0.5512754081205e+01, 0.4171425416666e+01,
0.4872609773574e-08, 0.1308025299938e+01, 0.5333900173445e+01,
0.4727711321420e-08, 0.2144908368062e+01, 0.7232251527446e+01,
0.6029426018652e-08, 0.5567259412084e+01, 0.3227113045244e+03,
0.4321485284369e-08, 0.5230667156451e+01, 0.9388005868221e+01,
0.4476406760553e-08, 0.6134081115303e+01, 0.5547199253223e+01,
0.5835268277420e-08, 0.4783808492071e+01, 0.7285056171570e+02,
0.5172183602748e-08, 0.5161817911099e+01, 0.1884570439172e+02,
0.5693571465184e-08, 0.1381646203111e+01, 0.9723862754494e+02,
0.4060634965349e-08, 0.3876705259495e+00, 0.4274518229222e+01,
0.3967398770473e-08, 0.5029491776223e+01, 0.3496032717521e+01,
0.3943754005255e-08, 0.1923162955490e+01, 0.6244942932314e+01,
0.4781323427824e-08, 0.4633332586423e+01, 0.2929661536378e+02,
0.3871483781204e-08, 0.1616650009743e+01, 0.6321208768577e+01,
0.5141741733997e-08, 0.9817316704659e-01, 0.1232032006293e+02,
0.4002385978497e-08, 0.3656161212139e+01, 0.7018952447668e+01,
0.4901092604097e-08, 0.4404098713092e+01, 0.1478866649112e+01,
0.3740932630345e-08, 0.5181188732639e+00, 0.6922973089781e+01,
0.4387283718538e-08, 0.3254859566869e+01, 0.2331413144044e+03,
0.5019197802033e-08, 0.3086773224677e+01, 0.1715706182245e+02,
0.3834931695175e-08, 0.2797882673542e+01, 0.1491901785440e+02,
0.3760413942497e-08, 0.2892676280217e+01, 0.1726726808967e+02,
0.3719717204628e-08, 0.5861046025739e+01, 0.6297302759782e+01,
0.4145623530149e-08, 0.2168239627033e+01, 0.1376059875786e+02,
0.3932788425380e-08, 0.6271811124181e+01, 0.7872148766781e+01,
0.3686377476857e-08, 0.3936853151404e+01, 0.6268848941110e+01,
0.3779077950339e-08, 0.1404148734043e+01, 0.4157198507331e+01,
0.4091334550598e-08, 0.2452436180854e+01, 0.9779108567966e+01,
0.3926694536146e-08, 0.6102292739040e+01, 0.1098419223922e+02,
0.4841000253289e-08, 0.6072760457276e+01, 0.1252801878276e+02,
0.4949340130240e-08, 0.1154832815171e+01, 0.1617106187867e+03,
0.3761557737360e-08, 0.5527545321897e+01, 0.3185192151914e+01,
0.3647396268188e-08, 0.1525035688629e+01, 0.6271346477544e+01,
0.3932405074189e-08, 0.5570681040569e+01, 0.2139354194808e+02,
0.3631322501141e-08, 0.1981240601160e+01, 0.6294805223347e+01,
0.4130007425139e-08, 0.2050060880201e+01, 0.2195415756911e+02,
0.4433905965176e-08, 0.3277477970321e+01, 0.7445550607224e+01,
0.3851814176947e-08, 0.5210690074886e+01, 0.9562891316684e+00,
0.3485807052785e-08, 0.6653274904611e+00, 0.1161697602389e+02,
0.3979772816991e-08, 0.1767941436148e+01, 0.2277943724828e+02,
0.3402607460500e-08, 0.3421746306465e+01, 0.1087398597200e+02,
0.4049993000926e-08, 0.1127144787547e+01, 0.3163918923335e+00,
0.3420511182382e-08, 0.4214794779161e+01, 0.1362553364512e+02,
0.3640772365012e-08, 0.5324905497687e+01, 0.1725304118033e+02,
0.3323037987501e-08, 0.6135761838271e+01, 0.6279143387820e+01,
0.4503141663637e-08, 0.1802305450666e+01, 0.1385561574497e+01,
0.4314560055588e-08, 0.4812299731574e+01, 0.4176041334900e+01,
0.3294226949110e-08, 0.3657547059723e+01, 0.6287008313071e+01,
0.3215657197281e-08, 0.4866676894425e+01, 0.5749861718712e+01,
0.4129362656266e-08, 0.3809342558906e+01, 0.5905702259363e+01,
0.3137762976388e-08, 0.2494635174443e+01, 0.2099539292909e+02,
0.3514010952384e-08, 0.2699961831678e+01, 0.7335344340001e+01,
0.3327607571530e-08, 0.3318457714816e+01, 0.5436992986000e+01,
0.3541066946675e-08, 0.4382703582466e+01, 0.1234573916645e+02,
0.3216179847052e-08, 0.5271066317054e+01, 0.3802769619140e-01,
0.2959045059570e-08, 0.5819591585302e+01, 0.2670964694522e+02,
0.3884040326665e-08, 0.5980934960428e+01, 0.6660449441528e+01,
0.2922027539886e-08, 0.3337290282483e+01, 0.1375773836557e+01,
0.4110846382042e-08, 0.5742978187327e+01, 0.4480965020977e+02,
0.2934508411032e-08, 0.2278075804200e+01, 0.6408777551755e+00,
0.3966896193000e-08, 0.5835747858477e+01, 0.3773735910827e+00,
0.3286695827610e-08, 0.5838898193902e+01, 0.3932462625300e-02,
0.3720643094196e-08, 0.1122212337858e+01, 0.1646033343740e+02,
0.3285508906174e-08, 0.9182250996416e+00, 0.1081813534213e+02,
0.3753880575973e-08, 0.5174761973266e+01, 0.5642198095270e+01,
0.3022129385587e-08, 0.3381611020639e+01, 0.2982630633589e+02,
0.2798569205621e-08, 0.3546193723922e+01, 0.1937891852345e+02,
0.3397872070505e-08, 0.4533203197934e+01, 0.6923953605621e+01,
0.3708099772977e-08, 0.2756168198616e+01, 0.3066615496545e+02,
0.3599283541510e-08, 0.1934395469918e+01, 0.6147450479709e+01,
0.3688702753059e-08, 0.7149920971109e+00, 0.2636725487657e+01,
0.2681084724003e-08, 0.4899819493154e+01, 0.6816289982179e+01,
0.3495993460759e-08, 0.1572418915115e+01, 0.6418701221183e+01,
0.3130770324995e-08, 0.8912190180489e+00, 0.1235996607578e+02,
0.2744353821941e-08, 0.3800821940055e+01, 0.2059724391010e+02,
0.2842732906341e-08, 0.2644717440029e+01, 0.2828699048865e+02,
0.3046882682154e-08, 0.3987793020179e+01, 0.6055599646783e+01,
0.2399072455143e-08, 0.9908826440764e+00, 0.6255674361143e+01,
0.2384306274204e-08, 0.2516149752220e+01, 0.6310477339748e+01,
0.2977324500559e-08, 0.5849195642118e+01, 0.1652265972112e+02,
0.3062835258972e-08, 0.1681660100162e+01, 0.1172006883645e+02,
0.3109682589231e-08, 0.5804143987737e+00, 0.2751146787858e+02,
0.2903920355299e-08, 0.5800768280123e+01, 0.6510552054109e+01,
0.2823221989212e-08, 0.9241118370216e+00, 0.5469525544182e+01,
0.3187949696649e-08, 0.3139776445735e+01, 0.1693792562116e+03,
0.2922559771655e-08, 0.3549440782984e+01, 0.2630839062450e+00,
0.2436302066603e-08, 0.4735540696319e+01, 0.3946258593675e+00,
0.3049473043606e-08, 0.4998289124561e+01, 0.8390110365991e+01,
0.2863682575784e-08, 0.6709515671102e+00, 0.2243449970715e+00,
0.2641750517966e-08, 0.5410978257284e+01, 0.2986433403208e+02,
0.2704093466243e-08, 0.4778317207821e+01, 0.6129297044991e+01,
0.2445522177011e-08, 0.6009020662222e+01, 0.1171295538178e+02,
0.2623608810230e-08, 0.5010449777147e+01, 0.6436854655901e+01,
0.2079259704053e-08, 0.5980943768809e+01, 0.2019909489111e+02,
0.2820225596771e-08, 0.2679965110468e+01, 0.5934151399930e+01,
0.2365221950927e-08, 0.1894231148810e+01, 0.2470570524223e+02,
0.2359682077149e-08, 0.4220752950780e+01, 0.8671969964381e+01,
0.2387577137206e-08, 0.2571783940617e+01, 0.7096626156709e+01,
0.1982102089816e-08, 0.5169765997119e+00, 0.1727188400790e+02,
0.2687502389925e-08, 0.6239078264579e+01, 0.7075506709219e+02,
0.2207751669135e-08, 0.2031184412677e+01, 0.4377611041777e+01,
0.2618370214274e-08, 0.8266079985979e+00, 0.6632000300961e+01,
0.2591951887361e-08, 0.8819350522008e+00, 0.4873985990671e+02,
0.2375055656248e-08, 0.3520944177789e+01, 0.1590676413561e+02,
0.2472019978911e-08, 0.1551431908671e+01, 0.6612329252343e+00,
0.2368157127199e-08, 0.4178610147412e+01, 0.3459636466239e+02,
0.1764846605693e-08, 0.1506764000157e+01, 0.1980094587212e+02,
0.2291769608798e-08, 0.2118250611782e+01, 0.2844914056730e-01,
0.2209997316943e-08, 0.3363255261678e+01, 0.2666070658668e+00,
0.2292699097923e-08, 0.4200423956460e+00, 0.1484170571900e-02,
0.1629683015329e-08, 0.2331362582487e+01, 0.3035599730800e+02,
0.2206492862426e-08, 0.3400274026992e+01, 0.6281667977667e+01,
0.2205746568257e-08, 0.1066051230724e+00, 0.6284483723224e+01,
0.2026310767991e-08, 0.2779066487979e+01, 0.2449240616245e+02,
0.1762977622163e-08, 0.9951450691840e+00, 0.2045286941806e+02,
0.1368535049606e-08, 0.6402447365817e+00, 0.2473415438279e+02,
0.1720598775450e-08, 0.2303524214705e+00, 0.1679593901136e+03,
0.1702429015449e-08, 0.6164622655048e+01, 0.3338575901272e+03,
0.1414033197685e-08, 0.3954561185580e+01, 0.1624205518357e+03,
0.1573768958043e-08, 0.2028286308984e+01, 0.3144167757552e+02,
0.1650705184447e-08, 0.2304040666128e+01, 0.5267006960365e+02,
0.1651087618855e-08, 0.2538461057280e+01, 0.8956999012000e+02,
0.1616409518983e-08, 0.5111054348152e+01, 0.3332657872986e+02,
0.1537175173581e-08, 0.5601130666603e+01, 0.3852657435933e+02,
0.1593191980553e-08, 0.2614340453411e+01, 0.2282781046519e+03,
0.1499480170643e-08, 0.3624721577264e+01, 0.2823723341956e+02,
0.1493807843235e-08, 0.4214569879008e+01, 0.2876692439167e+02,
0.1074571199328e-08, 0.1496911744704e+00, 0.8397383534231e+02,
0.1074406983417e-08, 0.1187817671922e+01, 0.8401985929482e+02,
0.9757576855851e-09, 0.2655703035858e+01, 0.7826370942180e+02,
0.1258432887565e-08, 0.4969896184844e+01, 0.3115650189215e+03,
0.1240336343282e-08, 0.5192460776926e+01, 0.1784300471910e+03,
0.9016107005164e-09, 0.1960356923057e+01, 0.5886454391678e+02,
0.1135392360918e-08, 0.5082427809068e+01, 0.7842370451713e+02,
0.9216046089565e-09, 0.2793775037273e+01, 0.1014262087719e+03,
0.1061276615030e-08, 0.3726144311409e+01, 0.5660027930059e+02,
0.1010110596263e-08, 0.7404080708937e+00, 0.4245678405627e+02,
0.7217424756199e-09, 0.2697449980577e-01, 0.2457074661053e+03,
0.6912003846756e-09, 0.4253296276335e+01, 0.1679936946371e+03,
0.6871814664847e-09, 0.5148072412354e+01, 0.6053048899753e+02,
0.4887158016343e-09, 0.2153581148294e+01, 0.9656299901946e+02,
0.5161802866314e-09, 0.3852750634351e+01, 0.2442876000072e+03,
0.5652599559057e-09, 0.1233233356270e+01, 0.8365903305582e+02,
0.4710812608586e-09, 0.5610486976767e+01, 0.3164282286739e+03,
0.4909977500324e-09, 0.1639629524123e+01, 0.4059982187939e+03,
0.4772641839378e-09, 0.3737100368583e+01, 0.1805255418145e+03,
0.4487562567153e-09, 0.1158417054478e+00, 0.8433466158131e+02,
0.3943441230497e-09, 0.6243502862796e+00, 0.2568537517081e+03,
0.3952236913598e-09, 0.3510377382385e+01, 0.2449975330562e+03,
0.3788898363417e-09, 0.5916128302299e+01, 0.1568131045107e+03,
0.3738329328831e-09, 0.1042266763456e+01, 0.3948519331910e+03,
0.2451199165151e-09, 0.1166788435700e+01, 0.1435713242844e+03,
0.2436734402904e-09, 0.3254726114901e+01, 0.2268582385539e+03,
0.2213605274325e-09, 0.1687210598530e+01, 0.1658638954901e+03,
0.1491521204829e-09, 0.2657541786794e+01, 0.2219950288015e+03,
0.1474995329744e-09, 0.5013089805819e+01, 0.3052819430710e+03,
0.1661939475656e-09, 0.5495315428418e+01, 0.2526661704812e+03,
0.9015946748003e-10, 0.2236989966505e+01, 0.4171445043968e+03 };
/* Sun-to-Earth, T^0, Z */
static const double e0z[] = {
0.2796207639075e-05, 0.3198701560209e+01, 0.8433466158131e+02,
0.1016042198142e-05, 0.5422360395913e+01, 0.5507553240374e+01,
0.8044305033647e-06, 0.3880222866652e+01, 0.5223693906222e+01,
0.4385347909274e-06, 0.3704369937468e+01, 0.2352866153506e+01,
0.3186156414906e-06, 0.3999639363235e+01, 0.1577343543434e+01,
0.2272412285792e-06, 0.3984738315952e+01, 0.1047747311755e+01,
0.1645620103007e-06, 0.3565412516841e+01, 0.5856477690889e+01,
0.1815836921166e-06, 0.4984507059020e+01, 0.6283075850446e+01,
0.1447461676364e-06, 0.3702753570108e+01, 0.9437762937313e+01,
0.1430760876382e-06, 0.3409658712357e+01, 0.1021328554739e+02,
0.1120445753226e-06, 0.4829561570246e+01, 0.1414349524433e+02,
0.1090232840797e-06, 0.2080729178066e+01, 0.6812766822558e+01,
0.9715727346551e-07, 0.3476295881948e+01, 0.4694002934110e+01,
0.1036267136217e-06, 0.4056639536648e+01, 0.7109288135493e+02,
0.8752665271340e-07, 0.4448159519911e+01, 0.5753384878334e+01,
0.8331864956004e-07, 0.4991704044208e+01, 0.7084896783808e+01,
0.6901658670245e-07, 0.4325358994219e+01, 0.6275962395778e+01,
0.9144536848998e-07, 0.1141826375363e+01, 0.6620890113188e+01,
0.7205085037435e-07, 0.3624344170143e+01, 0.5296909721118e+00,
0.7697874654176e-07, 0.5554257458998e+01, 0.1676215758509e+03,
0.5197545738384e-07, 0.6251760961735e+01, 0.1807370494127e+02,
0.5031345378608e-07, 0.2497341091913e+01, 0.4705732307012e+01,
0.4527110205840e-07, 0.2335079920992e+01, 0.6309374173736e+01,
0.4753355798089e-07, 0.7094148987474e+00, 0.5884926831456e+01,
0.4296951977516e-07, 0.1101916352091e+01, 0.6681224869435e+01,
0.3855341568387e-07, 0.1825495405486e+01, 0.5486777812467e+01,
0.5253930970990e-07, 0.4424740687208e+01, 0.7860419393880e+01,
0.4024630496471e-07, 0.5120498157053e+01, 0.1336797263425e+02,
0.4061069791453e-07, 0.6029771435451e+01, 0.3930209696940e+01,
0.3797883804205e-07, 0.4435193600836e+00, 0.3154687086868e+01,
0.2933033225587e-07, 0.5124157356507e+01, 0.1059381944224e+01,
0.3503000930426e-07, 0.5421830162065e+01, 0.6069776770667e+01,
0.3670096214050e-07, 0.4582101667297e+01, 0.1219403291462e+02,
0.2905609437008e-07, 0.1926566420072e+01, 0.1097707878456e+02,
0.2466827821713e-07, 0.6090174539834e+00, 0.6496374930224e+01,
0.2691647295332e-07, 0.1393432595077e+01, 0.2200391463820e+02,
0.2150554667946e-07, 0.4308671715951e+01, 0.5643178611111e+01,
0.2237481922680e-07, 0.8133968269414e+00, 0.8635942003952e+01,
0.1817741038157e-07, 0.3755205127454e+01, 0.3340612434717e+01,
0.2227820762132e-07, 0.2759558596664e+01, 0.1203646072878e+02,
0.1944713772307e-07, 0.5699645869121e+01, 0.1179062909082e+02,
0.1527340520662e-07, 0.1986749091746e+01, 0.3981490189893e+00,
0.1577282574914e-07, 0.3205017217983e+01, 0.5088628793478e+01,
0.1424738825424e-07, 0.6256747903666e+01, 0.2544314396739e+01,
0.1616563121701e-07, 0.2601671259394e+00, 0.1729818233119e+02,
0.1401210391692e-07, 0.4686939173506e+01, 0.7058598460518e+01,
0.1488726974214e-07, 0.2815862451372e+01, 0.2593412433514e+02,
0.1692626442388e-07, 0.4956894109797e+01, 0.1564752902480e+03,
0.1123571582910e-07, 0.2381192697696e+01, 0.3738761453707e+01,
0.9903308606317e-08, 0.4294851657684e+01, 0.9225539266174e+01,
0.9174533187191e-08, 0.3075171510642e+01, 0.4164311961999e+01,
0.8645985631457e-08, 0.5477534821633e+00, 0.8429241228195e+01,
-0.1085876492688e-07, 0.0000000000000e+00, 0.0000000000000e+00,
0.9264309077815e-08, 0.5968571670097e+01, 0.7079373888424e+01,
0.8243116984954e-08, 0.1489098777643e+01, 0.1044738781244e+02,
0.8268102113708e-08, 0.3512977691983e+01, 0.1150676975667e+02,
0.9043613988227e-08, 0.1290704408221e+00, 0.1101510648075e+02,
0.7432912038789e-08, 0.1991086893337e+01, 0.2608790314060e+02,
0.8586233727285e-08, 0.4238357924414e+01, 0.2986433403208e+02,
0.7612230060131e-08, 0.2911090150166e+01, 0.4732030630302e+01,
0.7097787751408e-08, 0.1908938392390e+01, 0.8031092209206e+01,
0.7640237040175e-08, 0.6129219000168e+00, 0.7962980379786e+00,
0.7070445688081e-08, 0.1380417036651e+01, 0.2146165377750e+01,
0.7690770957702e-08, 0.1680504249084e+01, 0.2122839202813e+02,
0.8051292542594e-08, 0.5127423484511e+01, 0.2942463415728e+01,
0.5902709104515e-08, 0.2020274190917e+01, 0.7755226100720e+00,
0.5134567496462e-08, 0.2606778676418e+01, 0.1256615170089e+02,
0.5525802046102e-08, 0.1613011769663e+01, 0.8018209333619e+00,
0.5880724784221e-08, 0.4604483417236e+01, 0.4690479774488e+01,
0.5211699081370e-08, 0.5718964114193e+01, 0.8827390247185e+01,
0.4891849573562e-08, 0.3689658932196e+01, 0.2132990797783e+00,
0.5150246069997e-08, 0.4099769855122e+01, 0.6480980550449e+02,
0.5102434319633e-08, 0.5660834602509e+01, 0.3379454372902e+02,
0.5083405254252e-08, 0.9842221218974e+00, 0.4136910472696e+01,
0.4206562585682e-08, 0.1341363634163e+00, 0.3128388763578e+01,
0.4663249683579e-08, 0.8130132735866e+00, 0.5216580451554e+01,
0.4099474416530e-08, 0.5791497770644e+01, 0.4265981595566e+00,
0.4628251220767e-08, 0.1249802769331e+01, 0.1572083878776e+02,
0.5024068728142e-08, 0.4795684802743e+01, 0.6290189305114e+01,
0.5120234327758e-08, 0.3810420387208e+01, 0.5230807360890e+01,
0.5524029815280e-08, 0.1029264714351e+01, 0.2397622045175e+03,
0.4757415718860e-08, 0.3528044781779e+01, 0.1649636139783e+02,
0.3915786131127e-08, 0.5593889282646e+01, 0.1589072916335e+01,
0.4869053149991e-08, 0.3299636454433e+01, 0.7632943190217e+01,
0.3649365703729e-08, 0.1286049002584e+01, 0.6206810014183e+01,
0.3992493949002e-08, 0.3100307589464e+01, 0.2515860172507e+02,
0.3320247477418e-08, 0.6212683940807e+01, 0.1216800268190e+02,
0.3287123739696e-08, 0.4699118445928e+01, 0.7234794171227e+01,
0.3472776811103e-08, 0.2630507142004e+01, 0.7342457794669e+01,
0.3423253294767e-08, 0.2946432844305e+01, 0.9623688285163e+01,
0.3896173898244e-08, 0.1224834179264e+01, 0.6438496133249e+01,
0.3388455337924e-08, 0.1543807616351e+01, 0.1494531617769e+02,
0.3062704716523e-08, 0.1191777572310e+01, 0.8662240327241e+01,
0.3270075600400e-08, 0.5483498767737e+01, 0.1194447056968e+01,
0.3101209215259e-08, 0.8000833804348e+00, 0.3772475342596e+02,
0.2780883347311e-08, 0.4077980721888e+00, 0.5863591145557e+01,
0.2903605931824e-08, 0.2617490302147e+01, 0.1965104848470e+02,
0.2682014743119e-08, 0.2634703158290e+01, 0.7238675589263e+01,
0.2534360108492e-08, 0.6102446114873e+01, 0.6836645152238e+01,
0.2392564882509e-08, 0.3681820208691e+01, 0.5849364236221e+01,
0.2656667254856e-08, 0.6216045388886e+01, 0.6133512519065e+01,
0.2331242096773e-08, 0.5864949777744e+01, 0.4535059491685e+01,
0.2287898363668e-08, 0.4566628532802e+01, 0.7477522907414e+01,
0.2336944521306e-08, 0.2442722126930e+01, 0.1137170464392e+02,
0.3156632236269e-08, 0.1626628050682e+01, 0.2509084901204e+03,
0.2982612402766e-08, 0.2803604512609e+01, 0.1748016358760e+01,
0.2774031674807e-08, 0.4654002897158e+01, 0.8223916695780e+02,
0.2295236548638e-08, 0.4326518333253e+01, 0.3378142627421e+00,
0.2190714699873e-08, 0.4519614578328e+01, 0.2908881142201e+02,
0.2191495845045e-08, 0.3012626912549e+01, 0.1673046366289e+02,
0.2492901628386e-08, 0.1290101424052e+00, 0.1543797956245e+03,
0.1993778064319e-08, 0.3864046799414e+01, 0.1778984560711e+02,
0.1898146479022e-08, 0.5053777235891e+01, 0.2042657109477e+02,
0.1918280127634e-08, 0.2222470192548e+01, 0.4165496312290e+02,
0.1916351061607e-08, 0.8719067257774e+00, 0.7737595720538e+02,
0.1834720181466e-08, 0.4031491098040e+01, 0.2358125818164e+02,
0.1249201523806e-08, 0.5938379466835e+01, 0.3301902111895e+02,
0.1477304050539e-08, 0.6544722606797e+00, 0.9548094718417e+02,
0.1264316431249e-08, 0.2059072853236e+01, 0.8399684731857e+02,
0.1203526495039e-08, 0.3644813532605e+01, 0.4558517281984e+02,
0.9221681059831e-09, 0.3241815055602e+01, 0.7805158573086e+02,
0.7849278367646e-09, 0.5043812342457e+01, 0.5217580628120e+02,
0.7983392077387e-09, 0.5000024502753e+01, 0.1501922143975e+03,
0.7925395431654e-09, 0.1398734871821e-01, 0.9061773743175e+02,
0.7640473285886e-09, 0.5067111723130e+01, 0.4951538251678e+02,
0.5398937754482e-09, 0.5597382200075e+01, 0.1613385000004e+03,
0.5626247550193e-09, 0.2601338209422e+01, 0.7318837597844e+02,
0.5525197197855e-09, 0.5814832109256e+01, 0.1432335100216e+03,
0.5407629837898e-09, 0.3384820609076e+01, 0.3230491187871e+03,
0.3856739119801e-09, 0.1072391840473e+01, 0.2334791286671e+03,
0.3856425239987e-09, 0.2369540393327e+01, 0.1739046517013e+03,
0.4350867755983e-09, 0.5255575751082e+01, 0.1620484330494e+03,
0.3844113924996e-09, 0.5482356246182e+01, 0.9757644180768e+02,
0.2854869155431e-09, 0.9573634763143e+00, 0.1697170704744e+03,
0.1719227671416e-09, 0.1887203025202e+01, 0.2265204242912e+03,
0.1527846879755e-09, 0.3982183931157e+01, 0.3341954043900e+03,
0.1128229264847e-09, 0.2787457156298e+01, 0.3119028331842e+03 };
/* Sun-to-Earth, T^1, X */
static const double e1x[] = {
0.1234046326004e-05, 0.0000000000000e+00, 0.0000000000000e+00,
0.5150068824701e-06, 0.6002664557501e+01, 0.1256615170089e+02,
0.1290743923245e-07, 0.5959437664199e+01, 0.1884922755134e+02,
0.1068615564952e-07, 0.2015529654209e+01, 0.6283075850446e+01,
0.2079619142538e-08, 0.1732960531432e+01, 0.6279552690824e+01,
0.2078009243969e-08, 0.4915604476996e+01, 0.6286599010068e+01,
0.6206330058856e-09, 0.3616457953824e+00, 0.4705732307012e+01,
0.5989335313746e-09, 0.3802607304474e+01, 0.6256777527156e+01,
0.5958495663840e-09, 0.2845866560031e+01, 0.6309374173736e+01,
0.4866923261539e-09, 0.5213203771824e+01, 0.7755226100720e+00,
0.4267785823142e-09, 0.4368189727818e+00, 0.1059381944224e+01,
0.4610675141648e-09, 0.1837249181372e-01, 0.7860419393880e+01,
0.3626989993973e-09, 0.2161590545326e+01, 0.5753384878334e+01,
0.3563071194389e-09, 0.1452631954746e+01, 0.5884926831456e+01,
0.3557015642807e-09, 0.4470593393054e+01, 0.6812766822558e+01,
0.3210412089122e-09, 0.5195926078314e+01, 0.6681224869435e+01,
0.2875473577986e-09, 0.5916256610193e+01, 0.2513230340178e+02,
0.2842913681629e-09, 0.1149902426047e+01, 0.6127655567643e+01,
0.2751248215916e-09, 0.5502088574662e+01, 0.6438496133249e+01,
0.2481432881127e-09, 0.2921989846637e+01, 0.5486777812467e+01,
0.2059885976560e-09, 0.3718070376585e+01, 0.7079373888424e+01,
0.2015522342591e-09, 0.5979395259740e+01, 0.6290189305114e+01,
0.1995364084253e-09, 0.6772087985494e+00, 0.6275962395778e+01,
0.1957436436943e-09, 0.2899210654665e+01, 0.5507553240374e+01,
0.1651609818948e-09, 0.6228206482192e+01, 0.1150676975667e+02,
0.1822980550699e-09, 0.1469348746179e+01, 0.1179062909082e+02,
0.1675223159760e-09, 0.3813910555688e+01, 0.7058598460518e+01,
0.1706491764745e-09, 0.3004380506684e+00, 0.7113454667900e-02,
0.1392952362615e-09, 0.1440393973406e+01, 0.7962980379786e+00,
0.1209868266342e-09, 0.4150425791727e+01, 0.4694002934110e+01,
0.1009827202611e-09, 0.3290040429843e+01, 0.3738761453707e+01,
0.1047261388602e-09, 0.4229590090227e+01, 0.6282095334605e+01,
0.1047006652004e-09, 0.2418967680575e+01, 0.6284056366286e+01,
0.9609993143095e-10, 0.4627943659201e+01, 0.6069776770667e+01,
0.9590900593873e-10, 0.1894393939924e+01, 0.4136910472696e+01,
0.9146249188071e-10, 0.2010647519562e+01, 0.6496374930224e+01,
0.8545274480290e-10, 0.5529846956226e-01, 0.1194447056968e+01,
0.8224377881194e-10, 0.1254304102174e+01, 0.1589072916335e+01,
0.6183529510410e-10, 0.3360862168815e+01, 0.8827390247185e+01,
0.6259255147141e-10, 0.4755628243179e+01, 0.8429241228195e+01,
0.5539291694151e-10, 0.5371746955142e+01, 0.4933208510675e+01,
0.7328259466314e-10, 0.4927699613906e+00, 0.4535059491685e+01,
0.6017835843560e-10, 0.5776682001734e-01, 0.1255903824622e+02,
0.7079827775243e-10, 0.4395059432251e+01, 0.5088628793478e+01,
0.5170358878213e-10, 0.5154062619954e+01, 0.1176985366291e+02,
0.4872301838682e-10, 0.6289611648973e+00, 0.6040347114260e+01,
0.5249869411058e-10, 0.5617272046949e+01, 0.3154687086868e+01,
0.4716172354411e-10, 0.3965901800877e+01, 0.5331357529664e+01,
0.4871214940964e-10, 0.4627507050093e+01, 0.1256967486051e+02,
0.4598076850751e-10, 0.6023631226459e+01, 0.6525804586632e+01,
0.4562196089485e-10, 0.4138562084068e+01, 0.3930209696940e+01,
0.4325493872224e-10, 0.1330845906564e+01, 0.7632943190217e+01,
0.5673781176748e-10, 0.2558752615657e+01, 0.5729506548653e+01,
0.3961436642503e-10, 0.2728071734630e+01, 0.7234794171227e+01,
0.5101868209058e-10, 0.4113444965144e+01, 0.6836645152238e+01,
0.5257043167676e-10, 0.6195089830590e+01, 0.8031092209206e+01,
0.5076613989393e-10, 0.2305124132918e+01, 0.7477522907414e+01,
0.3342169352778e-10, 0.5415998155071e+01, 0.1097707878456e+02,
0.3545881983591e-10, 0.3727160564574e+01, 0.4164311961999e+01,
0.3364063738599e-10, 0.2901121049204e+00, 0.1137170464392e+02,
0.3357039670776e-10, 0.1652229354331e+01, 0.5223693906222e+01,
0.4307412268687e-10, 0.4938909587445e+01, 0.1592596075957e+01,
0.3405769115435e-10, 0.2408890766511e+01, 0.3128388763578e+01,
0.3001926198480e-10, 0.4862239006386e+01, 0.1748016358760e+01,
0.2778264787325e-10, 0.5241168661353e+01, 0.7342457794669e+01,
0.2676159480666e-10, 0.3423593942199e+01, 0.2146165377750e+01,
0.2954273399939e-10, 0.1881721265406e+01, 0.5368044267797e+00,
0.3309362888795e-10, 0.1931525677349e+01, 0.8018209333619e+00,
0.2810283608438e-10, 0.2414659495050e+01, 0.5225775174439e+00,
0.3378045637764e-10, 0.4238019163430e+01, 0.1554202828031e+00,
0.2558134979840e-10, 0.1828225235805e+01, 0.5230807360890e+01,
0.2273755578447e-10, 0.5858184283998e+01, 0.7084896783808e+01,
0.2294176037690e-10, 0.4514589779057e+01, 0.1726015463500e+02,
0.2533506099435e-10, 0.2355717851551e+01, 0.5216580451554e+01,
0.2716685375812e-10, 0.2221003625100e+01, 0.8635942003952e+01,
0.2419043435198e-10, 0.5955704951635e+01, 0.4690479774488e+01,
0.2521232544812e-10, 0.1395676848521e+01, 0.5481254917084e+01,
0.2630195021491e-10, 0.5727468918743e+01, 0.2629832328990e-01,
0.2548395840944e-10, 0.2628351859400e-03, 0.1349867339771e+01 };
/* Sun-to-Earth, T^1, Y */
static const double e1y[] = {
0.9304690546528e-06, 0.0000000000000e+00, 0.0000000000000e+00,
0.5150715570663e-06, 0.4431807116294e+01, 0.1256615170089e+02,
0.1290825411056e-07, 0.4388610039678e+01, 0.1884922755134e+02,
0.4645466665386e-08, 0.5827263376034e+01, 0.6283075850446e+01,
0.2079625310718e-08, 0.1621698662282e+00, 0.6279552690824e+01,
0.2078189850907e-08, 0.3344713435140e+01, 0.6286599010068e+01,
0.6207190138027e-09, 0.5074049319576e+01, 0.4705732307012e+01,
0.5989826532569e-09, 0.2231842216620e+01, 0.6256777527156e+01,
0.5961360812618e-09, 0.1274975769045e+01, 0.6309374173736e+01,
0.4874165471016e-09, 0.3642277426779e+01, 0.7755226100720e+00,
0.4283834034360e-09, 0.5148765510106e+01, 0.1059381944224e+01,
0.4652389287529e-09, 0.4715794792175e+01, 0.7860419393880e+01,
0.3751707476401e-09, 0.6617207370325e+00, 0.5753384878334e+01,
0.3559998806198e-09, 0.6155548875404e+01, 0.5884926831456e+01,
0.3558447558857e-09, 0.2898827297664e+01, 0.6812766822558e+01,
0.3211116927106e-09, 0.3625813502509e+01, 0.6681224869435e+01,
0.2875609914672e-09, 0.4345435813134e+01, 0.2513230340178e+02,
0.2843109704069e-09, 0.5862263940038e+01, 0.6127655567643e+01,
0.2744676468427e-09, 0.3926419475089e+01, 0.6438496133249e+01,
0.2481285237789e-09, 0.1351976572828e+01, 0.5486777812467e+01,
0.2060338481033e-09, 0.2147556998591e+01, 0.7079373888424e+01,
0.2015822358331e-09, 0.4408358972216e+01, 0.6290189305114e+01,
0.2001195944195e-09, 0.5385829822531e+01, 0.6275962395778e+01,
0.1953667642377e-09, 0.1304933746120e+01, 0.5507553240374e+01,
0.1839744078713e-09, 0.6173567228835e+01, 0.1179062909082e+02,
0.1643334294845e-09, 0.4635942997523e+01, 0.1150676975667e+02,
0.1768051018652e-09, 0.5086283558874e+01, 0.7113454667900e-02,
0.1674874205489e-09, 0.2243332137241e+01, 0.7058598460518e+01,
0.1421445397609e-09, 0.6186899771515e+01, 0.7962980379786e+00,
0.1255163958267e-09, 0.5730238465658e+01, 0.4694002934110e+01,
0.1013945281961e-09, 0.1726055228402e+01, 0.3738761453707e+01,
0.1047294335852e-09, 0.2658801228129e+01, 0.6282095334605e+01,
0.1047103879392e-09, 0.8481047835035e+00, 0.6284056366286e+01,
0.9530343962826e-10, 0.3079267149859e+01, 0.6069776770667e+01,
0.9604637611690e-10, 0.3258679792918e+00, 0.4136910472696e+01,
0.9153518537177e-10, 0.4398599886584e+00, 0.6496374930224e+01,
0.8562458214922e-10, 0.4772686794145e+01, 0.1194447056968e+01,
0.8232525360654e-10, 0.5966220721679e+01, 0.1589072916335e+01,
0.6150223411438e-10, 0.1780985591923e+01, 0.8827390247185e+01,
0.6272087858000e-10, 0.3184305429012e+01, 0.8429241228195e+01,
0.5540476311040e-10, 0.3801260595433e+01, 0.4933208510675e+01,
0.7331901699361e-10, 0.5205948591865e+01, 0.4535059491685e+01,
0.6018528702791e-10, 0.4770139083623e+01, 0.1255903824622e+02,
0.5150530724804e-10, 0.3574796899585e+01, 0.1176985366291e+02,
0.6471933741811e-10, 0.2679787266521e+01, 0.5088628793478e+01,
0.5317460644174e-10, 0.9528763345494e+00, 0.3154687086868e+01,
0.4832187748783e-10, 0.5329322498232e+01, 0.6040347114260e+01,
0.4716763555110e-10, 0.2395235316466e+01, 0.5331357529664e+01,
0.4871509139861e-10, 0.3056663648823e+01, 0.1256967486051e+02,
0.4598417696768e-10, 0.4452762609019e+01, 0.6525804586632e+01,
0.5674189533175e-10, 0.9879680872193e+00, 0.5729506548653e+01,
0.4073560328195e-10, 0.5939127696986e+01, 0.7632943190217e+01,
0.5040994945359e-10, 0.4549875824510e+01, 0.8031092209206e+01,
0.5078185134679e-10, 0.7346659893982e+00, 0.7477522907414e+01,
0.3769343537061e-10, 0.1071317188367e+01, 0.7234794171227e+01,
0.4980331365299e-10, 0.2500345341784e+01, 0.6836645152238e+01,
0.3458236594757e-10, 0.3825159450711e+01, 0.1097707878456e+02,
0.3578859493602e-10, 0.5299664791549e+01, 0.4164311961999e+01,
0.3370504646419e-10, 0.5002316301593e+01, 0.1137170464392e+02,
0.3299873338428e-10, 0.2526123275282e+01, 0.3930209696940e+01,
0.4304917318409e-10, 0.3368078557132e+01, 0.1592596075957e+01,
0.3402418753455e-10, 0.8385495425800e+00, 0.3128388763578e+01,
0.2778460572146e-10, 0.3669905203240e+01, 0.7342457794669e+01,
0.2782710128902e-10, 0.2691664812170e+00, 0.1748016358760e+01,
0.2711725179646e-10, 0.4707487217718e+01, 0.5296909721118e+00,
0.2981760946340e-10, 0.3190260867816e+00, 0.5368044267797e+00,
0.2811672977772e-10, 0.3196532315372e+01, 0.7084896783808e+01,
0.2863454474467e-10, 0.2263240324780e+00, 0.5223693906222e+01,
0.3333464634051e-10, 0.3498451685065e+01, 0.8018209333619e+00,
0.3312991747609e-10, 0.5839154477412e+01, 0.1554202828031e+00,
0.2813255564006e-10, 0.8268044346621e+00, 0.5225775174439e+00,
0.2665098083966e-10, 0.3934021725360e+01, 0.5216580451554e+01,
0.2349795705216e-10, 0.5197620913779e+01, 0.2146165377750e+01,
0.2330352293961e-10, 0.2984999231807e+01, 0.1726015463500e+02,
0.2728001683419e-10, 0.6521679638544e+00, 0.8635942003952e+01,
0.2484061007669e-10, 0.3468955561097e+01, 0.5230807360890e+01,
0.2646328768427e-10, 0.1013724533516e+01, 0.2629832328990e-01,
0.2518630264831e-10, 0.6108081057122e+01, 0.5481254917084e+01,
0.2421901455384e-10, 0.1651097776260e+01, 0.1349867339771e+01,
0.6348533267831e-11, 0.3220226560321e+01, 0.8433466158131e+02 };
/* Sun-to-Earth, T^1, Z */
static const double e1z[] = {
0.2278290449966e-05, 0.3413716033863e+01, 0.6283075850446e+01,
0.5429458209830e-07, 0.0000000000000e+00, 0.0000000000000e+00,
0.1903240492525e-07, 0.3370592358297e+01, 0.1256615170089e+02,
0.2385409276743e-09, 0.3327914718416e+01, 0.1884922755134e+02,
0.8676928342573e-10, 0.1824006811264e+01, 0.5223693906222e+01,
0.7765442593544e-10, 0.3888564279247e+01, 0.5507553240374e+01,
0.7066158332715e-10, 0.5194267231944e+01, 0.2352866153506e+01,
0.7092175288657e-10, 0.2333246960021e+01, 0.8399684731857e+02,
0.5357582213535e-10, 0.2224031176619e+01, 0.5296909721118e+00,
0.3828035865021e-10, 0.2156710933584e+01, 0.6279552690824e+01,
0.3824857220427e-10, 0.1529755219915e+01, 0.6286599010068e+01,
0.3286995181628e-10, 0.4879512900483e+01, 0.1021328554739e+02 };
/* Sun-to-Earth, T^2, X */
static const double e2x[] = {
-0.4143818297913e-10, 0.0000000000000e+00, 0.0000000000000e+00,
0.2171497694435e-10, 0.4398225628264e+01, 0.1256615170089e+02,
0.9845398442516e-11, 0.2079720838384e+00, 0.6283075850446e+01,
0.9256833552682e-12, 0.4191264694361e+01, 0.1884922755134e+02,
0.1022049384115e-12, 0.5381133195658e+01, 0.8399684731857e+02 };
/* Sun-to-Earth, T^2, Y */
static const double e2y[] = {
0.5063375872532e-10, 0.0000000000000e+00, 0.0000000000000e+00,
0.2173815785980e-10, 0.2827805833053e+01, 0.1256615170089e+02,
0.1010231999920e-10, 0.4634612377133e+01, 0.6283075850446e+01,
0.9259745317636e-12, 0.2620612076189e+01, 0.1884922755134e+02,
0.1022202095812e-12, 0.3809562326066e+01, 0.8399684731857e+02 };
/* Sun-to-Earth, T^2, Z */
static const double e2z[] = {
0.9722666114891e-10, 0.5152219582658e+01, 0.6283075850446e+01,
-0.3494819171909e-11, 0.0000000000000e+00, 0.0000000000000e+00,
0.6713034376076e-12, 0.6440188750495e+00, 0.1256615170089e+02 };
/* SSB-to-Sun, T^0, X */
static const double s0x[] = {
0.4956757536410e-02, 0.3741073751789e+01, 0.5296909721118e+00,
0.2718490072522e-02, 0.4016011511425e+01, 0.2132990797783e+00,
0.1546493974344e-02, 0.2170528330642e+01, 0.3813291813120e-01,
0.8366855276341e-03, 0.2339614075294e+01, 0.7478166569050e-01,
0.2936777942117e-03, 0.0000000000000e+00, 0.0000000000000e+00,
0.1201317439469e-03, 0.4090736353305e+01, 0.1059381944224e+01,
0.7578550887230e-04, 0.3241518088140e+01, 0.4265981595566e+00,
0.1941787367773e-04, 0.1012202064330e+01, 0.2061856251104e+00,
0.1889227765991e-04, 0.3892520416440e+01, 0.2204125344462e+00,
0.1937896968613e-04, 0.4797779441161e+01, 0.1495633313810e+00,
0.1434506110873e-04, 0.3868960697933e+01, 0.5225775174439e+00,
0.1406659911580e-04, 0.4759766557397e+00, 0.5368044267797e+00,
0.1179022300202e-04, 0.7774961520598e+00, 0.7626583626240e-01,
0.8085864460959e-05, 0.3254654471465e+01, 0.3664874755930e-01,
0.7622752967615e-05, 0.4227633103489e+01, 0.3961708870310e-01,
0.6209171139066e-05, 0.2791828325711e+00, 0.7329749511860e-01,
0.4366435633970e-05, 0.4440454875925e+01, 0.1589072916335e+01,
0.3792124889348e-05, 0.5156393842356e+01, 0.7113454667900e-02,
0.3154548963402e-05, 0.6157005730093e+01, 0.4194847048887e+00,
0.3088359882942e-05, 0.2494567553163e+01, 0.6398972393349e+00,
0.2788440902136e-05, 0.4934318747989e+01, 0.1102062672231e+00,
0.3039928456376e-05, 0.4895077702640e+01, 0.6283075850446e+01,
0.2272258457679e-05, 0.5278394064764e+01, 0.1030928125552e+00,
0.2162007057957e-05, 0.5802978019099e+01, 0.3163918923335e+00,
0.1767632855737e-05, 0.3415346595193e-01, 0.1021328554739e+02,
0.1349413459362e-05, 0.2001643230755e+01, 0.1484170571900e-02,
0.1170141900476e-05, 0.2424750491620e+01, 0.6327837846670e+00,
0.1054355266820e-05, 0.3123311487576e+01, 0.4337116142245e+00,
0.9800822461610e-06, 0.3026258088130e+01, 0.1052268489556e+01,
0.1091203749931e-05, 0.3157811670347e+01, 0.1162474756779e+01,
0.6960236715913e-06, 0.8219570542313e+00, 0.1066495398892e+01,
0.5689257296909e-06, 0.1323052375236e+01, 0.9491756770005e+00,
0.6613172135802e-06, 0.2765348881598e+00, 0.8460828644453e+00,
0.6277702517571e-06, 0.5794064466382e+01, 0.1480791608091e+00,
0.6304884066699e-06, 0.7323555380787e+00, 0.2243449970715e+00,
0.4897850467382e-06, 0.3062464235399e+01, 0.3340612434717e+01,
0.3759148598786e-06, 0.4588290469664e+01, 0.3516457698740e-01,
0.3110520548195e-06, 0.1374299536572e+01, 0.6373574839730e-01,
0.3064708359780e-06, 0.4222267485047e+01, 0.1104591729320e-01,
0.2856347168241e-06, 0.3714202944973e+01, 0.1510475019529e+00,
0.2840945514288e-06, 0.2847972875882e+01, 0.4110125927500e-01,
0.2378951599405e-06, 0.3762072563388e+01, 0.2275259891141e+00,
0.2714229481417e-06, 0.1036049980031e+01, 0.2535050500000e-01,
0.2323551717307e-06, 0.4682388599076e+00, 0.8582758298370e-01,
0.1881790512219e-06, 0.4790565425418e+01, 0.2118763888447e+01,
0.2261353968371e-06, 0.1669144912212e+01, 0.7181332454670e-01,
0.2214546389848e-06, 0.3937717281614e+01, 0.2968341143800e-02,
0.2184915594933e-06, 0.1129169845099e+00, 0.7775000683430e-01,
0.2000164937936e-06, 0.4030009638488e+01, 0.2093666171530e+00,
0.1966105136719e-06, 0.8745955786834e+00, 0.2172315424036e+00,
0.1904742332624e-06, 0.5919743598964e+01, 0.2022531624851e+00,
0.1657399705031e-06, 0.2549141484884e+01, 0.7358765972222e+00,
0.1574070533987e-06, 0.5277533020230e+01, 0.7429900518901e+00,
0.1832261651039e-06, 0.3064688127777e+01, 0.3235053470014e+00,
0.1733615346569e-06, 0.3011432799094e+01, 0.1385174140878e+00,
0.1549124014496e-06, 0.4005569132359e+01, 0.5154640627760e+00,
0.1637044713838e-06, 0.1831375966632e+01, 0.8531963191132e+00,
0.1123420082383e-06, 0.1180270407578e+01, 0.1990721704425e+00,
0.1083754165740e-06, 0.3414101320863e+00, 0.5439178814476e+00,
0.1156638012655e-06, 0.6130479452594e+00, 0.5257585094865e+00,
0.1142548785134e-06, 0.3724761948846e+01, 0.5336234347371e+00,
0.7921463895965e-07, 0.2435425589361e+01, 0.1478866649112e+01,
0.7428600285231e-07, 0.3542144398753e+01, 0.2164800718209e+00,
0.8323211246747e-07, 0.3525058072354e+01, 0.1692165728891e+01,
0.7257595116312e-07, 0.1364299431982e+01, 0.2101180877357e+00,
0.7111185833236e-07, 0.2460478875808e+01, 0.4155522422634e+00,
0.6868090383716e-07, 0.4397327670704e+01, 0.1173197218910e+00,
0.7226419974175e-07, 0.4042647308905e+01, 0.1265567569334e+01,
0.6955642383177e-07, 0.2865047906085e+01, 0.9562891316684e+00,
0.7492139296331e-07, 0.5014278994215e+01, 0.1422690933580e-01,
0.6598363128857e-07, 0.2376730020492e+01, 0.6470106940028e+00,
0.7381147293385e-07, 0.3272990384244e+01, 0.1581959461667e+01,
0.6402909624032e-07, 0.5302290955138e+01, 0.9597935788730e-01,
0.6237454263857e-07, 0.5444144425332e+01, 0.7084920306520e-01,
0.5241198544016e-07, 0.4215359579205e+01, 0.5265099800692e+00,
0.5144463853918e-07, 0.1218916689916e+00, 0.5328719641544e+00,
0.5868164772299e-07, 0.2369402002213e+01, 0.7871412831580e-01,
0.6233195669151e-07, 0.1254922242403e+01, 0.2608790314060e+02,
0.6068463791422e-07, 0.5679713760431e+01, 0.1114304132498e+00,
0.4359361135065e-07, 0.6097219641646e+00, 0.1375773836557e+01,
0.4686510366826e-07, 0.4786231041431e+01, 0.1143987543936e+00,
0.3758977287225e-07, 0.1167368068139e+01, 0.1596186371003e+01,
0.4282051974778e-07, 0.1519471064319e+01, 0.2770348281756e+00,
0.5153765386113e-07, 0.1860532322984e+01, 0.2228608264996e+00,
0.4575129387188e-07, 0.7632857887158e+00, 0.1465949902372e+00,
0.3326844933286e-07, 0.1298219485285e+01, 0.5070101000000e-01,
0.3748617450984e-07, 0.1046510321062e+01, 0.4903339079539e+00,
0.2816756661499e-07, 0.3434522346190e+01, 0.2991266627620e+00,
0.3412750405039e-07, 0.2523766270318e+01, 0.3518164938661e+00,
0.2655796761776e-07, 0.2904422260194e+01, 0.6256703299991e+00,
0.2963597929458e-07, 0.5923900431149e+00, 0.1099462426779e+00,
0.2539523734781e-07, 0.4851947722567e+01, 0.1256615170089e+02,
0.2283087914139e-07, 0.3400498595496e+01, 0.6681224869435e+01,
0.2321309799331e-07, 0.5789099148673e+01, 0.3368040641550e-01,
0.2549657649750e-07, 0.3991856479792e-01, 0.1169588211447e+01,
0.2290462303977e-07, 0.2788567577052e+01, 0.1045155034888e+01,
0.1945398522914e-07, 0.3290896998176e+01, 0.1155361302111e+01,
0.1849171512638e-07, 0.2698060129367e+01, 0.4452511715700e-02,
0.1647199834254e-07, 0.3016735644085e+01, 0.4408250688924e+00,
0.1529530765273e-07, 0.5573043116178e+01, 0.6521991896920e-01,
0.1433199339978e-07, 0.1481192356147e+01, 0.9420622223326e+00,
0.1729134193602e-07, 0.1422817538933e+01, 0.2108507877249e+00,
0.1716463931346e-07, 0.3469468901855e+01, 0.2157473718317e+00,
0.1391206061378e-07, 0.6122436220547e+01, 0.4123712502208e+00,
0.1404746661924e-07, 0.1647765641936e+01, 0.4258542984690e-01,
0.1410452399455e-07, 0.5989729161964e+01, 0.2258291676434e+00,
0.1089828772168e-07, 0.2833705509371e+01, 0.4226656969313e+00,
0.1047374564948e-07, 0.5090690007331e+00, 0.3092784376656e+00,
0.1358279126532e-07, 0.5128990262836e+01, 0.7923417740620e-01,
0.1020456476148e-07, 0.9632772880808e+00, 0.1456308687557e+00,
0.1033428735328e-07, 0.3223779318418e+01, 0.1795258541446e+01,
0.1412435841540e-07, 0.2410271572721e+01, 0.1525316725248e+00,
0.9722759371574e-08, 0.2333531395690e+01, 0.8434341241180e-01,
0.9657334084704e-08, 0.6199270974168e+01, 0.1272681024002e+01,
0.1083641148690e-07, 0.2864222292929e+01, 0.7032915397480e-01,
0.1067318403838e-07, 0.5833458866568e+00, 0.2123349582968e+00,
0.1062366201976e-07, 0.4307753989494e+01, 0.2142632012598e+00,
0.1236364149266e-07, 0.2873917870593e+01, 0.1847279083684e+00,
0.1092759489593e-07, 0.2959887266733e+01, 0.1370332435159e+00,
0.8912069362899e-08, 0.5141213702562e+01, 0.2648454860559e+01,
0.9656467707970e-08, 0.4532182462323e+01, 0.4376440768498e+00,
0.8098386150135e-08, 0.2268906338379e+01, 0.2880807454688e+00,
0.7857714675000e-08, 0.4055544260745e+01, 0.2037373330570e+00,
0.7288455940646e-08, 0.5357901655142e+01, 0.1129145838217e+00,
0.9450595950552e-08, 0.4264926963939e+01, 0.5272426800584e+00,
0.9381718247537e-08, 0.7489366976576e-01, 0.5321392641652e+00,
0.7079052646038e-08, 0.1923311052874e+01, 0.6288513220417e+00,
0.9259004415344e-08, 0.2970256853438e+01, 0.1606092486742e+00,
0.8259801499742e-08, 0.3327056314697e+01, 0.8389694097774e+00,
0.6476334355779e-08, 0.2954925505727e+01, 0.2008557621224e+01,
0.5984021492007e-08, 0.9138753105829e+00, 0.2042657109477e+02,
0.5989546863181e-08, 0.3244464082031e+01, 0.2111650433779e+01,
0.6233108606023e-08, 0.4995232638403e+00, 0.4305306221819e+00,
0.6877299149965e-08, 0.2834987233449e+01, 0.9561746721300e-02,
0.8311234227190e-08, 0.2202951835758e+01, 0.3801276407308e+00,
0.6599472832414e-08, 0.4478581462618e+01, 0.1063314406849e+01,
0.6160491096549e-08, 0.5145858696411e+01, 0.1368660381889e+01,
0.6164772043891e-08, 0.3762976697911e+00, 0.4234171675140e+00,
0.6363248684450e-08, 0.3162246718685e+01, 0.1253008786510e-01,
0.6448587520999e-08, 0.3442693302119e+01, 0.5287268506303e+00,
0.6431662283977e-08, 0.8977549136606e+00, 0.5306550935933e+00,
0.6351223158474e-08, 0.4306447410369e+01, 0.5217580628120e+02,
0.5476721393451e-08, 0.3888529177855e+01, 0.2221856701002e+01,
0.5341772572619e-08, 0.2655560662512e+01, 0.7466759693650e-01,
0.5337055758302e-08, 0.5164990735946e+01, 0.7489573444450e-01,
0.5373120816787e-08, 0.6041214553456e+01, 0.1274714967946e+00,
0.5392351705426e-08, 0.9177763485932e+00, 0.1055449481598e+01,
0.6688495850205e-08, 0.3089608126937e+01, 0.2213766559277e+00,
0.5072003660362e-08, 0.4311316541553e+01, 0.2132517061319e+00,
0.5070726650455e-08, 0.5790675464444e+00, 0.2133464534247e+00,
0.5658012950032e-08, 0.2703945510675e+01, 0.7287631425543e+00,
0.4835509924854e-08, 0.2975422976065e+01, 0.7160067364790e-01,
0.6479821978012e-08, 0.1324168733114e+01, 0.2209183458640e-01,
0.6230636494980e-08, 0.2860103632836e+01, 0.3306188016693e+00,
0.4649239516213e-08, 0.4832259763403e+01, 0.7796265773310e-01,
0.6487325792700e-08, 0.2726165825042e+01, 0.3884652414254e+00,
0.4682823682770e-08, 0.6966602455408e+00, 0.1073608853559e+01,
0.5704230804976e-08, 0.5669634104606e+01, 0.8731175355560e-01,
0.6125413585489e-08, 0.1513386538915e+01, 0.7605151500000e-01,
0.6035825038187e-08, 0.1983509168227e+01, 0.9846002785331e+00,
0.4331123462303e-08, 0.2782892992807e+01, 0.4297791515992e+00,
0.4681107685143e-08, 0.5337232886836e+01, 0.2127790306879e+00,
0.4669105829655e-08, 0.5837133792160e+01, 0.2138191288687e+00,
0.5138823602365e-08, 0.3080560200507e+01, 0.7233337363710e-01,
0.4615856664534e-08, 0.1661747897471e+01, 0.8603097737811e+00,
0.4496916702197e-08, 0.2112508027068e+01, 0.7381754420900e-01,
0.4278479042945e-08, 0.5716528462627e+01, 0.7574578717200e-01,
0.3840525503932e-08, 0.6424172726492e+00, 0.3407705765729e+00,
0.4866636509685e-08, 0.4919244697715e+01, 0.7722995774390e-01,
0.3526100639296e-08, 0.2550821052734e+01, 0.6225157782540e-01,
0.3939558488075e-08, 0.3939331491710e+01, 0.5268983110410e-01,
0.4041268772576e-08, 0.2275337571218e+01, 0.3503323232942e+00,
0.3948761842853e-08, 0.1999324200790e+01, 0.1451108196653e+00,
0.3258394550029e-08, 0.9121001378200e+00, 0.5296435984654e+00,
0.3257897048761e-08, 0.3428428660869e+01, 0.5297383457582e+00,
0.3842559031298e-08, 0.6132927720035e+01, 0.9098186128426e+00,
0.3109920095448e-08, 0.7693650193003e+00, 0.3932462625300e-02,
0.3132237775119e-08, 0.3621293854908e+01, 0.2346394437820e+00,
0.3942189421510e-08, 0.4841863659733e+01, 0.3180992042600e-02,
0.3796972285340e-08, 0.1814174994268e+01, 0.1862120789403e+00,
0.3995640233688e-08, 0.1386990406091e+01, 0.4549093064213e+00,
0.2875013727414e-08, 0.9178318587177e+00, 0.1905464808669e+01,
0.3073719932844e-08, 0.2688923811835e+01, 0.3628624111593e+00,
0.2731016580075e-08, 0.1188259127584e+01, 0.2131850110243e+00,
0.2729549896546e-08, 0.3702160634273e+01, 0.2134131485323e+00,
0.3339372892449e-08, 0.7199163960331e+00, 0.2007689919132e+00,
0.2898833764204e-08, 0.1916709364999e+01, 0.5291709230214e+00,
0.2894536549362e-08, 0.2424043195547e+01, 0.5302110212022e+00,
0.3096872473843e-08, 0.4445894977497e+01, 0.2976424921901e+00,
0.2635672326810e-08, 0.3814366984117e+01, 0.1485980103780e+01,
0.3649302697001e-08, 0.2924200596084e+01, 0.6044726378023e+00,
0.3127954585895e-08, 0.1842251648327e+01, 0.1084620721060e+00,
0.2616040173947e-08, 0.4155841921984e+01, 0.1258454114666e+01,
0.2597395859860e-08, 0.1158045978874e+00, 0.2103781122809e+00,
0.2593286172210e-08, 0.4771850408691e+01, 0.2162200472757e+00,
0.2481823585747e-08, 0.4608842558889e+00, 0.1062562936266e+01,
0.2742219550725e-08, 0.1538781127028e+01, 0.5651155736444e+00,
0.3199558469610e-08, 0.3226647822878e+00, 0.7036329877322e+00,
0.2666088542957e-08, 0.1967991731219e+00, 0.1400015846597e+00,
0.2397067430580e-08, 0.3707036669873e+01, 0.2125476091956e+00,
0.2376570772738e-08, 0.1182086628042e+01, 0.2140505503610e+00,
0.2547228007887e-08, 0.4906256820629e+01, 0.1534957940063e+00,
0.2265575594114e-08, 0.3414949866857e+01, 0.2235935264888e+00,
0.2464381430585e-08, 0.4599122275378e+01, 0.2091065926078e+00,
0.2433408527044e-08, 0.2830751145445e+00, 0.2174915669488e+00,
0.2443605509076e-08, 0.4212046432538e+01, 0.1739420156204e+00,
0.2319779262465e-08, 0.9881978408630e+00, 0.7530171478090e-01,
0.2284622835465e-08, 0.5565347331588e+00, 0.7426161660010e-01,
0.2467268750783e-08, 0.5655708150766e+00, 0.2526561439362e+00,
0.2808513492782e-08, 0.1418405053408e+01, 0.5636314030725e+00,
0.2329528932532e-08, 0.4069557545675e+01, 0.1056200952181e+01,
0.9698639532817e-09, 0.1074134313634e+01, 0.7826370942180e+02 };
/* SSB-to-Sun, T^0, Y */
static const double s0y[] = {
0.4955392320126e-02, 0.2170467313679e+01, 0.5296909721118e+00,
0.2722325167392e-02, 0.2444433682196e+01, 0.2132990797783e+00,
0.1546579925346e-02, 0.5992779281546e+00, 0.3813291813120e-01,
0.8363140252966e-03, 0.7687356310801e+00, 0.7478166569050e-01,
0.3385792683603e-03, 0.0000000000000e+00, 0.0000000000000e+00,
0.1201192221613e-03, 0.2520035601514e+01, 0.1059381944224e+01,
0.7587125720554e-04, 0.1669954006449e+01, 0.4265981595566e+00,
0.1964155361250e-04, 0.5707743963343e+01, 0.2061856251104e+00,
0.1891900364909e-04, 0.2320960679937e+01, 0.2204125344462e+00,
0.1937373433356e-04, 0.3226940689555e+01, 0.1495633313810e+00,
0.1437139941351e-04, 0.2301626908096e+01, 0.5225775174439e+00,
0.1406267683099e-04, 0.5188579265542e+01, 0.5368044267797e+00,
0.1178703080346e-04, 0.5489483248476e+01, 0.7626583626240e-01,
0.8079835186041e-05, 0.1683751835264e+01, 0.3664874755930e-01,
0.7623253594652e-05, 0.2656400462961e+01, 0.3961708870310e-01,
0.6248667483971e-05, 0.4992775362055e+01, 0.7329749511860e-01,
0.4366353695038e-05, 0.2869706279678e+01, 0.1589072916335e+01,
0.3829101568895e-05, 0.3572131359950e+01, 0.7113454667900e-02,
0.3175733773908e-05, 0.4535372530045e+01, 0.4194847048887e+00,
0.3092437902159e-05, 0.9230153317909e+00, 0.6398972393349e+00,
0.2874168812154e-05, 0.3363143761101e+01, 0.1102062672231e+00,
0.3040119321826e-05, 0.3324250895675e+01, 0.6283075850446e+01,
0.2699723308006e-05, 0.2917882441928e+00, 0.1030928125552e+00,
0.2134832683534e-05, 0.4220997202487e+01, 0.3163918923335e+00,
0.1770412139433e-05, 0.4747318496462e+01, 0.1021328554739e+02,
0.1377264209373e-05, 0.4305058462401e+00, 0.1484170571900e-02,
0.1127814538960e-05, 0.8538177240740e+00, 0.6327837846670e+00,
0.1055608090130e-05, 0.1551800742580e+01, 0.4337116142245e+00,
0.9802673861420e-06, 0.1459646735377e+01, 0.1052268489556e+01,
0.1090329461951e-05, 0.1587351228711e+01, 0.1162474756779e+01,
0.6959590025090e-06, 0.5534442628766e+01, 0.1066495398892e+01,
0.5664914529542e-06, 0.6030673003297e+01, 0.9491756770005e+00,
0.6607787763599e-06, 0.4989507233927e+01, 0.8460828644453e+00,
0.6269725742838e-06, 0.4222951804572e+01, 0.1480791608091e+00,
0.6301889697863e-06, 0.5444316669126e+01, 0.2243449970715e+00,
0.4891042662861e-06, 0.1490552839784e+01, 0.3340612434717e+01,
0.3457083123290e-06, 0.3030475486049e+01, 0.3516457698740e-01,
0.3032559967314e-06, 0.2652038793632e+01, 0.1104591729320e-01,
0.2841133988903e-06, 0.1276744786829e+01, 0.4110125927500e-01,
0.2855564444432e-06, 0.2143368674733e+01, 0.1510475019529e+00,
0.2765157135038e-06, 0.5444186109077e+01, 0.6373574839730e-01,
0.2382312465034e-06, 0.2190521137593e+01, 0.2275259891141e+00,
0.2808060365077e-06, 0.5735195064841e+01, 0.2535050500000e-01,
0.2332175234405e-06, 0.9481985524859e-01, 0.7181332454670e-01,
0.2322488199659e-06, 0.5180499361533e+01, 0.8582758298370e-01,
0.1881850258423e-06, 0.3219788273885e+01, 0.2118763888447e+01,
0.2196111392808e-06, 0.2366941159761e+01, 0.2968341143800e-02,
0.2183810335519e-06, 0.4825445110915e+01, 0.7775000683430e-01,
0.2002733093326e-06, 0.2457148995307e+01, 0.2093666171530e+00,
0.1967111767229e-06, 0.5586291545459e+01, 0.2172315424036e+00,
0.1568473250543e-06, 0.3708003123320e+01, 0.7429900518901e+00,
0.1852528314300e-06, 0.4310638151560e+01, 0.2022531624851e+00,
0.1832111226447e-06, 0.1494665322656e+01, 0.3235053470014e+00,
0.1746805502310e-06, 0.1451378500784e+01, 0.1385174140878e+00,
0.1555730966650e-06, 0.1068040418198e+01, 0.7358765972222e+00,
0.1554883462559e-06, 0.2442579035461e+01, 0.5154640627760e+00,
0.1638380568746e-06, 0.2597913420625e+00, 0.8531963191132e+00,
0.1159938593640e-06, 0.5834512021280e+01, 0.1990721704425e+00,
0.1083427965695e-06, 0.5054033177950e+01, 0.5439178814476e+00,
0.1156480369431e-06, 0.5325677432457e+01, 0.5257585094865e+00,
0.1141308860095e-06, 0.2153403923857e+01, 0.5336234347371e+00,
0.7913146470946e-07, 0.8642846847027e+00, 0.1478866649112e+01,
0.7439752463733e-07, 0.1970628496213e+01, 0.2164800718209e+00,
0.7280277104079e-07, 0.6073307250609e+01, 0.2101180877357e+00,
0.8319567719136e-07, 0.1954371928334e+01, 0.1692165728891e+01,
0.7137705549290e-07, 0.8904989440909e+00, 0.4155522422634e+00,
0.6900825396225e-07, 0.2825717714977e+01, 0.1173197218910e+00,
0.7245757216635e-07, 0.2481677513331e+01, 0.1265567569334e+01,
0.6961165696255e-07, 0.1292955312978e+01, 0.9562891316684e+00,
0.7571804456890e-07, 0.3427517575069e+01, 0.1422690933580e-01,
0.6605425721904e-07, 0.8052192701492e+00, 0.6470106940028e+00,
0.7375477357248e-07, 0.1705076390088e+01, 0.1581959461667e+01,
0.7041664951470e-07, 0.4848356967891e+00, 0.9597935788730e-01,
0.6322199535763e-07, 0.3878069473909e+01, 0.7084920306520e-01,
0.5244380279191e-07, 0.2645560544125e+01, 0.5265099800692e+00,
0.5143125704988e-07, 0.4834486101370e+01, 0.5328719641544e+00,
0.5871866319373e-07, 0.7981472548900e+00, 0.7871412831580e-01,
0.6300822573871e-07, 0.5979398788281e+01, 0.2608790314060e+02,
0.6062154271548e-07, 0.4108655402756e+01, 0.1114304132498e+00,
0.4361912339976e-07, 0.5322624319280e+01, 0.1375773836557e+01,
0.4417005920067e-07, 0.6240817359284e+01, 0.2770348281756e+00,
0.4686806749936e-07, 0.3214977301156e+01, 0.1143987543936e+00,
0.3758892132305e-07, 0.5879809634765e+01, 0.1596186371003e+01,
0.5151351332319e-07, 0.2893377688007e+00, 0.2228608264996e+00,
0.4554683578572e-07, 0.5475427144122e+01, 0.1465949902372e+00,
0.3442381385338e-07, 0.5992034796640e+01, 0.5070101000000e-01,
0.2831093954933e-07, 0.5367350273914e+01, 0.3092784376656e+00,
0.3756267090084e-07, 0.5758171285420e+01, 0.4903339079539e+00,
0.2816374679892e-07, 0.1863718700923e+01, 0.2991266627620e+00,
0.3419307025569e-07, 0.9524347534130e+00, 0.3518164938661e+00,
0.2904250494239e-07, 0.5304471615602e+01, 0.1099462426779e+00,
0.2471734511206e-07, 0.1297069793530e+01, 0.6256703299991e+00,
0.2539620831872e-07, 0.3281126083375e+01, 0.1256615170089e+02,
0.2281017868007e-07, 0.1829122133165e+01, 0.6681224869435e+01,
0.2275319473335e-07, 0.5797198160181e+01, 0.3932462625300e-02,
0.2547755368442e-07, 0.4752697708330e+01, 0.1169588211447e+01,
0.2285979669317e-07, 0.1223205292886e+01, 0.1045155034888e+01,
0.1913386560994e-07, 0.1757532993389e+01, 0.1155361302111e+01,
0.1809020525147e-07, 0.4246116108791e+01, 0.3368040641550e-01,
0.1649213300201e-07, 0.1445162890627e+01, 0.4408250688924e+00,
0.1834972793932e-07, 0.1126917567225e+01, 0.4452511715700e-02,
0.1439550648138e-07, 0.6160756834764e+01, 0.9420622223326e+00,
0.1487645457041e-07, 0.4358761931792e+01, 0.4123712502208e+00,
0.1731729516660e-07, 0.6134456753344e+01, 0.2108507877249e+00,
0.1717747163567e-07, 0.1898186084455e+01, 0.2157473718317e+00,
0.1418190430374e-07, 0.4180286741266e+01, 0.6521991896920e-01,
0.1404844134873e-07, 0.7654053565412e-01, 0.4258542984690e-01,
0.1409842846538e-07, 0.4418612420312e+01, 0.2258291676434e+00,
0.1090948346291e-07, 0.1260615686131e+01, 0.4226656969313e+00,
0.1357577323612e-07, 0.3558248818690e+01, 0.7923417740620e-01,
0.1018154061960e-07, 0.5676087241256e+01, 0.1456308687557e+00,
0.1412073972109e-07, 0.8394392632422e+00, 0.1525316725248e+00,
0.1030938326496e-07, 0.1653593274064e+01, 0.1795258541446e+01,
0.1180081567104e-07, 0.1285802592036e+01, 0.7032915397480e-01,
0.9708510575650e-08, 0.7631889488106e+00, 0.8434341241180e-01,
0.9637689663447e-08, 0.4630642649176e+01, 0.1272681024002e+01,
0.1068910429389e-07, 0.5294934032165e+01, 0.2123349582968e+00,
0.1063716179336e-07, 0.2736266800832e+01, 0.2142632012598e+00,
0.1234858713814e-07, 0.1302891146570e+01, 0.1847279083684e+00,
0.8912631189738e-08, 0.3570415993621e+01, 0.2648454860559e+01,
0.1036378285534e-07, 0.4236693440949e+01, 0.1370332435159e+00,
0.9667798501561e-08, 0.2960768892398e+01, 0.4376440768498e+00,
0.8108314201902e-08, 0.6987781646841e+00, 0.2880807454688e+00,
0.7648364324628e-08, 0.2499017863863e+01, 0.2037373330570e+00,
0.7286136828406e-08, 0.3787426951665e+01, 0.1129145838217e+00,
0.9448237743913e-08, 0.2694354332983e+01, 0.5272426800584e+00,
0.9374276106428e-08, 0.4787121277064e+01, 0.5321392641652e+00,
0.7100226287462e-08, 0.3530238792101e+00, 0.6288513220417e+00,
0.9253056659571e-08, 0.1399478925664e+01, 0.1606092486742e+00,
0.6636432145504e-08, 0.3479575438447e+01, 0.1368660381889e+01,
0.6469975312932e-08, 0.1383669964800e+01, 0.2008557621224e+01,
0.7335849729765e-08, 0.1243698166898e+01, 0.9561746721300e-02,
0.8743421205855e-08, 0.3776164289301e+01, 0.3801276407308e+00,
0.5993635744494e-08, 0.5627122113596e+01, 0.2042657109477e+02,
0.5981008479693e-08, 0.1674336636752e+01, 0.2111650433779e+01,
0.6188535145838e-08, 0.5214925208672e+01, 0.4305306221819e+00,
0.6596074017566e-08, 0.2907653268124e+01, 0.1063314406849e+01,
0.6630815126226e-08, 0.2127643669658e+01, 0.8389694097774e+00,
0.6156772830040e-08, 0.5082160803295e+01, 0.4234171675140e+00,
0.6446960563014e-08, 0.1872100916905e+01, 0.5287268506303e+00,
0.6429324424668e-08, 0.5610276103577e+01, 0.5306550935933e+00,
0.6302232396465e-08, 0.1592152049607e+01, 0.1253008786510e-01,
0.6399244436159e-08, 0.2746214421532e+01, 0.5217580628120e+02,
0.5474965172558e-08, 0.2317666374383e+01, 0.2221856701002e+01,
0.5339293190692e-08, 0.1084724961156e+01, 0.7466759693650e-01,
0.5334733683389e-08, 0.3594106067745e+01, 0.7489573444450e-01,
0.5392665782110e-08, 0.5630254365606e+01, 0.1055449481598e+01,
0.6682075673789e-08, 0.1518480041732e+01, 0.2213766559277e+00,
0.5079130495960e-08, 0.2739765115711e+01, 0.2132517061319e+00,
0.5077759793261e-08, 0.5290711290094e+01, 0.2133464534247e+00,
0.4832037368310e-08, 0.1404473217200e+01, 0.7160067364790e-01,
0.6463279674802e-08, 0.6038381695210e+01, 0.2209183458640e-01,
0.6240592771560e-08, 0.1290170653666e+01, 0.3306188016693e+00,
0.4672013521493e-08, 0.3261895939677e+01, 0.7796265773310e-01,
0.6500650750348e-08, 0.1154522312095e+01, 0.3884652414254e+00,
0.6344161389053e-08, 0.6206111545062e+01, 0.7605151500000e-01,
0.4682518370646e-08, 0.5409118796685e+01, 0.1073608853559e+01,
0.5329460015591e-08, 0.1202985784864e+01, 0.7287631425543e+00,
0.5701588675898e-08, 0.4098715257064e+01, 0.8731175355560e-01,
0.6030690867211e-08, 0.4132033218460e+00, 0.9846002785331e+00,
0.4336256312655e-08, 0.1211415991827e+01, 0.4297791515992e+00,
0.4688498808975e-08, 0.3765479072409e+01, 0.2127790306879e+00,
0.4675578609335e-08, 0.4265540037226e+01, 0.2138191288687e+00,
0.4225578112158e-08, 0.5237566010676e+01, 0.3407705765729e+00,
0.5139422230028e-08, 0.1507173079513e+01, 0.7233337363710e-01,
0.4619995093571e-08, 0.9023957449848e-01, 0.8603097737811e+00,
0.4494776255461e-08, 0.5414930552139e+00, 0.7381754420900e-01,
0.4274026276788e-08, 0.4145735303659e+01, 0.7574578717200e-01,
0.5018141789353e-08, 0.3344408829055e+01, 0.3180992042600e-02,
0.4866163952181e-08, 0.3348534657607e+01, 0.7722995774390e-01,
0.4111986020501e-08, 0.4198823597220e+00, 0.1451108196653e+00,
0.3356142784950e-08, 0.5609144747180e+01, 0.1274714967946e+00,
0.4070575554551e-08, 0.7028411059224e+00, 0.3503323232942e+00,
0.3257451857278e-08, 0.5624697983086e+01, 0.5296435984654e+00,
0.3256973703026e-08, 0.1857842076707e+01, 0.5297383457582e+00,
0.3830771508640e-08, 0.4562887279931e+01, 0.9098186128426e+00,
0.3725024005962e-08, 0.2358058692652e+00, 0.1084620721060e+00,
0.3136763921756e-08, 0.2049731526845e+01, 0.2346394437820e+00,
0.3795147256194e-08, 0.2432356296933e+00, 0.1862120789403e+00,
0.2877342229911e-08, 0.5631101279387e+01, 0.1905464808669e+01,
0.3076931798805e-08, 0.1117615737392e+01, 0.3628624111593e+00,
0.2734765945273e-08, 0.5899826516955e+01, 0.2131850110243e+00,
0.2733405296885e-08, 0.2130562964070e+01, 0.2134131485323e+00,
0.2898552353410e-08, 0.3462387048225e+00, 0.5291709230214e+00,
0.2893736103681e-08, 0.8534352781543e+00, 0.5302110212022e+00,
0.3095717734137e-08, 0.2875061429041e+01, 0.2976424921901e+00,
0.2636190425832e-08, 0.2242512846659e+01, 0.1485980103780e+01,
0.3645512095537e-08, 0.1354016903958e+01, 0.6044726378023e+00,
0.2808173547723e-08, 0.6705114365631e-01, 0.6225157782540e-01,
0.2625012866888e-08, 0.4775705748482e+01, 0.5268983110410e-01,
0.2572233995651e-08, 0.2638924216139e+01, 0.1258454114666e+01,
0.2604238824792e-08, 0.4826358927373e+01, 0.2103781122809e+00,
0.2596886385239e-08, 0.3200388483118e+01, 0.2162200472757e+00,
0.3228057304264e-08, 0.5384848409563e+01, 0.2007689919132e+00,
0.2481601798252e-08, 0.5173373487744e+01, 0.1062562936266e+01,
0.2745977498864e-08, 0.6250966149853e+01, 0.5651155736444e+00,
0.2669878833811e-08, 0.4906001352499e+01, 0.1400015846597e+00,
0.3203986611711e-08, 0.5034333010005e+01, 0.7036329877322e+00,
0.3354961227212e-08, 0.6108262423137e+01, 0.4549093064213e+00,
0.2400407324558e-08, 0.2135399294955e+01, 0.2125476091956e+00,
0.2379905859802e-08, 0.5893721933961e+01, 0.2140505503610e+00,
0.2550844302187e-08, 0.3331940762063e+01, 0.1534957940063e+00,
0.2268824211001e-08, 0.1843418461035e+01, 0.2235935264888e+00,
0.2464700891204e-08, 0.3029548547230e+01, 0.2091065926078e+00,
0.2436814726024e-08, 0.4994717970364e+01, 0.2174915669488e+00,
0.2443623894745e-08, 0.2645102591375e+01, 0.1739420156204e+00,
0.2318701783838e-08, 0.5700547397897e+01, 0.7530171478090e-01,
0.2284448700256e-08, 0.5268898905872e+01, 0.7426161660010e-01,
0.2468848123510e-08, 0.5276280575078e+01, 0.2526561439362e+00,
0.2814052350303e-08, 0.6130168623475e+01, 0.5636314030725e+00,
0.2243662755220e-08, 0.6631692457995e+00, 0.8886590321940e-01,
0.2330795855941e-08, 0.2499435487702e+01, 0.1056200952181e+01,
0.9757679038404e-09, 0.5796846023126e+01, 0.7826370942180e+02 };
/* SSB-to-Sun, T^0, Z */
static const double s0z[] = {
0.1181255122986e-03, 0.4607918989164e+00, 0.2132990797783e+00,
0.1127777651095e-03, 0.4169146331296e+00, 0.5296909721118e+00,
0.4777754401806e-04, 0.4582657007130e+01, 0.3813291813120e-01,
0.1129354285772e-04, 0.5758735142480e+01, 0.7478166569050e-01,
-0.1149543637123e-04, 0.0000000000000e+00, 0.0000000000000e+00,
0.3298730512306e-05, 0.5978801994625e+01, 0.4265981595566e+00,
0.2733376706079e-05, 0.7665413691040e+00, 0.1059381944224e+01,
0.9426389657270e-06, 0.3710201265838e+01, 0.2061856251104e+00,
0.8187517749552e-06, 0.3390675605802e+00, 0.2204125344462e+00,
0.4080447871819e-06, 0.4552296640088e+00, 0.5225775174439e+00,
0.3169973017028e-06, 0.3445455899321e+01, 0.5368044267797e+00,
0.2438098615549e-06, 0.5664675150648e+01, 0.3664874755930e-01,
0.2601897517235e-06, 0.1931894095697e+01, 0.1495633313810e+00,
0.2314558080079e-06, 0.3666319115574e+00, 0.3961708870310e-01,
0.1962549548002e-06, 0.3167411699020e+01, 0.7626583626240e-01,
0.2180518287925e-06, 0.1544420746580e+01, 0.7113454667900e-02,
0.1451382442868e-06, 0.1583756740070e+01, 0.1102062672231e+00,
0.1358439007389e-06, 0.5239941758280e+01, 0.6398972393349e+00,
0.1050585898028e-06, 0.2266958352859e+01, 0.3163918923335e+00,
0.1050029870186e-06, 0.2711495250354e+01, 0.4194847048887e+00,
0.9934920679800e-07, 0.1116208151396e+01, 0.1589072916335e+01,
0.1048395331560e-06, 0.3408619600206e+01, 0.1021328554739e+02,
0.8370147196668e-07, 0.3810459401087e+01, 0.2535050500000e-01,
0.7989856510998e-07, 0.3769910473647e+01, 0.7329749511860e-01,
0.5441221655233e-07, 0.2416994903374e+01, 0.1030928125552e+00,
0.4610812906784e-07, 0.5858503336994e+01, 0.4337116142245e+00,
0.3923022803444e-07, 0.3354170010125e+00, 0.1484170571900e-02,
0.2610725582128e-07, 0.5410600646324e+01, 0.6327837846670e+00,
0.2455279767721e-07, 0.6120216681403e+01, 0.1162474756779e+01,
0.2375530706525e-07, 0.6055443426143e+01, 0.1052268489556e+01,
0.1782967577553e-07, 0.3146108708004e+01, 0.8460828644453e+00,
0.1581687095238e-07, 0.6255496089819e+00, 0.3340612434717e+01,
0.1594657672461e-07, 0.3782604300261e+01, 0.1066495398892e+01,
0.1563448615040e-07, 0.1997775733196e+01, 0.2022531624851e+00,
0.1463624258525e-07, 0.1736316792088e+00, 0.3516457698740e-01,
0.1331585056673e-07, 0.4331941830747e+01, 0.9491756770005e+00,
0.1130634557637e-07, 0.6152017751825e+01, 0.2968341143800e-02,
0.1028949607145e-07, 0.2101792614637e+00, 0.2275259891141e+00,
0.1024074971618e-07, 0.4071833211074e+01, 0.5070101000000e-01,
0.8826956060303e-08, 0.4861633688145e+00, 0.2093666171530e+00,
0.8572230171541e-08, 0.5268190724302e+01, 0.4110125927500e-01,
0.7649332643544e-08, 0.5134543417106e+01, 0.2608790314060e+02,
0.8581673291033e-08, 0.2920218146681e+01, 0.1480791608091e+00,
0.8430589300938e-08, 0.3604576619108e+01, 0.2172315424036e+00,
0.7776165501012e-08, 0.3772942249792e+01, 0.6373574839730e-01,
0.8311070234408e-08, 0.6200412329888e+01, 0.3235053470014e+00,
0.6927365212582e-08, 0.4543353113437e+01, 0.8531963191132e+00,
0.6791574208598e-08, 0.2882188406238e+01, 0.7181332454670e-01,
0.5593100811839e-08, 0.1776646892780e+01, 0.7429900518901e+00,
0.4553381853021e-08, 0.3949617611240e+01, 0.7775000683430e-01,
0.5758000450068e-08, 0.3859251775075e+01, 0.1990721704425e+00,
0.4281283457133e-08, 0.1466294631206e+01, 0.2118763888447e+01,
0.4206935661097e-08, 0.5421776011706e+01, 0.1104591729320e-01,
0.4213751641837e-08, 0.3412048993322e+01, 0.2243449970715e+00,
0.5310506239878e-08, 0.5421641370995e+00, 0.5154640627760e+00,
0.3827450341320e-08, 0.8887314524995e+00, 0.1510475019529e+00,
0.4292435241187e-08, 0.1405043757194e+01, 0.1422690933580e-01,
0.3189780702289e-08, 0.1060049293445e+01, 0.1173197218910e+00,
0.3226611928069e-08, 0.6270858897442e+01, 0.2164800718209e+00,
0.2893897608830e-08, 0.5117563223301e+01, 0.6470106940028e+00,
0.3239852024578e-08, 0.4079092237983e+01, 0.2101180877357e+00,
0.2956892222200e-08, 0.1594917021704e+01, 0.3092784376656e+00,
0.2980177912437e-08, 0.5258787667564e+01, 0.4155522422634e+00,
0.3163725690776e-08, 0.3854589225479e+01, 0.8582758298370e-01,
0.2662262399118e-08, 0.3561326430187e+01, 0.5257585094865e+00,
0.2766689135729e-08, 0.3180732086830e+00, 0.1385174140878e+00,
0.2411600278464e-08, 0.3324798335058e+01, 0.5439178814476e+00,
0.2483527695131e-08, 0.4169069291947e+00, 0.5336234347371e+00,
0.7788777276590e-09, 0.1900569908215e+01, 0.5217580628120e+02 };
/* SSB-to-Sun, T^1, X */
static const double s1x[] = {
-0.1296310361520e-07, 0.0000000000000e+00, 0.0000000000000e+00,
0.8975769009438e-08, 0.1128891609250e+01, 0.4265981595566e+00,
0.7771113441307e-08, 0.2706039877077e+01, 0.2061856251104e+00,
0.7538303866642e-08, 0.2191281289498e+01, 0.2204125344462e+00,
0.6061384579336e-08, 0.3248167319958e+01, 0.1059381944224e+01,
0.5726994235594e-08, 0.5569981398610e+01, 0.5225775174439e+00,
0.5616492836424e-08, 0.5057386614909e+01, 0.5368044267797e+00,
0.1010881584769e-08, 0.3473577116095e+01, 0.7113454667900e-02,
0.7259606157626e-09, 0.3651858593665e+00, 0.6398972393349e+00,
0.8755095026935e-09, 0.1662835408338e+01, 0.4194847048887e+00,
0.5370491182812e-09, 0.1327673878077e+01, 0.4337116142245e+00,
0.5743773887665e-09, 0.4250200846687e+01, 0.2132990797783e+00,
0.4408103140300e-09, 0.3598752574277e+01, 0.1589072916335e+01,
0.3101892374445e-09, 0.4887822983319e+01, 0.1052268489556e+01,
0.3209453713578e-09, 0.9702272295114e+00, 0.5296909721118e+00,
0.3017228286064e-09, 0.5484462275949e+01, 0.1066495398892e+01,
0.3200700038601e-09, 0.2846613338643e+01, 0.1495633313810e+00,
0.2137637279911e-09, 0.5692163292729e+00, 0.3163918923335e+00,
0.1899686386727e-09, 0.2061077157189e+01, 0.2275259891141e+00,
0.1401994545308e-09, 0.4177771136967e+01, 0.1102062672231e+00,
0.1578057810499e-09, 0.5782460597335e+01, 0.7626583626240e-01,
0.1237713253351e-09, 0.5705900866881e+01, 0.5154640627760e+00,
0.1313076837395e-09, 0.5163438179576e+01, 0.3664874755930e-01,
0.1184963304860e-09, 0.3054804427242e+01, 0.6327837846670e+00,
0.1238130878565e-09, 0.2317292575962e+01, 0.3961708870310e-01,
0.1015959527736e-09, 0.2194643645526e+01, 0.7329749511860e-01,
0.9017954423714e-10, 0.2868603545435e+01, 0.1990721704425e+00,
0.8668024955603e-10, 0.4923849675082e+01, 0.5439178814476e+00,
0.7756083930103e-10, 0.3014334135200e+01, 0.9491756770005e+00,
0.7536503401741e-10, 0.2704886279769e+01, 0.1030928125552e+00,
0.5483308679332e-10, 0.6010983673799e+01, 0.8531963191132e+00,
0.5184339620428e-10, 0.1952704573291e+01, 0.2093666171530e+00,
0.5108658712030e-10, 0.2958575786649e+01, 0.2172315424036e+00,
0.5019424524650e-10, 0.1736317621318e+01, 0.2164800718209e+00,
0.4909312625978e-10, 0.3167216416257e+01, 0.2101180877357e+00,
0.4456638901107e-10, 0.7697579923471e+00, 0.3235053470014e+00,
0.4227030350925e-10, 0.3490910137928e+01, 0.6373574839730e-01,
0.4095456040093e-10, 0.5178888984491e+00, 0.6470106940028e+00,
0.4990537041422e-10, 0.3323887668974e+01, 0.1422690933580e-01,
0.4321170010845e-10, 0.4288484987118e+01, 0.7358765972222e+00,
0.3544072091802e-10, 0.6021051579251e+01, 0.5265099800692e+00,
0.3480198638687e-10, 0.4600027054714e+01, 0.5328719641544e+00,
0.3440287244435e-10, 0.4349525970742e+01, 0.8582758298370e-01,
0.3330628322713e-10, 0.2347391505082e+01, 0.1104591729320e-01,
0.2973060707184e-10, 0.4789409286400e+01, 0.5257585094865e+00,
0.2932606766089e-10, 0.5831693799927e+01, 0.5336234347371e+00,
0.2876972310953e-10, 0.2692638514771e+01, 0.1173197218910e+00,
0.2827488278556e-10, 0.2056052487960e+01, 0.2022531624851e+00,
0.2515028239756e-10, 0.7411863262449e+00, 0.9597935788730e-01,
0.2853033744415e-10, 0.3948481024894e+01, 0.2118763888447e+01 };
/* SSB-to-Sun, T^1, Y */
static const double s1y[] = {
0.8989047573576e-08, 0.5840593672122e+01, 0.4265981595566e+00,
0.7815938401048e-08, 0.1129664707133e+01, 0.2061856251104e+00,
0.7550926713280e-08, 0.6196589104845e+00, 0.2204125344462e+00,
0.6056556925895e-08, 0.1677494667846e+01, 0.1059381944224e+01,
0.5734142698204e-08, 0.4000920852962e+01, 0.5225775174439e+00,
0.5614341822459e-08, 0.3486722577328e+01, 0.5368044267797e+00,
0.1028678147656e-08, 0.1877141024787e+01, 0.7113454667900e-02,
0.7270792075266e-09, 0.5077167301739e+01, 0.6398972393349e+00,
0.8734141726040e-09, 0.9069550282609e-01, 0.4194847048887e+00,
0.5377371402113e-09, 0.6039381844671e+01, 0.4337116142245e+00,
0.4729719431571e-09, 0.2153086311760e+01, 0.2132990797783e+00,
0.4458052820973e-09, 0.5059830025565e+01, 0.5296909721118e+00,
0.4406855467908e-09, 0.2027971692630e+01, 0.1589072916335e+01,
0.3101659310977e-09, 0.3317677981860e+01, 0.1052268489556e+01,
0.3016749232545e-09, 0.3913703482532e+01, 0.1066495398892e+01,
0.3198541352656e-09, 0.1275513098525e+01, 0.1495633313810e+00,
0.2142065389871e-09, 0.5301351614597e+01, 0.3163918923335e+00,
0.1902615247592e-09, 0.4894943352736e+00, 0.2275259891141e+00,
0.1613410990871e-09, 0.2449891130437e+01, 0.1102062672231e+00,
0.1576992165097e-09, 0.4211421447633e+01, 0.7626583626240e-01,
0.1241637259894e-09, 0.4140803368133e+01, 0.5154640627760e+00,
0.1313974830355e-09, 0.3591920305503e+01, 0.3664874755930e-01,
0.1181697118258e-09, 0.1506314382788e+01, 0.6327837846670e+00,
0.1238239742779e-09, 0.7461405378404e+00, 0.3961708870310e-01,
0.1010107068241e-09, 0.6271010795475e+00, 0.7329749511860e-01,
0.9226316616509e-10, 0.1259158839583e+01, 0.1990721704425e+00,
0.8664946419555e-10, 0.3353244696934e+01, 0.5439178814476e+00,
0.7757230468978e-10, 0.1447677295196e+01, 0.9491756770005e+00,
0.7693168628139e-10, 0.1120509896721e+01, 0.1030928125552e+00,
0.5487897454612e-10, 0.4439380426795e+01, 0.8531963191132e+00,
0.5196118677218e-10, 0.3788856619137e+00, 0.2093666171530e+00,
0.5110853339935e-10, 0.1386879372016e+01, 0.2172315424036e+00,
0.5027804534813e-10, 0.1647881805466e+00, 0.2164800718209e+00,
0.4922485922674e-10, 0.1594315079862e+01, 0.2101180877357e+00,
0.6155599524400e-10, 0.0000000000000e+00, 0.0000000000000e+00,
0.4447147832161e-10, 0.5480720918976e+01, 0.3235053470014e+00,
0.4144691276422e-10, 0.1931371033660e+01, 0.6373574839730e-01,
0.4099950625452e-10, 0.5229611294335e+01, 0.6470106940028e+00,
0.5060541682953e-10, 0.1731112486298e+01, 0.1422690933580e-01,
0.4293615946300e-10, 0.2714571038925e+01, 0.7358765972222e+00,
0.3545659845763e-10, 0.4451041444634e+01, 0.5265099800692e+00,
0.3479112041196e-10, 0.3029385448081e+01, 0.5328719641544e+00,
0.3438516493570e-10, 0.2778507143731e+01, 0.8582758298370e-01,
0.3297341285033e-10, 0.7898709807584e+00, 0.1104591729320e-01,
0.2972585818015e-10, 0.3218785316973e+01, 0.5257585094865e+00,
0.2931707295017e-10, 0.4260731012098e+01, 0.5336234347371e+00,
0.2897198149403e-10, 0.1120753978101e+01, 0.1173197218910e+00,
0.2832293240878e-10, 0.4597682717827e+00, 0.2022531624851e+00,
0.2864348326612e-10, 0.2169939928448e+01, 0.9597935788730e-01,
0.2852714675471e-10, 0.2377659870578e+01, 0.2118763888447e+01 };
/* SSB-to-Sun, T^1, Z */
static const double s1z[] = {
0.5444220475678e-08, 0.1803825509310e+01, 0.2132990797783e+00,
0.3883412695596e-08, 0.4668616389392e+01, 0.5296909721118e+00,
0.1334341434551e-08, 0.0000000000000e+00, 0.0000000000000e+00,
0.3730001266883e-09, 0.5401405918943e+01, 0.2061856251104e+00,
0.2894929197956e-09, 0.4932415609852e+01, 0.2204125344462e+00,
0.2857950357701e-09, 0.3154625362131e+01, 0.7478166569050e-01,
0.2499226432292e-09, 0.3657486128988e+01, 0.4265981595566e+00,
0.1937705443593e-09, 0.5740434679002e+01, 0.1059381944224e+01,
0.1374894396320e-09, 0.1712857366891e+01, 0.5368044267797e+00,
0.1217248678408e-09, 0.2312090870932e+01, 0.5225775174439e+00,
0.7961052740870e-10, 0.5283368554163e+01, 0.3813291813120e-01,
0.4979225949689e-10, 0.4298290471860e+01, 0.4194847048887e+00,
0.4388552286597e-10, 0.6145515047406e+01, 0.7113454667900e-02,
0.2586835212560e-10, 0.3019448001809e+01, 0.6398972393349e+00 };
/* SSB-to-Sun, T^2, X */
static const double s2x[] = {
0.1603551636587e-11, 0.4404109410481e+01, 0.2061856251104e+00,
0.1556935889384e-11, 0.4818040873603e+00, 0.2204125344462e+00,
0.1182594414915e-11, 0.9935762734472e+00, 0.5225775174439e+00,
0.1158794583180e-11, 0.3353180966450e+01, 0.5368044267797e+00,
0.9597358943932e-12, 0.5567045358298e+01, 0.2132990797783e+00,
0.6511516579605e-12, 0.5630872420788e+01, 0.4265981595566e+00,
0.7419792747688e-12, 0.2156188581957e+01, 0.5296909721118e+00,
0.3951972655848e-12, 0.1981022541805e+01, 0.1059381944224e+01,
0.4478223877045e-12, 0.0000000000000e+00, 0.0000000000000e+00 };
/* SSB-to-Sun, T^2, Y */
static const double s2y[] = {
0.1609114495091e-11, 0.2831096993481e+01, 0.2061856251104e+00,
0.1560330784946e-11, 0.5193058213906e+01, 0.2204125344462e+00,
0.1183535479202e-11, 0.5707003443890e+01, 0.5225775174439e+00,
0.1158183066182e-11, 0.1782400404928e+01, 0.5368044267797e+00,
0.1032868027407e-11, 0.4036925452011e+01, 0.2132990797783e+00,
0.6540142847741e-12, 0.4058241056717e+01, 0.4265981595566e+00,
0.7305236491596e-12, 0.6175401942957e+00, 0.5296909721118e+00,
-0.5580725052968e-12, 0.0000000000000e+00, 0.0000000000000e+00,
0.3946122651015e-12, 0.4108265279171e+00, 0.1059381944224e+01 };
/* SSB-to-Sun, T^2, Z */
static const double s2z[] = {
0.3749920358054e-12, 0.3230285558668e+01, 0.2132990797783e+00,
0.2735037220939e-12, 0.6154322683046e+01, 0.5296909721118e+00 };
/* Pointers to coefficient arrays, in x,y,z sets */
static const double *ce0[] = { e0x, e0y, e0z },
*ce1[] = { e1x, e1y, e1z },
*ce2[] = { e2x, e2y, e2z },
*cs0[] = { s0x, s0y, s0z },
*cs1[] = { s1x, s1y, s1z },
*cs2[] = { s2x, s2y, s2z };
const double *coeffs;
/* Numbers of terms for each component of the model, in x,y,z sets */
static const int ne0[3] = {(int)(sizeof e0x / sizeof (double) / 3),
(int)(sizeof e0y / sizeof (double) / 3),
(int)(sizeof e0z / sizeof (double) / 3) },
ne1[3] = {(int)(sizeof e1x / sizeof (double) / 3),
(int)(sizeof e1y / sizeof (double) / 3),
(int)(sizeof e1z / sizeof (double) / 3) },
ne2[3] = {(int)(sizeof e2x / sizeof (double) / 3),
(int)(sizeof e2y / sizeof (double) / 3),
(int)(sizeof e2z / sizeof (double) / 3) },
ns0[3] = {(int)(sizeof s0x / sizeof (double) / 3),
(int)(sizeof s0y / sizeof (double) / 3),
(int)(sizeof s0z / sizeof (double) / 3) },
ns1[3] = {(int)(sizeof s1x / sizeof (double) / 3),
(int)(sizeof s1y / sizeof (double) / 3),
(int)(sizeof s1z / sizeof (double) / 3) },
ns2[3] = {(int)(sizeof s2x / sizeof (double) / 3),
(int)(sizeof s2y / sizeof (double) / 3),
(int)(sizeof s2z / sizeof (double) / 3) };
int nterms;
/* Miscellaneous */
int jstat, i, j;
double t, t2, xyz, xyzd, a, b, c, ct, p, cp,
ph[3], vh[3], pb[3], vb[3], x, y, z;
/* ------------------------------------------------------------------ */
/* Time since reference epoch, Julian years. */
t = ((date1 - ERFA_DJ00) + date2) / ERFA_DJY;
t2 = t*t;
/* Set status. */
jstat = fabs(t) <= 100.0 ? 0 : 1;
/* X then Y then Z. */
for (i = 0; i < 3; i++) {
/* Initialize position and velocity component. */
xyz = 0.0;
xyzd = 0.0;
/* ------------------------------------------------ */
/* Obtain component of Sun to Earth ecliptic vector */
/* ------------------------------------------------ */
/* Sun to Earth, T^0 terms. */
coeffs = ce0[i];
nterms = ne0[i];
for (j = 0; j < nterms; j++) {
a = *coeffs++;
b = *coeffs++;
c = *coeffs++;
p = b + c*t;
xyz += a*cos(p);
xyzd -= a*c*sin(p);
}
/* Sun to Earth, T^1 terms. */
coeffs = ce1[i];
nterms = ne1[i];
for (j = 0; j < nterms; j++) {
a = *coeffs++;
b = *coeffs++;
c = *coeffs++;
ct = c*t;
p = b + ct;
cp = cos(p);
xyz += a*t*cp;
xyzd += a*( cp - ct*sin(p) );
}
/* Sun to Earth, T^2 terms. */
coeffs = ce2[i];
nterms = ne2[i];
for (j = 0; j < nterms; j++) {
a = *coeffs++;
b = *coeffs++;
c = *coeffs++;
ct = c*t;
p = b + ct;
cp = cos(p);
xyz += a*t2*cp;
xyzd += a*t*( 2.0*cp - ct*sin(p) );
}
/* Heliocentric Earth position and velocity component. */
ph[i] = xyz;
vh[i] = xyzd / ERFA_DJY;
/* ------------------------------------------------ */
/* Obtain component of SSB to Earth ecliptic vector */
/* ------------------------------------------------ */
/* SSB to Sun, T^0 terms. */
coeffs = cs0[i];
nterms = ns0[i];
for (j = 0; j < nterms; j++) {
a = *coeffs++;
b = *coeffs++;
c = *coeffs++;
p = b + c*t;
xyz += a*cos(p);
xyzd -= a*c*sin(p);
}
/* SSB to Sun, T^1 terms. */
coeffs = cs1[i];
nterms = ns1[i];
for (j = 0; j < nterms; j++) {
a = *coeffs++;
b = *coeffs++;
c = *coeffs++;
ct = c*t;
p = b + ct;
cp = cos(p);
xyz += a*t*cp;
xyzd += a*(cp - ct*sin(p));
}
/* SSB to Sun, T^2 terms. */
coeffs = cs2[i];
nterms = ns2[i];
for (j = 0; j < nterms; j++) {
a = *coeffs++;
b = *coeffs++;
c = *coeffs++;
ct = c*t;
p = b + ct;
cp = cos(p);
xyz += a*t2*cp;
xyzd += a*t*(2.0*cp - ct*sin(p));
}
/* Barycentric Earth position and velocity component. */
pb[i] = xyz;
vb[i] = xyzd / ERFA_DJY;
/* Next Cartesian component. */
}
/* Rotate from ecliptic to BCRS coordinates. */
x = ph[0];
y = ph[1];
z = ph[2];
pvh[0][0] = x + am12*y + am13*z;
pvh[0][1] = am21*x + am22*y + am23*z;
pvh[0][2] = am32*y + am33*z;
x = vh[0];
y = vh[1];
z = vh[2];
pvh[1][0] = x + am12*y + am13*z;
pvh[1][1] = am21*x + am22*y + am23*z;
pvh[1][2] = am32*y + am33*z;
x = pb[0];
y = pb[1];
z = pb[2];
pvb[0][0] = x + am12*y + am13*z;
pvb[0][1] = am21*x + am22*y + am23*z;
pvb[0][2] = am32*y + am33*z;
x = vb[0];
y = vb[1];
z = vb[2];
pvb[1][0] = x + am12*y + am13*z;
pvb[1][1] = am21*x + am22*y + am23*z;
pvb[1][2] = am32*y + am33*z;
/* Return the status. */
return jstat;
/* Finished. */
}