diff --git a/README-headless.md b/README-headless.md
index 5e183bf9..04e6d353 100644
--- a/README-headless.md
+++ b/README-headless.md
@@ -118,13 +118,19 @@ provided by SuperNOVAS over the upstream NOVAS C 3.1 code:
`equinox` argument was changing from 1 to 0, and back to 1 again with the date being held the same. This affected
routines downstream also, such as `sidereal_time()`.
- - Fixes accuracy bug in `ecl2equ_vec()`, `equ2ecl_vec()`, `geo_posvel()`, `place()`, and `sidereal_time()`, which
- returned a cached value for the other accuracy if the other input parameters are the same as a prior call,
- except the accuracy.
+ - Fixes accuracy switch bug in `cio_basis()`, `cio_location()`, `ecl2equ`, `equ2ecl_vec()`, `geo_posvel()`,
+ `place()`, and `sidereal_time()`. All these functions returned a cached value for the other accuracy if the other
+ input parameters are the same as a prior call, except the accuracy.
+ - Fix bug in `equ2ecl_vec()` and `ecl2equ_vec()` whereby a query with `coord_sys = 2` (GCRS) has overwritten the
+ cached mean obliquity value for `coord_sys = 0` (mean equinox of date). As a result, a subsequent call with
+ `coord_sys = 0` and the same date as before would return the results GCRS coordinates instead of the
+ requested mean equinox of date coordinates.
+
- The use of `fmod()` in NOVAS C 3.1 led to the wrong results when the numerator was negative and the result was
- not turned into a proper remainder. This affected the calculation of the mean anomaly in `solsys3.c` (line 261)
- for dates prior to J2000.
+ not turned into a proper remainder. This affected the calculation of the mean anomaly in `solsys3.c` (line 261)
+ and the fundamental arguments calculted in `fund_args()` and `ee_ct()` for dates prior to J2000. Less
+ critically, it also was the reason `cal_date()` did not work for negative JD values.
-----------------------------------------------------------------------------
diff --git a/README.md b/README.md
index 1459d7c1..1bc3565c 100644
--- a/README.md
+++ b/README.md
@@ -130,13 +130,19 @@ provided by SuperNOVAS over the upstream NOVAS C 3.1 code:
`equinox` argument was changing from 1 to 0, and back to 1 again with the date being held the same. This affected
routines downstream also, such as `sidereal_time()`.
- - Fixes accuracy bug in `ecl2equ_vec()`, `equ2ecl_vec()`, `geo_posvel()`, `place()`, and `sidereal_time()`, which
- returned a cached value for the other accuracy if the other input parameters are the same as a prior call,
- except the accuracy.
+ - Fixes accuracy switch bug in `cio_basis()`, `cio_location()`, `ecl2equ`, `equ2ecl_vec()`, `geo_posvel()`,
+ `place()`, and `sidereal_time()`. All these functions returned a cached value for the other accuracy if the other
+ input parameters are the same as a prior call, except the accuracy.
+ - Fix bug in `equ2ecl_vec()` and `ecl2equ_vec()` whereby a query with `coord_sys = 2` (GCRS) has overwritten the
+ cached mean obliquity value for `coord_sys = 0` (mean equinox of date). As a result, a subsequent call with
+ `coord_sys = 0` and the same date as before would return the results GCRS coordinates instead of the
+ requested mean equinox of date coordinates.
+
- The use of `fmod()` in NOVAS C 3.1 led to the wrong results when the numerator was negative and the result was
- not turned into a proper remainder. This affected the calculation of the mean anomaly in `solsys3.c` (line 261)
- for dates prior to J2000.
+ not turned into a proper remainder. This affected the calculation of the mean anomaly in `solsys3.c` (line 261)
+ and the fundamental arguments calculted in `fund_args()` and `ee_ct()` for dates prior to J2000. Less
+ critically, it also was the reason `cal_date()` did not work for negative JD values.
-----------------------------------------------------------------------------
diff --git a/include/novas.h b/include/novas.h
index c362d641..153cb3c8 100644
--- a/include/novas.h
+++ b/include/novas.h
@@ -750,8 +750,8 @@ int place_cirs(double jd_tt, const object *source, enum novas_accuracy accuracy,
double refract_astro(const on_surface *location, enum novas_refraction_model ref_option, double zd_calc);
-int light_time2(double jd_tdb, const object *ss_object, const double *pos_obs, double tlight0, enum novas_accuracy accuracy, double *pos,
- double *vel, double *tlight);
+int light_time2(double jd_tdb, const object *ss_object, const double *pos_obs, double tlight0, enum novas_accuracy accuracy, double *prel,
+ double *vsb, double *tlight);
double tt2tdb(double jd_tt);
diff --git a/src/novas.c b/src/novas.c
index 7007a8eb..5e17cb6e 100644
--- a/src/novas.c
+++ b/src/novas.c
@@ -196,6 +196,8 @@ static int time_equals(double jd1, double jd2) {
* @author Attila Kovacs
*/
int j2000_to_tod(double jd_tdb, enum novas_accuracy accuracy, const double *in, double *out) {
+ double v[3];
+
if(!in || !out) {
errno = EINVAL;
return -1;
@@ -206,13 +208,8 @@ int j2000_to_tod(double jd_tdb, enum novas_accuracy accuracy, const double *in,
return -1;
}
- if(!time_equals(jd_tdb, JD_J2000)) {
- double v[3];
- precession(JD_J2000, in, jd_tdb, v);
- nutation(jd_tdb, NUTATE_MEAN_TO_TRUE, accuracy, v, out);
-
- }
- else if(out != in) memcpy(out, in, XYZ_VECTOR_SIZE);
+ precession(JD_J2000, in, jd_tdb, v);
+ nutation(jd_tdb, NUTATE_MEAN_TO_TRUE, accuracy, v, out);
return 0;
}
@@ -242,13 +239,8 @@ int tod_to_j2000(double jd_tdb, enum novas_accuracy accuracy, const double *in,
return -1;
}
- if(time_equals(jd_tdb, JD_J2000)) {
- if(out != in) memcpy(out, in, XYZ_VECTOR_SIZE);
- }
- else {
- nutation(jd_tdb, NUTATE_TRUE_TO_MEAN, accuracy, in, out);
- precession(jd_tdb, out, JD_J2000, out);
- }
+ nutation(jd_tdb, NUTATE_TRUE_TO_MEAN, accuracy, in, out);
+ precession(jd_tdb, out, JD_J2000, out);
return 0;
}
@@ -377,7 +369,6 @@ int cirs_to_gcrs(double jd_tdb, enum novas_accuracy accuracy, const double *in,
short rs;
int i, error;
-
if(!in || !out) {
errno = EINVAL;
return -1;
@@ -1179,7 +1170,7 @@ short place(double jd_tt, const object *cel_object, const observer *location, do
static double peb[3], veb[3], psb[3];
enum novas_observer_place loc;
- double x, jd_tdb, pog[3] = { }, vog[3] = { }, pob[3], vob[3], pos[3] = { 0 }, vel[3], t_light, frlimb;
+ double x, jd_tdb, pog[3] = { }, vog[3] = { }, pob[3], vob[3], pos[3] = { 0 }, vel[3], t_light, d_sb, frlimb;
observer obs;
int i, error = 0;
@@ -1272,23 +1263,23 @@ short place(double jd_tt, const object *cel_object, const observer *location, do
// Get position of star wrt observer (corrected for parallax).
bary2obs(pos, pob, pos, &t_light);
output->dis = 0.0;
+ d_sb = vlen(pos);
}
else {
- // Observed object is solar system body.
- double jd[2] = { jd_tdb };
- double t_light0;
-
- // Get position of body wrt barycenter of solar system.
- error = ephemeris(jd, cel_object, NOVAS_BARYCENTER, accuracy, pos, vel);
- if(error) return (error + 10);
-
- // Get position of body wrt observer, and true (Euclidian) distance.
- bary2obs(pos, pob, pos, &t_light0);
+ int k;
// Get position of body wrt observer, antedated for light-time.
- error = light_time2(jd_tdb, cel_object, pob, t_light0, accuracy, pos, vel, &t_light);
+ error = light_time2(jd_tdb, cel_object, pob, 0.0, accuracy, pos, vel, &t_light);
if(error) return (error + 50);
+ // Calculate distance to Sun.
+ d_sb = 0.0;
+ for(k = 3; --k >= 0; ) {
+ double d = psb[k] - (pob[k] + pos[k]);
+ d_sb += d * d;
+ }
+ d_sb = sqrt(d_sb);
+
// AK: Fix for antedating distance and velocities...
output->dis = t_light * C_AUDAY;
}
@@ -1313,22 +1304,24 @@ short place(double jd_tt, const object *cel_object, const observer *location, do
// ---------------------------------------------------------------------
// Compute radial velocity (all vectors in ICRS).
// ---------------------------------------------------------------------
- rad_vel(cel_object, pos, vel, vob, vdist(pob, peb), vdist(pob, psb), vdist(pos, psb), &output->rv);
+ rad_vel(cel_object, pos, vel, vob, vdist(pob, peb), vdist(pob, psb), d_sb, &output->rv);
// ---------------------------------------------------------------------
// Transform, if necessary, to output coordinate system.
// ---------------------------------------------------------------------
switch(coord_sys) {
- case (NOVAS_TOD):
+ case (NOVAS_TOD): {
// Transform to equator and equinox of date.
gcrs_to_tod(jd_tdb, accuracy, pos, pos);
break;
+ }
- case (NOVAS_CIRS):
+ case (NOVAS_CIRS): {
// Transform to equator and CIO of date.
error = gcrs_to_cirs(jd_tdb, accuracy, pos, pos);
if(error) return error + 80;
break;
+ }
default:
// Nothing else to do.
@@ -1370,8 +1363,8 @@ int equ2gal(double rai, double deci, double *glon, double *glat) {
// AK: Transposed compared to NOVAS C 3.1 for dot product handling.
static const double ag[3][3] = { //
{ -0.0548755604, -0.8734370902, -0.4838350155 }, //
- { +0.4941094279, -0.4448296300, +0.7469822445 }, //
- { -0.8676661490, -0.1980763734, +0.4559837762 } };
+ { +0.4941094279, -0.4448296300, +0.7469822445 }, //
+ { -0.8676661490, -0.1980763734, +0.4559837762 } };
if(!glon || !glat) {
errno = EINVAL;
@@ -1406,14 +1399,14 @@ int equ2gal(double rai, double deci, double *glon, double *glat) {
}
/**
- * Convert right ascension and declination to ecliptic longitude and latitude. To convert ICRS RA and dec to
- * ecliptic coordinates (mean ecliptic and equinox of J2000.0), set 'coord_sys' to NOVAS_ICRS_EQUATOR (2); in
+ * Convert right ascension and declination to ecliptic longitude and latitude. To convert GCRS RA and dec to
+ * ecliptic coordinates (mean ecliptic and equinox of J2000.0), set 'coord_sys' to NOVAS_GCRS_EQUATOR (2); in
* this case the value of 'jd_tt' can be set to anything, since J2000.0 is assumed. Otherwise, all input
* coordinates are dynamical at 'jd_tt'.
*
- * @param jd_tt [day] Terrestrial Time (TT) based Julian date. (Unused if 'coord_sys' is NOVAS_ICRS_EQUATOR [2])
- * @param coord_sys The astrometric reference system of the coordinates. If 'coord_sys' is NOVAS_ICRS_EQUATOR (2),
- * the input ICRS coordinates are converted to J2000 ecliptic coordinates.
+ * @param jd_tt [day] Terrestrial Time (TT) based Julian date. (Unused if 'coord_sys' is NOVAS_GCRS_EQUATOR [2])
+ * @param coord_sys The astrometric reference system of the coordinates. If 'coord_sys' is NOVAS_GCRS_EQUATOR (2),
+ * the input GCRS coordinates are converted to J2000 ecliptic coordinates.
* @param accuracy NOVAS_FULL_ACCURACY (0) or NOVAS_REDUCED_ACCURACY (1)
* @param ra [h] Right ascension in hours, referred to specified equator and equinox of date.
* @param dec [deg] Declination in degrees, referred to specified equator and equinox of date.
@@ -1424,7 +1417,7 @@ int equ2gal(double rai, double deci, double *glon, double *glat) {
short equ2ecl(double jd_tt, enum novas_equator_type coord_sys, enum novas_accuracy accuracy, double ra, double dec, double *elon,
double *elat) {
- double r, d, cosd, pos[3], xyproj, e;
+ double r, d, cosd, pos[3], xyproj;
int error;
// Form position vector in equatorial system from input coordinates.
@@ -1443,30 +1436,26 @@ short equ2ecl(double jd_tt, enum novas_equator_type coord_sys, enum novas_accura
// Decompose ecliptic vector into ecliptic longitude and latitude.
xyproj = sqrt(pos[0] * pos[0] + pos[1] * pos[1]);
- if(xyproj > 0.0) e = atan2(pos[1], pos[0]);
- else e = 0.0;
-
- *elon = e / DEGREE;
+ *elon = (xyproj > 0.0) ? atan2(pos[1], pos[0]) / DEGREE : 0.0;
if(*elon < 0.0) *elon += DEG360;
- e = atan2(pos[2], xyproj);
- *elat = e / DEGREE;
+ *elat = atan2(pos[2], xyproj) / DEGREE;
return 0;
}
/**
* Converts an equatorial position vector to an ecliptic position vector. To convert ICRS RA and dec to
- * ecliptic coordinates (mean ecliptic and equinox of J2000.0), set 'coord_sys' to NOVAS_ICRS_EQUATOR (2);
+ * ecliptic coordinates (mean ecliptic and equinox of J2000.0), set 'coord_sys' to NOVAS_GCRS_EQUATOR (2);
* in this case the value of 'jd_tt' can be set to anything, since J2000.0 is assumed. Otherwise, all input
* coordinates are dynamical at 'jd_tt'.
*
- * @param jd_tt [day] Terrestrial Time (TT) based Julian date. (Unused if 'coord_sys' is NOVAS_ICRS_EQUATOR [2])
+ * @param jd_tt [day] Terrestrial Time (TT) based Julian date. (Unused if 'coord_sys' is NOVAS_GCRS_EQUATOR [2])
* @param coord_sys The astrometric reference system type of the coordinates.
* @param accuracy NOVAS_FULL_ACCURACY (0) or NOVAS_REDUCED_ACCURACY (1)
* @param pos1 Position vector, referred to specified equator and equinox of date.
* @param[out] pos2 Position vector, referred to specified ecliptic and equinox of date. It can be the same
- * vector as the input. If 'coord_sys' is NOVAS_ICRS_EQUATOR (2), the input ICRS coordinates
+ * vector as the input. If 'coord_sys' is NOVAS_GCRS_EQUATOR (2), the input GCRS coordinates
* are converted to J2000 ecliptic coordinates.
* @return 0 if successful, -1 if either vector argument is NULL or the accuracy is invalid, or else 1
* if the value of 'coord_sys' is invalid.
@@ -1496,7 +1485,7 @@ short equ2ecl_vec(double jd_tt, enum novas_equator_type coord_sys, enum novas_ac
memcpy(pos0, pos1, sizeof(pos0));
- if(!time_equals(jd_tt, t_last) || accuracy != acc_last) {
+ if(!oblm || !time_equals(jd_tt, t_last) || accuracy != acc_last) {
const double jd_tdb = jd_tt + tt2tdb(jd_tt) / DAY; // TDB date
e_tilt(jd_tdb, accuracy, &oblm, &oblt, NULL, NULL, NULL);
t_last = jd_tt;
@@ -1507,18 +1496,18 @@ short equ2ecl_vec(double jd_tt, enum novas_equator_type coord_sys, enum novas_ac
break;
}
- case NOVAS_GCRS_EQUATOR: /* Input: ICRS */ {
+ case NOVAS_GCRS_EQUATOR: /* Input: GCRS */{
static enum novas_accuracy acc_2000 = -1;
static double ob2000;
frame_tie(pos1, TIE_ICRS_TO_J2000, pos0);
if(accuracy != acc_2000) {
- e_tilt(JD_J2000, accuracy, &ob2000, NULL, NULL, NULL, NULL);
+ ob2000 = mean_obliq(JD_J2000);
acc_2000 = accuracy;
}
- obl = ob2000 * DEGREE;
+ obl = ob2000 * ARCSEC;
break;
}
@@ -1527,7 +1516,7 @@ short equ2ecl_vec(double jd_tt, enum novas_equator_type coord_sys, enum novas_ac
}
c = cos(obl);
- s = sin (obl);
+ s = sin(obl);
// Rotate position vector to ecliptic system.
pos2[0] = pos0[0];
@@ -1539,10 +1528,10 @@ short equ2ecl_vec(double jd_tt, enum novas_equator_type coord_sys, enum novas_ac
/**
* Converts an ecliptic position vector to an equatorial position vector. To convert ecliptic coordinates
- * (mean ecliptic and equinox of J2000.0) to ICRS RA and dec to, set 'coord_sys' to NOVAS_ICRS_EQUATOR (2); in this case the value of
+ * (mean ecliptic and equinox of J2000.0) to GCRS RA and dec to, set 'coord_sys' to NOVAS_GCRS_EQUATOR (2); in this case the value of
* 'jd_tt' can be set to anything, since J2000.0 is assumed. Otherwise, all input coordinates are dynamical at 'jd_tt'.
*
- * @param jd_tt [day] Terrestrial Time (TT) based Julian date. (Unused if 'coord_sys' is NOVAS_ICRS_EQUATOR [2])
+ * @param jd_tt [day] Terrestrial Time (TT) based Julian date. (Unused if 'coord_sys' is NOVAS_GCRS_EQUATOR [2])
* @param coord_sys The astrometric reference system type of the coordinates
* @param accuracy NOVAS_FULL_ACCURACY (0) or NOVAS_REDUCED_ACCURACY (1)
* @param pos1 Position vector, referred to specified ecliptic and equinox of date.
@@ -1568,12 +1557,13 @@ short ecl2equ_vec(double jd_tt, enum novas_equator_type coord_sys, enum novas_ac
// Get obliquity, depending upon the "system" of the input coordinates.
switch(coord_sys) {
- static enum novas_accuracy acc_last = -1;
- static double t_last = 0.0, ob2000, oblm, oblt;
- case NOVAS_MEAN_EQUATOR: // Output: mean equator and equinox of date
- case NOVAS_TRUE_EQUATOR: // Output: true equator and equinox of date
- if(!time_equals(jd_tt, t_last) || accuracy != acc_last) {
+ case NOVAS_MEAN_EQUATOR: // Output: mean equator and equinox of date
+ case NOVAS_TRUE_EQUATOR: { // Output: true equator and equinox of date
+ static enum novas_accuracy acc_last = -1;
+ static double t_last = 0.0, oblm, oblt;
+
+ if(!oblm || !time_equals(jd_tt, t_last) || accuracy != acc_last) {
const double jd_tdb = jd_tt + tt2tdb(jd_tt) / DAY; // TDB date
e_tilt(jd_tdb, accuracy, &oblm, &oblt, NULL, NULL, NULL);
t_last = jd_tt;
@@ -1582,14 +1572,18 @@ short ecl2equ_vec(double jd_tt, enum novas_equator_type coord_sys, enum novas_ac
obl = (coord_sys == NOVAS_MEAN_EQUATOR ? oblm : oblt) * DEGREE;
break;
+ }
+
+ case NOVAS_GCRS_EQUATOR: { // Output: GCRS
+ static double ob2000;
- case NOVAS_GCRS_EQUATOR: /* Output: ICRS */
if(ob2000 == 0.0) {
- e_tilt(JD_J2000, accuracy, &oblm, NULL, NULL, NULL, NULL);
- ob2000 = oblm;
+ ob2000 = mean_obliq(JD_J2000);
}
- obl = ob2000 * DEGREE;
+
+ obl = ob2000 * ARCSEC;
break;
+ }
default:
return 1;
@@ -2712,7 +2706,7 @@ int terra(const on_surface *location, double lst, double *pos, double *vel) {
int e_tilt(double jd_tdb, enum novas_accuracy accuracy, double *mobl, double *tobl, double *ee, double *dpsi, double *deps) {
static enum novas_accuracy acc_last = -1;
static double jd_last = 0;
- static double d_psi, d_eps, mean_ob, true_ob, eq_eq;
+ static double d_psi, d_eps, mean_ob, true_ob, c_terms;
if(accuracy != NOVAS_FULL_ACCURACY && accuracy != NOVAS_REDUCED_ACCURACY) {
errno = EINVAL;
@@ -2725,30 +2719,17 @@ int e_tilt(double jd_tdb, enum novas_accuracy accuracy, double *mobl, double *to
if(!time_equals(jd_tdb, jd_last) || (accuracy != acc_last)) {
// Compute time in Julian centuries from epoch J2000.0.
const double t = (jd_tdb - JD_J2000) / JULIAN_CENTURY_DAYS;
- double dp, de, c_terms;
- nutation_angles(t, accuracy, &dp, &de);
+ nutation_angles(t, accuracy, &d_psi, &d_eps);
// Obtain complementary terms for equation of the equinoxes in arcseconds.
c_terms = ee_ct(jd_tdb, 0.0, accuracy) / ARCSEC;
- // Apply observed celestial pole offsets.
- d_psi = dp + PSI_COR;
- d_eps = de + EPS_COR;
-
- // Compute mean obliquity of the ecliptic in arcseconds.
- mean_ob = mean_obliq(jd_tdb);
-
- // Compute true obliquity of the ecliptic in arcseconds.
- true_ob = mean_ob + d_eps;
-
- // Convert obliquity values to degrees.
- mean_ob /= 3600.0;
- true_ob /= 3600.0;
+ // Compute mean obliquity of the ecliptic in degrees.
+ mean_ob = mean_obliq(jd_tdb) / 3600.0;
- // Compute equation of the equinoxes in seconds of time.
- eq_eq = d_psi * cos(mean_ob * DEGREE) + c_terms;
- eq_eq /= 15.0;
+ // Compute true obliquity of the ecliptic in degrees.
+ true_ob = mean_ob + d_eps / 3600.0;
// Reset the values of the last Julian date and last mode.
jd_last = jd_tdb;
@@ -2756,9 +2737,9 @@ int e_tilt(double jd_tdb, enum novas_accuracy accuracy, double *mobl, double *to
}
// Set output values.
- if(dpsi) *dpsi = d_psi;
- if(deps) *deps = d_eps;
- if(ee) *ee = eq_eq;
+ if(dpsi) *dpsi = d_psi + PSI_COR;
+ if(deps) *deps = d_eps + EPS_COR;
+ if(ee) *ee = (d_psi * cos(mean_ob * DEGREE) + c_terms) / 15.0;
if(mobl) *mobl = mean_ob;
if(tobl) *tobl = true_ob;
@@ -2811,7 +2792,7 @@ int e_tilt(double jd_tdb, enum novas_accuracy accuracy, double *mobl, double *to
*/
short cel_pole(double tjd, enum novas_pole_offset_type type, double dpole1, double dpole2) {
switch(type) {
- case (POLE_OFFSETS_DPSI_DEPS):
+ case POLE_OFFSETS_DPSI_DEPS:
// Angular coordinates of modeled pole referred to mean ecliptic of
// date, that is,delta-delta-psi and delta-delta-epsilon.
@@ -2819,17 +2800,13 @@ short cel_pole(double tjd, enum novas_pole_offset_type type, double dpole1, doub
EPS_COR = dpole2 * 1.0e-3;
break;
- case (POLE_OFFSETS_X_Y): {
+ case POLE_OFFSETS_X_Y: {
// Components of modeled pole unit vector referred to GCRS axes, that is, dx and dy.
- const double dx = dpole1;
- const double dy = dpole2;
-
const double t = (tjd - JD_J2000) / JULIAN_CENTURY_DAYS;
// Compute sin_e of mean obliquity of date.
- const double mean_ob = mean_obliq(tjd);
- const double sin_e = sin(mean_ob * ARCSEC);
+ const double sin_e = sin(mean_obliq(tjd) * ARCSEC);
// The following algorithm, to transform dx and dy to
// delta-delta-psi and delta-delta-epsilon, is from eqs. (7)-(9) of the
@@ -2837,10 +2814,10 @@ short cel_pole(double tjd, enum novas_pole_offset_type type, double dpole1, doub
//
// Trivial model of pole trajectory in GCRS allows computation of dz.
const double x = (2004.190 * t) * ARCSEC;
- const double dz = -(x + 0.5 * x * x * x) * dx;
+ const double dz = -(x + 0.5 * x * x * x) * dpole1;
// Form pole offset vector (observed - modeled) in GCRS.
- double dp[3] = { dx * MAS, dy * MAS, dz * MAS };
+ double dp[3] = { dpole1 * MAS, dpole2 * MAS, dz * MAS };
// Precess pole offset vector to mean equator and equinox of date.
frame_tie(dp, TIE_ICRS_TO_J2000, dp);
@@ -2896,77 +2873,79 @@ short cel_pole(double tjd, enum novas_pole_offset_type type, double dpole1, doub
double ee_ct(double jd_high, double jd_low, enum novas_accuracy accuracy) {
// Argument coefficients for t^0.
- const char ke0_t[33][14] = { { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 2, -2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 2, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 2, -2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 1, 2, -2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 1, 2, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 4, -4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 1, -1, 1, 0, -8, 12, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 1, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 1, -2, 2, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 1, -2, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 0, 0, 0, 0, 8, -13, 0, 0, 0, 0, 0, -1 }, //
- { 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 2, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 1, 0, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 1, 2, -2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 1, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 4, -2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 0, 0, 2, -2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 1, 0, -2, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
- { 1, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
+ const char ke0_t[33][14] = { //
+ { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 2, -2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 2, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 2, -2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 1, 2, -2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 1, 2, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 4, -4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 1, -1, 1, 0, -8, 12, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 1, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 1, -2, 2, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 1, -2, 2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 0, 0, 0, 0, 8, -13, 0, 0, 0, 0, 0, -1 }, //
+ { 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 2, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 1, 0, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 1, 2, -2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 1, 0, 0, -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 4, -2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 0, 0, 2, -2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 1, 0, -2, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, //
+ { 1, 0, -2, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
// Argument coefficients for t^1.
//const char ke1[14] = {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0};
// Sine and cosine coefficients for t^0.
- const float se0_t[33][2] = { { +2640.96e-6, -0.39e-6 }, //
- { +63.52e-6, -0.02e-6 }, //
- { +11.75e-6, +0.01e-6 }, //
- { +11.21e-6, +0.01e-6 }, //
- { -4.55e-6, +0.00e-6 }, //
- { +2.02e-6, +0.00e-6 }, //
- { +1.98e-6, +0.00e-6 }, //
- { -1.72e-6, +0.00e-6 }, //
- { -1.41e-6, -0.01e-6 }, //
- { -1.26e-6, -0.01e-6 }, //
- { -0.63e-6, +0.00e-6 }, //
- { -0.63e-6, +0.00e-6 }, //
- { +0.46e-6, +0.00e-6 }, //
- { +0.45e-6, +0.00e-6 }, //
- { +0.36e-6, +0.00e-6 }, //
- { -0.24e-6, -0.12e-6 }, //
- { +0.32e-6, +0.00e-6 }, //
- { +0.28e-6, +0.00e-6 }, //
- { +0.27e-6, +0.00e-6 }, //
- { +0.26e-6, +0.00e-6 }, //
- { -0.21e-6, +0.00e-6 }, //
- { +0.19e-6, +0.00e-6 }, //
- { +0.18e-6, +0.00e-6 }, //
- { -0.10e-6, +0.05e-6 }, //
- { +0.15e-6, +0.00e-6 }, //
- { -0.14e-6, +0.00e-6 }, //
- { +0.14e-6, +0.00e-6 }, //
- { -0.14e-6, +0.00e-6 }, //
- { +0.14e-6, +0.00e-6 }, //
- { +0.13e-6, +0.00e-6 }, //
- { -0.11e-6, +0.00e-6 }, //
- { +0.11e-6, +0.00e-6 }, //
- { +0.11e-6, +0.00e-6 } };
+ const float se0_t[33][2] = { //
+ { +2640.96e-6, -0.39e-6 }, //
+ { +63.52e-6, -0.02e-6 }, //
+ { +11.75e-6, +0.01e-6 }, //
+ { +11.21e-6, +0.01e-6 }, //
+ { -4.55e-6, +0.00e-6 }, //
+ { +2.02e-6, +0.00e-6 }, //
+ { +1.98e-6, +0.00e-6 }, //
+ { -1.72e-6, +0.00e-6 }, //
+ { -1.41e-6, -0.01e-6 }, //
+ { -1.26e-6, -0.01e-6 }, //
+ { -0.63e-6, +0.00e-6 }, //
+ { -0.63e-6, +0.00e-6 }, //
+ { +0.46e-6, +0.00e-6 }, //
+ { +0.45e-6, +0.00e-6 }, //
+ { +0.36e-6, +0.00e-6 }, //
+ { -0.24e-6, -0.12e-6 }, //
+ { +0.32e-6, +0.00e-6 }, //
+ { +0.28e-6, +0.00e-6 }, //
+ { +0.27e-6, +0.00e-6 }, //
+ { +0.26e-6, +0.00e-6 }, //
+ { -0.21e-6, +0.00e-6 }, //
+ { +0.19e-6, +0.00e-6 }, //
+ { +0.18e-6, +0.00e-6 }, //
+ { -0.10e-6, +0.05e-6 }, //
+ { +0.15e-6, +0.00e-6 }, //
+ { -0.14e-6, +0.00e-6 }, //
+ { +0.14e-6, +0.00e-6 }, //
+ { -0.14e-6, +0.00e-6 }, //
+ { +0.14e-6, +0.00e-6 }, //
+ { +0.13e-6, +0.00e-6 }, //
+ { -0.11e-6, +0.00e-6 }, //
+ { +0.11e-6, +0.00e-6 }, //
+ { +0.11e-6, +0.00e-6 } };
// Sine and cosine coefficients for t^1.
const double se1[2] = //
@@ -3173,7 +3152,7 @@ short geo_posvel(double jd_tt, double ut1_to_tt, enum novas_accuracy accuracy, c
static enum novas_accuracy acc_last = -1;
static double gast;
- double gmst, x1, x2, x3, x4, eqeq, pos1[3], vel1[3], jd_tdb, jd_ut1;
+ double gmst, eqeq, pos1[3], vel1[3], jd_tdb, jd_ut1;
if(!obs || pos == vel) {
errno = EINVAL;
@@ -3188,7 +3167,7 @@ short geo_posvel(double jd_tt, double ut1_to_tt, enum novas_accuracy accuracy, c
switch(obs->where) {
- case (NOVAS_OBSERVER_AT_GEOCENTER): // Observer at geocenter. Trivial case.
+ case NOVAS_OBSERVER_AT_GEOCENTER: // Observer at geocenter. Trivial case.
if(pos) memset(pos, 0, XYZ_VECTOR_SIZE);
if(vel) memset(vel, 0, XYZ_VECTOR_SIZE);
return 0;
@@ -3196,13 +3175,12 @@ short geo_posvel(double jd_tt, double ut1_to_tt, enum novas_accuracy accuracy, c
// Other two cases: Get geocentric position and velocity vectors of
// observer wrt equator and equinox of date.
- case (NOVAS_OBSERVER_ON_EARTH): // Observer on surface of Earth.
-
+ case NOVAS_OBSERVER_ON_EARTH: // Observer on surface of Earth.
// Compute UT1 and sidereal time.
jd_ut1 = jd_tt - (ut1_to_tt / DAY);
if(!time_equals(jd_ut1, t_last) || accuracy != acc_last) {
sidereal_time(jd_ut1, 0.0, ut1_to_tt, NOVAS_MEAN_EQUINOX, EROT_ERA, accuracy, &gmst);
- e_tilt(jd_tdb, accuracy, &x1, &x2, &eqeq, &x3, &x4);
+ e_tilt(jd_tdb, accuracy, NULL, NULL, &eqeq, NULL, NULL);
gast = gmst + eqeq / 3600.0;
t_last = jd_ut1;
acc_last = accuracy;
@@ -3212,7 +3190,7 @@ short geo_posvel(double jd_tt, double ut1_to_tt, enum novas_accuracy accuracy, c
terra(&obs->on_surf, gast, pos1, vel1);
break;
- case (NOVAS_OBSERVER_IN_EARTH_ORBIT): { // Observer on near-earth spacecraft.
+ case NOVAS_OBSERVER_IN_EARTH_ORBIT: { // Observer on near-earth spacecraft.
int i;
double ivu = DAY / AU_KM;
@@ -3251,10 +3229,10 @@ short geo_posvel(double jd_tt, double ut1_to_tt, enum novas_accuracy accuracy, c
* components in AU.
* @param tlight0 [day] First approximation to light-time, in days (can be set to 0.0 if unknown).
* @param accuracy NOVAS_FULL_ACCURACY (0) or NOVAS_REDUCED_ACCURACY (1)
- * @param[out] pos [AU] Position 3-vector of body, with respect to origin at observer (or
- * the geocenter), referred to ICRS axes, components in AU.
- * @param[out] vel [AU/day] Velocity 3-vector of body, with respect to origin at observer (or
- * the geocenter), referred to ICRS axes, components in AU/day.
+ * @param[out] prel [AU] Position 3-vector of body, relative to observer (or the geocenter), referred to ICRS axes,
+ * components in AU.
+ * @param[out] vsb [AU/day] Velocity 3-vector of body, with respect to the Solar-system barycenter,
+ * referred to ICRS axes, components in AU/day.
* @param[out] tlight [day] Calculated light time
*
* @return 0 if successful, -1 if any of the pointer arguments is NULL or if the output vectors
@@ -3266,13 +3244,13 @@ short geo_posvel(double jd_tt, double ut1_to_tt, enum novas_accuracy accuracy, c
* @since 1.0
* @author Attila Kovacs
*/
-int light_time2(double jd_tdb, const object *ss_object, const double *pos_obs, double tlight0, enum novas_accuracy accuracy, double *pos,
- double *vel, double *tlight) {
+int light_time2(double jd_tdb, const object *ss_object, const double *pos_obs, double tlight0, enum novas_accuracy accuracy, double *prel,
+ double *vsb, double *tlight) {
int iter = 0;
- double tol, jd[2] = { }, t1, t2;
+ double tol, jd[2] = { };
- if(!ss_object || !pos_obs || pos == pos_obs || vel == pos_obs || pos == vel) {
+ if(!ss_object || !pos_obs || prel == pos_obs || vsb == pos_obs || prel == vsb) {
errno = EINVAL;
return -1;
}
@@ -3286,31 +3264,29 @@ int light_time2(double jd_tdb, const object *ss_object, const double *pos_obs, d
tol = 1.0e-12;
jd[0] = floor(jd_tdb);
- t1 = jd_tdb - jd[0];
- t2 = t1 - tlight0;
+ jd[1] = jd_tdb - jd[0];
}
else {
tol = 1.0e-9;
- t1 = jd_tdb;
- t2 = jd_tdb - tlight0;
+ jd[0] = jd_tdb;
}
// Iterate to obtain correct light-time (usually converges rapidly).
for(iter = 0; iter < 10; iter++) {
int error;
- double t3;
+ double dt = 0.0;
- jd[1] = t2;
- error = ephemeris(jd, ss_object, 0, accuracy, pos, vel);
- if(error != 0) return (error + 10);
+ error = ephemeris(jd, ss_object, NOVAS_BARYCENTER, accuracy, prel, vsb);
+ bary2obs(prel, pos_obs, prel, tlight);
- bary2obs(pos, pos_obs, pos, tlight);
+ if(error != 0) return (error + 10);
- t3 = t1 - *tlight;
- if(fabs(t3 - t2) <= tol) return 0;
+ dt = *tlight - tlight0;
+ if(fabs(dt) <= tol) return 0;
- t2 = t3;
+ jd[1] -= dt;
+ tlight0 = *tlight;
}
return 1;
@@ -3705,7 +3681,7 @@ int rad_vel(const object *cel_object, const double *pos, const double *vel, cons
double d_obj_sun, double *rv) {
static double c2 = C * C, toms = AU / DAY, toms2 = (AU / DAY) * (AU / DAY);
- double v[3], ra, dec, radvel, posmag, uk[3], v2, vo2, r, phigeo, phisun, rel, rar, dcr, cosdec, du[3], zc, kv, zb1, kvobs, zobs1;
+ double v[3], posmag, uk[3], v2, vo2, r, phigeo, phisun, rel, kv, zb1, kvobs, zobs1;
int i;
if(!cel_object || !pos || !vel || !vel_obs || !rv) {
@@ -3716,20 +3692,6 @@ int rad_vel(const object *cel_object, const double *pos, const double *vel, cons
// Initialize variables needed for radial velocity calculation.
memcpy(v, vel, sizeof(v));
- if(cel_object->type == NOVAS_DISTANT_OBJECT) {
- /* Data for objects outside the solar system. */
- ra = cel_object->star.ra;
- dec = cel_object->star.dec;
- radvel = cel_object->star.radialvelocity;
-
- if(cel_object->star.parallax <= 0.0) memset(v, 0, sizeof(v));
- }
- else {
- ra = 0.0;
- dec = 0.0;
- radvel = 0.0;
- }
-
// Compute length of position vector = distance to object in AU.
posmag = vlen(pos);
@@ -3762,30 +3724,36 @@ int rad_vel(const object *cel_object, const double *pos, const double *vel, cons
// Complete radial velocity calculation.
switch(cel_object->type) {
- case 2: // Objects outside the solar system.
+ case NOVAS_DISTANT_OBJECT: {
+ // Objects outside the solar system.
// For stars, update barycentric radial velocity measure for change
// in view angle.
- rar = ra * HOURANGLE;
- dcr = dec * DEGREE;
- cosdec = cos(dcr);
- du[0] = uk[0] - (cosdec * cos(rar));
- du[1] = uk[1] - (cosdec * sin(rar));
- du[2] = uk[2] - sin(dcr);
+ const double ra = cel_object->star.ra * HOURANGLE;
+ const double dec = cel_object->star.dec * DEGREE;
+ const double cosdec = cos(dec);
+ const double radvel = cel_object->star.radialvelocity;
+
+ double du[3], zc;
+
+ if(cel_object->star.parallax <= 0.0) memset(v, 0, sizeof(v));
+
+ du[0] = uk[0] - (cosdec * cos(ra));
+ du[1] = uk[1] - (cosdec * sin(ra));
+ du[2] = uk[2] - sin(dec);
zc = radvel * 1.0e3 + vdot(v, du) * toms;
// Compute observed radial velocity measure of a star (inverse of
// Lindegren & Dravins eq. (41)).
zb1 = 1.0 + zc / C;
- kvobs = vdot(uk, vel_obs) * toms;
- zobs1 = zb1 * rel / (1.0 + kvobs / C);
break;
+ }
- case NOVAS_MAJOR_PLANET: /* Objects in the solar system */
+ /* Objects in the solar system */
+ case NOVAS_MAJOR_PLANET:
case NOVAS_MINOR_PLANET:
- default:
// Compute solar potential at object, if within solar system.
r = d_obj_sun * AU;
- phisun = ((r > 1.0e8) && (r < 1.0e16)) ? GS / r : 0.0;
+ phisun = (r > 1e8 && r < 1e16) ? GS / r : 0.0;
// Compute observed radial velocity measure of a planet or other
// object -- including a nearby star -- where kinematic barycentric
@@ -3794,10 +3762,16 @@ int rad_vel(const object *cel_object, const double *pos, const double *vel, cons
// communication (2006)).
kv = vdot(uk, vel) * toms;
zb1 = (1.0 + kv / C) / (1.0 - phisun / c2 - 0.5 * v2 / c2);
- kvobs = vdot(uk, vel_obs) * toms;
- zobs1 = zb1 * rel / (1.0 + kvobs / C);
+ break;
+
+ default:
+ errno = EBADR;
+ return -1;
}
+ kvobs = vdot(uk, vel_obs) * toms;
+ zobs1 = zb1 * rel / (1.0 + kvobs / C);
+
// Convert observed radial velocity measure to kilometers/second.
*rv = (zobs1 - 1.0) * C / 1000.0;
@@ -3809,6 +3783,14 @@ int rad_vel(const object *cel_object, const double *pos, const double *vel, cons
* another. Unlike the original NOVAS routine, this routine works
* for any pairing of the time arguments.
*
+ * NOTE:
+ *
+ * - Unlike the original NOVAS C 3.1 version, this one does not require that one
+ * of the time arguments must be J2000. You can precess from any date to
+ * any other date, and the intermediate epoch of J2000 will be handled internally
+ * as needed.
+ *
+ *
* REFERENCES:
*
* - Explanatory Supplement To The Astronomical Almanac, pp. 103-104.
@@ -4076,13 +4058,13 @@ int fund_args(double t, novas_fundamental_args *a) {
}
a->l = 485868.249036 + t * 1717915923.2178;
- a->l1 = 1287104.79305 + t * 129596581.0481;
+ a->l1 = 1287104.793048 + t * 129596581.0481;
a->F = 335779.526232 + t * 1739527262.8478;
- a->D = 1072260.70369 + t * 1602961601.2090;
+ a->D = 1072260.703692 + t * 1602961601.2090;
a->Omega = 450160.398036 - t * 6962890.5431;
- // higher order terms (for uas precision) only if |t| > 0.001
- if(fabs(t) > 1e-3) {
+ // higher order terms (for 0.1 uas precision) only if |t| > 0.0001
+ if(fabs(t) > 1e-4) {
const double t2 = t * t;
a->l += t2 * (31.8792 + t * (0.051635 + t * (-0.00024470)));
a->l1 += t2 * (-0.5532 + t * (0.000136 + t * (-0.00001149)));
@@ -4160,7 +4142,7 @@ double planet_lon(double t, enum novas_planet planet) {
double accum_prec(double t) {
// General precession in longitude (Simon et al. 1994), equivalent
// to 5028.8200 arcsec/cy at J2000.
- return remainder((0.024380407358 + 0.000005391235 * t) * t, TWOPI);
+ return remainder((0.000005391235 * t + 0.024380407358) * t, TWOPI);
}
/**
@@ -4649,11 +4631,9 @@ short cio_location(double jd_tdb, enum novas_accuracy accuracy, double *ra_cio,
*/
short cio_basis(double jd_tdb, double ra_cio, enum novas_cio_location_type ref_sys, enum novas_accuracy accuracy, double *x, double *y,
double *z) {
- static enum novas_cio_location_type ref_sys_last = -1;
- static double t_last = 0.0, ra_last;
- static double xx[3], yy[3], zz[3];
-
-
+ static enum novas_accuracy acc_last = -1;
+ static double t_last = 0.0;
+ static double zz[3];
if(!x || !y || !z) {
errno = EINVAL;
@@ -4666,18 +4646,11 @@ short cio_basis(double jd_tdb, double ra_cio, enum novas_cio_location_type ref_s
}
// Compute unit vector z toward celestial pole.
- if(ra_cio != ra_last || !time_equals(jd_tdb, t_last) || (ref_sys != ref_sys_last)) {
+ if(!zz[2] || !time_equals(jd_tdb, t_last) || (accuracy != acc_last)) {
const double z0[3] = { 0.0, 0.0, 1.0 };
tod_to_gcrs(jd_tdb, accuracy, z0, zz);
t_last = jd_tdb;
- ra_last = ra_cio;
- ref_sys_last = ref_sys;
- }
- else {
- memcpy(x, xx, sizeof(xx));
- memcpy(y, yy, sizeof(yy));
- memcpy(z, zz, sizeof(zz));
- return 0;
+ acc_last = accuracy;
}
// Now compute unit vectors x and y. Method used depends on the
@@ -4685,35 +4658,46 @@ short cio_basis(double jd_tdb, double ra_cio, enum novas_cio_location_type ref_s
ra_cio *= HOURANGLE;
switch(ref_sys) {
- double sinra, cosra, xmag;
- case CIO_VS_GCRS:
+ case CIO_VS_GCRS: {
// Compute vector x toward CIO in GCRS.
- sinra = sin(ra_cio);
- cosra = cos(ra_cio);
- xx[0] = zz[2] * cosra;
- xx[1] = zz[2] * sinra;
- xx[2] = -zz[0] * cosra - zz[1] * sinra;
+ const double sinra = sin(ra_cio);
+ const double cosra = cos(ra_cio);
+ double l;
+
+ x[0] = zz[2] * cosra;
+ x[1] = zz[2] * sinra;
+ x[2] = -zz[0] * cosra - zz[1] * sinra;
// Normalize vector x.
- xmag = vlen(xx);
- xx[0] /= xmag;
- xx[1] /= xmag;
- xx[2] /= xmag;
+ l = vlen(x);
+ x[0] /= l;
+ x[1] /= l;
+ x[2] /= l;
+
break;
+ }
- case CIO_VS_EQUINOX:
+ case CIO_VS_EQUINOX: {
+ static double last_ra = 0.0;
+ static double xx[3] = { 0.0, 0.0, 1.0 };
- // Construct unit vector toward CIO in equator-and-equinox-of-date
- // system.
- xx[0] = cos(ra_cio);
- xx[1] = sin(ra_cio);
- xx[2] = 0.0;
+ if(xx[2] || fabs(ra_cio - last_ra) > 1e-12) {
+ // Construct unit vector toward CIO in equator-and-equinox-of-date
+ // system.
+ xx[0] = cos(ra_cio);
+ xx[1] = sin(ra_cio);
+ xx[2] = 0.0;
+
+ // Rotate the vector into the GCRS to form unit vector x.
+ tod_to_gcrs(jd_tdb, accuracy, xx, xx);
+ }
+
+ memcpy(x, xx, sizeof(xx));
- // Rotate the vector into the GCRS to form unit vector x.
- tod_to_gcrs(jd_tdb, accuracy, xx, xx);
break;
+ }
default:
// Invalid value of 'ref_sys'.
@@ -4724,13 +4708,11 @@ short cio_basis(double jd_tdb, double ra_cio, enum novas_cio_location_type ref_s
}
// Compute unit vector y orthogonal to x and z (y = z cross x).
- yy[0] = zz[1] * xx[2] - zz[2] * xx[1];
- yy[1] = zz[2] * xx[0] - zz[0] * xx[2];
- yy[2] = zz[0] * xx[1] - zz[1] * xx[0];
+ y[0] = zz[1] * x[2] - zz[2] * x[1];
+ y[1] = zz[2] * x[0] - zz[0] * x[2];
+ y[2] = zz[0] * x[1] - zz[1] * x[0];
- // Load the x, y, and z arrays.
- memcpy(x, xx, sizeof(xx));
- memcpy(y, yy, sizeof(yy));
+ // Load the z array.
memcpy(z, zz, sizeof(zz));
return 0;
diff --git a/src/nutation.c b/src/nutation.c
index 592c0d8d..d0e06bd5 100644
--- a/src/nutation.c
+++ b/src/nutation.c
@@ -54,7 +54,8 @@ void iau2000a(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
// Luni-Solar argument multipliers:
// L L' F D Om
- static const char nals_t[678][5] = { { 0, 0, 0, 0, 1 }, //
+ static const char nals_t[678][5] = { //
+ { 0, 0, 0, 0, 1 }, //
{ 0, 0, 2, -2, 2 }, //
{ 0, 0, 2, 0, 2 }, //
{ 0, 0, 0, 0, 2 }, //
@@ -1419,7 +1420,8 @@ void iau2000a(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
//Planetary argument multipliers:
// L L' F D Om Me Ve E Ma Ju Sa Ur Ne pre
- static const char napl_t[687][14] = { { 0, 0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, 0 }, //
+ static const char napl_t[687][14] = { //
+ { 0, 0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, 0 }, //
{ 0, 0, 0, 0, 0, 0, 0, -8, 16, -4, -5, 0, 0, 2 }, //
{ 0, 0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, 2 }, //
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 2, 2 }, //
@@ -2112,7 +2114,8 @@ void iau2000a(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
// Each row of coefficients in 'cpl_t' belongs with the corresponding
// row of fundamental-argument multipliers in 'napl_t'.
- static const short cpl_t[687][4] = { { 1440, 0, 0, 0 }, //
+ static const short cpl_t[687][4] = {
+ { 1440, 0, 0, 0 }, //
{ 56, -117, -42, -40 }, //
{ 125, -43, 0, -54 }, //
{ 0, 5, 0, 0 }, //
@@ -2800,16 +2803,14 @@ void iau2000a(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
{ 3, 0, 0, -1 }, //
{ 3, 0, 0, -1 } };
- novas_fundamental_args a;
- double dp, de, factor, dpsils, depsls, dpsipl, depspl;
-
- int i;
+ // Convert from 0.1 microarcsec units to radians.
+ const double factor = 1.0e-7 * ASEC2RAD;
// Interval between fundamental epoch J2000.0 and given date.
const double t = ((jd_tt_high - T0) + jd_tt_low) / 36525.0;
// Planetary longitudes, Mercury through Neptune, wrt mean dynamical
- // ecliptic and equinox of J2000, with high order terms omitted
+ // ecliptic and equinox of J2000
// (Simon et al. 1994, 5.8.1-5.8.8).
const double alme = planet_lon(t, NOVAS_MERCURY);
const double alve = planet_lon(t, NOVAS_VENUS);
@@ -2820,20 +2821,18 @@ void iau2000a(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
const double alur = planet_lon(t, NOVAS_URANUS);
const double alne = planet_lon(t, NOVAS_NEPTUNE);
-
// General precession in longitude (Simon et al. 1994), equivalent
// to 5028.8200 arcsec/cy at J2000.
const double apa = accum_prec(t);
+ novas_fundamental_args a;
+ double dpsils = 0.0, depsls = 0.0, dpsipl = 0.0, depspl = 0.0;
+ int i;
+
// Compute fundamental arguments from Simon et al. (1994), in radians.
fund_args(t, &a);
// ** Luni-solar nutation. **
-
- // Initialize the nutation values.
- dp = 0.0;
- de = 0.0;
-
// Summation of luni-solar nutation series (in reverse order).
for(i = 677; i >= 0; i--) {
const char *n = &nals_t[i][0];
@@ -2852,31 +2851,20 @@ void iau2000a(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
carg = cos(arg);
// Term.
- dp += (c[0] + c[1] * t) * sarg + c[2] * carg;
- de += (c[3] + c[4] * t) * carg + c[5] * sarg;
+ dpsils += (c[0] + c[1] * t) * sarg + c[2] * carg;
+ depsls += (c[3] + c[4] * t) * carg + c[5] * sarg;
}
- // Convert from 0.1 microarcsec units to radians.
- factor = 1.0e-7 * ASEC2RAD;
- dpsils = dp * factor;
- depsls = de * factor;
-
-
// ** Planetary nutation. **
- // Initialize the nutation values.
- dp = 0.0;
- de = 0.0;
-
// Summation of planetary nutation series (in reverse order).
- for(i = 686; --i >= 0; ) {
+ for(i = 686; i >= 0; i--) {
const char *n = &napl_t[i][0];
const short *c = &cpl_t[i][0];
// Argument and functions.
double arg = 0.0, sarg, carg;
-
if(n[0]) arg += n[0] * a.l;
if(n[1]) arg += n[1] * a.l1;
if(n[2]) arg += n[2] * a.F;
@@ -2896,16 +2884,13 @@ void iau2000a(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
carg = cos(arg);
// Term.
- dp += c[0] * sarg + c[1] * carg;
- de += c[2] * sarg + c[3] * carg;
+ dpsipl += c[0] * sarg + c[1] * carg;
+ depspl += c[2] * sarg + c[3] * carg;
}
- dpsipl = dp * factor;
- depspl = de * factor;
-
// Total: Add planetary and luni-solar components.
- *dpsi = dpsipl + dpsils;
- *deps = depspl + depsls;
+ *dpsi = (dpsils + dpsipl) * factor;
+ *deps = (depsls + depspl) * factor;
return;
}
@@ -2948,7 +2933,8 @@ void iau2000b(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
// Luni-Solar argument multipliers:
// L L' F D Om
- static const char nals_t[77][5] = { { 0, 0, 0, 0, 1 }, //
+ static const char nals_t[77][5] = { //
+ { 0, 0, 0, 0, 1 }, //
{ 0, 0, 2, -2, 2 }, //
{ 0, 0, 2, 0, 2 }, //
{ 0, 0, 0, 0, 2 }, //
@@ -3031,7 +3017,8 @@ void iau2000b(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
// Each row of coefficients in 'cls_t' belongs with the corresponding
// row of fundamental-argument multipliers in 'nals_t'.
- static const int32_t cls_t[77][6] = { { -172064161, -174666, 33386, 92052331, 9086, 15377 }, //
+ static const int32_t cls_t[77][6] = { //
+ { -172064161, -174666, 33386, 92052331, 9086, 15377 }, //
{ -13170906, -1675, -13696, 5730336, -3015, -4587 }, //
{ -2276413, -234, 2796, 978459, -485, 1374 }, //
{ 2074554, 207, -698, -897492, 470, -291 }, //
@@ -3109,21 +3096,21 @@ void iau2000b(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
{ 1405, 0, 4, -610, 0, 2 }, //
{ 1290, 0, 0, -556, 0, 0 } };
- const double dpplan = -0.000135;
- const double deplan = 0.000388;
-
- double dp, de, factor, dpsils, depsls, dpsipl, depspl;
- novas_fundamental_args a;
+ const double dpplan = -0.000135 * ASEC2RAD;
+ const double deplan = 0.000388 * ASEC2RAD;
// Interval between fundamental epoch J2000.0 and given date.
const double t = ((jd_tt_high - T0) + jd_tt_low) / 36525.0;
+ // Convert from 0.1 microarcsec units to radians.
+ const double factor = 1.0e-7 * ASEC2RAD;
+
+ double dpsils = 0.0, depsls = 0.0;
+ novas_fundamental_args a;
+
// ** Luni-solar nutation. **
fund_args(t, &a);
- // Initialize the nutation values.
- dp = 0.0;
- de = 0.0;
// Summation of luni-solar nutation series (in reverse order)
for(i = 76; --i >= 0; ) {
@@ -3144,24 +3131,13 @@ void iau2000b(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
carg = cos(arg);
// Term.
- dp += (c[0] + c[1] * t) * sarg + c[2] * carg;
- de += (c[3] + c[4] * t) * carg + c[5] * sarg;
+ dpsils += (c[0] + c[1] * t) * sarg + c[2] * carg;
+ depsls += (c[3] + c[4] * t) * carg + c[5] * sarg;
}
- // Convert from 0.1 microarcsec units to radians.
- factor = 1.0e-7 * ASEC2RAD;
- dpsils = dp * factor;
- depsls = de * factor;
-
- // ** Planetary nutation. **
-
- // Fixed terms to allow for long-period nutation, in radians.
- dpsipl = dpplan * ASEC2RAD;
- depspl = deplan * ASEC2RAD;
-
// Total: Add planetary and luni-solar components.
- *dpsi = dpsipl + dpsils;
- *deps = depspl + depsls;
+ *dpsi = dpsils * factor + dpplan;
+ *deps = depsls * factor + deplan;
return;
}
@@ -3208,7 +3184,8 @@ void nu2000k(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
// Luni-Solar argument multipliers:
// L L' F D Om
- static const char nals_t[323][5] = { { 0, 0, 0, 0, 1 }, //
+ static const char nals_t[323][5] = { //
+ { 0, 0, 0, 0, 1 }, //
{ 0, 0, 2, -2, 2 }, //
{ 0, 0, 2, 0, 2 }, //
{ 0, 0, 0, 0, 2 }, //
@@ -3537,7 +3514,8 @@ void nu2000k(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
// Each row of coefficients in 'cls_t' belongs with the corresponding
// row of fundamental-argument multipliers in 'nals_t'.
- static const int32_t cls_t[323][6] = { { -172064161, -174666, 33386, 92052331, 9086, 15377 }, //
+ static const int32_t cls_t[323][6] = { //
+ { -172064161, -174666, 33386, 92052331, 9086, 15377 }, //
{ -13170906, -1675, -13696, 5730336, -3015, -4587 }, //
{ -2276413, -234, 2796, 978459, -485, 1374 }, //
{ 2074554, 207, -698, -897492, 470, -291 }, //
@@ -3863,7 +3841,8 @@ void nu2000k(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
// Planetary argument multipliers:
// L L' F D Om Me Ve E Ma Ju Sa Ur Ne pre
- static const char napl_t[165][14] = { { 0, 0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, 0 }, //
+ static const char napl_t[165][14] = { //
+ { 0, 0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, 0 }, //
{ 0, 0, 0, 0, 0, 0, 0, -8, 16, -4, -5, 0, 0, 2 }, //
{ 0, 0, 0, 0, 0, 0, 0, 8, -16, 4, 5, 0, 0, 2 }, //
{ 0, 0, 1, -1, 1, 0, 0, 3, -8, 3, 0, 0, 0, 0 }, //
@@ -4034,7 +4013,8 @@ void nu2000k(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
// Each row of coefficients in 'cpl_t' belongs with the corresponding
// row of fundamental-argument multipliers in 'napl_t'.
- static const short cpl_t[165][4] = { { 1440, 0, 0, 0 }, //
+ static const short cpl_t[165][4] = { //
+ { 1440, 0, 0, 0 }, //
{ 56, -117, -42, -40 }, //
{ 125, -43, 0, -54 }, //
{ -114, 0, 0, 61 }, //
@@ -4200,15 +4180,13 @@ void nu2000k(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
{ 126, -63, -27, -55 }, //
{ -126, -63, -27, 55 } };
- novas_fundamental_args a;
-
- double dp, de, arg, sarg, carg, factor, dpsils, depsls, dpsipl, depspl;
-
- int i;
// Interval between fundamental epoch J2000.0 and given date.
const double t = ((jd_tt_high - T0) + jd_tt_low) / 36525.0;
+ // Convert from 0.1 microarcsec units to radians.
+ const double factor = 1.0e-7 * ASEC2RAD;
+
// Planetary longitudes, Mercury through Neptune, wrt mean dynamical
// ecliptic and equinox of J2000, with high order terms omitted
// (Simon et al. 1994, 5.8.1-5.8.8).
@@ -4226,15 +4204,17 @@ void nu2000k(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
// to 5028.8200 arcsec/cy at J2000.
const double apa = accum_prec(t);
+ novas_fundamental_args a;
+
+ double arg, sarg, carg, dpsils = 0.0, depsls = 0.0, dpsipl = 0.0, depspl = 0.0;
+
+ int i;
+
+
// Compute fundamental arguments from Simon et al. (1994), in radians.
fund_args(t, &a);
// ** Luni-solar nutation. **
-
- // Initialize the nutation values.
- dp = 0.0;
- de = 0.0;
-
// Summation of luni-solar nutation series (in reverse order).
for(i = 322; i >= 0; i--) {
const char *n = &nals_t[i][0];
@@ -4252,21 +4232,13 @@ void nu2000k(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
carg = cos(arg);
// Term.
- dp += (c[0] + c[1] * t) * sarg + c[2] * carg;
- de += (c[3] + c[4] * t) * carg + c[5] * sarg;
+ dpsils += (c[0] + c[1] * t) * sarg + c[2] * carg;
+ depsls += (c[3] + c[4] * t) * carg + c[5] * sarg;
}
- // Convert from 0.1 microarcsec units to radians.
- factor = 1.0e-7 * ASEC2RAD;
- dpsils = dp * factor;
- depsls = de * factor;
// ** Planetary nutation. **
- // Initialize the nutation values.
- dp = 0.0;
- de = 0.0;
-
// Summation of planetary nutation series (in reverse order).
for(i = 164; i >= 0; i--) {
const char *n = &napl_t[i][0];
@@ -4293,16 +4265,14 @@ void nu2000k(double jd_tt_high, double jd_tt_low, double *dpsi, double *deps) {
carg = cos(arg);
// Term.
- dp += c[0] * sarg + c[1] * carg;
- de += c[2] * sarg + c[3] * carg;
+ dpsipl += c[0] * sarg + c[1] * carg;
+ depspl += c[2] * sarg + c[3] * carg;
}
- dpsipl = dp * factor;
- depspl = de * factor;
// Total: Add planetary and luni-solar components.
- *dpsi = dpsipl + dpsils;
- *deps = depspl + depsls;
+ *dpsi = (dpsipl + dpsils) * factor;
+ *deps = (depspl + depsls) * factor;
return;
}
diff --git a/src/solsys3.c b/src/solsys3.c
index 17f69c9d..c7caf54c 100644
--- a/src/solsys3.c
+++ b/src/solsys3.c
@@ -117,9 +117,7 @@ short earth_sun_calc(double jd_tdb, enum novas_planet body, enum novas_origin or
// 'obl' is the obliquity of ecliptic at epoch J2000.0 in degrees.
static const double obl = 23.4392794444;
-
- static double tlast;
- static double tmass, a[3][4], b[3][4], vbary[3];
+ static double tmass, a[3][4], b[3][4];
// Initialize constants.
// Initial value of 'tmass' is mass of Sun plus four inner planets.
@@ -129,14 +127,14 @@ short earth_sun_calc(double jd_tdb, enum novas_planet body, enum novas_origin or
return -1;
}
- if(!tlast) {
+ if(!tmass) {
const double oblr = obl * TWOPI / 360.0;
const double se = sin(oblr);
const double ce = cos(oblr);
tmass = 1.0 + 5.977e-6;
- for(i = 0; i < 4; i++) {
+ for(i = 4; --i >= 0; ) {
// Compute sine and cosine of orbital angles.
const double si = sin(pj[i]);
const double ci = cos(pj[i]);
@@ -164,8 +162,6 @@ short earth_sun_calc(double jd_tdb, enum novas_planet body, enum novas_origin or
tmass += 1.0 / pm[i];
}
-
- tlast = -1e100;
}
// Check if input Julian date is within range (within 3 centuries of J2000).
@@ -178,13 +174,13 @@ short earth_sun_calc(double jd_tdb, enum novas_planet body, enum novas_origin or
}
else if((body == 2) || (body == NOVAS_EARTH)) { /* Earth */
double p[3][3];
- for(i = 0; i < 3; i++) {
+ for(i = 3; --i >= 0; ) {
const double qjd = jd_tdb + (double) (i - 1) * 0.1;
- double ras, decs, diss, pos1[3];
+ double ras, decs, diss;
sun_eph(qjd, &ras, &decs, &diss);
- radec2vector(ras, decs, diss, pos1);
- precession(qjd, pos1, T0, position);
+ radec2vector(ras, decs, diss, position);
+ precession(qjd, position, T0, position);
p[i][0] = -position[0];
p[i][1] = -position[1];
p[i][2] = -position[2];
@@ -200,16 +196,17 @@ short earth_sun_calc(double jd_tdb, enum novas_planet body, enum novas_origin or
// Solar system barycenter coordinates are computed from Keplerian
// approximations of the coordinates of the four largest planets.
if(origin == NOVAS_BARYCENTER) {
- static double pbary[3];
+ static double tlast;
+ static double pbary[3], vbary[3];
if(fabs(jd_tdb - tlast) >= 1.0e-06) {
-
- for(i = 0; i < 3; i++)
- pbary[i] = vbary[i] = 0.0;
+ memset(pbary, 0, sizeof(pbary));
+ memset(vbary, 0, sizeof(vbary));
// The following loop cycles once for each of the four planets.
- for(i = 0; i < 4; i++) {
- double pplan[3], vplan[3], f;
+ for(i = 4; --i >= 0; ) {
+ // Compute mass factor and add in to total displacement.
+ const double f = 1.0 / (pm[i] * tmass);
// Compute mean longitude, mean anomaly, and eccentric anomaly.
const double e = pe[i];
@@ -221,24 +218,16 @@ short earth_sun_calc(double jd_tdb, enum novas_planet body, enum novas_origin or
// Compute velocity factor.
const double anr = pn[i] / (1.0 - e * cosu);
+ int k;
- // Compute planet's position and velocity wrt eq & eq J2000.
- pplan[0] = a[0][i] * (cosu - e) + b[0][i] * sinu;
- pplan[1] = a[1][i] * (cosu - e) + b[1][i] * sinu;
- pplan[2] = a[2][i] * (cosu - e) + b[2][i] * sinu;
- vplan[0] = anr * (-a[0][i] * sinu + b[0][i] * cosu);
- vplan[1] = anr * (-a[1][i] * sinu + b[1][i] * cosu);
- vplan[2] = anr * (-a[2][i] * sinu + b[2][i] * cosu);
+ for (k = 3; --k >= 0; ) {
+ // Compute planet's position and velocity wrt eq & eq J2000.
+ const double p = a[k][i] * (cosu - e) + b[k][i] * sinu;
+ const double v = anr * (-a[k][i] * sinu + b[k][i] * cosu);
- // Compute mass factor and add in to total displacement.
- f = 1.0 / (pm[i] * tmass);
-
- pbary[0] += pplan[0] * f;
- pbary[1] += pplan[1] * f;
- pbary[2] += pplan[2] * f;
- vbary[0] += vplan[0] * f;
- vbary[1] += vplan[1] * f;
- vbary[2] += vplan[2] * f;
+ pbary[k] += f * p;
+ vbary[k] += f * v;
+ }
}
tlast = jd_tdb;
@@ -332,71 +321,71 @@ short earth_sun_calc_hp(const double jd_tdb[2], enum novas_planet body, enum nov
* @sa earth_sun_calc()
*/
void sun_eph(double jd, double *ra, double *dec, double *dis) {
- short i;
+ struct sun_con {
+ int l;
+ int r;
+ float alpha;
+ double nu;
+ };
double sum_lon = 0.0;
double sum_r = 0.0;
const double factor = 1.0e-07;
double u, lon, t, emean, sin_lon;
- struct sun_con {
- float l;
- float r;
- float alpha;
- float nu;
- };
+ int i;
static const struct sun_con con[50] = {
- { 403406.0, 0.0, 4.721964, 1.621043 }, //
- { 195207.0, -97597.0, 5.937458, 62830.348067 }, //
- { 119433.0, -59715.0, 1.115589, 62830.821524 }, //
- { 112392.0, -56188.0, 5.781616, 62829.634302 }, //
- { 3891.0, -1556.0, 5.5474, 125660.5691 }, //
- { 2819.0, -1126.0, 1.5120, 125660.9845 }, //
- { 1721.0, -861.0, 4.1897, 62832.4766 }, //
- { 0.0, 941.0, 1.163, 0.813 }, //
- { 660.0, -264.0, 5.415, 125659.310 }, //
- { 350.0, -163.0, 4.315, 57533.850 }, //
- { 334.0, 0.0, 4.553, -33.931 }, //
- { 314.0, 309.0, 5.198, 777137.715 }, //
- { 268.0, -158.0, 5.989, 78604.191 }, //
- { 242.0, 0.0, 2.911, 5.412 }, //
- { 234.0, -54.0, 1.423, 39302.098 }, //
- { 158.0, 0.0, 0.061, -34.861 }, //
- { 132.0, -93.0, 2.317, 115067.698 }, //
- { 129.0, -20.0, 3.193, 15774.337 }, //
- { 114.0, 0.0, 2.828, 5296.670 }, //
- { 99.0, -47.0, 0.52, 58849.27 }, //
- { 93.0, 0.0, 4.65, 5296.11 }, //
- { 86.0, 0.0, 4.35, -3980.70 }, //
- { 78.0, -33.0, 2.75, 52237.69 }, //
- { 72.0, -32.0, 4.50, 55076.47 }, //
- { 68.0, 0.0, 3.23, 261.08 }, //
- { 64.0, -10.0, 1.22, 15773.85 }, //
- { 46.0, -16.0, 0.14, 188491.03 }, //
- { 38.0, 0.0, 3.44, -7756.55 }, //
- { 37.0, 0.0, 4.37, 264.89 }, //
- { 32.0, -24.0, 1.14, 117906.27 }, //
- { 29.0, -13.0, 2.84, 55075.75 }, //
- { 28.0, 0.0, 5.96, -7961.39 }, //
- { 27.0, -9.0, 5.09, 188489.81 },
- { 27.0, 0.0, 1.72, 2132.19 }, //
- { 25.0, -17.0, 2.56, 109771.03 }, //
- { 24.0, -11.0, 1.92, 54868.56 }, //
- { 21.0, 0.0, 0.09, 25443.93 }, //
- { 21.0, 31.0, 5.98, -55731.43 }, //
- { 20.0, -10.0, 4.03, 60697.74 }, //
- { 18.0, 0.0, 4.27, 2132.79 }, //
- { 17.0, -12.0, 0.79, 109771.63 }, //
- { 14.0, 0.0, 4.24, -7752.82 }, //
- { 13.0, -5.0, 2.01, 188491.91 }, //
- { 13.0, 0.0, 2.65, 207.81 }, //
- { 13.0, 0.0, 4.98, 29424.63 }, //
- { 12.0, 0.0, 0.93, -7.99 }, //
- { 10.0, 0.0, 2.21, 46941.14 }, //
- { 10.0, 0.0, 3.59, -68.29 }, //
- { 10.0, 0.0, 1.50, 21463.25 }, //
- { 10.0, -9.0, 2.55, 157208.40 } };
+ { 403406, 0, 4.721964, 1.621043 }, //
+ { 195207, -97597, 5.937458, 62830.348067 }, //
+ { 119433, -59715, 1.115589, 62830.821524 }, //
+ { 112392, -56188, 5.781616, 62829.634302 }, //
+ { 3891, -1556, 5.5474, 125660.5691 }, //
+ { 2819, -1126, 1.5120, 125660.9845 }, //
+ { 1721, -861, 4.1897, 62832.4766 }, //
+ { 0, 941, 1.163, 0.813 }, //
+ { 660, -264, 5.415, 125659.310 }, //
+ { 350, -163, 4.315, 57533.850 }, //
+ { 334, 0, 4.553, -33.931 }, //
+ { 314, 309, 5.198, 777137.715 }, //
+ { 268, -158, 5.989, 78604.191 }, //
+ { 242, 0, 2.911, 5.412 }, //
+ { 234, -54, 1.423, 39302.098 }, //
+ { 158, 0, 0.061, -34.861 }, //
+ { 132, -93, 2.317, 115067.698 }, //
+ { 129, -20, 3.193, 15774.337 }, //
+ { 114, 0, 2.828, 5296.670 }, //
+ { 99, -47, 0.52, 58849.27 }, //
+ { 93, 0, 4.65, 5296.11 }, //
+ { 86, 0, 4.35, -3980.70 }, //
+ { 78, -33, 2.75, 52237.69 }, //
+ { 72, -32, 4.50, 55076.47 }, //
+ { 68, 0, 3.23, 261.08 }, //
+ { 64, -10, 1.22, 15773.85 }, //
+ { 46, -16, 0.14, 188491.03 }, //
+ { 38, 0, 3.44, -7756.55 }, //
+ { 37, 0, 4.37, 264.89 }, //
+ { 32, -24, 1.14, 117906.27 }, //
+ { 29, -13, 2.84, 55075.75 }, //
+ { 28, 0, 5.96, -7961.39 }, //
+ { 27, -9, 5.09, 188489.81 },
+ { 27, 0, 1.72, 2132.19 }, //
+ { 25, -17, 2.56, 109771.03 }, //
+ { 24, -11, 1.92, 54868.56 }, //
+ { 21, 0, 0.09, 25443.93 }, //
+ { 21, 31, 5.98, -55731.43 }, //
+ { 20, -10, 4.03, 60697.74 }, //
+ { 18, 0, 4.27, 2132.79 }, //
+ { 17, -12, 0.79, 109771.63 }, //
+ { 14, 0, 4.24, -7752.82 }, //
+ { 13, -5, 2.01, 188491.91 }, //
+ { 13, 0, 2.65, 207.81 }, //
+ { 13, 0, 4.98, 29424.63 }, //
+ { 12, 0, 0.93, -7.99 }, //
+ { 10, 0, 2.21, 46941.14 }, //
+ { 10, 0, 3.59, -68.29 }, //
+ { 10, 0, 1.50, 21463.25 }, //
+ { 10, -9, 2.55, 157208.40 } };
// Define the time units 'u', measured in units of 10000 Julian years
// from J2000.0, and 't', measured in Julian centuries from J2000.0.
@@ -404,10 +393,11 @@ void sun_eph(double jd, double *ra, double *dec, double *dis) {
t = u * 100.0;
// Compute longitude and distance terms from the series.
- for(i = 0; i < 50; i++) {
- const double arg = con[i].alpha + con[i].nu * u;
- sum_lon += con[i].l * sin(arg);
- sum_r += con[i].r * cos(arg);
+ for(i = 50; --i >= 0; ) {
+ const struct sun_con *c = &con[i];
+ const double arg = c->alpha + c->nu * u;
+ sum_lon += c->l * sin(arg);
+ if(c->r) sum_r += c->r * cos(arg);
}
// Compute longitude, latitude, and distance referred to mean equinox
diff --git a/test/novasc3.1/cel2ter.out b/test/novasc3.1/cel2ter.out
index c3063d05..6da4b827 100644
--- a/test/novasc3.1/cel2ter.out
+++ b/test/novasc3.1/cel2ter.out
@@ -1,35 +1,35 @@
--10000.0 22+20 S2 O0 A0: ERA GCRS -0.935838206 -0.093233508 0.339874044
+-10000.0 22+20 S2 O0 A0: ERA GCRS -0.935838202 -0.093233512 0.339874054
--10000.0 22+20 S2 O0 A0: GST GCRS -0.935838206 -0.093233508 0.339874044
+-10000.0 22+20 S2 O0 A0: GST GCRS -0.935838202 -0.093233512 0.339874054
--10000.0 16-20 S2 O0 A0: ERA GCRS -0.091982633 0.935627669 -0.340793280
+-10000.0 16-20 S2 O0 A0: ERA GCRS -0.091982636 0.935627673 -0.340793270
--10000.0 16-20 S2 O0 A0: GST GCRS -0.091982633 0.935627669 -0.340793280
+-10000.0 16-20 S2 O0 A0: GST GCRS -0.091982636 0.935627673 -0.340793270
- 0.0 22+20 S2 O0 A0: ERA GCRS 0.609782525 0.714977972 0.342011362
+ 0.0 22+20 S2 O0 A0: ERA GCRS 0.609782519 0.714977972 0.342011372
- 0.0 22+20 S2 O0 A0: GST GCRS 0.609782525 0.714977972 0.342011362
+ 0.0 22+20 S2 O0 A0: GST GCRS 0.609782519 0.714977972 0.342011372
- 0.0 16-20 S2 O0 A0: ERA GCRS 0.714974910 -0.609801067 -0.341984702
+ 0.0 16-20 S2 O0 A0: ERA GCRS 0.714974915 -0.609801066 -0.341984692
- 0.0 16-20 S2 O0 A0: GST GCRS 0.714974910 -0.609801067 -0.341984702
+ 0.0 16-20 S2 O0 A0: GST GCRS 0.714974915 -0.609801066 -0.341984692
- 10000.0 22+20 S2 O0 A0: ERA GCRS 0.055487009 -0.937259010 0.344189977
+ 10000.0 22+20 S2 O0 A0: ERA GCRS 0.055487012 -0.937259006 0.344189987
- 10000.0 22+20 S2 O0 A0: GST GCRS 0.055487009 -0.937259010 0.344189977
+ 10000.0 22+20 S2 O0 A0: GST GCRS 0.055487012 -0.937259006 0.344189987
- 10000.0 16-20 S2 O0 A0: ERA GCRS -0.937510303 -0.056762395 -0.343296463
+ 10000.0 16-20 S2 O0 A0: ERA GCRS -0.937510307 -0.056762399 -0.343296453
- 10000.0 16-20 S2 O0 A0: GST GCRS -0.937510303 -0.056762395 -0.343296463
+ 10000.0 16-20 S2 O0 A0: GST GCRS -0.937510307 -0.056762399 -0.343296453
- 10000.0 22+20 S2 O0 A0: ERA GCRS 0.055487009 -0.937259010 0.344189977
+ 10000.0 22+20 S2 O0 A0: ERA GCRS 0.055487012 -0.937259006 0.344189987
- 10000.0 22+20 S2 O0 A0: GST GCRS 0.055487009 -0.937259010 0.344189977
+ 10000.0 22+20 S2 O0 A0: GST GCRS 0.055487012 -0.937259006 0.344189987
- 10000.0 16-20 S2 O0 A0: ERA GCRS -0.937510303 -0.056762395 -0.343296463
+ 10000.0 16-20 S2 O0 A0: ERA GCRS -0.937510307 -0.056762399 -0.343296453
- 10000.0 16-20 S2 O0 A0: GST GCRS -0.937510303 -0.056762395 -0.343296463
+ 10000.0 16-20 S2 O0 A0: GST GCRS -0.937510307 -0.056762399 -0.343296453
-10000.0 22+20 S2 O0 A1: ERA GCRS -0.935838 -0.093234 0.339874
diff --git a/test/novasc3.1/cel_pole.out b/test/novasc3.1/cel_pole.out
index 28b4c703..6035421d 100644
--- a/test/novasc3.1/cel_pole.out
+++ b/test/novasc3.1/cel_pole.out
@@ -1,16 +1,16 @@
--10000.0 A0: XY 16.415313 4.048559 16.415313 4.048559
-10000.0 A0: PE 16.415313 4.048559 16.413313 4.051559
- 0.0 A0: XY -13.933996 -5.766398 -13.933996 -5.766398
+-10000.0 A0: XY 16.415313 4.048559 16.410332 4.051572
0.0 A0: PE -13.931996 -5.769398 -13.933996 -5.766398
- 10000.0 A0: XY 10.600901 6.298105 10.600901 6.298105
+ 0.0 A0: XY -13.931996 -5.769398 -13.937024 -5.766398
10000.0 A0: PE 10.602901 6.295105 10.600901 6.298105
- 10000.0 A0: XY 10.600901 6.298105 10.600901 6.298105
+ 10000.0 A0: XY 10.602901 6.295105 10.597826 6.298093
10000.0 A0: PE 10.602901 6.295105 10.600901 6.298105
--10000.0 A1: XY 16.413324 4.051553 16.413324 4.051553
+ 10000.0 A0: XY 10.602901 6.295105 10.597826 6.298093
-10000.0 A1: PE 16.415324 4.048553 16.413324 4.051553
- 0.0 A1: XY -13.933977 -5.766410 -13.933977 -5.766410
+-10000.0 A1: XY 16.415324 4.048553 16.410343 4.051566
0.0 A1: PE -13.931977 -5.769410 -13.933977 -5.766410
- 10000.0 A1: XY 10.600913 6.298092 10.600913 6.298092
+ 0.0 A1: XY -13.931977 -5.769410 -13.937004 -5.766410
10000.0 A1: PE 10.602913 6.295092 10.600913 6.298092
- 10000.0 A1: XY 10.600913 6.298092 10.600913 6.298092
+ 10000.0 A1: XY 10.602913 6.295092 10.597838 6.298080
10000.0 A1: PE 10.602913 6.295092 10.600913 6.298092
+ 10000.0 A1: XY 10.602913 6.295092 10.597838 6.298080
diff --git a/test/novasc3.1/cio_basis.out b/test/novasc3.1/cio_basis.out
index f13a89a7..1ad448b7 100644
--- a/test/novasc3.1/cio_basis.out
+++ b/test/novasc3.1/cio_basis.out
@@ -1,8 +1,8 @@
--10000.0 A0: 0.999996542 -0.000073008 0.002628939 0.000073039 0.999999997 -0.000011501 -0.002628938 0.000011693 0.999996544
- 0.0 A0: 0.999999998 0.000061979 0.000026952 -0.000061980 0.999999998 0.000027989 -0.000026950 -0.000027990 0.999999999
- 10000.0 A0: 0.999996406 -0.000047153 -0.002680630 0.000047093 0.999999999 -0.000022324 0.002680631 0.000022198 0.999996407
- 10000.0 A0: 0.999996406 -0.000047153 -0.002680630 0.000047093 0.999999999 -0.000022324 0.002680631 0.000022198 0.999996407
--10000.0 A1: 0.999997 -0.000073 0.002629 0.000073 1.000000 -0.000012 -0.002629 0.000012 0.999997
- 0.0 A1: 1.000000 0.000062 0.000027 -0.000062 1.000000 0.000028 -0.000027 -0.000028 1.000000
- 10000.0 A1: 0.999996 -0.000047 -0.002681 0.000047 1.000000 -0.000022 0.002681 0.000022 0.999996
- 10000.0 A1: 0.999996 -0.000047 -0.002681 0.000047 1.000000 -0.000022 0.002681 0.000022 0.999996
+-10000.0 A0: 2 0.999996544 -0.000000014 0.002628934 0.000000045 1.000000000 -0.000011678 -0.002628934 0.000011678 0.999996544
+ 0.0 A0: 2 1.000000000 0.000000010 0.000026946 -0.000000011 1.000000000 0.000028005 -0.000026946 -0.000028005 0.999999999
+ 10000.0 A0: 2 0.999996407 -0.000000007 -0.002680635 -0.000000052 1.000000000 -0.000022183 0.002680635 0.000022183 0.999996407
+ 10000.0 A0: 2 0.999996407 -0.000000007 -0.002680635 -0.000000052 1.000000000 -0.000022183 0.002680635 0.000022183 0.999996407
+-10000.0 A1: 2 0.999997 -0.000000 0.002629 0.000000 1.000000 -0.000012 -0.002629 0.000012 0.999997
+ 0.0 A1: 2 1.000000 0.000000 0.000027 -0.000000 1.000000 0.000028 -0.000027 -0.000028 1.000000
+ 10000.0 A1: 2 0.999996 -0.000000 -0.002681 -0.000000 1.000000 -0.000022 0.002681 0.000022 0.999996
+ 10000.0 A1: 2 0.999996 -0.000000 -0.002681 -0.000000 1.000000 -0.000022 0.002681 0.000022 0.999996
diff --git a/test/novasc3.1/cio_location.out b/test/novasc3.1/cio_location.out
index 6964f7b2..ad8a1d0b 100644
--- a/test/novasc3.1/cio_location.out
+++ b/test/novasc3.1/cio_location.out
@@ -1,8 +1,8 @@
--10000.0 A0: 2 -0.023381867 2 -0.023381867
- 0.0 A0: 2 0.000000269 2 0.000000269
- 10000.0 A0: 2 0.023386268 2 0.023386268
- 10000.0 A0: 2 0.023386268 2 0.023386268
--10000.0 A1: 2 -0.023381867 2 -0.023381867
- 0.0 A1: 2 0.000000269 2 0.000000269
- 10000.0 A1: 2 0.023386268 2 0.023386268
- 10000.0 A1: 2 0.023386268 2 0.023386268
+-10000.0 A0: 2 -0.023103017 2 -0.023103017
+ 0.0 A0: 2 -0.000236403 2 -0.000236403
+ 10000.0 A0: 2 0.023566385 2 0.023566385
+ 10000.0 A0: 2 0.023566385 2 0.023566385
+-10000.0 A1: 2 -0.023103017 2 -0.023103017
+ 0.0 A1: 2 -0.000236402 2 -0.000236402
+ 10000.0 A1: 2 0.023566385 2 0.023566385
+ 10000.0 A1: 2 0.023566385 2 0.023566385
diff --git a/test/novasc3.1/cio_ra.out b/test/novasc3.1/cio_ra.out
index 72346cdd..08da9b5b 100644
--- a/test/novasc3.1/cio_ra.out
+++ b/test/novasc3.1/cio_ra.out
@@ -1,8 +1,8 @@
--10000.0 A0: -1 -0.023103051
- 0.0 A0: -1 0.000000269
- 10000.0 A0: -1 0.023566351
- 10000.0 A0: -1 0.023566351
--10000.0 A1: -1 -0.023103051
- 0.0 A1: -1 0.000000269
- 10000.0 A1: -1 0.023566351
- 10000.0 A1: -1 0.023566351
+-10000.0 A0: -1 -0.023103017
+ 0.0 A0: -1 -0.000236403
+ 10000.0 A0: -1 0.023566385
+ 10000.0 A0: -1 0.023566385
+-10000.0 A1: -1 -0.023103017
+ 0.0 A1: -1 -0.000236402
+ 10000.0 A1: -1 0.023566385
+ 10000.0 A1: -1 0.023566385
diff --git a/test/novasc3.1/e_tilt.out b/test/novasc3.1/e_tilt.out
index cac3362e..9593548c 100644
--- a/test/novasc3.1/e_tilt.out
+++ b/test/novasc3.1/e_tilt.out
@@ -1,8 +1,8 @@
-10000.0 A0: 23.442841 23.443966 1.003860 16.415313 4.048559
- 0.0 A0: 23.439279 23.437678 -0.852139 -13.933996 -5.766398
- 10000.0 A0: 23.435717 23.437467 0.648300 10.600901 6.298105
- 10000.0 A0: 23.435717 23.437467 0.648300 10.600901 6.298105
--10000.0 A1: 23.442841 23.443967 1.003738 16.413324 4.051553
- 0.0 A1: 23.439279 23.437678 -0.852138 -13.933977 -5.766410
- 10000.0 A1: 23.435717 23.437467 0.648301 10.600913 6.298092
- 10000.0 A1: 23.435717 23.437467 0.648301 10.600913 6.298092
+ 0.0 A0: 23.439279 23.437677 -0.852017 -13.931996 -5.769398
+ 10000.0 A0: 23.435717 23.437466 0.648422 10.602901 6.295105
+ 10000.0 A0: 23.435717 23.437466 0.648422 10.602901 6.295105
+-10000.0 A1: 23.442841 23.443966 1.003860 16.415324 4.048553
+ 0.0 A1: 23.439279 23.437677 -0.852016 -13.931977 -5.769410
+ 10000.0 A1: 23.435717 23.437466 0.648423 10.602913 6.295092
+ 10000.0 A1: 23.435717 23.437466 0.648423 10.602913 6.295092
diff --git a/test/novasc3.1/ecl2equ_vec.out b/test/novasc3.1/ecl2equ_vec.out
index c74cf144..960fcc51 100644
--- a/test/novasc3.1/ecl2equ_vec.out
+++ b/test/novasc3.1/ecl2equ_vec.out
@@ -1,49 +1,49 @@
-10000.0 22+20 S2 O0 A0: mean 0.813797681 -0.567131224 0.126868075
--10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567133716 0.126856935
+-10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567133714 0.126856944
-10000.0 22+20 S2 O0 A0: gcrs 0.813797631 -0.567123398 0.126903380
--10000.0 16-20 S2 O0 A0: mean -0.469846310 -0.610597105 -0.637507349
+-10000.0 16-20 S2 O0 A0: mean -0.469846310 -0.610557471 -0.637545308
--10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610544948 -0.637557301
+-10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610544957 -0.637557292
-10000.0 16-20 S2 O0 A0: gcrs -0.469846302 -0.610597050 -0.637507407
0.0 22+20 S2 O0 A0: mean 0.813797681 -0.567123336 0.126903333
- 0.0 22+20 S2 O0 A0: true 0.813797681 -0.567119788 0.126919187
+ 0.0 22+20 S2 O0 A0: true 0.813797681 -0.567119786 0.126919196
0.0 22+20 S2 O0 A0: gcrs 0.813797631 -0.567123398 0.126903380
0.0 16-20 S2 O0 A0: mean -0.469846310 -0.610597105 -0.637507349
- 0.0 16-20 S2 O0 A0: true -0.469846310 -0.610614927 -0.637490279
+ 0.0 16-20 S2 O0 A0: true -0.469846310 -0.610614936 -0.637490270
0.0 16-20 S2 O0 A0: gcrs -0.469846302 -0.610597050 -0.637507407
10000.0 22+20 S2 O0 A0: mean 0.813797681 -0.567115445 0.126938590
- 10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567119321 0.126921273
+ 10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567119319 0.126921282
10000.0 22+20 S2 O0 A0: gcrs 0.813797631 -0.567123398 0.126903380
10000.0 16-20 S2 O0 A0: mean -0.469846310 -0.610636736 -0.637469388
- 10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610617272 -0.637488033
+ 10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610617281 -0.637488024
10000.0 16-20 S2 O0 A0: gcrs -0.469846302 -0.610597050 -0.637507407
10000.0 22+20 S2 O0 A0: mean 0.813797681 -0.567115445 0.126938590
- 10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567119321 0.126921273
+ 10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567119319 0.126921282
10000.0 22+20 S2 O0 A0: gcrs 0.813797631 -0.567123398 0.126903380
10000.0 16-20 S2 O0 A0: mean -0.469846310 -0.610636736 -0.637469388
- 10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610617272 -0.637488033
+ 10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610617281 -0.637488024
10000.0 16-20 S2 O0 A0: gcrs -0.469846302 -0.610597050 -0.637507407
diff --git a/test/novasc3.1/ephemeris.out b/test/novasc3.1/ephemeris.out
index 2bde7d20..a5e2aa8a 100644
--- a/test/novasc3.1/ephemeris.out
+++ b/test/novasc3.1/ephemeris.out
@@ -14,35 +14,35 @@
10000.0 A0: ERROR 13
10000.0 A0: ERROR 13
10000.0 A0: ERROR 13
--10000.0 A1: SUN 0 -0.000009 0.003773 0.001651 -0.000006 -0.000001 -0.000001
+-10000.0 A1: SUN 3 -0.000009 0.003773 0.001651 -0.009747 -0.002548 -0.000896
--10000.0 A1: SUN 1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+-10000.0 A1: SUN 3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
--10000.0 A1: EARTH 0 0.810058 -0.553762 -0.240106 0.010034 0.012571 0.005451
+-10000.0 A1: EARTH 3 0.810058 -0.553762 -0.240106 17.374036 21.766877 9.439017
--10000.0 A1: EARTH 1 0.810068 -0.557535 -0.241757 0.010040 0.012573 0.005452
+-10000.0 A1: EARTH 3 0.810068 -0.557535 -0.241757 17.383783 21.769425 9.439914
- 0.0 A1: SUN 0 -0.007138 -0.002644 -0.000921 0.000005 -0.000007 -0.000003
+ 0.0 A1: SUN 3 -0.007138 -0.002644 -0.000921 0.009234 -0.011779 -0.005287
- 0.0 A1: SUN 1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+ 0.0 A1: SUN 3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
- 0.0 A1: EARTH 0 -0.184271 0.884782 0.383824 -0.017202 -0.002904 -0.001259
+ 0.0 A1: EARTH 3 -0.184271 0.884782 0.383824 -29.784950 -5.028997 -2.180527
- 0.0 A1: EARTH 1 -0.177134 0.887425 0.384746 -0.017208 -0.002898 -0.001256
+ 0.0 A1: EARTH 3 -0.177134 0.887425 0.384746 -29.794184 -5.017218 -2.175240
- 10000.0 A1: SUN 0 -0.000010 -0.004018 -0.001669 0.000005 0.000004 0.000002
+ 10000.0 A1: SUN 3 -0.000010 -0.004018 -0.001669 0.007845 0.006630 0.002675
- 10000.0 A1: SUN 1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+ 10000.0 A1: SUN 3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
- 10000.0 A1: EARTH 0 -0.537235 -0.790493 -0.342586 0.014297 -0.008434 -0.003656
+ 10000.0 A1: EARTH 3 -0.537235 -0.790493 -0.342586 24.755316 -14.602263 -6.330115
- 10000.0 A1: EARTH 1 -0.537226 -0.786475 -0.340917 0.014293 -0.008437 -0.003657
+ 10000.0 A1: EARTH 3 -0.537226 -0.786475 -0.340917 24.747471 -14.608892 -6.332790
- 10000.0 A1: SUN 0 -0.000010 -0.004018 -0.001669 0.000005 0.000004 0.000002
+ 10000.0 A1: SUN 3 -0.000010 -0.004018 -0.001669 0.007845 0.006630 0.002675
- 10000.0 A1: SUN 1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+ 10000.0 A1: SUN 3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
- 10000.0 A1: EARTH 0 -0.537235 -0.790493 -0.342586 0.014297 -0.008434 -0.003656
+ 10000.0 A1: EARTH 3 -0.537235 -0.790493 -0.342586 24.755316 -14.602263 -6.330115
- 10000.0 A1: EARTH 1 -0.537226 -0.786475 -0.340917 0.014293 -0.008437 -0.003657
+ 10000.0 A1: EARTH 3 -0.537226 -0.786475 -0.340917 24.747471 -14.608892 -6.332790
diff --git a/test/novasc3.1/equ2ecl.out b/test/novasc3.1/equ2ecl.out
index d9d4c824..26133d2c 100644
--- a/test/novasc3.1/equ2ecl.out
+++ b/test/novasc3.1/equ2ecl.out
@@ -1,11 +1,11 @@
-10000.0 22+20 S2 O0 A0: mean 340.074726 30.046968
--10000.0 22+20 S2 O0 A0: true 340.075338 30.047352
+-10000.0 22+20 S2 O0 A0: true 340.075337 30.047351
-10000.0 22+20 S2 O0 A0: gcrs 340.072793 30.045749
--10000.0 16-20 S2 O0 A0: mean 241.974181 0.567960
+-10000.0 16-20 S2 O0 A0: mean 241.974164 0.571104
-10000.0 16-20 S2 O0 A0: true 241.974159 0.572097
@@ -13,13 +13,13 @@
0.0 22+20 S2 O0 A0: mean 340.072789 30.045754
- 0.0 22+20 S2 O0 A0: true 340.071918 30.045208
+ 0.0 22+20 S2 O0 A0: true 340.071917 30.045208
0.0 22+20 S2 O0 A0: gcrs 340.072793 30.045749
0.0 16-20 S2 O0 A0: mean 241.974181 0.567960
- 0.0 16-20 S2 O0 A0: true 241.974188 0.566546
+ 0.0 16-20 S2 O0 A0: true 241.974188 0.566545
0.0 16-20 S2 O0 A0: gcrs 241.974183 0.567964
@@ -31,7 +31,7 @@
10000.0 16-20 S2 O0 A0: mean 241.974197 0.564815
- 10000.0 16-20 S2 O0 A0: true 241.974189 0.566360
+ 10000.0 16-20 S2 O0 A0: true 241.974189 0.566359
10000.0 16-20 S2 O0 A0: gcrs 241.974183 0.567964
@@ -43,13 +43,13 @@
10000.0 16-20 S2 O0 A0: mean 241.974197 0.564815
- 10000.0 16-20 S2 O0 A0: true 241.974189 0.566360
+ 10000.0 16-20 S2 O0 A0: true 241.974189 0.566359
10000.0 16-20 S2 O0 A0: gcrs 241.974183 0.567964
-10000.0 22+20 S2 O0 A1: mean 340.074726 30.046968
--10000.0 22+20 S2 O0 A1: true 340.075338 30.047352
+-10000.0 22+20 S2 O0 A1: true 340.075337 30.047351
-10000.0 22+20 S2 O0 A1: gcrs 340.072793 30.045749
@@ -61,13 +61,13 @@
0.0 22+20 S2 O0 A1: mean 340.072789 30.045754
- 0.0 22+20 S2 O0 A1: true 340.071918 30.045208
+ 0.0 22+20 S2 O0 A1: true 340.071917 30.045208
0.0 22+20 S2 O0 A1: gcrs 340.072793 30.045749
0.0 16-20 S2 O0 A1: mean 241.974181 0.567960
- 0.0 16-20 S2 O0 A1: true 241.974188 0.566546
+ 0.0 16-20 S2 O0 A1: true 241.974188 0.566545
0.0 16-20 S2 O0 A1: gcrs 241.974183 0.567964
@@ -79,7 +79,7 @@
10000.0 16-20 S2 O0 A1: mean 241.974197 0.564815
- 10000.0 16-20 S2 O0 A1: true 241.974189 0.566360
+ 10000.0 16-20 S2 O0 A1: true 241.974189 0.566359
10000.0 16-20 S2 O0 A1: gcrs 241.974183 0.567964
@@ -91,6 +91,6 @@
10000.0 16-20 S2 O0 A1: mean 241.974197 0.564815
- 10000.0 16-20 S2 O0 A1: true 241.974189 0.566360
+ 10000.0 16-20 S2 O0 A1: true 241.974189 0.566359
10000.0 16-20 S2 O0 A1: gcrs 241.974183 0.567964
diff --git a/test/novasc3.1/equ2hor-refract.out b/test/novasc3.1/equ2hor-refract.out
index 7aa21d37..c9bf1fd0 100644
--- a/test/novasc3.1/equ2hor-refract.out
+++ b/test/novasc3.1/equ2hor-refract.out
@@ -1,32 +1,32 @@
--10000.0 22+20 S2 O1 A0: 135.019352 331.536702 22.000000 20.000000
+-10000.0 22+20 S2 O1 A0: 135.019352 331.536703 22.000000 20.000000
-10000.0 16-20 S2 O1 A0: 115.693174 103.225975 16.000000 -20.000000
- 0.0 22+20 S2 O1 A0: 60.200403 77.812648 21.998001 20.006084
+ 0.0 22+20 S2 O1 A0: 60.200402 77.812648 21.998001 20.006084
- 0.0 16-20 S2 O1 A0: 47.114316 213.442327 16.000697 -19.985117
+ 0.0 16-20 S2 O1 A0: 47.114316 213.442328 16.000697 -19.985117
- 10000.0 22+20 S2 O1 A0: 66.958900 283.939459 22.002662 20.009308
+ 10000.0 22+20 S2 O1 A0: 66.958900 283.939460 22.002662 20.009308
10000.0 16-20 S2 O1 A0: 163.034601 266.888368 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A0: 66.958900 283.939459 22.002662 20.009308
+ 10000.0 22+20 S2 O1 A0: 66.958900 283.939460 22.002662 20.009308
10000.0 16-20 S2 O1 A0: 163.034601 266.888368 16.000000 -20.000000
--10000.0 22+20 S2 O1 A1: 135.019352 331.536702 22.000000 20.000000
+-10000.0 22+20 S2 O1 A1: 135.019352 331.536703 22.000000 20.000000
-10000.0 16-20 S2 O1 A1: 115.693174 103.225975 16.000000 -20.000000
- 0.0 22+20 S2 O1 A1: 60.200403 77.812648 21.998001 20.006084
+ 0.0 22+20 S2 O1 A1: 60.200402 77.812648 21.998001 20.006084
- 0.0 16-20 S2 O1 A1: 47.114316 213.442327 16.000697 -19.985117
+ 0.0 16-20 S2 O1 A1: 47.114316 213.442328 16.000697 -19.985117
- 10000.0 22+20 S2 O1 A1: 66.958900 283.939459 22.002662 20.009308
+ 10000.0 22+20 S2 O1 A1: 66.958900 283.939460 22.002662 20.009308
10000.0 16-20 S2 O1 A1: 163.034601 266.888368 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A1: 66.958900 283.939459 22.002662 20.009308
+ 10000.0 22+20 S2 O1 A1: 66.958900 283.939460 22.002662 20.009308
10000.0 16-20 S2 O1 A1: 163.034601 266.888368 16.000000 -20.000000
diff --git a/test/novasc3.1/equ2hor.out b/test/novasc3.1/equ2hor.out
index 11bf1f89..88452252 100644
--- a/test/novasc3.1/equ2hor.out
+++ b/test/novasc3.1/equ2hor.out
@@ -1,32 +1,32 @@
--10000.0 22+20 S2 O1 A0: 135.019352 331.536702 22.000000 20.000000
+-10000.0 22+20 S2 O1 A0: 135.019352 331.536703 22.000000 20.000000
-10000.0 16-20 S2 O1 A0: 115.693174 103.225975 16.000000 -20.000000
- 0.0 22+20 S2 O1 A0: 60.229235 77.812648 22.000000 20.000000
+ 0.0 22+20 S2 O1 A0: 60.229234 77.812648 22.000000 20.000000
- 0.0 16-20 S2 O1 A0: 47.132151 213.442327 16.000000 -20.000000
+ 0.0 16-20 S2 O1 A0: 47.132152 213.442328 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A0: 66.997559 283.939459 22.000000 20.000000
+ 10000.0 22+20 S2 O1 A0: 66.997559 283.939460 22.000000 20.000000
10000.0 16-20 S2 O1 A0: 163.034601 266.888368 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A0: 66.997559 283.939459 22.000000 20.000000
+ 10000.0 22+20 S2 O1 A0: 66.997559 283.939460 22.000000 20.000000
10000.0 16-20 S2 O1 A0: 163.034601 266.888368 16.000000 -20.000000
--10000.0 22+20 S2 O1 A1: 135.019352 331.536702 22.000000 20.000000
+-10000.0 22+20 S2 O1 A1: 135.019352 331.536703 22.000000 20.000000
-10000.0 16-20 S2 O1 A1: 115.693174 103.225975 16.000000 -20.000000
- 0.0 22+20 S2 O1 A1: 60.229235 77.812648 22.000000 20.000000
+ 0.0 22+20 S2 O1 A1: 60.229234 77.812648 22.000000 20.000000
- 0.0 16-20 S2 O1 A1: 47.132151 213.442327 16.000000 -20.000000
+ 0.0 16-20 S2 O1 A1: 47.132152 213.442328 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A1: 66.997559 283.939459 22.000000 20.000000
+ 10000.0 22+20 S2 O1 A1: 66.997559 283.939460 22.000000 20.000000
10000.0 16-20 S2 O1 A1: 163.034601 266.888368 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A1: 66.997559 283.939459 22.000000 20.000000
+ 10000.0 22+20 S2 O1 A1: 66.997559 283.939460 22.000000 20.000000
10000.0 16-20 S2 O1 A1: 163.034601 266.888368 16.000000 -20.000000
diff --git a/test/novasc3.1/gcrs2equ.out b/test/novasc3.1/gcrs2equ.out
index 78eeb48a..fd8d3360 100644
--- a/test/novasc3.1/gcrs2equ.out
+++ b/test/novasc3.1/gcrs2equ.out
@@ -7,9 +7,9 @@
0.0 16-20 S2 O0 A0: mean 16.000000 -19.999996
- 0.0 16-20 S2 O0 A0: true 15.999751 -19.997839
+ 0.0 16-20 S2 O0 A0: true 15.999751 -19.997838
- 0.0 16-20 S2 O0 A0: cirs 15.999987 -19.997839
+ 0.0 16-20 S2 O0 A0: cirs 15.999987 -19.997838
0.0 22+20 S2 O0 A1: mean 22.000000 19.999997
@@ -19,6 +19,6 @@
0.0 16-20 S2 O0 A1: mean 16.000000 -19.999996
- 0.0 16-20 S2 O0 A1: true 15.999751 -19.997839
+ 0.0 16-20 S2 O0 A1: true 15.999751 -19.997838
- 0.0 16-20 S2 O0 A1: cirs 15.999987 -19.997839
+ 0.0 16-20 S2 O0 A1: cirs 15.999987 -19.997838
diff --git a/test/novasc3.1/ira_equinox.out b/test/novasc3.1/ira_equinox.out
index 63db171b..fd7fb595 100644
--- a/test/novasc3.1/ira_equinox.out
+++ b/test/novasc3.1/ira_equinox.out
@@ -1,8 +1,8 @@
--10000.0 A0: 0.023381867 0.023103051
- 0.0 A0: -0.000000269 0.000236437
- 10000.0 A0: -0.023386268 -0.023566351
- 10000.0 A0: -0.023386268 -0.023566351
--10000.0 A1: 0.023381867 0.023103051
- 0.0 A1: -0.000000269 0.000236436
- 10000.0 A1: -0.023386268 -0.023566351
- 10000.0 A1: -0.023386268 -0.023566351
+-10000.0 A0: 0.023381867 0.023103017
+ 0.0 A0: -0.000000269 0.000236403
+ 10000.0 A0: -0.023386268 -0.023566385
+ 10000.0 A0: -0.023386268 -0.023566385
+-10000.0 A1: 0.023381867 0.023103017
+ 0.0 A1: -0.000000269 0.000236402
+ 10000.0 A1: -0.023386268 -0.023566385
+ 10000.0 A1: -0.023386268 -0.023566385
diff --git a/test/novasc3.1/mean_obliq.out b/test/novasc3.1/mean_obliq.out
new file mode 100644
index 00000000..80500414
--- /dev/null
+++ b/test/novasc3.1/mean_obliq.out
@@ -0,0 +1,8 @@
+-10000.0 A0: 84394.229154
+ 0.0 A0: 84381.406000
+ 10000.0 A0: 84368.582819
+ 10000.0 A0: 84368.582819
+-10000.0 A1: 84394.229154
+ 0.0 A1: 84381.406000
+ 10000.0 A1: 84368.582819
+ 10000.0 A1: 84368.582819
diff --git a/test/novasc3.1/nutation.out b/test/novasc3.1/nutation.out
index ae39a233..7ac7d9ae 100644
--- a/test/novasc3.1/nutation.out
+++ b/test/novasc3.1/nutation.out
@@ -1,7 +1,7 @@
-10000.0 A0: -nan -nan -nan
- 0.0 A0: 0.801841317 -0.548228729 -0.237688375
- 10000.0 A0: -0.187719732 0.901076194 0.390925817
- 10000.0 A0: -0.529087785 -0.778583155 -0.337452792
+ 0.0 A0: 0.801841323 -0.548228725 -0.237688364
+ 10000.0 A0: -0.187719741 0.901076198 0.390925803
+ 10000.0 A0: -0.529087776 -0.778583165 -0.337452783
-10000.0 A1: -0.529064 -0.778601 -0.337450
0.0 A1: 0.801841 -0.548229 -0.237688
10000.0 A1: -0.187720 0.901076 0.390926
diff --git a/test/novasc3.1/place.out b/test/novasc3.1/place.out
index cbcf5d23..af823736 100644
--- a/test/novasc3.1/place.out
+++ b/test/novasc3.1/place.out
@@ -383,77 +383,77 @@
10000.0 EARTH S0 O2 A0: ERROR 23
--10000.0 22+20 S2 O0 A1: 0 22.000372 20.001439 0.000000 2.855377
+-10000.0 22+20 S2 O0 A1: 0 22.0004 20.001 0.000 2.9
--10000.0 22+20 S2 O0 A1: 1 21.979075 19.870632 0.000000 2.855377
+-10000.0 22+20 S2 O0 A1: 1 21.9791 19.871 0.000 2.9
--10000.0 22+20 S2 O0 A1: 2 22.002178 19.870632 0.000000 2.855377
+-10000.0 22+20 S2 O0 A1: 2 22.0022 19.871 0.000 2.9
--10000.0 22+20 S2 O0 A1: 3 21.999998 20.000016 0.000000 2.855377
+-10000.0 22+20 S2 O0 A1: 3 22.0000 20.000 0.000 2.9
--10000.0 22+20 S2 O1 A1: 0 22.000366 20.001449 0.000000 3.002415
+-10000.0 22+20 S2 O1 A1: 0 22.0004 20.001 0.000 3.0
--10000.0 22+20 S2 O1 A1: 1 21.979069 19.870642 0.000000 3.002415
+-10000.0 22+20 S2 O1 A1: 1 21.9791 19.871 0.000 3.0
--10000.0 22+20 S2 O1 A1: 2 22.002172 19.870642 0.000000 3.002415
+-10000.0 22+20 S2 O1 A1: 2 22.0022 19.871 0.000 3.0
--10000.0 22+20 S2 O1 A1: 3 21.999998 20.000016 0.000000 3.002415
+-10000.0 22+20 S2 O1 A1: 3 22.0000 20.000 0.000 3.0
--10000.0 22+20 S2 O2 A1: 0 22.000440 20.000879 0.000000 -5.263409
+-10000.0 22+20 S2 O2 A1: 0 22.0004 20.001 0.000 -5.3
--10000.0 22+20 S2 O2 A1: 1 21.979143 19.870070 0.000000 -5.263409
+-10000.0 22+20 S2 O2 A1: 1 21.9791 19.870 0.000 -5.3
--10000.0 22+20 S2 O2 A1: 2 22.002246 19.870070 0.000000 -5.263409
+-10000.0 22+20 S2 O2 A1: 2 22.0022 19.870 0.000 -5.3
--10000.0 22+20 S2 O2 A1: 3 21.999998 20.000016 0.000000 -5.263409
+-10000.0 22+20 S2 O2 A1: 3 22.0000 20.000 0.000 -5.3
--10000.0 16-20 S2 O0 A1: 0 16.000055 -20.000090 0.000000 39.104727
+-10000.0 16-20 S2 O0 A1: 0 16.0001 -20.000 0.000 39.1
--10000.0 16-20 S2 O0 A1: 1 15.973786 -19.925304 0.000000 39.104727
+-10000.0 16-20 S2 O0 A1: 1 15.9738 -19.925 0.000 39.1
--10000.0 16-20 S2 O0 A1: 2 15.996889 -19.925304 0.000000 39.104727
+-10000.0 16-20 S2 O0 A1: 2 15.9969 -19.925 0.000 39.1
--10000.0 16-20 S2 O0 A1: 3 15.999998 -19.999985 0.000000 39.104727
+-10000.0 16-20 S2 O0 A1: 3 16.0000 -20.000 0.000 39.1
--10000.0 16-20 S2 O1 A1: 0 16.000053 -20.000063 0.000000 38.720473
+-10000.0 16-20 S2 O1 A1: 0 16.0001 -20.000 0.000 38.7
--10000.0 16-20 S2 O1 A1: 1 15.973784 -19.925277 0.000000 38.720473
+-10000.0 16-20 S2 O1 A1: 1 15.9738 -19.925 0.000 38.7
--10000.0 16-20 S2 O1 A1: 2 15.996887 -19.925277 0.000000 38.720473
+-10000.0 16-20 S2 O1 A1: 2 15.9969 -19.925 0.000 38.7
--10000.0 16-20 S2 O1 A1: 3 15.999998 -19.999985 0.000000 38.720473
+-10000.0 16-20 S2 O1 A1: 3 16.0000 -20.000 0.000 38.7
--10000.0 16-20 S2 O2 A1: 0 16.000172 -20.000415 0.000000 43.861710
+-10000.0 16-20 S2 O2 A1: 0 16.0002 -20.000 0.000 43.9
--10000.0 16-20 S2 O2 A1: 1 15.973903 -19.925633 0.000000 43.861710
+-10000.0 16-20 S2 O2 A1: 1 15.9739 -19.926 0.000 43.9
--10000.0 16-20 S2 O2 A1: 2 15.997006 -19.925633 0.000000 43.861710
+-10000.0 16-20 S2 O2 A1: 2 15.9970 -19.926 0.000 43.9
--10000.0 16-20 S2 O2 A1: 3 15.999998 -19.999985 0.000000 43.861710
+-10000.0 16-20 S2 O2 A1: 3 16.0000 -20.000 0.000 43.9
--10000.0 SUN S0 O0 A1: 0 9.697104 13.813576 1.012670 -0.337487
+-10000.0 SUN S0 O0 A1: 0 9.6971 13.814 1.013 -0.3
--10000.0 SUN S0 O0 A1: 1 9.672603 13.938012 1.012670 -0.337487
+-10000.0 SUN S0 O0 A1: 1 9.6726 13.938 1.013 -0.3
--10000.0 SUN S0 O0 A1: 2 9.695706 13.938012 1.012670 -0.337487
+-10000.0 SUN S0 O0 A1: 2 9.6957 13.938 1.013 -0.3
--10000.0 SUN S0 O0 A1: 3 9.697468 13.811735 1.012670 -0.337487
+-10000.0 SUN S0 O0 A1: 3 9.6975 13.812 1.013 -0.3
--10000.0 SUN S0 O1 A1: 0 9.697153 13.813298 1.012630 -0.457058
+-10000.0 SUN S0 O1 A1: 0 9.6972 13.813 1.013 -0.5
--10000.0 SUN S0 O1 A1: 1 9.672652 13.937734 1.012630 -0.457058
+-10000.0 SUN S0 O1 A1: 1 9.6727 13.938 1.013 -0.5
--10000.0 SUN S0 O1 A1: 2 9.695755 13.937734 1.012630 -0.457058
+-10000.0 SUN S0 O1 A1: 2 9.6958 13.938 1.013 -0.5
--10000.0 SUN S0 O1 A1: 3 9.697512 13.811462 1.012630 -0.457058
+-10000.0 SUN S0 O1 A1: 3 9.6975 13.811 1.013 -0.5
--10000.0 SUN S0 O2 A1: 0 9.697031 13.813946 1.012671 7.621547
+-10000.0 SUN S0 O2 A1: 0 9.6970 13.814 1.013 7.6
--10000.0 SUN S0 O2 A1: 1 9.672530 13.938380 1.012671 7.621547
+-10000.0 SUN S0 O2 A1: 1 9.6725 13.938 1.013 7.6
--10000.0 SUN S0 O2 A1: 2 9.695633 13.938380 1.012671 7.621547
+-10000.0 SUN S0 O2 A1: 2 9.6956 13.938 1.013 7.6
--10000.0 SUN S0 O2 A1: 3 9.697470 13.811725 1.012671 7.621547
+-10000.0 SUN S0 O2 A1: 3 9.6975 13.812 1.013 7.6
-10000.0 EARTH S0 O0 A1: ERROR 3
@@ -471,85 +471,85 @@
-10000.0 EARTH S0 O1 A1: ERROR 3
--10000.0 EARTH S0 O2 A1: 0 13.136720 -5.615284 0.000001 9.534756
+-10000.0 EARTH S0 O2 A1: 0 13.1367 -5.615 0.000 9.5
--10000.0 EARTH S0 O2 A1: 1 13.113327 -5.471472 0.000001 9.534756
+-10000.0 EARTH S0 O2 A1: 1 13.1133 -5.471 0.000 9.5
--10000.0 EARTH S0 O2 A1: 2 13.136430 -5.471472 0.000001 9.534756
+-10000.0 EARTH S0 O2 A1: 2 13.1364 -5.471 0.000 9.5
--10000.0 EARTH S0 O2 A1: 3 13.136884 -5.616475 0.000001 9.534756
+-10000.0 EARTH S0 O2 A1: 3 13.1369 -5.616 0.000 9.5
- 0.0 22+20 S2 O0 A1: 0 21.999739 20.001131 0.000000 32.619774
+ 0.0 22+20 S2 O0 A1: 0 21.9997 20.001 0.000 32.6
- 0.0 22+20 S2 O0 A1: 1 21.999555 20.000595 0.000000 32.619774
+ 0.0 22+20 S2 O0 A1: 1 21.9996 20.001 0.000 32.6
- 0.0 22+20 S2 O0 A1: 2 21.999791 20.000595 0.000000 32.619774
+ 0.0 22+20 S2 O0 A1: 2 21.9998 20.001 0.000 32.6
- 0.0 22+20 S2 O0 A1: 3 22.000000 19.999999 0.000000 32.619774
+ 0.0 22+20 S2 O0 A1: 3 22.0000 20.000 0.000 32.6
- 0.0 22+20 S2 O1 A1: 0 21.999742 20.001105 0.000000 32.247698
+ 0.0 22+20 S2 O1 A1: 0 21.9997 20.001 0.000 32.2
- 0.0 22+20 S2 O1 A1: 1 21.999558 20.000569 0.000000 32.247698
+ 0.0 22+20 S2 O1 A1: 1 21.9996 20.001 0.000 32.2
- 0.0 22+20 S2 O1 A1: 2 21.999794 20.000569 0.000000 32.247698
+ 0.0 22+20 S2 O1 A1: 2 21.9998 20.001 0.000 32.2
- 0.0 22+20 S2 O1 A1: 3 22.000000 19.999999 0.000000 32.247698
+ 0.0 22+20 S2 O1 A1: 3 22.0000 20.000 0.000 32.2
- 0.0 22+20 S2 O2 A1: 0 21.999807 20.000564 0.000000 24.481544
+ 0.0 22+20 S2 O2 A1: 0 21.9998 20.001 0.000 24.5
- 0.0 22+20 S2 O2 A1: 1 21.999623 20.000029 0.000000 24.481544
+ 0.0 22+20 S2 O2 A1: 1 21.9996 20.000 0.000 24.5
- 0.0 22+20 S2 O2 A1: 2 21.999859 20.000029 0.000000 24.481544
+ 0.0 22+20 S2 O2 A1: 2 21.9999 20.000 0.000 24.5
- 0.0 22+20 S2 O2 A1: 3 22.000000 19.999999 0.000000 24.481544
+ 0.0 22+20 S2 O2 A1: 3 22.0000 20.000 0.000 24.5
- 0.0 16-20 S2 O0 A1: 0 15.999684 -19.999133 0.000000 -8.836703
+ 0.0 16-20 S2 O0 A1: 0 15.9997 -19.999 0.000 -8.8
- 0.0 16-20 S2 O0 A1: 1 15.999435 -19.996972 0.000000 -8.836703
+ 0.0 16-20 S2 O0 A1: 1 15.9994 -19.997 0.000 -8.8
- 0.0 16-20 S2 O0 A1: 2 15.999671 -19.996972 0.000000 -8.836703
+ 0.0 16-20 S2 O0 A1: 2 15.9997 -19.997 0.000 -8.8
- 0.0 16-20 S2 O0 A1: 3 16.000000 -20.000000 0.000000 -8.836703
+ 0.0 16-20 S2 O0 A1: 3 16.0000 -20.000 0.000 -8.8
- 0.0 16-20 S2 O1 A1: 0 15.999690 -19.999145 0.000000 -8.662127
+ 0.0 16-20 S2 O1 A1: 0 15.9997 -19.999 0.000 -8.7
- 0.0 16-20 S2 O1 A1: 1 15.999440 -19.996984 0.000000 -8.662127
+ 0.0 16-20 S2 O1 A1: 1 15.9994 -19.997 0.000 -8.7
- 0.0 16-20 S2 O1 A1: 2 15.999677 -19.996984 0.000000 -8.662127
+ 0.0 16-20 S2 O1 A1: 2 15.9997 -19.997 0.000 -8.7
- 0.0 16-20 S2 O1 A1: 3 16.000000 -20.000000 0.000000 -8.662127
+ 0.0 16-20 S2 O1 A1: 3 16.0000 -20.000 0.000 -8.7
- 0.0 16-20 S2 O2 A1: 0 15.999802 -19.999460 0.000000 -4.137177
+ 0.0 16-20 S2 O2 A1: 0 15.9998 -19.999 0.000 -4.1
- 0.0 16-20 S2 O2 A1: 1 15.999552 -19.997299 0.000000 -4.137177
+ 0.0 16-20 S2 O2 A1: 1 15.9996 -19.997 0.000 -4.1
- 0.0 16-20 S2 O2 A1: 2 15.999789 -19.997299 0.000000 -4.137177
+ 0.0 16-20 S2 O2 A1: 2 15.9998 -19.997 0.000 -4.1
- 0.0 16-20 S2 O2 A1: 3 16.000000 -20.000000 0.000000 -4.137177
+ 0.0 16-20 S2 O2 A1: 3 16.0000 -20.000 0.000 -4.1
- 0.0 SUN S0 O0 A1: 0 18.752123 -23.033991 0.983326 -0.016504
+ 0.0 SUN S0 O0 A1: 0 18.7521 -23.034 0.983 -0.0
- 0.0 SUN S0 O0 A1: 1 18.751835 -23.032720 0.983326 -0.016504
+ 0.0 SUN S0 O0 A1: 1 18.7518 -23.033 0.983 -0.0
- 0.0 SUN S0 O0 A1: 2 18.752071 -23.032720 0.983326 -0.016504
+ 0.0 SUN S0 O0 A1: 2 18.7521 -23.033 0.983 -0.0
- 0.0 SUN S0 O0 A1: 3 18.752541 -23.033540 0.983326 -0.016504
+ 0.0 SUN S0 O0 A1: 3 18.7525 -23.034 0.983 -0.0
- 0.0 SUN S0 O1 A1: 0 18.752176 -23.035637 0.983296 -0.128084
+ 0.0 SUN S0 O1 A1: 0 18.7522 -23.036 0.983 -0.1
- 0.0 SUN S0 O1 A1: 1 18.751888 -23.034366 0.983296 -0.128084
+ 0.0 SUN S0 O1 A1: 1 18.7519 -23.034 0.983 -0.1
- 0.0 SUN S0 O1 A1: 2 18.752124 -23.034366 0.983296 -0.128084
+ 0.0 SUN S0 O1 A1: 2 18.7521 -23.034 0.983 -0.1
- 0.0 SUN S0 O1 A1: 3 18.752588 -23.035195 0.983296 -0.128084
+ 0.0 SUN S0 O1 A1: 3 18.7526 -23.035 0.983 -0.1
- 0.0 SUN S0 O2 A1: 0 18.752257 -23.033846 0.983326 -1.816390
+ 0.0 SUN S0 O2 A1: 0 18.7523 -23.034 0.983 -1.8
- 0.0 SUN S0 O2 A1: 1 18.751968 -23.032576 0.983326 -1.816390
+ 0.0 SUN S0 O2 A1: 1 18.7520 -23.033 0.983 -1.8
- 0.0 SUN S0 O2 A1: 2 18.752205 -23.032576 0.983326 -1.816390
+ 0.0 SUN S0 O2 A1: 2 18.7522 -23.033 0.983 -1.8
- 0.0 SUN S0 O2 A1: 3 18.752538 -23.033542 0.983326 -1.816390
+ 0.0 SUN S0 O2 A1: 3 18.7525 -23.034 0.983 -1.8
0.0 EARTH S0 O0 A1: ERROR 3
@@ -567,85 +567,85 @@
0.0 EARTH S0 O1 A1: ERROR 3
- 0.0 EARTH S0 O2 A1: 0 13.113551 -5.473369 0.000001 9.534761
+ 0.0 EARTH S0 O2 A1: 0 13.1136 -5.473 0.000 9.5
- 0.0 EARTH S0 O2 A1: 1 13.113322 -5.471429 0.000001 9.534761
+ 0.0 EARTH S0 O2 A1: 1 13.1133 -5.471 0.000 9.5
- 0.0 EARTH S0 O2 A1: 2 13.113558 -5.471429 0.000001 9.534761
+ 0.0 EARTH S0 O2 A1: 2 13.1136 -5.471 0.000 9.5
- 0.0 EARTH S0 O2 A1: 3 13.113562 -5.473326 0.000001 9.534761
+ 0.0 EARTH S0 O2 A1: 3 13.1136 -5.473 0.000 9.5
- 10000.0 22+20 S2 O0 A1: 0 21.999998 19.996969 0.000000 -14.844753
+ 10000.0 22+20 S2 O0 A1: 0 22.0000 19.997 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 1 22.021667 20.129326 0.000000 -14.844753
+ 10000.0 22+20 S2 O0 A1: 1 22.0217 20.129 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 2 21.998100 20.129326 0.000000 -14.844753
+ 10000.0 22+20 S2 O0 A1: 2 21.9981 20.129 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 3 22.000002 19.999985 0.000000 -14.844753
+ 10000.0 22+20 S2 O0 A1: 3 22.0000 20.000 0.000 -14.8
- 10000.0 22+20 S2 O1 A1: 0 22.000000 19.996997 0.000000 -14.456080
+ 10000.0 22+20 S2 O1 A1: 0 22.0000 19.997 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 1 22.021669 20.129353 0.000000 -14.456080
+ 10000.0 22+20 S2 O1 A1: 1 22.0217 20.129 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 2 21.998102 20.129353 0.000000 -14.456080
+ 10000.0 22+20 S2 O1 A1: 2 21.9981 20.129 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 3 22.000002 19.999985 0.000000 -14.456080
+ 10000.0 22+20 S2 O1 A1: 3 22.0000 20.000 0.000 -14.5
- 10000.0 22+20 S2 O2 A1: 0 22.000065 19.996396 0.000000 -23.002063
+ 10000.0 22+20 S2 O2 A1: 0 22.0001 19.996 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 1 22.021734 20.128754 0.000000 -23.002063
+ 10000.0 22+20 S2 O2 A1: 1 22.0217 20.129 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 2 21.998168 20.128754 0.000000 -23.002063
+ 10000.0 22+20 S2 O2 A1: 2 21.9982 20.129 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 3 22.000002 19.999985 0.000000 -23.002063
+ 10000.0 22+20 S2 O2 A1: 3 22.0000 20.000 0.000 -23.0
- 10000.0 16-20 S2 O0 A1: 0 16.000391 -20.001134 0.000000 7.578437
+ 10000.0 16-20 S2 O0 A1: 0 16.0004 -20.001 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 1 16.027178 -20.078961 0.000000 7.578437
+ 10000.0 16-20 S2 O0 A1: 1 16.0272 -20.079 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 2 16.003611 -20.078961 0.000000 7.578437
+ 10000.0 16-20 S2 O0 A1: 2 16.0036 -20.079 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 3 16.000002 -20.000015 0.000000 7.578437
+ 10000.0 16-20 S2 O0 A1: 3 16.0000 -20.000 0.000 7.6
- 10000.0 16-20 S2 O1 A1: 0 16.000386 -20.001143 0.000000 7.710291
+ 10000.0 16-20 S2 O1 A1: 0 16.0004 -20.001 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 1 16.027172 -20.078970 0.000000 7.710291
+ 10000.0 16-20 S2 O1 A1: 1 16.0272 -20.079 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 2 16.003606 -20.078970 0.000000 7.710291
+ 10000.0 16-20 S2 O1 A1: 2 16.0036 -20.079 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 3 16.000002 -20.000015 0.000000 7.710291
+ 10000.0 16-20 S2 O1 A1: 3 16.0000 -20.000 0.000 7.7
- 10000.0 16-20 S2 O2 A1: 0 16.000509 -20.001463 0.000000 12.216570
+ 10000.0 16-20 S2 O2 A1: 0 16.0005 -20.001 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 1 16.027296 -20.079285 0.000000 12.216570
+ 10000.0 16-20 S2 O2 A1: 1 16.0273 -20.079 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 2 16.003729 -20.079285 0.000000 12.216570
+ 10000.0 16-20 S2 O2 A1: 2 16.0037 -20.079 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 3 16.000002 -20.000015 0.000000 12.216570
+ 10000.0 16-20 S2 O2 A1: 3 16.0000 -20.000 0.000 12.2
- 10000.0 SUN S0 O0 A1: 0 3.710532 19.692978 1.011622 0.345087
+ 10000.0 SUN S0 O0 A1: 0 3.7105 19.693 1.012 0.3
- 10000.0 SUN S0 O0 A1: 1 3.737115 19.780622 1.011622 0.345087
+ 10000.0 SUN S0 O0 A1: 1 3.7371 19.781 1.012 0.3
- 10000.0 SUN S0 O0 A1: 2 3.713549 19.780622 1.011622 0.345087
+ 10000.0 SUN S0 O0 A1: 2 3.7135 19.781 1.012 0.3
- 10000.0 SUN S0 O0 A1: 3 3.710920 19.694239 1.011622 0.345087
+ 10000.0 SUN S0 O0 A1: 3 3.7109 19.694 1.012 0.3
- 10000.0 SUN S0 O1 A1: 0 3.710578 19.692944 1.011581 0.242780
+ 10000.0 SUN S0 O1 A1: 0 3.7106 19.693 1.012 0.2
- 10000.0 SUN S0 O1 A1: 1 3.737161 19.780587 1.011581 0.242780
+ 10000.0 SUN S0 O1 A1: 1 3.7372 19.781 1.012 0.2
- 10000.0 SUN S0 O1 A1: 2 3.713595 19.780587 1.011581 0.242780
+ 10000.0 SUN S0 O1 A1: 2 3.7136 19.781 1.012 0.2
- 10000.0 SUN S0 O1 A1: 3 3.710960 19.694213 1.011581 0.242780
+ 10000.0 SUN S0 O1 A1: 3 3.7110 19.694 1.012 0.2
- 10000.0 SUN S0 O2 A1: 0 3.710421 19.692619 1.011622 -4.909229
+ 10000.0 SUN S0 O2 A1: 0 3.7104 19.693 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 1 3.737004 19.780268 1.011622 -4.909229
+ 10000.0 SUN S0 O2 A1: 1 3.7370 19.780 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 2 3.713438 19.780268 1.011622 -4.909229
+ 10000.0 SUN S0 O2 A1: 2 3.7134 19.780 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 3 3.710922 19.694246 1.011622 -4.909229
+ 10000.0 SUN S0 O2 A1: 3 3.7109 19.694 1.012 -4.9
10000.0 EARTH S0 O0 A1: ERROR 3
@@ -663,85 +663,85 @@
10000.0 EARTH S0 O1 A1: ERROR 3
- 10000.0 EARTH S0 O2 A1: 0 13.089480 -5.323630 0.000001 9.534770
+ 10000.0 EARTH S0 O2 A1: 0 13.0895 -5.324 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 1 13.113310 -5.471370 0.000001 9.534770
+ 10000.0 EARTH S0 O2 A1: 1 13.1133 -5.471 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 2 13.089744 -5.471370 0.000001 9.534770
+ 10000.0 EARTH S0 O2 A1: 2 13.0897 -5.471 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 3 13.089174 -5.321902 0.000001 9.534770
+ 10000.0 EARTH S0 O2 A1: 3 13.0892 -5.322 0.000 9.5
- 10000.0 22+20 S2 O0 A1: 0 21.999998 19.996969 0.000000 -14.844753
+ 10000.0 22+20 S2 O0 A1: 0 22.0000 19.997 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 1 22.021667 20.129326 0.000000 -14.844753
+ 10000.0 22+20 S2 O0 A1: 1 22.0217 20.129 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 2 21.998100 20.129326 0.000000 -14.844753
+ 10000.0 22+20 S2 O0 A1: 2 21.9981 20.129 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 3 22.000002 19.999985 0.000000 -14.844753
+ 10000.0 22+20 S2 O0 A1: 3 22.0000 20.000 0.000 -14.8
- 10000.0 22+20 S2 O1 A1: 0 22.000000 19.996997 0.000000 -14.456080
+ 10000.0 22+20 S2 O1 A1: 0 22.0000 19.997 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 1 22.021669 20.129353 0.000000 -14.456080
+ 10000.0 22+20 S2 O1 A1: 1 22.0217 20.129 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 2 21.998102 20.129353 0.000000 -14.456080
+ 10000.0 22+20 S2 O1 A1: 2 21.9981 20.129 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 3 22.000002 19.999985 0.000000 -14.456080
+ 10000.0 22+20 S2 O1 A1: 3 22.0000 20.000 0.000 -14.5
- 10000.0 22+20 S2 O2 A1: 0 22.000065 19.996396 0.000000 -23.002063
+ 10000.0 22+20 S2 O2 A1: 0 22.0001 19.996 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 1 22.021734 20.128754 0.000000 -23.002063
+ 10000.0 22+20 S2 O2 A1: 1 22.0217 20.129 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 2 21.998168 20.128754 0.000000 -23.002063
+ 10000.0 22+20 S2 O2 A1: 2 21.9982 20.129 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 3 22.000002 19.999985 0.000000 -23.002063
+ 10000.0 22+20 S2 O2 A1: 3 22.0000 20.000 0.000 -23.0
- 10000.0 16-20 S2 O0 A1: 0 16.000391 -20.001134 0.000000 7.578437
+ 10000.0 16-20 S2 O0 A1: 0 16.0004 -20.001 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 1 16.027178 -20.078961 0.000000 7.578437
+ 10000.0 16-20 S2 O0 A1: 1 16.0272 -20.079 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 2 16.003611 -20.078961 0.000000 7.578437
+ 10000.0 16-20 S2 O0 A1: 2 16.0036 -20.079 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 3 16.000002 -20.000015 0.000000 7.578437
+ 10000.0 16-20 S2 O0 A1: 3 16.0000 -20.000 0.000 7.6
- 10000.0 16-20 S2 O1 A1: 0 16.000386 -20.001143 0.000000 7.710291
+ 10000.0 16-20 S2 O1 A1: 0 16.0004 -20.001 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 1 16.027172 -20.078970 0.000000 7.710291
+ 10000.0 16-20 S2 O1 A1: 1 16.0272 -20.079 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 2 16.003606 -20.078970 0.000000 7.710291
+ 10000.0 16-20 S2 O1 A1: 2 16.0036 -20.079 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 3 16.000002 -20.000015 0.000000 7.710291
+ 10000.0 16-20 S2 O1 A1: 3 16.0000 -20.000 0.000 7.7
- 10000.0 16-20 S2 O2 A1: 0 16.000509 -20.001463 0.000000 12.216570
+ 10000.0 16-20 S2 O2 A1: 0 16.0005 -20.001 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 1 16.027296 -20.079285 0.000000 12.216570
+ 10000.0 16-20 S2 O2 A1: 1 16.0273 -20.079 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 2 16.003729 -20.079285 0.000000 12.216570
+ 10000.0 16-20 S2 O2 A1: 2 16.0037 -20.079 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 3 16.000002 -20.000015 0.000000 12.216570
+ 10000.0 16-20 S2 O2 A1: 3 16.0000 -20.000 0.000 12.2
- 10000.0 SUN S0 O0 A1: 0 3.710532 19.692978 1.011622 0.345087
+ 10000.0 SUN S0 O0 A1: 0 3.7105 19.693 1.012 0.3
- 10000.0 SUN S0 O0 A1: 1 3.737115 19.780622 1.011622 0.345087
+ 10000.0 SUN S0 O0 A1: 1 3.7371 19.781 1.012 0.3
- 10000.0 SUN S0 O0 A1: 2 3.713549 19.780622 1.011622 0.345087
+ 10000.0 SUN S0 O0 A1: 2 3.7135 19.781 1.012 0.3
- 10000.0 SUN S0 O0 A1: 3 3.710920 19.694239 1.011622 0.345087
+ 10000.0 SUN S0 O0 A1: 3 3.7109 19.694 1.012 0.3
- 10000.0 SUN S0 O1 A1: 0 3.710578 19.692944 1.011581 0.242780
+ 10000.0 SUN S0 O1 A1: 0 3.7106 19.693 1.012 0.2
- 10000.0 SUN S0 O1 A1: 1 3.737161 19.780587 1.011581 0.242780
+ 10000.0 SUN S0 O1 A1: 1 3.7372 19.781 1.012 0.2
- 10000.0 SUN S0 O1 A1: 2 3.713595 19.780587 1.011581 0.242780
+ 10000.0 SUN S0 O1 A1: 2 3.7136 19.781 1.012 0.2
- 10000.0 SUN S0 O1 A1: 3 3.710960 19.694213 1.011581 0.242780
+ 10000.0 SUN S0 O1 A1: 3 3.7110 19.694 1.012 0.2
- 10000.0 SUN S0 O2 A1: 0 3.710421 19.692619 1.011622 -4.909229
+ 10000.0 SUN S0 O2 A1: 0 3.7104 19.693 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 1 3.737004 19.780268 1.011622 -4.909229
+ 10000.0 SUN S0 O2 A1: 1 3.7370 19.780 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 2 3.713438 19.780268 1.011622 -4.909229
+ 10000.0 SUN S0 O2 A1: 2 3.7134 19.780 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 3 3.710922 19.694246 1.011622 -4.909229
+ 10000.0 SUN S0 O2 A1: 3 3.7109 19.694 1.012 -4.9
10000.0 EARTH S0 O0 A1: ERROR 3
@@ -759,10 +759,10 @@
10000.0 EARTH S0 O1 A1: ERROR 3
- 10000.0 EARTH S0 O2 A1: 0 13.089480 -5.323630 0.000001 9.534770
+ 10000.0 EARTH S0 O2 A1: 0 13.0895 -5.324 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 1 13.113310 -5.471370 0.000001 9.534770
+ 10000.0 EARTH S0 O2 A1: 1 13.1133 -5.471 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 2 13.089744 -5.471370 0.000001 9.534770
+ 10000.0 EARTH S0 O2 A1: 2 13.0897 -5.471 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 3 13.089174 -5.321902 0.000001 9.534770
+ 10000.0 EARTH S0 O2 A1: 3 13.0892 -5.322 0.000 9.5
diff --git a/test/novasc3.1/ter2cel.out b/test/novasc3.1/ter2cel.out
index 9fa6274c..6d1c2ee9 100644
--- a/test/novasc3.1/ter2cel.out
+++ b/test/novasc3.1/ter2cel.out
@@ -1,51 +1,51 @@
--10000.0 22+20 S2 O0 A0: ERA GCRS -0.388158783 0.856188057 0.340990865
+-10000.0 22+20 S2 O0 A0: ERA GCRS -0.388158782 0.856188052 0.340990879
--10000.0 22+20 S2 O0 A0: GST GCRS -0.388158783 0.856188057 0.340990865
+-10000.0 22+20 S2 O0 A0: GST GCRS -0.388158782 0.856188052 0.340990879
--10000.0 22+20 S2 O0 A0: GST TOD -0.382075445 0.858510673 0.342020143
+-10000.0 22+20 S2 O0 A0: GST TOD -0.382075453 0.858510670 0.342020143
--10000.0 16-20 S2 O0 A0: ERA GCRS 0.857080261 0.387256999 -0.339772635
+-10000.0 16-20 S2 O0 A0: ERA GCRS 0.857080260 0.387257004 -0.339772632
--10000.0 16-20 S2 O0 A0: GST GCRS 0.857080261 0.387256999 -0.339772635
+-10000.0 16-20 S2 O0 A0: GST GCRS 0.857080260 0.387257004 -0.339772632
--10000.0 16-20 S2 O0 A0: GST TOD 0.858510673 0.382075445 -0.342020143
+-10000.0 16-20 S2 O0 A0: GST TOD 0.858510670 0.382075453 -0.342020143
- 0.0 22+20 S2 O0 A0: ERA GCRS -0.314293817 -0.885587018 0.341986886
+ 0.0 22+20 S2 O0 A0: ERA GCRS -0.314293815 -0.885587023 0.341986874
- 0.0 22+20 S2 O0 A0: GST GCRS -0.314293817 -0.885587018 0.341986886
+ 0.0 22+20 S2 O0 A0: GST GCRS -0.314293815 -0.885587023 0.341986874
- 0.0 22+20 S2 O0 A0: GST TOD -0.314339424 -0.885557987 0.342020143
+ 0.0 22+20 S2 O0 A0: GST TOD -0.314339416 -0.885557990 0.342020143
- 0.0 16-20 S2 O0 A0: ERA GCRS -0.885568228 0.314294173 -0.342035212
+ 0.0 16-20 S2 O0 A0: ERA GCRS -0.885568229 0.314294178 -0.342035204
- 0.0 16-20 S2 O0 A0: GST GCRS -0.885568228 0.314294173 -0.342035212
+ 0.0 16-20 S2 O0 A0: GST GCRS -0.885568229 0.314294178 -0.342035204
- 0.0 16-20 S2 O0 A0: GST TOD -0.885557987 0.314339424 -0.342020143
+ 0.0 16-20 S2 O0 A0: GST TOD -0.885557990 0.314339416 -0.342020143
- 10000.0 22+20 S2 O0 A0: ERA GCRS 0.841265067 0.420521499 0.339756908
+ 10000.0 22+20 S2 O0 A0: ERA GCRS 0.841265068 0.420521494 0.339756911
- 10000.0 22+20 S2 O0 A0: GST GCRS 0.841265067 0.420521499 0.339756908
+ 10000.0 22+20 S2 O0 A0: GST GCRS 0.841265068 0.420521494 0.339756911
- 10000.0 22+20 S2 O0 A0: GST TOD 0.837740874 0.425690556 0.342020143
+ 10000.0 22+20 S2 O0 A0: GST TOD 0.837740870 0.425690564 0.342020143
- 10000.0 16-20 S2 O0 A0: ERA GCRS 0.419595616 -0.840358873 -0.343127504
+ 10000.0 16-20 S2 O0 A0: ERA GCRS 0.419595615 -0.840358868 -0.343127518
- 10000.0 16-20 S2 O0 A0: GST GCRS 0.419595616 -0.840358873 -0.343127504
+ 10000.0 16-20 S2 O0 A0: GST GCRS 0.419595615 -0.840358868 -0.343127518
- 10000.0 16-20 S2 O0 A0: GST TOD 0.425690556 -0.837740874 -0.342020143
+ 10000.0 16-20 S2 O0 A0: GST TOD 0.425690564 -0.837740870 -0.342020143
- 10000.0 22+20 S2 O0 A0: ERA GCRS 0.841265067 0.420521499 0.339756908
+ 10000.0 22+20 S2 O0 A0: ERA GCRS 0.841265068 0.420521494 0.339756911
- 10000.0 22+20 S2 O0 A0: GST GCRS 0.841265067 0.420521499 0.339756908
+ 10000.0 22+20 S2 O0 A0: GST GCRS 0.841265068 0.420521494 0.339756911
- 10000.0 22+20 S2 O0 A0: GST TOD 0.837740874 0.425690556 0.342020143
+ 10000.0 22+20 S2 O0 A0: GST TOD 0.837740870 0.425690564 0.342020143
- 10000.0 16-20 S2 O0 A0: ERA GCRS 0.419595616 -0.840358873 -0.343127504
+ 10000.0 16-20 S2 O0 A0: ERA GCRS 0.419595615 -0.840358868 -0.343127518
- 10000.0 16-20 S2 O0 A0: GST GCRS 0.419595616 -0.840358873 -0.343127504
+ 10000.0 16-20 S2 O0 A0: GST GCRS 0.419595615 -0.840358868 -0.343127518
- 10000.0 16-20 S2 O0 A0: GST TOD 0.425690556 -0.837740874 -0.342020143
+ 10000.0 16-20 S2 O0 A0: GST TOD 0.425690564 -0.837740870 -0.342020143
-10000.0 22+20 S2 O0 A1: ERA GCRS -0.388159 0.856188 0.340991
diff --git a/test/reference/cel2ter.out b/test/reference/cel2ter.out
index c3063d05..6da4b827 100644
--- a/test/reference/cel2ter.out
+++ b/test/reference/cel2ter.out
@@ -1,35 +1,35 @@
--10000.0 22+20 S2 O0 A0: ERA GCRS -0.935838206 -0.093233508 0.339874044
+-10000.0 22+20 S2 O0 A0: ERA GCRS -0.935838202 -0.093233512 0.339874054
--10000.0 22+20 S2 O0 A0: GST GCRS -0.935838206 -0.093233508 0.339874044
+-10000.0 22+20 S2 O0 A0: GST GCRS -0.935838202 -0.093233512 0.339874054
--10000.0 16-20 S2 O0 A0: ERA GCRS -0.091982633 0.935627669 -0.340793280
+-10000.0 16-20 S2 O0 A0: ERA GCRS -0.091982636 0.935627673 -0.340793270
--10000.0 16-20 S2 O0 A0: GST GCRS -0.091982633 0.935627669 -0.340793280
+-10000.0 16-20 S2 O0 A0: GST GCRS -0.091982636 0.935627673 -0.340793270
- 0.0 22+20 S2 O0 A0: ERA GCRS 0.609782525 0.714977972 0.342011362
+ 0.0 22+20 S2 O0 A0: ERA GCRS 0.609782519 0.714977972 0.342011372
- 0.0 22+20 S2 O0 A0: GST GCRS 0.609782525 0.714977972 0.342011362
+ 0.0 22+20 S2 O0 A0: GST GCRS 0.609782519 0.714977972 0.342011372
- 0.0 16-20 S2 O0 A0: ERA GCRS 0.714974910 -0.609801067 -0.341984702
+ 0.0 16-20 S2 O0 A0: ERA GCRS 0.714974915 -0.609801066 -0.341984692
- 0.0 16-20 S2 O0 A0: GST GCRS 0.714974910 -0.609801067 -0.341984702
+ 0.0 16-20 S2 O0 A0: GST GCRS 0.714974915 -0.609801066 -0.341984692
- 10000.0 22+20 S2 O0 A0: ERA GCRS 0.055487009 -0.937259010 0.344189977
+ 10000.0 22+20 S2 O0 A0: ERA GCRS 0.055487012 -0.937259006 0.344189987
- 10000.0 22+20 S2 O0 A0: GST GCRS 0.055487009 -0.937259010 0.344189977
+ 10000.0 22+20 S2 O0 A0: GST GCRS 0.055487012 -0.937259006 0.344189987
- 10000.0 16-20 S2 O0 A0: ERA GCRS -0.937510303 -0.056762395 -0.343296463
+ 10000.0 16-20 S2 O0 A0: ERA GCRS -0.937510307 -0.056762399 -0.343296453
- 10000.0 16-20 S2 O0 A0: GST GCRS -0.937510303 -0.056762395 -0.343296463
+ 10000.0 16-20 S2 O0 A0: GST GCRS -0.937510307 -0.056762399 -0.343296453
- 10000.0 22+20 S2 O0 A0: ERA GCRS 0.055487009 -0.937259010 0.344189977
+ 10000.0 22+20 S2 O0 A0: ERA GCRS 0.055487012 -0.937259006 0.344189987
- 10000.0 22+20 S2 O0 A0: GST GCRS 0.055487009 -0.937259010 0.344189977
+ 10000.0 22+20 S2 O0 A0: GST GCRS 0.055487012 -0.937259006 0.344189987
- 10000.0 16-20 S2 O0 A0: ERA GCRS -0.937510303 -0.056762395 -0.343296463
+ 10000.0 16-20 S2 O0 A0: ERA GCRS -0.937510307 -0.056762399 -0.343296453
- 10000.0 16-20 S2 O0 A0: GST GCRS -0.937510303 -0.056762395 -0.343296463
+ 10000.0 16-20 S2 O0 A0: GST GCRS -0.937510307 -0.056762399 -0.343296453
-10000.0 22+20 S2 O0 A1: ERA GCRS -0.935838 -0.093234 0.339874
diff --git a/test/reference/cel_pole.out b/test/reference/cel_pole.out
index 713c0510..6035421d 100644
--- a/test/reference/cel_pole.out
+++ b/test/reference/cel_pole.out
@@ -1,16 +1,16 @@
--10000.0 A0: XY 16.415313 4.048559 16.415313 4.048559
--10000.0 A0: PE 16.415313 4.048559 16.415313 4.048559
- 0.0 A0: XY -13.933997 -5.766398 -13.933997 -5.766398
- 0.0 A0: PE -13.933997 -5.766398 -13.933997 -5.766398
- 10000.0 A0: XY 10.600901 6.298105 10.600901 6.298105
- 10000.0 A0: PE 10.600901 6.298105 10.600901 6.298105
- 10000.0 A0: XY 10.600901 6.298105 10.600901 6.298105
- 10000.0 A0: PE 10.600901 6.298105 10.600901 6.298105
--10000.0 A1: XY 16.413324 4.051553 16.413324 4.051553
--10000.0 A1: PE 16.413324 4.051553 16.413324 4.051553
- 0.0 A1: XY -13.933977 -5.766410 -13.933977 -5.766410
- 0.0 A1: PE -13.933977 -5.766410 -13.933977 -5.766410
- 10000.0 A1: XY 10.600913 6.298092 10.600913 6.298092
- 10000.0 A1: PE 10.600913 6.298092 10.600913 6.298092
- 10000.0 A1: XY 10.600913 6.298092 10.600913 6.298092
- 10000.0 A1: PE 10.600913 6.298092 10.600913 6.298092
+-10000.0 A0: PE 16.415313 4.048559 16.413313 4.051559
+-10000.0 A0: XY 16.415313 4.048559 16.410332 4.051572
+ 0.0 A0: PE -13.931996 -5.769398 -13.933996 -5.766398
+ 0.0 A0: XY -13.931996 -5.769398 -13.937024 -5.766398
+ 10000.0 A0: PE 10.602901 6.295105 10.600901 6.298105
+ 10000.0 A0: XY 10.602901 6.295105 10.597826 6.298093
+ 10000.0 A0: PE 10.602901 6.295105 10.600901 6.298105
+ 10000.0 A0: XY 10.602901 6.295105 10.597826 6.298093
+-10000.0 A1: PE 16.415324 4.048553 16.413324 4.051553
+-10000.0 A1: XY 16.415324 4.048553 16.410343 4.051566
+ 0.0 A1: PE -13.931977 -5.769410 -13.933977 -5.766410
+ 0.0 A1: XY -13.931977 -5.769410 -13.937004 -5.766410
+ 10000.0 A1: PE 10.602913 6.295092 10.600913 6.298092
+ 10000.0 A1: XY 10.602913 6.295092 10.597838 6.298080
+ 10000.0 A1: PE 10.602913 6.295092 10.600913 6.298092
+ 10000.0 A1: XY 10.602913 6.295092 10.597838 6.298080
diff --git a/test/reference/cio_basis.out b/test/reference/cio_basis.out
index a4b8c91a..1ad448b7 100644
--- a/test/reference/cio_basis.out
+++ b/test/reference/cio_basis.out
@@ -1,8 +1,8 @@
--10000.0 A0: 0.999996544 -0.000000014 0.002628934 0.000000045 1.000000000 -0.000011678 -0.002628934 0.000011678 0.999996544
- 0.0 A0: 0.999999998 -0.000061970 0.000000081 0.000061970 0.999999998 0.000000033 -0.000000081 -0.000000033 1.000000000
- 10000.0 A0: 0.999996407 -0.000000007 -0.002680631 -0.000000052 1.000000000 -0.000022198 0.002680631 0.000022198 0.999996407
- 10000.0 A0: 0.999996407 -0.000000007 -0.002680631 -0.000000052 1.000000000 -0.000022198 0.002680631 0.000022198 0.999996407
--10000.0 A1: 0.999997 -0.000000 0.002629 0.000000 1.000000 -0.000012 -0.002629 0.000012 0.999997
- 0.0 A1: 1.000000 -0.000062 0.000000 0.000062 1.000000 0.000000 -0.000000 -0.000000 1.000000
- 10000.0 A1: 0.999996 -0.000000 -0.002681 -0.000000 1.000000 -0.000022 0.002681 0.000022 0.999996
- 10000.0 A1: 0.999996 -0.000000 -0.002681 -0.000000 1.000000 -0.000022 0.002681 0.000022 0.999996
+-10000.0 A0: 2 0.999996544 -0.000000014 0.002628934 0.000000045 1.000000000 -0.000011678 -0.002628934 0.000011678 0.999996544
+ 0.0 A0: 2 1.000000000 0.000000010 0.000026946 -0.000000011 1.000000000 0.000028005 -0.000026946 -0.000028005 0.999999999
+ 10000.0 A0: 2 0.999996407 -0.000000007 -0.002680635 -0.000000052 1.000000000 -0.000022183 0.002680635 0.000022183 0.999996407
+ 10000.0 A0: 2 0.999996407 -0.000000007 -0.002680635 -0.000000052 1.000000000 -0.000022183 0.002680635 0.000022183 0.999996407
+-10000.0 A1: 2 0.999997 -0.000000 0.002629 0.000000 1.000000 -0.000012 -0.002629 0.000012 0.999997
+ 0.0 A1: 2 1.000000 0.000000 0.000027 -0.000000 1.000000 0.000028 -0.000027 -0.000028 1.000000
+ 10000.0 A1: 2 0.999996 -0.000000 -0.002681 -0.000000 1.000000 -0.000022 0.002681 0.000022 0.999996
+ 10000.0 A1: 2 0.999996 -0.000000 -0.002681 -0.000000 1.000000 -0.000022 0.002681 0.000022 0.999996
diff --git a/test/reference/cio_location.out b/test/reference/cio_location.out
index 2e8e689f..ad8a1d0b 100644
--- a/test/reference/cio_location.out
+++ b/test/reference/cio_location.out
@@ -1,8 +1,8 @@
-10000.0 A0: 2 -0.023103017 2 -0.023103017
- 0.0 A0: 2 -0.000236437 2 -0.000236437
- 10000.0 A0: 2 0.023566351 2 0.023566351
- 10000.0 A0: 2 0.023566351 2 0.023566351
--10000.0 A1: 2 -0.023103051 2 -0.023103051
- 0.0 A1: 2 -0.000236436 2 -0.000236436
- 10000.0 A1: 2 0.023566351 2 0.023566351
- 10000.0 A1: 2 0.023566351 2 0.023566351
+ 0.0 A0: 2 -0.000236403 2 -0.000236403
+ 10000.0 A0: 2 0.023566385 2 0.023566385
+ 10000.0 A0: 2 0.023566385 2 0.023566385
+-10000.0 A1: 2 -0.023103017 2 -0.023103017
+ 0.0 A1: 2 -0.000236402 2 -0.000236402
+ 10000.0 A1: 2 0.023566385 2 0.023566385
+ 10000.0 A1: 2 0.023566385 2 0.023566385
diff --git a/test/reference/cio_ra.out b/test/reference/cio_ra.out
index 4a19adc9..08da9b5b 100644
--- a/test/reference/cio_ra.out
+++ b/test/reference/cio_ra.out
@@ -1,8 +1,8 @@
--10000.0 A0: -1 -0.023103051
- 0.0 A0: -1 -0.000236437
- 10000.0 A0: -1 0.023566351
- 10000.0 A0: -1 0.023566351
--10000.0 A1: -1 -0.023103051
- 0.0 A1: -1 -0.000236436
- 10000.0 A1: -1 0.023566351
- 10000.0 A1: -1 0.023566351
+-10000.0 A0: -1 -0.023103017
+ 0.0 A0: -1 -0.000236403
+ 10000.0 A0: -1 0.023566385
+ 10000.0 A0: -1 0.023566385
+-10000.0 A1: -1 -0.023103017
+ 0.0 A1: -1 -0.000236402
+ 10000.0 A1: -1 0.023566385
+ 10000.0 A1: -1 0.023566385
diff --git a/test/reference/e_tilt.out b/test/reference/e_tilt.out
index 4e0216e6..9593548c 100644
--- a/test/reference/e_tilt.out
+++ b/test/reference/e_tilt.out
@@ -1,8 +1,8 @@
-10000.0 A0: 23.442841 23.443966 1.003860 16.415313 4.048559
- 0.0 A0: 23.439279 23.437678 -0.852139 -13.933997 -5.766398
- 10000.0 A0: 23.435717 23.437467 0.648300 10.600901 6.298105
- 10000.0 A0: 23.435717 23.437467 0.648300 10.600901 6.298105
--10000.0 A1: 23.442841 23.443967 1.003738 16.413324 4.051553
- 0.0 A1: 23.439279 23.437678 -0.852138 -13.933977 -5.766410
- 10000.0 A1: 23.435717 23.437467 0.648301 10.600913 6.298092
- 10000.0 A1: 23.435717 23.437467 0.648301 10.600913 6.298092
+ 0.0 A0: 23.439279 23.437677 -0.852017 -13.931996 -5.769398
+ 10000.0 A0: 23.435717 23.437466 0.648422 10.602901 6.295105
+ 10000.0 A0: 23.435717 23.437466 0.648422 10.602901 6.295105
+-10000.0 A1: 23.442841 23.443966 1.003860 16.415324 4.048553
+ 0.0 A1: 23.439279 23.437677 -0.852016 -13.931977 -5.769410
+ 10000.0 A1: 23.435717 23.437466 0.648423 10.602913 6.295092
+ 10000.0 A1: 23.435717 23.437466 0.648423 10.602913 6.295092
diff --git a/test/reference/ecl2equ_vec.out b/test/reference/ecl2equ_vec.out
index c74cf144..960fcc51 100644
--- a/test/reference/ecl2equ_vec.out
+++ b/test/reference/ecl2equ_vec.out
@@ -1,49 +1,49 @@
-10000.0 22+20 S2 O0 A0: mean 0.813797681 -0.567131224 0.126868075
--10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567133716 0.126856935
+-10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567133714 0.126856944
-10000.0 22+20 S2 O0 A0: gcrs 0.813797631 -0.567123398 0.126903380
--10000.0 16-20 S2 O0 A0: mean -0.469846310 -0.610597105 -0.637507349
+-10000.0 16-20 S2 O0 A0: mean -0.469846310 -0.610557471 -0.637545308
--10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610544948 -0.637557301
+-10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610544957 -0.637557292
-10000.0 16-20 S2 O0 A0: gcrs -0.469846302 -0.610597050 -0.637507407
0.0 22+20 S2 O0 A0: mean 0.813797681 -0.567123336 0.126903333
- 0.0 22+20 S2 O0 A0: true 0.813797681 -0.567119788 0.126919187
+ 0.0 22+20 S2 O0 A0: true 0.813797681 -0.567119786 0.126919196
0.0 22+20 S2 O0 A0: gcrs 0.813797631 -0.567123398 0.126903380
0.0 16-20 S2 O0 A0: mean -0.469846310 -0.610597105 -0.637507349
- 0.0 16-20 S2 O0 A0: true -0.469846310 -0.610614927 -0.637490279
+ 0.0 16-20 S2 O0 A0: true -0.469846310 -0.610614936 -0.637490270
0.0 16-20 S2 O0 A0: gcrs -0.469846302 -0.610597050 -0.637507407
10000.0 22+20 S2 O0 A0: mean 0.813797681 -0.567115445 0.126938590
- 10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567119321 0.126921273
+ 10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567119319 0.126921282
10000.0 22+20 S2 O0 A0: gcrs 0.813797631 -0.567123398 0.126903380
10000.0 16-20 S2 O0 A0: mean -0.469846310 -0.610636736 -0.637469388
- 10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610617272 -0.637488033
+ 10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610617281 -0.637488024
10000.0 16-20 S2 O0 A0: gcrs -0.469846302 -0.610597050 -0.637507407
10000.0 22+20 S2 O0 A0: mean 0.813797681 -0.567115445 0.126938590
- 10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567119321 0.126921273
+ 10000.0 22+20 S2 O0 A0: true 0.813797681 -0.567119319 0.126921282
10000.0 22+20 S2 O0 A0: gcrs 0.813797631 -0.567123398 0.126903380
10000.0 16-20 S2 O0 A0: mean -0.469846310 -0.610636736 -0.637469388
- 10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610617272 -0.637488033
+ 10000.0 16-20 S2 O0 A0: true -0.469846310 -0.610617281 -0.637488024
10000.0 16-20 S2 O0 A0: gcrs -0.469846302 -0.610597050 -0.637507407
diff --git a/test/reference/ephemeris.out b/test/reference/ephemeris.out
index 2bde7d20..a5e2aa8a 100644
--- a/test/reference/ephemeris.out
+++ b/test/reference/ephemeris.out
@@ -14,35 +14,35 @@
10000.0 A0: ERROR 13
10000.0 A0: ERROR 13
10000.0 A0: ERROR 13
--10000.0 A1: SUN 0 -0.000009 0.003773 0.001651 -0.000006 -0.000001 -0.000001
+-10000.0 A1: SUN 3 -0.000009 0.003773 0.001651 -0.009747 -0.002548 -0.000896
--10000.0 A1: SUN 1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+-10000.0 A1: SUN 3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
--10000.0 A1: EARTH 0 0.810058 -0.553762 -0.240106 0.010034 0.012571 0.005451
+-10000.0 A1: EARTH 3 0.810058 -0.553762 -0.240106 17.374036 21.766877 9.439017
--10000.0 A1: EARTH 1 0.810068 -0.557535 -0.241757 0.010040 0.012573 0.005452
+-10000.0 A1: EARTH 3 0.810068 -0.557535 -0.241757 17.383783 21.769425 9.439914
- 0.0 A1: SUN 0 -0.007138 -0.002644 -0.000921 0.000005 -0.000007 -0.000003
+ 0.0 A1: SUN 3 -0.007138 -0.002644 -0.000921 0.009234 -0.011779 -0.005287
- 0.0 A1: SUN 1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+ 0.0 A1: SUN 3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
- 0.0 A1: EARTH 0 -0.184271 0.884782 0.383824 -0.017202 -0.002904 -0.001259
+ 0.0 A1: EARTH 3 -0.184271 0.884782 0.383824 -29.784950 -5.028997 -2.180527
- 0.0 A1: EARTH 1 -0.177134 0.887425 0.384746 -0.017208 -0.002898 -0.001256
+ 0.0 A1: EARTH 3 -0.177134 0.887425 0.384746 -29.794184 -5.017218 -2.175240
- 10000.0 A1: SUN 0 -0.000010 -0.004018 -0.001669 0.000005 0.000004 0.000002
+ 10000.0 A1: SUN 3 -0.000010 -0.004018 -0.001669 0.007845 0.006630 0.002675
- 10000.0 A1: SUN 1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+ 10000.0 A1: SUN 3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
- 10000.0 A1: EARTH 0 -0.537235 -0.790493 -0.342586 0.014297 -0.008434 -0.003656
+ 10000.0 A1: EARTH 3 -0.537235 -0.790493 -0.342586 24.755316 -14.602263 -6.330115
- 10000.0 A1: EARTH 1 -0.537226 -0.786475 -0.340917 0.014293 -0.008437 -0.003657
+ 10000.0 A1: EARTH 3 -0.537226 -0.786475 -0.340917 24.747471 -14.608892 -6.332790
- 10000.0 A1: SUN 0 -0.000010 -0.004018 -0.001669 0.000005 0.000004 0.000002
+ 10000.0 A1: SUN 3 -0.000010 -0.004018 -0.001669 0.007845 0.006630 0.002675
- 10000.0 A1: SUN 1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
+ 10000.0 A1: SUN 3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
- 10000.0 A1: EARTH 0 -0.537235 -0.790493 -0.342586 0.014297 -0.008434 -0.003656
+ 10000.0 A1: EARTH 3 -0.537235 -0.790493 -0.342586 24.755316 -14.602263 -6.330115
- 10000.0 A1: EARTH 1 -0.537226 -0.786475 -0.340917 0.014293 -0.008437 -0.003657
+ 10000.0 A1: EARTH 3 -0.537226 -0.786475 -0.340917 24.747471 -14.608892 -6.332790
diff --git a/test/reference/equ2ecl.out b/test/reference/equ2ecl.out
index 2964bd56..26133d2c 100644
--- a/test/reference/equ2ecl.out
+++ b/test/reference/equ2ecl.out
@@ -1,7 +1,7 @@
-10000.0 22+20 S2 O0 A0: mean 340.074726 30.046968
--10000.0 22+20 S2 O0 A0: true 340.075338 30.047352
+-10000.0 22+20 S2 O0 A0: true 340.075337 30.047351
-10000.0 22+20 S2 O0 A0: gcrs 340.072793 30.045749
@@ -13,13 +13,13 @@
0.0 22+20 S2 O0 A0: mean 340.072789 30.045754
- 0.0 22+20 S2 O0 A0: true 340.071918 30.045208
+ 0.0 22+20 S2 O0 A0: true 340.071917 30.045208
0.0 22+20 S2 O0 A0: gcrs 340.072793 30.045749
0.0 16-20 S2 O0 A0: mean 241.974181 0.567960
- 0.0 16-20 S2 O0 A0: true 241.974188 0.566546
+ 0.0 16-20 S2 O0 A0: true 241.974188 0.566545
0.0 16-20 S2 O0 A0: gcrs 241.974183 0.567964
@@ -31,7 +31,7 @@
10000.0 16-20 S2 O0 A0: mean 241.974197 0.564815
- 10000.0 16-20 S2 O0 A0: true 241.974189 0.566360
+ 10000.0 16-20 S2 O0 A0: true 241.974189 0.566359
10000.0 16-20 S2 O0 A0: gcrs 241.974183 0.567964
@@ -43,13 +43,13 @@
10000.0 16-20 S2 O0 A0: mean 241.974197 0.564815
- 10000.0 16-20 S2 O0 A0: true 241.974189 0.566360
+ 10000.0 16-20 S2 O0 A0: true 241.974189 0.566359
10000.0 16-20 S2 O0 A0: gcrs 241.974183 0.567964
-10000.0 22+20 S2 O0 A1: mean 340.074726 30.046968
--10000.0 22+20 S2 O0 A1: true 340.075338 30.047352
+-10000.0 22+20 S2 O0 A1: true 340.075337 30.047351
-10000.0 22+20 S2 O0 A1: gcrs 340.072793 30.045749
@@ -61,13 +61,13 @@
0.0 22+20 S2 O0 A1: mean 340.072789 30.045754
- 0.0 22+20 S2 O0 A1: true 340.071918 30.045208
+ 0.0 22+20 S2 O0 A1: true 340.071917 30.045208
0.0 22+20 S2 O0 A1: gcrs 340.072793 30.045749
0.0 16-20 S2 O0 A1: mean 241.974181 0.567960
- 0.0 16-20 S2 O0 A1: true 241.974188 0.566546
+ 0.0 16-20 S2 O0 A1: true 241.974188 0.566545
0.0 16-20 S2 O0 A1: gcrs 241.974183 0.567964
@@ -79,7 +79,7 @@
10000.0 16-20 S2 O0 A1: mean 241.974197 0.564815
- 10000.0 16-20 S2 O0 A1: true 241.974189 0.566360
+ 10000.0 16-20 S2 O0 A1: true 241.974189 0.566359
10000.0 16-20 S2 O0 A1: gcrs 241.974183 0.567964
@@ -91,6 +91,6 @@
10000.0 16-20 S2 O0 A1: mean 241.974197 0.564815
- 10000.0 16-20 S2 O0 A1: true 241.974189 0.566360
+ 10000.0 16-20 S2 O0 A1: true 241.974189 0.566359
10000.0 16-20 S2 O0 A1: gcrs 241.974183 0.567964
diff --git a/test/reference/equ2hor-refract.out b/test/reference/equ2hor-refract.out
index 7aa21d37..c9bf1fd0 100644
--- a/test/reference/equ2hor-refract.out
+++ b/test/reference/equ2hor-refract.out
@@ -1,32 +1,32 @@
--10000.0 22+20 S2 O1 A0: 135.019352 331.536702 22.000000 20.000000
+-10000.0 22+20 S2 O1 A0: 135.019352 331.536703 22.000000 20.000000
-10000.0 16-20 S2 O1 A0: 115.693174 103.225975 16.000000 -20.000000
- 0.0 22+20 S2 O1 A0: 60.200403 77.812648 21.998001 20.006084
+ 0.0 22+20 S2 O1 A0: 60.200402 77.812648 21.998001 20.006084
- 0.0 16-20 S2 O1 A0: 47.114316 213.442327 16.000697 -19.985117
+ 0.0 16-20 S2 O1 A0: 47.114316 213.442328 16.000697 -19.985117
- 10000.0 22+20 S2 O1 A0: 66.958900 283.939459 22.002662 20.009308
+ 10000.0 22+20 S2 O1 A0: 66.958900 283.939460 22.002662 20.009308
10000.0 16-20 S2 O1 A0: 163.034601 266.888368 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A0: 66.958900 283.939459 22.002662 20.009308
+ 10000.0 22+20 S2 O1 A0: 66.958900 283.939460 22.002662 20.009308
10000.0 16-20 S2 O1 A0: 163.034601 266.888368 16.000000 -20.000000
--10000.0 22+20 S2 O1 A1: 135.019352 331.536702 22.000000 20.000000
+-10000.0 22+20 S2 O1 A1: 135.019352 331.536703 22.000000 20.000000
-10000.0 16-20 S2 O1 A1: 115.693174 103.225975 16.000000 -20.000000
- 0.0 22+20 S2 O1 A1: 60.200403 77.812648 21.998001 20.006084
+ 0.0 22+20 S2 O1 A1: 60.200402 77.812648 21.998001 20.006084
- 0.0 16-20 S2 O1 A1: 47.114316 213.442327 16.000697 -19.985117
+ 0.0 16-20 S2 O1 A1: 47.114316 213.442328 16.000697 -19.985117
- 10000.0 22+20 S2 O1 A1: 66.958900 283.939459 22.002662 20.009308
+ 10000.0 22+20 S2 O1 A1: 66.958900 283.939460 22.002662 20.009308
10000.0 16-20 S2 O1 A1: 163.034601 266.888368 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A1: 66.958900 283.939459 22.002662 20.009308
+ 10000.0 22+20 S2 O1 A1: 66.958900 283.939460 22.002662 20.009308
10000.0 16-20 S2 O1 A1: 163.034601 266.888368 16.000000 -20.000000
diff --git a/test/reference/equ2hor.out b/test/reference/equ2hor.out
index 11bf1f89..88452252 100644
--- a/test/reference/equ2hor.out
+++ b/test/reference/equ2hor.out
@@ -1,32 +1,32 @@
--10000.0 22+20 S2 O1 A0: 135.019352 331.536702 22.000000 20.000000
+-10000.0 22+20 S2 O1 A0: 135.019352 331.536703 22.000000 20.000000
-10000.0 16-20 S2 O1 A0: 115.693174 103.225975 16.000000 -20.000000
- 0.0 22+20 S2 O1 A0: 60.229235 77.812648 22.000000 20.000000
+ 0.0 22+20 S2 O1 A0: 60.229234 77.812648 22.000000 20.000000
- 0.0 16-20 S2 O1 A0: 47.132151 213.442327 16.000000 -20.000000
+ 0.0 16-20 S2 O1 A0: 47.132152 213.442328 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A0: 66.997559 283.939459 22.000000 20.000000
+ 10000.0 22+20 S2 O1 A0: 66.997559 283.939460 22.000000 20.000000
10000.0 16-20 S2 O1 A0: 163.034601 266.888368 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A0: 66.997559 283.939459 22.000000 20.000000
+ 10000.0 22+20 S2 O1 A0: 66.997559 283.939460 22.000000 20.000000
10000.0 16-20 S2 O1 A0: 163.034601 266.888368 16.000000 -20.000000
--10000.0 22+20 S2 O1 A1: 135.019352 331.536702 22.000000 20.000000
+-10000.0 22+20 S2 O1 A1: 135.019352 331.536703 22.000000 20.000000
-10000.0 16-20 S2 O1 A1: 115.693174 103.225975 16.000000 -20.000000
- 0.0 22+20 S2 O1 A1: 60.229235 77.812648 22.000000 20.000000
+ 0.0 22+20 S2 O1 A1: 60.229234 77.812648 22.000000 20.000000
- 0.0 16-20 S2 O1 A1: 47.132151 213.442327 16.000000 -20.000000
+ 0.0 16-20 S2 O1 A1: 47.132152 213.442328 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A1: 66.997559 283.939459 22.000000 20.000000
+ 10000.0 22+20 S2 O1 A1: 66.997559 283.939460 22.000000 20.000000
10000.0 16-20 S2 O1 A1: 163.034601 266.888368 16.000000 -20.000000
- 10000.0 22+20 S2 O1 A1: 66.997559 283.939459 22.000000 20.000000
+ 10000.0 22+20 S2 O1 A1: 66.997559 283.939460 22.000000 20.000000
10000.0 16-20 S2 O1 A1: 163.034601 266.888368 16.000000 -20.000000
diff --git a/test/reference/gcrs2equ.out b/test/reference/gcrs2equ.out
index 78eeb48a..fd8d3360 100644
--- a/test/reference/gcrs2equ.out
+++ b/test/reference/gcrs2equ.out
@@ -7,9 +7,9 @@
0.0 16-20 S2 O0 A0: mean 16.000000 -19.999996
- 0.0 16-20 S2 O0 A0: true 15.999751 -19.997839
+ 0.0 16-20 S2 O0 A0: true 15.999751 -19.997838
- 0.0 16-20 S2 O0 A0: cirs 15.999987 -19.997839
+ 0.0 16-20 S2 O0 A0: cirs 15.999987 -19.997838
0.0 22+20 S2 O0 A1: mean 22.000000 19.999997
@@ -19,6 +19,6 @@
0.0 16-20 S2 O0 A1: mean 16.000000 -19.999996
- 0.0 16-20 S2 O0 A1: true 15.999751 -19.997839
+ 0.0 16-20 S2 O0 A1: true 15.999751 -19.997838
- 0.0 16-20 S2 O0 A1: cirs 15.999987 -19.997839
+ 0.0 16-20 S2 O0 A1: cirs 15.999987 -19.997838
diff --git a/test/reference/ira_equinox.out b/test/reference/ira_equinox.out
index d19ea41f..fd7fb595 100644
--- a/test/reference/ira_equinox.out
+++ b/test/reference/ira_equinox.out
@@ -1,8 +1,8 @@
-10000.0 A0: 0.023381867 0.023103017
- 0.0 A0: -0.000000269 0.000236437
- 10000.0 A0: -0.023386268 -0.023566351
- 10000.0 A0: -0.023386268 -0.023566351
--10000.0 A1: 0.023381867 0.023103051
- 0.0 A1: -0.000000269 0.000236436
- 10000.0 A1: -0.023386268 -0.023566351
- 10000.0 A1: -0.023386268 -0.023566351
+ 0.0 A0: -0.000000269 0.000236403
+ 10000.0 A0: -0.023386268 -0.023566385
+ 10000.0 A0: -0.023386268 -0.023566385
+-10000.0 A1: 0.023381867 0.023103017
+ 0.0 A1: -0.000000269 0.000236402
+ 10000.0 A1: -0.023386268 -0.023566385
+ 10000.0 A1: -0.023386268 -0.023566385
diff --git a/test/reference/mean_obliq.out b/test/reference/mean_obliq.out
new file mode 100644
index 00000000..80500414
--- /dev/null
+++ b/test/reference/mean_obliq.out
@@ -0,0 +1,8 @@
+-10000.0 A0: 84394.229154
+ 0.0 A0: 84381.406000
+ 10000.0 A0: 84368.582819
+ 10000.0 A0: 84368.582819
+-10000.0 A1: 84394.229154
+ 0.0 A1: 84381.406000
+ 10000.0 A1: 84368.582819
+ 10000.0 A1: 84368.582819
diff --git a/test/reference/nutation.out b/test/reference/nutation.out
index 3314256a..de7bdbef 100644
--- a/test/reference/nutation.out
+++ b/test/reference/nutation.out
@@ -1,7 +1,7 @@
-10000.0 A0: -nan -nan -nan
- 0.0 A0: 0.801841284 -0.548228769 -0.237688393
- 10000.0 A0: -0.187719734 0.901076194 0.390925817
- 10000.0 A0: -0.529087733 -0.778583184 -0.337452805
+ 0.0 A0: 0.801841322 -0.548228726 -0.237688365
+ 10000.0 A0: -0.187719744 0.901076198 0.390925803
+ 10000.0 A0: -0.529087777 -0.778583164 -0.337452783
-10000.0 A1: -0.529064 -0.778601 -0.337450
0.0 A1: 0.801841 -0.548229 -0.237688
10000.0 A1: -0.187720 0.901076 0.390926
diff --git a/test/reference/nutation_angles.out b/test/reference/nutation_angles.out
index 7e00529b..9e01865b 100644
--- a/test/reference/nutation_angles.out
+++ b/test/reference/nutation_angles.out
@@ -1,11 +1,11 @@
-10000.0 A0: current 16.415313 4.048559
-10000.0 A0: future 11.440040 -6.849537
- 0.0 A0: current -13.931997 -5.769398
+ 0.0 A0: current -13.931996 -5.769398
0.0 A0: future -15.177080 6.266940
10000.0 A0: current 10.602901 6.295105
- 10000.0 A0: future 18.241196 -4.067556
+ 10000.0 A0: future 18.241195 -4.067556
10000.0 A0: current 10.602901 6.295105
- 10000.0 A0: future 18.241196 -4.067556
+ 10000.0 A0: future 18.241195 -4.067556
-10000.0 A1: current 16.415324 4.048553
-10000.0 A1: future 11.440054 -6.849539
0.0 A1: current -13.931977 -5.769410
diff --git a/test/reference/place.out b/test/reference/place.out
index 179943e3..5cd5c304 100644
--- a/test/reference/place.out
+++ b/test/reference/place.out
@@ -383,77 +383,77 @@
10000.0 EARTH S0 O2 A0: ERROR 23
--10000.0 22+20 S2 O0 A1: 0 22.000372 20.001439 0.000000 2.852877
+-10000.0 22+20 S2 O0 A1: 0 22.0004 20.001 0.000 2.9
--10000.0 22+20 S2 O0 A1: 1 21.979075 19.870632 0.000000 2.852877
+-10000.0 22+20 S2 O0 A1: 1 21.9791 19.871 0.000 2.9
--10000.0 22+20 S2 O0 A1: 2 22.002178 19.870505 0.000000 2.852877
+-10000.0 22+20 S2 O0 A1: 2 22.0022 19.871 0.000 2.9
--10000.0 22+20 S2 O0 A1: 3 21.999998 20.000016 0.000000 2.855377
+-10000.0 22+20 S2 O0 A1: 3 22.0000 20.000 0.000 2.9
--10000.0 22+20 S2 O1 A1: 0 22.000366 20.001449 0.000000 2.999982
+-10000.0 22+20 S2 O1 A1: 0 22.0004 20.001 0.000 3.0
--10000.0 22+20 S2 O1 A1: 1 21.979069 19.870642 0.000000 2.999982
+-10000.0 22+20 S2 O1 A1: 1 21.9791 19.871 0.000 3.0
--10000.0 22+20 S2 O1 A1: 2 22.002172 19.870515 0.000000 2.999982
+-10000.0 22+20 S2 O1 A1: 2 22.0022 19.871 0.000 3.0
--10000.0 22+20 S2 O1 A1: 3 21.999998 20.000016 0.000000 3.002415
+-10000.0 22+20 S2 O1 A1: 3 22.0000 20.000 0.000 3.0
--10000.0 22+20 S2 O2 A1: 0 22.000440 20.000879 0.000000 -5.266740
+-10000.0 22+20 S2 O2 A1: 0 22.0004 20.001 0.000 -5.3
--10000.0 22+20 S2 O2 A1: 1 21.979143 19.870070 0.000000 -5.266740
+-10000.0 22+20 S2 O2 A1: 1 21.9791 19.870 0.000 -5.3
--10000.0 22+20 S2 O2 A1: 2 22.002246 19.869943 0.000000 -5.266740
+-10000.0 22+20 S2 O2 A1: 2 22.0022 19.870 0.000 -5.3
--10000.0 22+20 S2 O2 A1: 3 21.999998 20.000016 0.000000 -5.263409
+-10000.0 22+20 S2 O2 A1: 3 22.0000 20.000 0.000 -5.3
--10000.0 16-20 S2 O0 A1: 0 16.000055 -20.000090 0.000000 39.104711
+-10000.0 16-20 S2 O0 A1: 0 16.0001 -20.000 0.000 39.1
--10000.0 16-20 S2 O0 A1: 1 15.973786 -19.925304 0.000000 39.104711
+-10000.0 16-20 S2 O0 A1: 1 15.9738 -19.925 0.000 39.1
--10000.0 16-20 S2 O0 A1: 2 15.996889 -19.925177 0.000000 39.104711
+-10000.0 16-20 S2 O0 A1: 2 15.9969 -19.925 0.000 39.1
--10000.0 16-20 S2 O0 A1: 3 15.999998 -19.999985 0.000000 39.104727
+-10000.0 16-20 S2 O0 A1: 3 16.0000 -20.000 0.000 39.1
--10000.0 16-20 S2 O1 A1: 0 16.000053 -20.000063 0.000000 38.720460
+-10000.0 16-20 S2 O1 A1: 0 16.0001 -20.000 0.000 38.7
--10000.0 16-20 S2 O1 A1: 1 15.973784 -19.925277 0.000000 38.720460
+-10000.0 16-20 S2 O1 A1: 1 15.9738 -19.925 0.000 38.7
--10000.0 16-20 S2 O1 A1: 2 15.996887 -19.925150 0.000000 38.720460
+-10000.0 16-20 S2 O1 A1: 2 15.9969 -19.925 0.000 38.7
--10000.0 16-20 S2 O1 A1: 3 15.999998 -19.999985 0.000000 38.720473
+-10000.0 16-20 S2 O1 A1: 3 16.0000 -20.000 0.000 38.7
--10000.0 16-20 S2 O2 A1: 0 16.000172 -20.000415 0.000000 43.861283
+-10000.0 16-20 S2 O2 A1: 0 16.0002 -20.000 0.000 43.9
--10000.0 16-20 S2 O2 A1: 1 15.973903 -19.925633 0.000000 43.861283
+-10000.0 16-20 S2 O2 A1: 1 15.9739 -19.926 0.000 43.9
--10000.0 16-20 S2 O2 A1: 2 15.997006 -19.925506 0.000000 43.861283
+-10000.0 16-20 S2 O2 A1: 2 15.9970 -19.926 0.000 43.9
--10000.0 16-20 S2 O2 A1: 3 15.999998 -19.999985 0.000000 43.861710
+-10000.0 16-20 S2 O2 A1: 3 16.0000 -20.000 0.000 43.9
--10000.0 SUN S0 O0 A1: 0 9.697103 13.813577 1.012670 -0.337444
+-10000.0 SUN S0 O0 A1: 0 9.6971 13.814 1.013 -0.3
--10000.0 SUN S0 O0 A1: 1 9.672602 13.938013 1.012670 -0.337444
+-10000.0 SUN S0 O0 A1: 1 9.6726 13.938 1.013 -0.3
--10000.0 SUN S0 O0 A1: 2 9.695706 13.937921 1.012670 -0.337444
+-10000.0 SUN S0 O0 A1: 2 9.6957 13.938 1.013 -0.3
--10000.0 SUN S0 O0 A1: 3 9.697468 13.811736 1.012670 -0.334559
+-10000.0 SUN S0 O0 A1: 3 9.6975 13.812 1.013 -0.3
--10000.0 SUN S0 O1 A1: 0 9.697153 13.813299 1.012629 -0.456936
+-10000.0 SUN S0 O1 A1: 0 9.6972 13.813 1.013 -0.5
--10000.0 SUN S0 O1 A1: 1 9.672652 13.937735 1.012629 -0.456936
+-10000.0 SUN S0 O1 A1: 1 9.6727 13.938 1.013 -0.5
--10000.0 SUN S0 O1 A1: 2 9.695755 13.937643 1.012629 -0.456936
+-10000.0 SUN S0 O1 A1: 2 9.6958 13.938 1.013 -0.5
--10000.0 SUN S0 O1 A1: 3 9.697512 13.811463 1.012629 -0.454130
+-10000.0 SUN S0 O1 A1: 3 9.6975 13.811 1.013 -0.5
--10000.0 SUN S0 O2 A1: 0 9.697030 13.813947 1.012671 7.620279
+-10000.0 SUN S0 O2 A1: 0 9.6970 13.814 1.013 7.6
--10000.0 SUN S0 O2 A1: 1 9.672529 13.938381 1.012671 7.620279
+-10000.0 SUN S0 O2 A1: 1 9.6725 13.938 1.013 7.6
--10000.0 SUN S0 O2 A1: 2 9.695633 13.938289 1.012671 7.620279
+-10000.0 SUN S0 O2 A1: 2 9.6956 13.938 1.013 7.6
--10000.0 SUN S0 O2 A1: 3 9.697470 13.811726 1.012671 7.624474
+-10000.0 SUN S0 O2 A1: 3 9.6975 13.812 1.013 7.6
-10000.0 EARTH S0 O0 A1: ERROR 3
@@ -471,85 +471,85 @@
-10000.0 EARTH S0 O1 A1: ERROR 3
--10000.0 EARTH S0 O2 A1: 0 13.136720 -5.615284 0.000001 10.250465
+-10000.0 EARTH S0 O2 A1: 0 13.1367 -5.615 0.000 9.5
--10000.0 EARTH S0 O2 A1: 1 13.113327 -5.471472 0.000001 10.250465
+-10000.0 EARTH S0 O2 A1: 1 13.1133 -5.471 0.000 9.5
--10000.0 EARTH S0 O2 A1: 2 13.136430 -5.471434 0.000001 10.250465
+-10000.0 EARTH S0 O2 A1: 2 13.1364 -5.471 0.000 9.5
--10000.0 EARTH S0 O2 A1: 3 13.136884 -5.616475 0.000001 10.250323
+-10000.0 EARTH S0 O2 A1: 3 13.1369 -5.616 0.000 9.5
- 0.0 22+20 S2 O0 A1: 0 21.999739 20.001131 0.000000 32.618201
+ 0.0 22+20 S2 O0 A1: 0 21.9997 20.001 0.000 32.6
- 0.0 22+20 S2 O0 A1: 1 21.999555 20.000595 0.000000 32.618201
+ 0.0 22+20 S2 O0 A1: 1 21.9996 20.001 0.000 32.6
- 0.0 22+20 S2 O0 A1: 2 21.999791 20.000595 0.000000 32.618201
+ 0.0 22+20 S2 O0 A1: 2 21.9998 20.001 0.000 32.6
- 0.0 22+20 S2 O0 A1: 3 22.000000 19.999999 0.000000 32.619774
+ 0.0 22+20 S2 O0 A1: 3 22.0000 20.000 0.000 32.6
- 0.0 22+20 S2 O1 A1: 0 21.999742 20.001105 0.000000 32.246157
+ 0.0 22+20 S2 O1 A1: 0 21.9997 20.001 0.000 32.2
- 0.0 22+20 S2 O1 A1: 1 21.999558 20.000569 0.000000 32.246157
+ 0.0 22+20 S2 O1 A1: 1 21.9996 20.001 0.000 32.2
- 0.0 22+20 S2 O1 A1: 2 21.999794 20.000569 0.000000 32.246157
+ 0.0 22+20 S2 O1 A1: 2 21.9998 20.001 0.000 32.2
- 0.0 22+20 S2 O1 A1: 3 22.000000 19.999999 0.000000 32.247698
+ 0.0 22+20 S2 O1 A1: 3 22.0000 20.000 0.000 32.2
- 0.0 22+20 S2 O2 A1: 0 21.999807 20.000564 0.000000 24.480685
+ 0.0 22+20 S2 O2 A1: 0 21.9998 20.001 0.000 24.5
- 0.0 22+20 S2 O2 A1: 1 21.999623 20.000029 0.000000 24.480685
+ 0.0 22+20 S2 O2 A1: 1 21.9996 20.000 0.000 24.5
- 0.0 22+20 S2 O2 A1: 2 21.999859 20.000029 0.000000 24.480685
+ 0.0 22+20 S2 O2 A1: 2 21.9999 20.000 0.000 24.5
- 0.0 22+20 S2 O2 A1: 3 22.000000 19.999999 0.000000 24.481544
+ 0.0 22+20 S2 O2 A1: 3 22.0000 20.000 0.000 24.5
- 0.0 16-20 S2 O0 A1: 0 15.999684 -19.999133 0.000000 -8.838830
+ 0.0 16-20 S2 O0 A1: 0 15.9997 -19.999 0.000 -8.8
- 0.0 16-20 S2 O0 A1: 1 15.999435 -19.996972 0.000000 -8.838830
+ 0.0 16-20 S2 O0 A1: 1 15.9994 -19.997 0.000 -8.8
- 0.0 16-20 S2 O0 A1: 2 15.999671 -19.996972 0.000000 -8.838830
+ 0.0 16-20 S2 O0 A1: 2 15.9997 -19.997 0.000 -8.8
- 0.0 16-20 S2 O0 A1: 3 16.000000 -20.000000 0.000000 -8.836703
+ 0.0 16-20 S2 O0 A1: 3 16.0000 -20.000 0.000 -8.8
- 0.0 16-20 S2 O1 A1: 0 15.999690 -19.999145 0.000000 -8.664187
+ 0.0 16-20 S2 O1 A1: 0 15.9997 -19.999 0.000 -8.7
- 0.0 16-20 S2 O1 A1: 1 15.999440 -19.996984 0.000000 -8.664187
+ 0.0 16-20 S2 O1 A1: 1 15.9994 -19.997 0.000 -8.7
- 0.0 16-20 S2 O1 A1: 2 15.999677 -19.996984 0.000000 -8.664187
+ 0.0 16-20 S2 O1 A1: 2 15.9997 -19.997 0.000 -8.7
- 0.0 16-20 S2 O1 A1: 3 16.000000 -20.000000 0.000000 -8.662127
+ 0.0 16-20 S2 O1 A1: 3 16.0000 -20.000 0.000 -8.7
- 0.0 16-20 S2 O2 A1: 0 15.999802 -19.999460 0.000000 -4.138074
+ 0.0 16-20 S2 O2 A1: 0 15.9998 -19.999 0.000 -4.1
- 0.0 16-20 S2 O2 A1: 1 15.999552 -19.997299 0.000000 -4.138074
+ 0.0 16-20 S2 O2 A1: 1 15.9996 -19.997 0.000 -4.1
- 0.0 16-20 S2 O2 A1: 2 15.999789 -19.997299 0.000000 -4.138074
+ 0.0 16-20 S2 O2 A1: 2 15.9998 -19.997 0.000 -4.1
- 0.0 16-20 S2 O2 A1: 3 16.000000 -20.000000 0.000000 -4.137177
+ 0.0 16-20 S2 O2 A1: 3 16.0000 -20.000 0.000 -4.1
- 0.0 SUN S0 O0 A1: 0 18.752123 -23.033991 0.983326 -0.016550
+ 0.0 SUN S0 O0 A1: 0 18.7521 -23.034 0.983 -0.0
- 0.0 SUN S0 O0 A1: 1 18.751835 -23.032720 0.983326 -0.016550
+ 0.0 SUN S0 O0 A1: 1 18.7518 -23.033 0.983 -0.0
- 0.0 SUN S0 O0 A1: 2 18.752072 -23.032720 0.983326 -0.016550
+ 0.0 SUN S0 O0 A1: 2 18.7521 -23.033 0.983 -0.0
- 0.0 SUN S0 O0 A1: 3 18.752541 -23.033540 0.983326 -0.013490
+ 0.0 SUN S0 O0 A1: 3 18.7525 -23.034 0.983 -0.0
- 0.0 SUN S0 O1 A1: 0 18.752176 -23.035637 0.983296 -0.128045
+ 0.0 SUN S0 O1 A1: 0 18.7522 -23.036 0.983 -0.1
- 0.0 SUN S0 O1 A1: 1 18.751888 -23.034366 0.983296 -0.128045
+ 0.0 SUN S0 O1 A1: 1 18.7519 -23.034 0.983 -0.1
- 0.0 SUN S0 O1 A1: 2 18.752124 -23.034366 0.983296 -0.128045
+ 0.0 SUN S0 O1 A1: 2 18.7521 -23.034 0.983 -0.1
- 0.0 SUN S0 O1 A1: 3 18.752588 -23.035195 0.983296 -0.125070
+ 0.0 SUN S0 O1 A1: 3 18.7526 -23.035 0.983 -0.1
- 0.0 SUN S0 O2 A1: 0 18.752257 -23.033846 0.983326 -1.814770
+ 0.0 SUN S0 O2 A1: 0 18.7523 -23.034 0.983 -1.8
- 0.0 SUN S0 O2 A1: 1 18.751968 -23.032576 0.983326 -1.814770
+ 0.0 SUN S0 O2 A1: 1 18.7520 -23.033 0.983 -1.8
- 0.0 SUN S0 O2 A1: 2 18.752205 -23.032576 0.983326 -1.814770
+ 0.0 SUN S0 O2 A1: 2 18.7522 -23.033 0.983 -1.8
- 0.0 SUN S0 O2 A1: 3 18.752538 -23.033542 0.983326 -1.813377
+ 0.0 SUN S0 O2 A1: 3 18.7525 -23.034 0.983 -1.8
0.0 EARTH S0 O0 A1: ERROR 3
@@ -567,85 +567,85 @@
0.0 EARTH S0 O1 A1: ERROR 3
- 0.0 EARTH S0 O2 A1: 0 13.113552 -5.473375 0.000001 9.917766
+ 0.0 EARTH S0 O2 A1: 0 13.1136 -5.473 0.000 9.5
- 0.0 EARTH S0 O2 A1: 1 13.113322 -5.471435 0.000001 9.917766
+ 0.0 EARTH S0 O2 A1: 1 13.1133 -5.471 0.000 9.5
- 0.0 EARTH S0 O2 A1: 2 13.113559 -5.471435 0.000001 9.917766
+ 0.0 EARTH S0 O2 A1: 2 13.1136 -5.471 0.000 9.5
- 0.0 EARTH S0 O2 A1: 3 13.113563 -5.473332 0.000001 9.917759
+ 0.0 EARTH S0 O2 A1: 3 13.1136 -5.473 0.000 9.5
- 10000.0 22+20 S2 O0 A1: 0 21.999998 19.996969 0.000000 -14.845488
+ 10000.0 22+20 S2 O0 A1: 0 22.0000 19.997 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 1 22.021667 20.129326 0.000000 -14.845488
+ 10000.0 22+20 S2 O0 A1: 1 22.0217 20.129 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 2 21.998100 20.129194 0.000000 -14.845488
+ 10000.0 22+20 S2 O0 A1: 2 21.9981 20.129 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 3 22.000002 19.999985 0.000000 -14.844754
+ 10000.0 22+20 S2 O0 A1: 3 22.0000 20.000 0.000 -14.8
- 10000.0 22+20 S2 O1 A1: 0 22.000000 19.996997 0.000000 -14.456800
+ 10000.0 22+20 S2 O1 A1: 0 22.0000 19.997 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 1 22.021669 20.129353 0.000000 -14.456800
+ 10000.0 22+20 S2 O1 A1: 1 22.0217 20.129 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 2 21.998102 20.129221 0.000000 -14.456800
+ 10000.0 22+20 S2 O1 A1: 2 21.9981 20.129 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 3 22.000002 19.999985 0.000000 -14.456082
+ 10000.0 22+20 S2 O1 A1: 3 22.0000 20.000 0.000 -14.5
- 10000.0 22+20 S2 O2 A1: 0 22.000065 19.996396 0.000000 -23.003150
+ 10000.0 22+20 S2 O2 A1: 0 22.0001 19.996 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 1 22.021734 20.128754 0.000000 -23.003150
+ 10000.0 22+20 S2 O2 A1: 1 22.0217 20.129 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 2 21.998168 20.128622 0.000000 -23.003150
+ 10000.0 22+20 S2 O2 A1: 2 21.9982 20.129 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 3 22.000002 19.999985 0.000000 -23.002064
+ 10000.0 22+20 S2 O2 A1: 3 22.0000 20.000 0.000 -23.0
- 10000.0 16-20 S2 O0 A1: 0 16.000391 -20.001134 0.000000 7.575879
+ 10000.0 16-20 S2 O0 A1: 0 16.0004 -20.001 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 1 16.027178 -20.078961 0.000000 7.575879
+ 10000.0 16-20 S2 O0 A1: 1 16.0272 -20.079 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 2 16.003611 -20.078829 0.000000 7.575879
+ 10000.0 16-20 S2 O0 A1: 2 16.0036 -20.079 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 3 16.000002 -20.000015 0.000000 7.578439
+ 10000.0 16-20 S2 O0 A1: 3 16.0000 -20.000 0.000 7.6
- 10000.0 16-20 S2 O1 A1: 0 16.000386 -20.001143 0.000000 7.707806
+ 10000.0 16-20 S2 O1 A1: 0 16.0004 -20.001 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 1 16.027172 -20.078970 0.000000 7.707806
+ 10000.0 16-20 S2 O1 A1: 1 16.0272 -20.079 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 2 16.003606 -20.078838 0.000000 7.707806
+ 10000.0 16-20 S2 O1 A1: 2 16.0036 -20.079 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 3 16.000002 -20.000015 0.000000 7.710293
+ 10000.0 16-20 S2 O1 A1: 3 16.0000 -20.000 0.000 7.7
- 10000.0 16-20 S2 O2 A1: 0 16.000509 -20.001463 0.000000 12.212109
+ 10000.0 16-20 S2 O2 A1: 0 16.0005 -20.001 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 1 16.027296 -20.079285 0.000000 12.212109
+ 10000.0 16-20 S2 O2 A1: 1 16.0273 -20.079 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 2 16.003729 -20.079153 0.000000 12.212109
+ 10000.0 16-20 S2 O2 A1: 2 16.0037 -20.079 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 3 16.000002 -20.000015 0.000000 12.216571
+ 10000.0 16-20 S2 O2 A1: 3 16.0000 -20.000 0.000 12.2
- 10000.0 SUN S0 O0 A1: 0 3.710532 19.692978 1.011622 0.345113
+ 10000.0 SUN S0 O0 A1: 0 3.7105 19.693 1.012 0.3
- 10000.0 SUN S0 O0 A1: 1 3.737115 19.780623 1.011622 0.345113
+ 10000.0 SUN S0 O0 A1: 1 3.7371 19.781 1.012 0.3
- 10000.0 SUN S0 O0 A1: 2 3.713549 19.780492 1.011622 0.345113
+ 10000.0 SUN S0 O0 A1: 2 3.7135 19.780 1.012 0.3
- 10000.0 SUN S0 O0 A1: 3 3.710920 19.694240 1.011622 0.348002
+ 10000.0 SUN S0 O0 A1: 3 3.7109 19.694 1.012 0.3
- 10000.0 SUN S0 O1 A1: 0 3.710578 19.692945 1.011581 0.242886
+ 10000.0 SUN S0 O1 A1: 0 3.7106 19.693 1.012 0.2
- 10000.0 SUN S0 O1 A1: 1 3.737161 19.780588 1.011581 0.242886
+ 10000.0 SUN S0 O1 A1: 1 3.7372 19.781 1.012 0.2
- 10000.0 SUN S0 O1 A1: 2 3.713595 19.780457 1.011581 0.242886
+ 10000.0 SUN S0 O1 A1: 2 3.7136 19.780 1.012 0.2
- 10000.0 SUN S0 O1 A1: 3 3.710960 19.694213 1.011581 0.245695
+ 10000.0 SUN S0 O1 A1: 3 3.7110 19.694 1.012 0.2
- 10000.0 SUN S0 O2 A1: 0 3.710422 19.692620 1.011622 -4.911115
+ 10000.0 SUN S0 O2 A1: 0 3.7104 19.693 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 1 3.737005 19.780268 1.011622 -4.911115
+ 10000.0 SUN S0 O2 A1: 1 3.7370 19.780 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 2 3.713438 19.780138 1.011622 -4.911115
+ 10000.0 SUN S0 O2 A1: 2 3.7134 19.780 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 3 3.710922 19.694247 1.011622 -4.906314
+ 10000.0 SUN S0 O2 A1: 3 3.7109 19.694 1.012 -4.9
10000.0 EARTH S0 O0 A1: ERROR 3
@@ -663,85 +663,85 @@
10000.0 EARTH S0 O1 A1: ERROR 3
- 10000.0 EARTH S0 O2 A1: 0 13.089479 -5.323629 0.000001 10.211847
+ 10000.0 EARTH S0 O2 A1: 0 13.0895 -5.324 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 1 13.113310 -5.471369 0.000001 10.211847
+ 10000.0 EARTH S0 O2 A1: 1 13.1133 -5.471 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 2 13.089744 -5.471330 0.000001 10.211847
+ 10000.0 EARTH S0 O2 A1: 2 13.0897 -5.471 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 3 13.089174 -5.321901 0.000001 10.212103
+ 10000.0 EARTH S0 O2 A1: 3 13.0892 -5.322 0.000 9.5
- 10000.0 22+20 S2 O0 A1: 0 21.999998 19.996969 0.000000 -14.845488
+ 10000.0 22+20 S2 O0 A1: 0 22.0000 19.997 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 1 22.021667 20.129326 0.000000 -14.845488
+ 10000.0 22+20 S2 O0 A1: 1 22.0217 20.129 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 2 21.998100 20.129194 0.000000 -14.845488
+ 10000.0 22+20 S2 O0 A1: 2 21.9981 20.129 0.000 -14.8
- 10000.0 22+20 S2 O0 A1: 3 22.000002 19.999985 0.000000 -14.844754
+ 10000.0 22+20 S2 O0 A1: 3 22.0000 20.000 0.000 -14.8
- 10000.0 22+20 S2 O1 A1: 0 22.000000 19.996997 0.000000 -14.456800
+ 10000.0 22+20 S2 O1 A1: 0 22.0000 19.997 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 1 22.021669 20.129353 0.000000 -14.456800
+ 10000.0 22+20 S2 O1 A1: 1 22.0217 20.129 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 2 21.998102 20.129221 0.000000 -14.456800
+ 10000.0 22+20 S2 O1 A1: 2 21.9981 20.129 0.000 -14.5
- 10000.0 22+20 S2 O1 A1: 3 22.000002 19.999985 0.000000 -14.456082
+ 10000.0 22+20 S2 O1 A1: 3 22.0000 20.000 0.000 -14.5
- 10000.0 22+20 S2 O2 A1: 0 22.000065 19.996396 0.000000 -23.003150
+ 10000.0 22+20 S2 O2 A1: 0 22.0001 19.996 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 1 22.021734 20.128754 0.000000 -23.003150
+ 10000.0 22+20 S2 O2 A1: 1 22.0217 20.129 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 2 21.998168 20.128622 0.000000 -23.003150
+ 10000.0 22+20 S2 O2 A1: 2 21.9982 20.129 0.000 -23.0
- 10000.0 22+20 S2 O2 A1: 3 22.000002 19.999985 0.000000 -23.002064
+ 10000.0 22+20 S2 O2 A1: 3 22.0000 20.000 0.000 -23.0
- 10000.0 16-20 S2 O0 A1: 0 16.000391 -20.001134 0.000000 7.575879
+ 10000.0 16-20 S2 O0 A1: 0 16.0004 -20.001 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 1 16.027178 -20.078961 0.000000 7.575879
+ 10000.0 16-20 S2 O0 A1: 1 16.0272 -20.079 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 2 16.003611 -20.078829 0.000000 7.575879
+ 10000.0 16-20 S2 O0 A1: 2 16.0036 -20.079 0.000 7.6
- 10000.0 16-20 S2 O0 A1: 3 16.000002 -20.000015 0.000000 7.578439
+ 10000.0 16-20 S2 O0 A1: 3 16.0000 -20.000 0.000 7.6
- 10000.0 16-20 S2 O1 A1: 0 16.000386 -20.001143 0.000000 7.707806
+ 10000.0 16-20 S2 O1 A1: 0 16.0004 -20.001 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 1 16.027172 -20.078970 0.000000 7.707806
+ 10000.0 16-20 S2 O1 A1: 1 16.0272 -20.079 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 2 16.003606 -20.078838 0.000000 7.707806
+ 10000.0 16-20 S2 O1 A1: 2 16.0036 -20.079 0.000 7.7
- 10000.0 16-20 S2 O1 A1: 3 16.000002 -20.000015 0.000000 7.710293
+ 10000.0 16-20 S2 O1 A1: 3 16.0000 -20.000 0.000 7.7
- 10000.0 16-20 S2 O2 A1: 0 16.000509 -20.001463 0.000000 12.212109
+ 10000.0 16-20 S2 O2 A1: 0 16.0005 -20.001 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 1 16.027296 -20.079285 0.000000 12.212109
+ 10000.0 16-20 S2 O2 A1: 1 16.0273 -20.079 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 2 16.003729 -20.079153 0.000000 12.212109
+ 10000.0 16-20 S2 O2 A1: 2 16.0037 -20.079 0.000 12.2
- 10000.0 16-20 S2 O2 A1: 3 16.000002 -20.000015 0.000000 12.216571
+ 10000.0 16-20 S2 O2 A1: 3 16.0000 -20.000 0.000 12.2
- 10000.0 SUN S0 O0 A1: 0 3.710532 19.692978 1.011622 0.345113
+ 10000.0 SUN S0 O0 A1: 0 3.7105 19.693 1.012 0.3
- 10000.0 SUN S0 O0 A1: 1 3.737115 19.780623 1.011622 0.345113
+ 10000.0 SUN S0 O0 A1: 1 3.7371 19.781 1.012 0.3
- 10000.0 SUN S0 O0 A1: 2 3.713549 19.780492 1.011622 0.345113
+ 10000.0 SUN S0 O0 A1: 2 3.7135 19.780 1.012 0.3
- 10000.0 SUN S0 O0 A1: 3 3.710920 19.694240 1.011622 0.348002
+ 10000.0 SUN S0 O0 A1: 3 3.7109 19.694 1.012 0.3
- 10000.0 SUN S0 O1 A1: 0 3.710578 19.692945 1.011581 0.242886
+ 10000.0 SUN S0 O1 A1: 0 3.7106 19.693 1.012 0.2
- 10000.0 SUN S0 O1 A1: 1 3.737161 19.780588 1.011581 0.242886
+ 10000.0 SUN S0 O1 A1: 1 3.7372 19.781 1.012 0.2
- 10000.0 SUN S0 O1 A1: 2 3.713595 19.780457 1.011581 0.242886
+ 10000.0 SUN S0 O1 A1: 2 3.7136 19.780 1.012 0.2
- 10000.0 SUN S0 O1 A1: 3 3.710960 19.694213 1.011581 0.245695
+ 10000.0 SUN S0 O1 A1: 3 3.7110 19.694 1.012 0.2
- 10000.0 SUN S0 O2 A1: 0 3.710422 19.692620 1.011622 -4.911115
+ 10000.0 SUN S0 O2 A1: 0 3.7104 19.693 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 1 3.737005 19.780268 1.011622 -4.911115
+ 10000.0 SUN S0 O2 A1: 1 3.7370 19.780 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 2 3.713438 19.780138 1.011622 -4.911115
+ 10000.0 SUN S0 O2 A1: 2 3.7134 19.780 1.012 -4.9
- 10000.0 SUN S0 O2 A1: 3 3.710922 19.694247 1.011622 -4.906314
+ 10000.0 SUN S0 O2 A1: 3 3.7109 19.694 1.012 -4.9
10000.0 EARTH S0 O0 A1: ERROR 3
@@ -759,10 +759,10 @@
10000.0 EARTH S0 O1 A1: ERROR 3
- 10000.0 EARTH S0 O2 A1: 0 13.089479 -5.323629 0.000001 10.211847
+ 10000.0 EARTH S0 O2 A1: 0 13.0895 -5.324 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 1 13.113310 -5.471369 0.000001 10.211847
+ 10000.0 EARTH S0 O2 A1: 1 13.1133 -5.471 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 2 13.089744 -5.471330 0.000001 10.211847
+ 10000.0 EARTH S0 O2 A1: 2 13.0897 -5.471 0.000 9.5
- 10000.0 EARTH S0 O2 A1: 3 13.089174 -5.321901 0.000001 10.212103
+ 10000.0 EARTH S0 O2 A1: 3 13.0892 -5.322 0.000 9.5
diff --git a/test/reference/ter2cel.out b/test/reference/ter2cel.out
index 9fa6274c..6d1c2ee9 100644
--- a/test/reference/ter2cel.out
+++ b/test/reference/ter2cel.out
@@ -1,51 +1,51 @@
--10000.0 22+20 S2 O0 A0: ERA GCRS -0.388158783 0.856188057 0.340990865
+-10000.0 22+20 S2 O0 A0: ERA GCRS -0.388158782 0.856188052 0.340990879
--10000.0 22+20 S2 O0 A0: GST GCRS -0.388158783 0.856188057 0.340990865
+-10000.0 22+20 S2 O0 A0: GST GCRS -0.388158782 0.856188052 0.340990879
--10000.0 22+20 S2 O0 A0: GST TOD -0.382075445 0.858510673 0.342020143
+-10000.0 22+20 S2 O0 A0: GST TOD -0.382075453 0.858510670 0.342020143
--10000.0 16-20 S2 O0 A0: ERA GCRS 0.857080261 0.387256999 -0.339772635
+-10000.0 16-20 S2 O0 A0: ERA GCRS 0.857080260 0.387257004 -0.339772632
--10000.0 16-20 S2 O0 A0: GST GCRS 0.857080261 0.387256999 -0.339772635
+-10000.0 16-20 S2 O0 A0: GST GCRS 0.857080260 0.387257004 -0.339772632
--10000.0 16-20 S2 O0 A0: GST TOD 0.858510673 0.382075445 -0.342020143
+-10000.0 16-20 S2 O0 A0: GST TOD 0.858510670 0.382075453 -0.342020143
- 0.0 22+20 S2 O0 A0: ERA GCRS -0.314293817 -0.885587018 0.341986886
+ 0.0 22+20 S2 O0 A0: ERA GCRS -0.314293815 -0.885587023 0.341986874
- 0.0 22+20 S2 O0 A0: GST GCRS -0.314293817 -0.885587018 0.341986886
+ 0.0 22+20 S2 O0 A0: GST GCRS -0.314293815 -0.885587023 0.341986874
- 0.0 22+20 S2 O0 A0: GST TOD -0.314339424 -0.885557987 0.342020143
+ 0.0 22+20 S2 O0 A0: GST TOD -0.314339416 -0.885557990 0.342020143
- 0.0 16-20 S2 O0 A0: ERA GCRS -0.885568228 0.314294173 -0.342035212
+ 0.0 16-20 S2 O0 A0: ERA GCRS -0.885568229 0.314294178 -0.342035204
- 0.0 16-20 S2 O0 A0: GST GCRS -0.885568228 0.314294173 -0.342035212
+ 0.0 16-20 S2 O0 A0: GST GCRS -0.885568229 0.314294178 -0.342035204
- 0.0 16-20 S2 O0 A0: GST TOD -0.885557987 0.314339424 -0.342020143
+ 0.0 16-20 S2 O0 A0: GST TOD -0.885557990 0.314339416 -0.342020143
- 10000.0 22+20 S2 O0 A0: ERA GCRS 0.841265067 0.420521499 0.339756908
+ 10000.0 22+20 S2 O0 A0: ERA GCRS 0.841265068 0.420521494 0.339756911
- 10000.0 22+20 S2 O0 A0: GST GCRS 0.841265067 0.420521499 0.339756908
+ 10000.0 22+20 S2 O0 A0: GST GCRS 0.841265068 0.420521494 0.339756911
- 10000.0 22+20 S2 O0 A0: GST TOD 0.837740874 0.425690556 0.342020143
+ 10000.0 22+20 S2 O0 A0: GST TOD 0.837740870 0.425690564 0.342020143
- 10000.0 16-20 S2 O0 A0: ERA GCRS 0.419595616 -0.840358873 -0.343127504
+ 10000.0 16-20 S2 O0 A0: ERA GCRS 0.419595615 -0.840358868 -0.343127518
- 10000.0 16-20 S2 O0 A0: GST GCRS 0.419595616 -0.840358873 -0.343127504
+ 10000.0 16-20 S2 O0 A0: GST GCRS 0.419595615 -0.840358868 -0.343127518
- 10000.0 16-20 S2 O0 A0: GST TOD 0.425690556 -0.837740874 -0.342020143
+ 10000.0 16-20 S2 O0 A0: GST TOD 0.425690564 -0.837740870 -0.342020143
- 10000.0 22+20 S2 O0 A0: ERA GCRS 0.841265067 0.420521499 0.339756908
+ 10000.0 22+20 S2 O0 A0: ERA GCRS 0.841265068 0.420521494 0.339756911
- 10000.0 22+20 S2 O0 A0: GST GCRS 0.841265067 0.420521499 0.339756908
+ 10000.0 22+20 S2 O0 A0: GST GCRS 0.841265068 0.420521494 0.339756911
- 10000.0 22+20 S2 O0 A0: GST TOD 0.837740874 0.425690556 0.342020143
+ 10000.0 22+20 S2 O0 A0: GST TOD 0.837740870 0.425690564 0.342020143
- 10000.0 16-20 S2 O0 A0: ERA GCRS 0.419595616 -0.840358873 -0.343127504
+ 10000.0 16-20 S2 O0 A0: ERA GCRS 0.419595615 -0.840358868 -0.343127518
- 10000.0 16-20 S2 O0 A0: GST GCRS 0.419595616 -0.840358873 -0.343127504
+ 10000.0 16-20 S2 O0 A0: GST GCRS 0.419595615 -0.840358868 -0.343127518
- 10000.0 16-20 S2 O0 A0: GST TOD 0.425690556 -0.837740874 -0.342020143
+ 10000.0 16-20 S2 O0 A0: GST TOD 0.425690564 -0.837740870 -0.342020143
-10000.0 22+20 S2 O0 A1: ERA GCRS -0.388159 0.856188 0.340991
diff --git a/test/src/test.c b/test/src/test.c
index 8e025394..1d453718 100644
--- a/test/src/test.c
+++ b/test/src/test.c
@@ -257,6 +257,9 @@ static void test_ephemeris() {
openfile("ephemeris");
if(is_ok(ephemeris(tdb2, &body[i], j, accuracy, pos1, vel1))) {
+ int j;
+ for(j = 0; j < 3; j++) vel1[j] *= 1e-3 * (1.4959787069098932e+11 / 86400.0);
+
fprintf(fp, "%-10s %d ", body[i].name, j);
printvector(pos1);
printvector(vel1);
@@ -271,6 +274,11 @@ static void test_era() {
fprintf(fp, "%12.6f", era(tdb, 0.0));
}
+static void test_mean_obliq() {
+ openfile("mean_obliq");
+ fprintf(fp, "%12.6f", mean_obliq(tdb));
+}
+
static void test_ee_ct() {
openfile("ee_ct");
fprintf(fp, "A%d %12.6f", accuracy, ee_ct(tdb, 0.0, accuracy) / ARCSEC);
@@ -336,24 +344,24 @@ static void test_cel_pole() {
double a, b, c, dpsi = 0.0, deps = 0.0;
openfile("cel_pole");
- cel_pole(tdb, 0, 0.0, 0.0);
+ cel_pole(tdb, 1, 0.0, 0.0);
e_tilt(tdb, accuracy, &a, &b, &c, &dpsi, &deps);
- fprintf(fp, "XY %12.6f %12.6f ", dpsi, deps);
+ fprintf(fp, "PE %12.6f %12.6f ", dpsi, deps);
- cel_pole(tdb, 0, -2.0, 3.0);
+ cel_pole(tdb, 1, -2.0, 3.0);
e_tilt(tdb, accuracy, &a, &b, &c, &dpsi, &deps);
fprintf(fp, "%12.6f %12.6f ", dpsi, deps);
openfile("cel_pole");
- cel_pole(tdb, 1, 0.0, 0.0);
+ cel_pole(tdb, 2, 0.0, 0.0);
e_tilt(tdb, accuracy, &a, &b, &c, &dpsi, &deps);
- fprintf(fp, "PE %12.6f %12.6f ", dpsi, deps);
+ fprintf(fp, "XY %12.6f %12.6f ", dpsi, deps);
- cel_pole(tdb, 1, -2.0, 3.0);
+ cel_pole(tdb, 2, -2.0, 3.0);
e_tilt(tdb, accuracy, &a, &b, &c, &dpsi, &deps);
fprintf(fp, "%12.6f %12.6f ", dpsi, deps);
- cel_pole(tdb, 0, 0.0, 0.0);
+ cel_pole(tdb, 1, 0.0, 0.0);
}
static void test_nutation() {
@@ -391,6 +399,7 @@ static void test_cio_basis() {
if(!is_ok(cio_location(tdb, accuracy, &h, &sys))) return;
if(!is_ok(cio_basis(tdb, h, sys, accuracy, x, y, z))) return;
+ fprintf(fp, "%d ", sys);
printunitvector(x);
printunitvector(y);
printunitvector(z);
@@ -439,6 +448,7 @@ static void test_time_specific() {
test_tdb2tt();
test_ephemeris();
test_era();
+ test_mean_obliq();
test_ee_ct();
test_iau2000a();
test_iau2000b();
@@ -619,7 +629,8 @@ static void test_place() {
openfile("place");
if(is_ok(place(tdb, &source, &obs, ut12tt, i, accuracy, &out))) {
// Velocities to 0.1 m/s accuracy
- fprintf(fp, "%d %12.6f %12.6f %12.6f %12.6f ", i, out.ra, out.dec, out.dis, out.rv);
+ if(accuracy == 0) fprintf(fp, "%d %12.8f %12.8f %12.8f %12.5f ", i, out.ra, out.dec, out.dis, out.rv);
+ else fprintf(fp, "%d %8.4f %8.3f %8.3f %12.1f ", i, out.ra, out.dec, out.dis, out.rv);
}
}
}