From 7227a7ff63aca56985dd20501780f90596902e97 Mon Sep 17 00:00:00 2001 From: Peter Simpson <38855929+Peter-Simpson@users.noreply.github.com> Date: Sat, 8 Jul 2023 15:14:10 +0100 Subject: [PATCH] Port of Kepler but does not have NOVASCOM code or NOVAS2 so may not be that useful. --- .../Exceptions/ValueNotAvailableException.cs | 58 + ASCOM.Tools/Kepler/KeplerEphemeris.cs | 651 ++++++ ASCOM.Tools/Kepler/KeplerGlobal.cs | 1625 ++++++++++++++ ASCOM.Tools/Kepler/Planets/Ear404Data.cs | 1065 +++++++++ ASCOM.Tools/Kepler/Planets/Jup404Data.cs | 793 +++++++ ASCOM.Tools/Kepler/Planets/Mar404Data.cs | 959 ++++++++ ASCOM.Tools/Kepler/Planets/Mer404Data.cs | 633 ++++++ ASCOM.Tools/Kepler/Planets/Mlat404Data.cs | 752 +++++++ ASCOM.Tools/Kepler/Planets/Mlr404Data.cs | 1996 +++++++++++++++++ ASCOM.Tools/Kepler/Planets/Nep404Data.cs | 286 +++ ASCOM.Tools/Kepler/Planets/Plu404Data.cs | 865 +++++++ ASCOM.Tools/Kepler/Planets/Sat404Data.cs | 1076 +++++++++ ASCOM.Tools/Kepler/Planets/Ura404Data.cs | 836 +++++++ ASCOM.Tools/Kepler/Planets/Ven404Data.cs | 503 +++++ ASCOM.Tools/NamespaceDocs.xml | 71 + Directory.Build.props | 2 +- 16 files changed, 12170 insertions(+), 1 deletion(-) create mode 100644 ASCOM.Tools/Exceptions/ValueNotAvailableException.cs create mode 100644 ASCOM.Tools/Kepler/KeplerEphemeris.cs create mode 100644 ASCOM.Tools/Kepler/KeplerGlobal.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Ear404Data.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Jup404Data.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Mar404Data.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Mer404Data.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Mlat404Data.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Mlr404Data.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Nep404Data.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Plu404Data.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Sat404Data.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Ura404Data.cs create mode 100644 ASCOM.Tools/Kepler/Planets/Ven404Data.cs diff --git a/ASCOM.Tools/Exceptions/ValueNotAvailableException.cs b/ASCOM.Tools/Exceptions/ValueNotAvailableException.cs new file mode 100644 index 0000000..2a72c93 --- /dev/null +++ b/ASCOM.Tools/Exceptions/ValueNotAvailableException.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace ASCOM +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using System.Globalization; + using System.IO; + using System.Linq; + using System.Reflection; + using System.Runtime.CompilerServices; + using System.Runtime.InteropServices; + using System.Security; + using System.Text; + using System.Threading.Tasks; + using Microsoft.VisualBasic; + + /// + /// Exception thrown when an attempt is made to read a Kepler value that has not yet been calculated. + /// + /// This probably occurs because another variable has not been set or a required method has not been called. + public class ValueNotAvailableException : HelperException + { + + /// + /// ''' Create a new exception with message + /// ''' + /// ''' Message to be reported by the exception + /// ''' + public ValueNotAvailableException(string message) : base(message) + { + } + + /// + /// ''' Create a new exception with message + /// ''' + /// ''' Message to be reported by the exception + /// ''' Exception to be reported as the inner exception + /// ''' + public ValueNotAvailableException(string message, Exception inner) : base(message, inner) + { + } + + /// + /// ''' Serialise the exception + /// ''' + /// ''' Serialisation information + /// ''' Serialisation context + /// ''' + public ValueNotAvailableException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) + { + } + } + +} diff --git a/ASCOM.Tools/Kepler/KeplerEphemeris.cs b/ASCOM.Tools/Kepler/KeplerEphemeris.cs new file mode 100644 index 0000000..be55aa4 --- /dev/null +++ b/ASCOM.Tools/Kepler/KeplerEphemeris.cs @@ -0,0 +1,651 @@ +using ASCOM.Tools.Novas31; +using System; +using System.Runtime.InteropServices; + +namespace ASCOM.Tools.Kepler +{ + + // NOTE on changed behaviour for elliptical orbit comet calculations with - Peter Simpson January 2023 + + // The original Kepler component assigned both the Kepler.a (semi-major axis) and Kepler.q (perihelion distance) properties to the same + // Orbit structure variable 'a' which is defined here as the mean distance (semi-major axis). + + // However, the semi-major axis value is not available in MPC one-line orbit ephemeris data although it can be calculated from the perihelion distance for + // elliptical orbits (eccentricity <1.0) by the formula: SemiMajorAxis = PerihelionDistance / (1 - OrbitalEccentricity) + + // Users tracking comets are being caught out because they are setting the perihelion distance from the MPC data but the Kepler component actually requires the semi-major axis in + // order to calculate the correct orbit for elliptical comets and currently is using the supplied perihelion distance and thus returns the wrong answer. + + // It is now necessary to disambiguate the Kepler.a and Kepler.q properties, but in a way that is backward compatible with previous behaviour. There are four scenarios to consider: + // Kepler.q Kepler.a + // 1) Un-set Un-set + // 2) Set Un-set + // 3) Un-set Set + // 4) Set Set + + // Original internal use of Orbit.a by elliptical comet scenario when Kepler.GetPositionAndVelocity is called: + // 1) A value of 0.0 is used in calculation, which will result in a wrong answer + // 2) The perihelion distance is used, which results in the wrong answer + // 3) The semi-major axis value is used, which results in the correct answer + // 4) Whichever property was set last is used, which will give the correct answer if semi-major axis was set last and the wrong answer if perihelion distance was set last + + // In addition there were some undesirable outcomes when reading the Kepler object a and q properties for elliptical orbit comets: + // a) If a was set then q would have an incorrect value + // b) If q was set then a would have an incorrect value + + // The code has been modified to behave like this in each scenario when Kepler.GetPositionAndVelocity is called: + // 1) A value of 0.0 is used in the calculation, which will result in a wrong answer + // 2) The semi-major axis value is calculated from the perihelion distance and used, which results in the correct answer + // 3) The supplied semi-major axis value is used, which results in the correct answer + // 4) The supplied semi-major axis value is used, which results in the correct answer + + // Improved property behaviours by scenario: + // 1) Semi-major axis and perihelion distance return 0.0; + // 2) Perihelion distance has the set value and semi-major axis returns a calculated value + // 3) Semi-major axis has the set value and perihelion distance returns a calculated value + // 4) Both perihelion distance and semi-major axis return their set values + + /// + /// KEPLER: Ephemeris Object + /// + /// + /// The Kepler Ephemeris object contains an orbit engine which takes the orbital parameters of a solar system + /// body, plus a a terrestrial date/time, and produces the heliocentric equatorial position and + /// velocity vectors of the body in Cartesian coordinates. Orbital parameters are not required for + /// the major planets, Kepler contains an ephemeris generator for these bodies that is within 0.05 + /// arc seconds of the JPL DE404 over a wide range of times, Perturbations from major planets are applied + /// to ephemerides for minor planets. + /// The results are passed back as an array containing the two vectors. + /// Note that this is the format expected for the ephemeris generator used by the NOVAS-COM vector + /// astrometry engine. For more information see the description of Ephemeris.GetPositionAndVelocity(). + /// + /// Ephemeris Calculations
+ /// The ephemeris calculations in Kepler draw heavily from the work of + /// Stephen Moshier moshier@world.std.com. kepler is released as a free software package, further + /// extending the work of Mr. Moshier.
+ /// Kepler does not integrate orbits to the current epoch. If you want the accuracy resulting from + /// an integrated orbit, you must integrate separately and supply Kepler with elements of the current + /// epoch. Orbit integration is on the list of things for the next major version. + /// Kepler uses polynomial approximations for the major planet ephemerides. The tables + /// of coefficients were derived by a least squares fit of periodic terms to JPL's DE404 ephemerides. + /// The periodic frequencies used were determined by spectral analysis and comparison with VSOP87 and + /// other analytical planetary theories. The least squares fit to DE404 covers the interval from -3000 + /// to +3000 for the outer planets, and -1350 to +3000 for the inner planets. For details on the + /// accuracy of the major planet ephemerides, see the Accuracy Tables page. + /// + /// Date and Time Systems

+ /// For a detailed explanation of astronomical timekeeping systems, see A Time Tutorial on the NASA + /// Goddard Spaceflight Center site, and the USNO Systems of Time site. + ///

ActiveX Date values
+ /// These are the Windows standard "date serial" numbers, and are expressed in local time or + /// UTC (see below). The fractional part of these numbers represents time within a day. + /// They are used throughout applications such as Excel, Visual Basic, VBScript, and other + /// ActiveX capable environments. + ///

Julian dates
+ /// These are standard Julian "date serial" numbers, and are expressed in UTC time or Terrestrial + /// time. The fractional part of these numbers represents time within a day. The standard ActiveX + /// "Double" precision of 15 digits gives a resolution of about one millisecond in a full Julian date. + /// This is sufficient for the purposes of this program. + ///

Hourly Time Values
+ /// These are typically used to represent sidereal time and right ascension. They are simple real + /// numbers in units of hours. + ///

UTC Time Scale
+ /// Most of the ASCOM methods and properties that accept date/time values (either Date or Julian) + /// assume that the date/time is in Coordinated Universal Time (UTC). Where necessary, this time + /// is converted internally to other scales. Note that UTC seconds are based on the Cesium atom, + /// not planetary motions. In order to keep UTC in sync with planetary motion, leap seconds are + /// inserted periodically. The error is at most 900 milliseconds. + ///

UT1 Time Scale
+ /// The UT1 time scale is the planetary equivalent of UTC. It it runs smoothly and varies a bit + /// with time, but it is never more than 900 milliseconds different from UTC. + ///

TT Time Scale
+ /// The Terrestrial Dynamical Time (TT) scale is used in solar system orbital calculations. + /// It is based completely on planetary motions; you can think of the solar system as a giant + /// TT clock. It differs from UT1 by an amount called "delta-t", which slowly increases with time, + /// and is about 60 seconds right now (2001).
+ ///
+ public class Ephemeris + { + + private const double DTVEL = 0.01d; + + // Ephemeris variables + private string m_Name; // Name of body + private Body m_Number; // Number of body + private bool m_bNumberValid; + private BodyType m_Type; // Type of body + private bool m_bTypeValid; + private KeplerGlobalCode.Orbit m_e = new KeplerGlobalCode.Orbit(0.0); // Elements, etc for minor planets/comets, etc. + // Public Shared TL As TraceLogger + // gplan variables + private double[,] ss = new double[19, 32], cc = new double[19, 32]; + private double[] Args = new double[19]; + + /// + /// Create a new Ephemeris component and initialise it + /// + /// + public Ephemeris() + { + // TL = New TraceLogger("", "KeplerEphemeris") + // TL.Enabled = GetBool(ASTROUTILS_TRACE, ASTROUTILS_TRACE_DEFAULT) 'Get enabled / disabled state from the user registry + // TL.LogMessage("New", "Kepler Created") + m_bTypeValid = false; + m_Name = ""; // Sentinel + m_Type = default; + m_e.ptable.lon_tbl = new double[] { 0.0d }; // Initialise orbit arrays + m_e.ptable.lat_tbl = new double[] { 0.0d }; + } + /// + /// Semi-major axis (AU) + /// + /// Semi-major axis in AU + /// Semi-major axis in AU + /// + public double a + { + get + { + if (double.IsNaN(m_e.semiMajorAxis)) + { + // TL.LogMessage("Get a", $"NOT SET - Returning semi-major axis: {0.0}") + return 0.0d; + } + else + { + // TL.LogMessage("Get a", $"SET - Returning semi-major axis: {m_e.semiMajorAxis}") + return m_e.semiMajorAxis; + } + } + set + { + // TL.LogMessage("Set a", $"Semi-major axis: {value}") + m_e.semiMajorAxis = value; + m_e.a = value; + } + } + + /// + /// Perihelion distance (AU) + /// + /// Perihelion distance + /// AU + /// + public double q + { + get + { + if (double.IsNaN(m_e.perihelionDistance)) + { + // TL.LogMessage("Get q", $"NOT SET - Returning perihelion distance: {0.0}") + return 0.0d; + } + else + { + // TL.LogMessage("Get q", $"SET - Returning perihelion distance: {m_e.perihelionDistance}") + return m_e.perihelionDistance; + } + } + set + { + // TL.LogMessage("Set q", $"Perihelion distance: {value}") + m_e.perihelionDistance = value; + m_e.a = value; + } + } + + /// + /// The type of solar system body represented by this instance of the ephemeris engine (enum) + /// + /// The type of solar system body represented by this instance of the ephemeris engine (enum) + /// 0 for major planet, 1 for minot planet and 2 for comet + /// + public BodyType BodyType + { + get + { + if (!m_bTypeValid) + throw new ValueNotSetException("KEPLER:BodyType BodyType has not been set"); + return m_Type; + } + set + { + m_Type = value; + m_bTypeValid = true; + } + } + + /// + /// Orbital eccentricity + /// + /// Orbital eccentricity + /// Orbital eccentricity + /// + public double e + { + get + { + return m_e.ecc; + } + set + { + m_e.ecc = value; + m_e.eccentricityHasBeenSet = true; // Record that an eccentricity value has been set (used for parameter validation in GetPositionAndVelocity()) + } + } + + /// + /// Epoch of osculation of the orbital elements (terrestrial Julian date) + /// + /// Epoch of osculation of the orbital elements + /// Terrestrial Julian date + /// + public double Epoch + { + get + { + return m_e.epoch; + } + set + { + m_e.epoch = value; + } + } + + /// + /// Slope parameter for magnitude + /// + /// Slope parameter for magnitude + /// Slope parameter for magnitude + /// + public double G + { + get + { + throw new ValueNotAvailableException("Kepler:G Read - Magnitude slope parameter calculation not implemented"); + } + set + { + throw new ValueNotAvailableException("Kepler:G Write - Magnitude slope parameter calculation not implemented"); + } + } + + /// + /// Compute rectangular (x/y/z) heliocentric J2000 equatorial coordinates of position (AU) and + /// velocity (KM/sec.). + /// + /// Terrestrial Julian date/time for which position and velocity is to be computed + /// Array of 6 values containing rectangular (x/y/z) heliocentric J2000 equatorial + /// coordinates of position (AU) and velocity (KM/sec.) for the body. + /// The TJD parameter is the date/time as a Terrestrial Time Julian date. See below for + /// more info. If you are using ACP, there are functions available to convert between UTC and + /// Terrestrial time, and for estimating the current value of delta-T. See the Overview page for + /// the Kepler.Ephemeris class for more information on time keeping systems. + public double[] GetPositionAndVelocity(double tjd) + { + var posvec = new double[6]; + var ai = new int[2]; + var pos = new double[4, 4]; + var op = new KeplerGlobalCode.Orbit(); + int i; + + if (!m_bTypeValid) + throw new ValueNotSetException("Kepler:GetPositionAndVelocity Body type has not been set"); + // TL.LogMessage("GetPosAndVel", m_Number.ToString) + + // TL?.LogMessage("GetPositionAndVelocity", $"Body type: {m_Type}, Eccentricity: {m_e.ecc}") + // TL?.LogMessage("GetPositionAndVelocity0", $"Perihelion distance: {m_e.perihelionDistance}, Semi-major axis: {m_e.semiMajorAxis}, m_e.a: {m_e.a}") + + switch (m_Type) + { + case BodyType.MajorPlanet: // MAJOR PLANETS [unimpl. SUN, MOON] + { + switch (m_Number) + { + case Body.Mercury: + { + op = KeplerGlobalCode.mercury; + break; + } + case Body.Venus: + { + op = KeplerGlobalCode.venus; + break; + } + case Body.Earth: + { + op = KeplerGlobalCode.earthplanet; + break; + } + case Body.Mars: + { + op = KeplerGlobalCode.mars; + break; + } + case Body.Jupiter: + { + op = KeplerGlobalCode.jupiter; + break; + } + case Body.Saturn: + { + op = KeplerGlobalCode.saturn; + break; + } + case Body.Uranus: + { + op = KeplerGlobalCode.uranus; + break; + } + case Body.Neptune: + { + op = KeplerGlobalCode.neptune; + break; + } + case Body.Pluto: + { + op = KeplerGlobalCode.pluto; + break; + } + + default: + { + throw new InvalidValueException("Kepler:GetPositionAndVelocity Invalid value for planet number: " + ((int)m_Number).ToString()); + } + } + + break; + } + + case BodyType.MinorPlanet: // MINOR PLANET + { + // //TODO: Check elements + op = m_e; + break; + } + + case BodyType.Comet: // COMET + { + // //TODO: Check elements + + // Test whether this comet is in an elliptical orbit as opposed to parabolic or hyperbolic + if (m_e.ecc < 1.0d) + { + // TL?.LogMessage("GetPositionAndVelocity1", $"Perihelion distance: {m_e.perihelionDistance}, Semi-major axis: {m_e.semiMajorAxis}, m_e.a: {m_e.a}, Eccentricity has been set: {m_e.eccentricityHasBeenSet}, Eccentricity: {m_e.ecc}") + // For comets in elliptical orbits (ecc < 1.0) ensure that we use the semi-major axis instead of the perihelion distance. + // Handle the four possible scenarios for semi-major axis and perihelion distance + // 1) Un-set Un-set + // 2) Set Un-set + // 3) Un-set Set + // 4) Set Set + if (double.IsNaN(m_e.semiMajorAxis)) // Semi-major axis is not set + { + if (double.IsNaN(m_e.perihelionDistance)) // No semi-major axis or perihelion distance + { + // TL?.LogMessage("GetPositionAndVelocity2", $"Perihelion distance: {m_e.perihelionDistance}, Semi-major axis: {m_e.semiMajorAxis}, m_e.a: {m_e.a}") + + // Throw an exception because we can't calculate the orbit without either the semi-major axis value or the perihelion distance value. + throw new InvalidOperationException($"Kepler.GetPositionAndVelocity - Cannot calculate comet position because neither the semi-major axis nor the perihelion distance have been provided."); + } + + else + { + // No semi-major axis but we do have perihelion distance so calculate semi-major axis from the formula: SemiMajorAxis = PerihelionDistance / (1 - OrbitalEccentricity) and use this + + // Validate that the calculation can be completed + if (!m_e.eccentricityHasBeenSet) + throw new InvalidOperationException($"Kepler.GetPositionAndVelocity - Cannot calculate comet position because the orbit eccentricity has not been provided."); + + m_e.a = m_e.perihelionDistance / (1.0d - m_e.ecc); + m_e.semiMajorAxis = m_e.a; + // TL?.LogMessage("GetPositionAndVelocity3", $"Perihelion distance: {m_e.perihelionDistance}, Semi-major axis: {m_e.semiMajorAxis}, m_e.a: {m_e.a}") + } + } + else // Semi-major axis has been set so use this + { + m_e.a = m_e.semiMajorAxis; + + if (double.IsNaN(m_e.perihelionDistance)) + { + // Update perihelion distance from the formula: PerihelionDistance = SemiMajorAxis * (1 - OrbitalEccentricity) and use this + + // Validate that the calculation can be completed, otherwise ignore because the orbit can still be calculated + if (m_e.eccentricityHasBeenSet) + { + m_e.perihelionDistance = m_e.semiMajorAxis * (1.0d - m_e.ecc); + } + } + + // TL?.LogMessage("GetPositionAndVelocity4", $"Perihelion distance: {m_e.perihelionDistance}, Semi-major axis: {m_e.semiMajorAxis}, m_e.a: {m_e.a}") + else + { + // The perihelion distance has been set so just leave it as is + // TL?.LogMessage("GetPositionAndVelocity5", $"Perihelion distance: {m_e.perihelionDistance}, Semi-major axis: {m_e.semiMajorAxis}, m_e.a: {m_e.a}") + } + } + } + else if (!double.IsNaN(m_e.semiMajorAxis)) // Eccentricity is >=1.0 and this is a parabolic or hyperbolic orbit so there is no major axis + { + throw new InvalidOperationException($"Kepler.GetPositionAndVelocity - Eccentricity is >=1.0 {m_e.ecc} (parabolic or hyperbolic trajectory, not an elliptical orbit) but a semi-major axis value has been set implying an orbit."); + } + + op = m_e; + break; + } + } + + // TL?.LogMessage("GetPositionAndVelocity6", $"Perihelion distance: {m_e.perihelionDistance}, Semi-major axis: {m_e.semiMajorAxis}, m_e.a: {m_e.a}") + + for (i = 0; i <= 2; i++) + { + var p = new double[3]; + double qjd; + qjd = tjd + (i - 1) * DTVEL; + // TL?.LogMessage("GetPositionAndVelocity", $"tjd: {tjd}, qjd: {qjd}, DTVEL: {DTVEL}") + KeplerGlobalCode.KeplerCalc(qjd, ref op, ref p); + // TL.LogMessage("GetPosVel", $"Loop {i} - Array p: {p(0)}, {p(1)}, {p(2)}") + pos[i, 0] = p[0]; + pos[i, 1] = p[1]; + pos[i, 2] = p[2]; + } + + // pos(1,x) contains the pos vector + // pos(0,x) and pos(2,x) are used to determine the velocity based on position change with time! + for (i = 0; i <= 2; i++) + { + posvec[i] = pos[1, i]; + posvec[3 + i] = (pos[2, i] - pos[0, i]) / (2.0d * DTVEL); + } + + // TL.LogMessage("GetPosVel", $"Loop {i} - Array posvec: {posvec(0)}, {posvec(1)}, {posvec(2)}, {posvec(3)}, {posvec(4)}, {posvec(5)}") + + return posvec; + } + + /// + /// Absolute visual magnitude + /// + /// Absolute visual magnitude + /// Absolute visual magnitude + /// + public double H + { + get + { + throw new ValueNotAvailableException("Kepler:H Read - Visual magnitude calculation not implemented"); + } + set + { + throw new ValueNotAvailableException("Kepler:H Write - Visual magnitude calculation not implemented"); + } + } + + /// + /// The J2000.0 inclination (deg.) + /// + /// The J2000.0 inclination + /// Degrees + /// + public double Incl + { + get + { + return m_e.i; + } + set + { + m_e.i = value; + } + } + + /// + /// Mean anomaly at the epoch + /// + /// Mean anomaly at the epoch + /// Mean anomaly at the epoch + /// + public double M + { + get + { + return m_e.M; + } + set + { + m_e.M = value; + } + } + + /// + /// Mean daily motion (deg/day) + /// + /// Mean daily motion + /// Degrees per day + /// + public double n + { + get + { + return m_e.dm; + } + set + { + m_e.dm = value; + } + } + + /// + /// The name of the body. + /// + /// The name of the body or packed MPC designation + /// The name of the body or packed MPC designation + /// If this instance represents an unnumbered minor planet, Ephemeris.Name must be the + /// packed MPC designation. For other types, this is for display only. + public string Name + { + get + { + if (string.IsNullOrEmpty(m_Name)) + throw new ValueNotSetException("KEPLER:Name Name has not been set"); + return m_Name; + } + set + { + m_Name = value; + } + } + + /// + /// The J2000.0 longitude of the ascending node (deg.) + /// + /// The J2000.0 longitude of the ascending node + /// Degrees + /// + public double Node + { + get + { + return m_e.W; + } + set + { + m_e.W = value; + } + } + + /// + /// The major or minor planet number + /// + /// The major or minor planet number + /// Number or zero if not numbered + /// + public Body Number + { + get + { + if (!m_bNumberValid) + throw new ValueNotSetException("KEPLER:Number Planet number has not been set"); + return m_Number; + } + set + { + m_Number = value; + m_bNumberValid = true; + } + } + + /// + /// Orbital period (years) + /// + /// Orbital period + /// Years + /// + public double P + { + get + { + throw new ValueNotAvailableException("Kepler:P Read - Orbital period calculation not implemented"); + } + set + { + throw new ValueNotAvailableException("Kepler:P Write - Orbital period calculation not implemented"); + } + } + + /// + /// The J2000.0 argument of perihelion (deg.) + /// + /// The J2000.0 argument of perihelion + /// Degrees + /// + public double Peri + { + get + { + return m_e.wp; + } + set + { + m_e.wp = value; + } + } + + /// + /// Reciprocal semi-major axis (1/AU) + /// + /// Reciprocal semi-major axis + /// 1/AU + /// + public double z + { + get + { + return 1.0d / m_e.a; + } + set + { + m_e.a = 1.0d / value; + } + } + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/KeplerGlobal.cs b/ASCOM.Tools/Kepler/KeplerGlobal.cs new file mode 100644 index 0000000..b1aaa44 --- /dev/null +++ b/ASCOM.Tools/Kepler/KeplerGlobal.cs @@ -0,0 +1,1625 @@ + +// Common items for the Kepler code + +using static System.Math; + +namespace ASCOM.Tools.Kepler +{ + + static class KeplerGlobalCode + { + // Constant to indicate that a value has not been set. + // This must not be changed to another value because tests are implemented using Double.IsNan() function. + internal const double NOT_SET = double.NaN; + + #region Private Structures + internal struct plantbl + { + internal int maxargs; + internal int[] max_harmonic; + internal int max_power_of_t; + internal int[] arg_tbl; + internal double[] lon_tbl; + internal double[] lat_tbl; + internal double[] rad_tbl; + internal double distance; + internal double timescale; + internal double trunclvl; + + internal plantbl(int ma, int[] mh, int mpt, int[] at, double[] lot, double[] lat, double[] rat, double dis, double ts, double tl) + { + maxargs = ma; + max_harmonic = mh; + max_power_of_t = mpt; + arg_tbl = at; + lon_tbl = lot; + lat_tbl = lat; + rad_tbl = rat; + distance = dis; + timescale = ts; + trunclvl = tl; + } + } + + internal struct Orbit + { + internal string obname; // /* name of the object */ + internal double epoch; // /* epoch of orbital elements */ + internal double i; // /* inclination */ + internal double W; // /* longitude of the ascending node */ + internal double wp; // /* argument of the perihelion */ + internal double a; // /* mean distance (semimajor axis) */ + internal double dm; // /* daily motion */ + internal double ecc; // /* eccentricity */ + internal double M; // /* mean anomaly */ + internal double equinox; // /* epoch of equinox and ecliptic */ + internal double mag; // /* visual magnitude at 1AU from earth and sun */ + internal double sdiam; // /* equatorial semi-diameter at 1au, arc seconds */ + + // /* The following used by perturbation formulas: */ + internal plantbl ptable; + internal double L; // /* computed mean longitude */ + internal double r; // /* computed radius vector */ + internal double plat; // /* perturbation in ecliptic latitude */ + + internal double semiMajorAxis; // Placeholder for the semi-major axis to disambiguate it from the perihelion distance + internal double perihelionDistance; // Placeholder for the perihelion distance to disambiguate it from the semi-major axis + internal bool eccentricityHasBeenSet; + + /// + /// Initialiser to set the semi-major axis and perihelion distance values to default "unset" states + /// + /// Dummy parameter because VB doesn't allow parameterless instance constructors + public Orbit(double dummyParameter) + { + semiMajorAxis = NOT_SET; + perihelionDistance = NOT_SET; + obname = string.Empty; + epoch = 0.0; + i = 0.0; + W = 0.0; + dm = 0.0; + ecc = 0.0; + M = 0.0; + equinox = 0.0; + mag = 0.0; + sdiam = 0.0; + eccentricityHasBeenSet = false; + wp = 0.0; + a = 0.0; + ptable=new plantbl(); + L= 0.0; + r= 0.0; + plat = 0.0; + eccentricityHasBeenSet = false; + } + + internal Orbit(string obn, double ep, double i_p, double W_p, double wp_p, double a_p, double dm_p, double ecc_p, double M_p, double eq, double mg, double sd, plantbl pt, double L_p, double r_p, double pl) + { + obname = obn; + epoch = ep; + i = i_p; + W = W_p; + wp = wp_p; + a = a_p; + dm = dm_p; + ecc = ecc_p; + M = M_p; + equinox = eq; + mag = mg; + sdiam = sd; + ptable = pt; + L = L_p; + r = r_p; + plat = pl; + eccentricityHasBeenSet = true; + + // Initialize the semi-major axis to default 'unset' states + semiMajorAxis = NOT_SET; + perihelionDistance = NOT_SET; + } + } + #endregion + + #region Constants + internal const int NARGS = 18; + + // /* Conversion factors between degrees and radians */ + private const double DTR = 0.017453292519943295d; + private const double RTD = 57.295779513082323d; + private const double RTS = 206264.80624709636d; // /* arc seconds per radian */ + private const double STR = 0.00000484813681109536d; // /* radians per arc second */ + private const double PI = 3.1415926535897931d; + private const double TPI = 2.0d * PI; + + // /* Standard epochs. Note Julian epochs (J) are measured in + // * years of 365.25 days. + // */ + private const double J2000 = 2451545.0d; // /* 2000 January 1.5 */ + private const double B1950 = 2433282.423d; // /* 1950 January 0.923 Besselian epoch */ + private const double J1900 = 2415020.0d; // /* 1900 January 0, 12h UT */ + + // /* Constants used elsewhere. These are DE403 values. */ + private const double aearth = 6378137.0d; // /* Radius of the earth, in meters. */ + private const double au = 149597870.691d; // /* Astronomical unit, in kilometers. */ + private const double emrat = 81.300585d; // /* Earth/Moon mass ratio. */ + private const double Clight = 299792.458d; // /* Speed of light, km/sec */ + private const double Clightaud = (double)default; // /* C in au/day */ + #endregion + + #region Utility Routines + // // ---------------- + // // Utility routines + // // ---------------- + + // // Obliquity of the ecliptic at Julian date J + // // according to the DE403 values. Refer to + // // S. Moshier's aa54e sources. + + internal static void epsiln(double J, ref double eps, ref double coseps, ref double sineps) + { + double T; + + T = (J - 2451545.0d) / 365250.0d; // // T / 10 + eps = ((((((((((0.000000000245d * T + 0.00000000579d) * T + 0.0000002787d) * T + 0.000000712d) * T - 0.00003905d) * T - 0.0024967d) * T - 0.005138d) * T + 1.9989d) * T - 0.0175d) * T - 468.3396d) * T + 84381.406173d) * STR; + + + coseps = Cos(eps); + sineps = Sin(eps); + } + + // /* Precession of the equinox and ecliptic + // * from epoch Julian date J to or from J2000.0 + // * + // * Program by Steve Moshier. */ + // + // /* James G. Williams, "Contributions to the Earth's obliquity rate, + // precession, and nutation," Astron. J. 108, 711-724 (1994) */ + + // /* Corrections to Williams (1994) introduced in DE403. */ + internal static double[] pAcof = new double[] { -0.000000000866d, -0.00000004759d, 0.0000002424d, 0.000013095d, 0.00017451d, -0.0018055d, -0.235316d, 0.076d, 110.5414d, 50287.91959d }; + + internal static double[] nodecof = new double[] { 0.00000000000000066402d, -0.00000000000000269151d, -0.000000000001547021d, 0.000000000007521313d, 0.00000000019d, -0.00000000354d, -0.00000018103d, 0.000000126d, 0.00007436169d, -0.04207794833d, 3.052115282424d }; + + internal static double[] inclcof = new double[] { 0.00000000000000012147d, 7.3759E-17d, -0.0000000000000826287d, 0.000000000000250341d, 0.000000000024650839d, -0.000000000054000441d, 0.00000000132115526d, -0.0000006012d, -0.0000162442d, 0.00227850649d, 0.0d }; + + // /* Subroutine arguments: + // * + // * R = rectangular equatorial coordinate vector to be precessed. + // * The result is written back into the input vector. + // * J = Julian date + // * direction = + // * Precess from J to J2000: direction = 1 + // * Precess from J2000 to J: direction = -1 + // * Note that if you want to precess from J1 to J2, you would + // * first go from J1 to J2000, then call the program again + // * to go from J2000 to J2. + // */ + + internal static void precess(ref double[] R, double J, int direction) + { + double A, B, T, pA, W, z; + var x = new double[4]; + double[] p; + double eps = default, coseps = default, sineps = default; + int i; + + if (J == J2000) + return; + // /* Each precession angle is specified by a polynomial in + // * T = Julian centuries from J2000.0. See AA page B18. + // */ + T = (J - J2000) / 36525.0d; + + // /* Implementation by elementary rotations using Laskar's expansions. + // * First rotate about the x axis from the initial equator + // * to the ecliptic. (The input is equatorial.) + // */ + if (direction == 1) + { + epsiln(J, ref eps, ref coseps, ref sineps); // /* To J2000 */ + } + else + { + epsiln(J2000, ref eps, ref coseps, ref sineps); + } // /* From J2000 */ + x[0] = R[0]; + z = coseps * R[1] + sineps * R[2]; + x[2] = -sineps * R[1] + coseps * R[2]; + x[1] = z; + + // /* Precession in longitude */ + T /= 10.0d; // /* thousands of years */ + p = pAcof; + pA = p[0]; + for (i = 1; i <= 9; i++) + pA = pA * T + p[i]; + pA *= STR * T; + + // /* Node of the moving ecliptic on the J2000 ecliptic.*/ + p = nodecof; + W = p[0]; + for (i = 1; i <= 10; i++) + W = W * T + p[i]; + // /* Rotate about z axis to the node.*/ + if (direction == 1) + { + z = W + pA; + } + else + { + z = W; + } + B = Cos(z); + A = Sin(z); + z = B * x[0] + A * x[1]; + x[1] = -A * x[0] + B * x[1]; + x[0] = z; + + // /* Rotate about new x axis by the inclination of the moving + // * ecliptic on the J2000 ecliptic. + // */ + p = inclcof; + z = p[0]; + for (i = 1; i <= 10; i++) + z = z * T + p[i]; + if (direction == 1) + z = -z; + B = Cos(z); + A = Sin(z); + z = B * x[1] + A * x[2]; + x[2] = -A * x[1] + B * x[2]; + x[1] = z; + + // /* Rotate about new z axis back from the node. */ + if (direction == 1) + { + z = -W; + } + else + { + z = -W - pA; + } + B = Cos(z); + A = Sin(z); + z = B * x[0] + A * x[1]; + x[1] = -A * x[0] + B * x[1]; + x[0] = z; + + // /* Rotate about x axis to final equator. */ + if (direction == 1) + { + epsiln(J2000, ref eps, ref coseps, ref sineps); + } + else + { + epsiln(J, ref eps, ref coseps, ref sineps); + } + z = coseps * x[1] - sineps * x[2]; + x[2] = sineps * x[1] + coseps * x[2]; + x[1] = z; + + for (i = 0; i <= 2; i++) + R[i] = x[i]; + } + + internal static double atan4(double x, double y) + { + + double z, w = default; + int code; + + code = 0; + // Kepler.Ephemeris.TL.LogMessage("atan4", $"x: {x}, y: {y}") + if (x < 0.0d) + code = 2; + if (y < 0.0d) + code = code | 1; + + if (x == 0.0d) + { + if ((code & 1) > 0) + return 1.5d * PI; + if (y == 0.0d) + return 0.0d; + return 0.5d * PI; + } + + if (y == 0.0d) + { + if ((code & 2) > 0) + return PI; + return 0.0d; + } + + switch (code) + { + case 0: + { + w = 0.0d; + break; + } + case 1: + { + w = 2.0d * PI; + break; + } + case 2: + { + w = PI; + break; + } + case 3: + { + w = PI; + break; + } + + default: + { + break; + } + } + + z = Atan(y / x); + // Kepler.Ephemeris.TL.LogMessage("atan4", $"x: {x}, y: {y}, z: {z}, w: {w}, code: {code}") + + return w + z; + } + + // // + // // Reduce x modulo 2 pi + // // + internal static double modtp(double x) + { + + double y; + + y = Floor(x / TPI); + y = x - y * TPI; + while (y < 0.0d) + y += TPI; + while (y >= TPI) + y -= TPI; + return y; + } + + // // + // // Reduce x modulo 360 degrees + // // + internal static double mod360(double x) + { + + int k; + double y; + + k = (int)Round(x / 360.0d); + y = x - k * 360.0d; + while (y < 0.0d) + y += 360.0d; + while (y > 360.0d) + y -= 360.0d; + return y; + } + + + // /* Program to solve Keplerian orbit + // * given orbital parameters and the time. + // * Returns Heliocentric equatorial rectangular coordinates of + // * the object. + // * + // * This program detects several cases of given orbital elements. + // * + // * If a program for perturbations is pointed to, it is called + // * to calculate all the elements. + // * + // * If there is no program, then the mean longitude is calculated + // * from the mean anomaly and daily motion. + // * + // * If the daily motion is not given, it is calculated + // * by Kepler's law. + // * + // * If the eccentricity is given to be 1.0, it means that + // * meandistance is really the perihelion distance, as in a comet + // * specification, and the orbit is parabolic. + // * + // * Reference: Taff, L.G., "Celestial Mechanics, A Computational + // * Guide for the Practitioner." Wiley, 1985. + // */ + + + internal static void KeplerCalc(double J, ref Orbit e, ref double[] rect) + { + + var polar = new double[4]; + double alat, E1, M, W, temp; + double epoch, inclination, ascnode, argperih; + double meandistance, dailymotion, eccent, meananomaly; + double r, coso, sino, cosa; + double eps = default, coseps = default, sineps = default; + // Dim TL As New TraceLogger("", "KeplerCalc") + // TL.Enabled = True + // Kepler.Ephemeris.TL.LogMessage("KepCalc", $"J: {J}") + // // + // // Call program to compute position, if one is supplied. + // // + if (e.ptable.lon_tbl[0] != 0.0d) + { + if (e.obname == "Earth") + { + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "Before G3Plan Earth") + g3plan(J, ref e.ptable, ref polar, 3); + } + else + { + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "Before G3Plan Not Earth") + gplan(J, ref e.ptable, ref polar); + } + E1 = polar[0]; // /* longitude */ + e.L = E1; + W = polar[1]; // /* latitude */ + r = polar[2]; // /* radius */ + e.r = r; + e.epoch = J; + e.equinox = J2000; + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "After G3Plan") + goto kepdon; + } + + // // ----------------------------- + // // Compute from orbital elements + // // ----------------------------- + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "Compute orbital elements") + e.equinox = J2000; // // Always J2000 coordinates + epoch = e.epoch; + inclination = e.i; + ascnode = e.W * DTR; + argperih = e.wp; + meandistance = e.a; // /* semimajor axis */ + dailymotion = e.dm; + eccent = e.ecc; + meananomaly = e.M; + + // // --------- + // // Parabolic + // // --------- + if (eccent == 1.0d) + { + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "eccent=1.0") + // // + // // meandistance = perihelion distance, q + // // epoch = perihelion passage date + // // + temp = meandistance * Sqrt(meandistance); + W = (J - epoch) * 0.0364911624d / temp; + // // + // // The constant above is 3 k / sqrt(2), + // // k = Gaussian gravitational constant = 0.01720209895 + // // + E1 = 0.0d; + M = 1.0d; + while (Abs(M) > 0.00000000001d) + { + temp = E1 * E1; + temp = (2.0d * E1 * temp + W) / (3.0d * (1.0d + temp)); + M = temp - E1; + if (temp != 0.0d) + M /= temp; + E1 = temp; + } + r = meandistance * (1.0d + E1 * E1); + M = Atan(E1); + M = 2.0d * M; + alat = M + DTR * argperih; + } + // // ---------- + // // Hyperbolic + // // ---------- + else if (eccent > 1.0d) + { + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "eccent > 1.0") + // // + // // The equation of the hyperbola in polar coordinates r, theta + // // is r = a(e^2 - 1)/(1 + e cos(theta)) so the perihelion + // // distance q = a(e-1), the "mean distance" a = q/(e-1). + // // + meandistance = meandistance / (eccent - 1.0d); + temp = meandistance * Sqrt(meandistance); + W = (J - epoch) * 0.01720209895d / temp; + // /* solve M = -E + e sinh E */ + E1 = W / (eccent - 1.0d); + M = 1.0d; + while (Abs(M) > 0.00000000001d) + { + + M = -E1 + eccent * Sinh(E1) - W; + E1 += M / (1.0d - eccent * Cosh(E1)); + } + r = meandistance * (-1.0d + eccent * Cosh(E1)); + temp = (eccent + 1.0d) / (eccent - 1.0d); + M = Sqrt(temp) * Tanh(0.5d * E1); + M = 2.0d * Atan(M); + alat = M + DTR * argperih; + } + + // // ----------- + // // Ellipsoidal + // // ----------- + else // // if(ecc < 1) + { + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "Ellipsoidal") + // // + // // Calculate the daily motion, if it is not given. + // // + if (dailymotion == 0.0d) + { + + // // + // // The constant is 180 k / pi, k = Gaussian gravitational + // // constant. Assumes object in heliocentric orbit is + // // massless. + // // + dailymotion = 0.9856076686d / (e.a * Sqrt(e.a)); + } + dailymotion *= J - epoch; + // // + // // M is proportional to the area swept out by the radius + // // vector of a circular orbit during the time between + // // perihelion passage and Julian date J. + // // It is the mean anomaly at time J. + // // + M = DTR * (meananomaly + dailymotion); + M = modtp(M); + // Kepler.Ephemeris.TL.LogMessage("KepCalc", $"M: {M}") + // // + // // If mean longitude was calculated, adjust it also + // // for motion since epoch of elements. + // // + if (e.L != 0.0d) + { + e.L += dailymotion; + e.L = mod360(e.L); + } + // // + // // By Kepler's second law, M must be equal to + // // the area swept out in the same time by an + // // elliptical orbit of same total area. + // // Integrate the ellipse expressed in polar coordinates + // // r = a(1-e^2)/(1 + e cosW) + // // with respect to the angle W to get an expression for the + // // area swept out by the radius vector. The area is given + // // by the mean anomaly; the angle is solved numerically. + // // + // // The answer is obtained in two steps. We first solve + // // Kepler's equation + // // M = E - eccent*sin(E) + // // for the eccentric anomaly E. Then there is a + // // closed form solution for W in terms of E. + // // + E1 = M; // /* Initial guess is same as circular orbit. */ + temp = 1.0d; + do + { + // // The approximate area swept out in the ellipse + // // ...minus the area swept out in the circle + temp = E1 - eccent * Sin(E1) - M; + // // ...should be zero. Use the derivative of the error + // //to converge to solution by Newton's method. + E1 -= temp / (1.0d - eccent * Cos(E1)); + } + while (Abs(temp) > 0.00000000001d); + + // // + // // The exact formula for the area in the ellipse is + // // 2.0*atan(c2*tan(0.5*W)) - c1*eccent*sin(W)/(1+e*cos(W)) + // // where + // // c1 = sqrt( 1.0 - eccent*eccent ) + // // c2 = sqrt( (1.0-eccent)/(1.0+eccent) ). + // // Substituting the following value of W + // // yields the exact solution. + // // + temp = Sqrt((1.0d + eccent) / (1.0d - eccent)); + W = 2.0d * Atan(temp * Tan(0.5d * E1)); + // Kepler.Ephemeris.TL.LogMessage("KepCalc", $"E: {E1}, W: {W}") + + // // + // // The true anomaly. + // // + W = modtp(W); + + meananomaly *= DTR; + // // + // // Orbital longitude measured from node + // // (argument of latitude) + // // + if (e.L != 0.0d) // // Mean longitude given + { + alat = e.L * DTR + W - meananomaly - ascnode; + } + else + { + alat = W + DTR * argperih; + } // // Mean longitude not given + // // + // // From the equation of the ellipse, get the + // // radius from central focus to the object. + // // + r = meandistance * (1.0d - eccent * eccent) / (1.0d + eccent * Cos(W)); + } + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "Before All orbits") + inclination *= DTR; // // Convert inclination to radians + + // // ---------- + // // ALL ORBITS + // // ---------- + // // + // // At this point: + // // + // // alat = argument of latitude (rad) + // // inclination = inclination (rad) + // // r = radius from central focus + // // + // // The heliocentric ecliptic longitude of the object is given by: + // // + // // tan(longitude - ascnode) = cos(inclination) * tan(alat) + // // + coso = Cos(alat); + sino = Sin(alat); + W = sino * Cos(inclination); + E1 = atan4(coso, W) + ascnode; + // Kepler.Ephemeris.TL.LogMessage("KepCalc", $"coso: {coso}, sino: {sino}, W: {W}, E: {E1}, ascnode: {ascnode}, atan4: {atan4(coso, W)}") + + // // + // // The ecliptic latitude of the object + // // + W = Asin(sino * Sin(inclination)); + + // // ------------------------------------ + // // Both from DE404 and from elements... + // // ------------------------------------ + // // + // // At this point we have the heliocentric ecliptic polar + // // coordinates of the body. + // // + kepdon: + ; + + + // // + // // Convert to heliocentric ecliptic rectangular coordinates, + // // using the perturbed latitude. + // // + rect[2] = r * Sin(W); + cosa = Cos(W); + rect[1] = r * cosa * Sin(E1); + rect[0] = r * cosa * Cos(E1); + // Kepler.Ephemeris.TL.LogMessage("KepCalc", $"Rect0: {rect(0)}, Rect1: {rect(1)}, Rect2: {rect(2)}") + + // // + // // Convert from heliocentric ecliptic rectangular + // // to heliocentric equatorial rectangular coordinates + // // by rotating epsilon radians about the x axis. + // // + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "Before epsiln") + epsiln(e.equinox, ref eps, ref coseps, ref sineps); + W = coseps * rect[1] - sineps * rect[2]; + M = sineps * rect[1] + coseps * rect[2]; + rect[1] = W; + rect[2] = M; + + // // + // // Precess the equatorial (rectangular) coordinates to the + // // ecliptic & equinox of J2000.0, if not already there. + // // + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "Before precess") + precess(ref rect, e.equinox, 1); + + // // + // // If earth, adjust from earth-moon barycenter to earth + // // by AA page E2. + // // + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "Before embofs") + if (e.obname == "Earth") + embofs(J, ref rect, ref r); // /* see embofs() below */ + // Kepler.Ephemeris.TL.LogMessage("KepCalc", "Exited") + + } + + // // + // // Adjust position from Earth-Moon barycenter to Earth + // // + // // J = Julian day number + // // emb = Equatorial rectangular coordinates of EMB. + // // pr = Earth's distance to the Sun (au) + // // + internal static void embofs(double J, ref double[] ea, ref double pr) + { + + double[] pm = new double[4], polm = new double[4]; + double a, b; + int i; + + // Dim TL As New TraceLogger("", "Embofs") + // TL.Enabled = True + // Kepler.Ephemeris.TL.LogMessage("Embofs", "Start") + // // + // // Compute the vector Moon - Earth. + // // + // Kepler.Ephemeris.TL.LogMessage("Embofs", "Before GMoon") + gmoon(J, ref pm, ref polm); + // Kepler.Ephemeris.TL.LogMessage("Embofs", "After GMoon") + + // // + // // Precess the lunar position + // // to ecliptic and equinox of J2000.0 + // // + precess(ref pm, J, 1); + // Kepler.Ephemeris.TL.LogMessage("Embofs", "After Precess") + + // // + // // Adjust the coordinates of the Earth + // // + a = 1.0d / (emrat + 1.0d); + b = 0.0d; + for (i = 0; i <= 2; i++) + { + ea[i] = ea[i] - a * pm[i]; + b = b + ea[i] * ea[i]; + } + + // // + // // Sun-Earth distance. + // // + pr = Sqrt(b); + } + #endregion + + #region MajElems + // /* Orbits for each planet. The indicated orbital elements are + // * not actually used, since the positions are are now calculated + // * from a formula. Magnitude and semidiameter are still used. + // */ + + + // /* January 5.0, 1987 */ + internal static Orbit mercury = new Orbit("Mercury", 2446800.5d, 7.0048d, 48.177d, 29.074d, 0.387098d, 4.09236d, 0.205628d, 198.7199d, 2446800.5d, -0.42d, 3.36d, Mer404Data.mer404, 0.0d, 0.0d, 0.0d); + + // /* Note the calculated apparent visual magnitude for Venus is not very accurate. */ + internal static Orbit venus = new Orbit("Venus", 2446800.5d, 3.3946d, 76.561d, 54.889d, 0.723329d, 1.60214d, 0.006757d, 9.0369d, 2446800.5d, -4.4d, 8.34d, Ven404Data.ven404, 0.0d, 0.0d, 0.0d); + + // /* Fixed numerical values will be used for earth if read in from a file named earth.orb. See kfiles.c, kep.h. */ + internal static Orbit earthplanet = new Orbit("Earth", 2446800.5d, 0.0d, 0.0d, 102.884d, 0.999999d, 0.985611d, 0.016713d, 1.1791d, 2446800.5d, -3.86d, 0.0d, Ear404Data.ear404, 0.0d, 0.0d, 0.0d); + + internal static Orbit mars = new Orbit("Mars", 2446800.5d, 1.8498d, 49.457d, 286.343d, 1.52371d, 0.524023d, 0.093472d, 53.1893d, 2446800.5d, -1.52d, 4.68d, Mar404Data.mar404, 0.0d, 0.0d, 0.0d); + + internal static Orbit jupiter = new Orbit("Jupiter", 2446800.5d, 1.3051d, 100.358d, 275.129d, 5.20265d, 0.0830948d, 0.0481d, 344.5086d, 2446800.5d, -9.4d, 98.44d, Jup404Data.jup404, 0.0d, 0.0d, 0.0d); + + internal static Orbit saturn = new Orbit("Saturn", 2446800.5d, 2.4858d, 113.555d, 337.969d, 9.5405d, 0.033451d, 0.052786d, 159.6327d, 2446800.5d, -8.88d, 82.73d, Sat404Data.sat404, 0.0d, 0.0d, 0.0d); + + internal static Orbit uranus = new Orbit("Uranus", 2446800.5d, 0.7738d, 73.994d, 98.746d, 19.2233d, 0.0116943d, 0.045682d, 84.8516d, 2446800.5d, -7.19d, 35.02d, Ura404Data.ura404, 0.0d, 0.0d, 0.0d); + + internal static Orbit neptune = new Orbit("Neptune", 2446800.5d, 1.7697d, 131.677d, 250.623d, 30.1631d, 0.00594978d, 0.009019d, 254.2568d, 2446800.5d, -6.87d, 33.5d, Nep404Data.nep404, 0.0d, 0.0d, 0.0d); + + internal static Orbit pluto = new Orbit("Pluto", 2446640.5d, 17.1346d, 110.204d, 114.21d, 39.4633d, 0.0039757d, 0.248662d, 355.0554d, 2446640.5d, -1.0d, 2.07d, Plu404Data.plu404, 0.0d, 0.0d, 0.0d); + #endregion + + #region GPlan + private static double[,] ss = new double[19, 32]; + private static double[,] cc = new double[19, 32]; + private static double[] Args = new double[19]; + private static double LP_equinox, NF_arcsec, Ea_arcsec, pA_precession; + + // /* Routines to chew through tables of perturbations. */ + internal static double mods3600(double x) + { + return x - 1296000.0d * Floor(x / 1296000.0d); + } + + // /* From Simon et al (1994) */ + // /* Arc sec per 10000 Julian years. */ + internal static double[] freqs = new double[] { 53810162868.8982d, 21066413643.3548d, 12959774228.3429d, 6890507749.3988d, 1092566037.7991d, 439960985.5372d, 154248119.3933d, 78655032.0744d, 52272245.1795d }; + + // /* Arc sec. */ + internal static double[] phases = new double[] { 252.25090552d * 3600.0d, 181.97980085d * 3600.0d, 100.46645683d * 3600.0d, 355.43299958d * 3600.0d, 34.35151874d * 3600.0d, 50.0774443d * 3600.0d, 314.05500511d * 3600.0d, 304.34866548d * 3600.0d, 860492.1546d }; + + internal static int gplan(double JD, ref plantbl plan, ref double[] pobj) + { + double su, cu, sv, cv, TI; + double t, sl, sb, sr; + int i, j, k, m, n, k1, ip, np, nt; + int p, pl, pb, pr; + + // Kepler.Ephemeris.TL.LogMessage("gplan", $"Entered GPlan method") + + TI = (JD - J2000) / plan.timescale; + n = plan.maxargs; + // /* Calculate sin( i*MM ), etc. for needed multiple angles. */ + var loopTo = n - 1; + for (i = 0; i <= loopTo; i++) + { + j = plan.max_harmonic[i]; + if (j > 0) + { + sr = (mods3600(freqs[i] * TI) + phases[i]) * STR; + sscc(i, sr, j); + } + } + + // /* Point to start of table of arguments. */ + + p = 0; // p = plan.arg_tbl + // /* Point to tabulated cosine and sine amplitudes. */ + pl = 0; // pl = plan.lon_tbl + pb = 0; // pb = plan.lat_tbl + pr = 0; // pr = plan.rad_tbl + + sl = 0.0d; + sb = 0.0d; + sr = 0.0d; + + do + { + // /* argument of sine and cosine */ + // /* Number of periodic arguments. */ + np = plan.arg_tbl[p]; + p += 1; + if (np < 0) + break; + if (np == 0) // /* It is a polynomial term. */ + { + nt = plan.arg_tbl[p]; + p += 1; + cu = plan.lon_tbl[pl]; + pl += 1; // /* Longitude polynomial. */ + var loopTo1 = nt - 1; + for (ip = 0; ip <= loopTo1; ip++) + { + cu = cu * TI + plan.lon_tbl[pl]; + pl += 1; + } + sl += mods3600(cu); + + cu = plan.lat_tbl[pb]; + pb += 1; // /* Latitude polynomial. */ + var loopTo2 = nt - 1; + for (ip = 0; ip <= loopTo2; ip++) + { + cu = cu * TI + plan.lat_tbl[pb]; + pb += 1; + } + sb += cu; + + cu = plan.rad_tbl[pr]; + pr += 1; // /* Radius polynomial. */ + var loopTo3 = nt - 1; + for (ip = 0; ip <= loopTo3; ip++) + { + cu = cu * TI + plan.rad_tbl[pr]; + pr += 1; + } + sr += cu; + } + else + { + k1 = 0; + cv = 0.0d; + sv = 0.0d; + var loopTo4 = np - 1; + for (ip = 0; ip <= loopTo4; ip++) + { + j = plan.arg_tbl[p]; + p += 1; // /* What harmonic. */ + m = plan.arg_tbl[p] - 1; + p += 1; // /* Which planet. */ + if (j != 0) + { + k = j; + if (j < 0) + k = -k; + k -= 1; + su = ss[m, k]; // /* sin(k*angle) */ + if (j < 0) + su = -su; + cu = cc[m, k]; + if (k1 == 0) + { + // /* set first angle */ + sv = su; + cv = cu; + k1 = 1; + } + else + { + // /* combine angles */ + t = su * cv + cu * sv; + cv = cu * cv - su * sv; + sv = t; + } + } + } + // /* Highest power of T. */ + nt = plan.arg_tbl[p]; + p += 1; + cu = plan.lon_tbl[pl]; + pl += 1; // /* Longitude. */ + su = plan.lon_tbl[pl]; + pl += 1; + var loopTo5 = nt - 1; + for (ip = 0; ip <= loopTo5; ip++) + { + cu = cu * TI + plan.lon_tbl[pl]; + pl += 1; + su = su * TI + plan.lon_tbl[pl]; + pl += 1; + } + sl += cu * cv + su * sv; + + cu = plan.lat_tbl[pb]; + pb += 1; // /* Latitiude. */ + su = plan.lat_tbl[pb]; + pb += 1; + var loopTo6 = nt; + for (ip = 1; ip <= loopTo6; ip++) + { + cu = cu * TI + plan.lat_tbl[pb]; + pb += 1; + su = su * TI + plan.lat_tbl[pb]; + pb += 1; + } + sb += cu * cv + su * sv; + + cu = plan.rad_tbl[pr]; + pr += 1; // /* Radius. */ + su = plan.rad_tbl[pr]; + pr += 1; + var loopTo7 = nt; + for (ip = 1; ip <= loopTo7; ip++) + { + cu = cu * TI + plan.rad_tbl[pr]; + pr += 1; + su = su * TI + plan.rad_tbl[pr]; + pr += 1; + } + sr += cu * cv + su * sv; + } + } + while (true); + + pobj[0] = STR * sl; + pobj[1] = STR * sb; + pobj[2] = STR * plan.distance * sr + plan.distance; + + return 0; + } + + + // /* Prepare lookup table of sin and cos ( i*Lj ) + // * for required multiple angles + // */ + internal static int sscc(int k, double arg, int n) + { + double cu, su, cv, sv, s; + int i; + + su = Sin(arg); + cu = Cos(arg); + ss[k, 0] = su; // /* sin(L) */ + cc[k, 0] = cu; // /* cos(L) */ + sv = 2.0d * su * cu; + cv = cu * cu - su * su; + ss[k, 1] = sv; // /* sin(2L) */ + cc[k, 1] = cv; + var loopTo = n - 1; + for (i = 2; i <= loopTo; i++) + { + s = su * cv + cu * sv; + cv = cu * cv - su * sv; + sv = s; + ss[k, i] = sv; // /* sin( i+1 L ) */ + cc[k, i] = cv; + } + return 0; + } + // /* Compute mean elements at Julian date J. */ + + public static void mean_elements(double J) + { + double x, T, T2; + + // /* Time variables. T is in Julian centuries. */ + T = (J - 2451545.0d) / 36525.0d; + T2 = T * T; + + // /* Mean longitudes of planets (Simon et al, 1994) .047" subtracted from constant term for offset to DE403 origin. */ + + // /* Mercury */ + x = mods3600(538101628.68898189d * T + 908103.213d); + x += (0.00000639d * T - 0.0192789d) * T2; + Args[0] = STR * x; + + // /* Venus */ + x = mods3600(210664136.43354821d * T + 655127.236d); + x += (-0.00000627d * T + 0.0059381d) * T2; + Args[1] = STR * x; + + // /* Earth */ + x = mods3600(129597742.283429d * T + 361679.198d); + x += (-0.00000523d * T - 0.0204411d) * T2; + Ea_arcsec = x; + Args[2] = STR * x; + + // /* Mars */ + x = mods3600(68905077.493988d * T + 1279558.751d); + x += (-0.00001043d * T + 0.0094264d) * T2; + Args[3] = STR * x; + + // /* Jupiter */ + x = mods3600(10925660.377991d * T + 123665.42d); + x += ((((-0.00000000034d * T + 0.0000000591d) * T + 0.000004667d) * T + 0.00005706d) * T - 0.3060378d) * T2; + Args[4] = STR * x; + + // /* Saturn */ + x = mods3600(4399609.855372d * T + 180278.752d); + x += ((((0.00000000083d * T - 0.0000001452d) * T - 0.000011484d) * T - 0.00016618d) * T + 0.7561614d) * T2; + Args[5] = STR * x; + + // /* Uranus */ + x = mods3600(1542481.193933d * T + 1130597.971d) + (0.00002156d * T - 0.0175083d) * T2; + Args[6] = STR * x; + + // /* Neptune */ + x = mods3600(786550.320744d * T + 1095655.149d) + (-0.00000895d * T + 0.0021103d) * T2; + Args[7] = STR * x; + + // /* Copied from cmoon.c, DE404 version. */ + // /* Mean elongation of moon = D */ + x = mods3600(1602961600.9939659d * T + 1072261.2202445078d); + x += (((((-0.0000000000003207663637426d * T + 0.00000000002555243317839d) * T + 0.000000002560078201452d) * T - 0.00003702060118571d) * T + 0.0069492746836058421d) * T - 6.7352202374457519d) * T2; + // /* D, t^2 */ + Args[9] = STR * x; + + // /* Mean distance of moon from its ascending node = F */ + x = mods3600(1739527262.8437717d * T + 335779.5141288474d); + x += (((((0.0000000000004474984866301d * T + 0.00000000004189032191814d) * T - 0.000000002790392351314d) * T - 0.000002165750777942d) * T - 0.00075311878482337989d) * T - 13.117809789650071d) * T2; + // /* F, t^2 */ + NF_arcsec = x; + Args[10] = STR * x; + + // /* Mean anomaly of sun = l' (J. Laskar) */ + x = mods3600(129596581.0230432d * T + 1287102.7407441526d); + x += ((((((((1.62E-20d * T - 1.039E-17d) * T - 0.00000000000000383508d) * T + 0.0000000000004237343d) * T + 0.000000000088555011d) * T - 0.0000000477258489d) * T - 0.000011297037031d) * T + 0.0000874737173673247d) * T - 0.55281306421783094d) * T2; + + Args[11] = STR * x; + + // /* Mean anomaly of moon = l */ + x = mods3600(1717915922.8846793d * T + 485868.17465825332d); + x += ((((-0.000000000001755312760154d * T + 0.00000000003452144225877d * T - 0.00000002506365935364d) * T - 0.0002536291235258d) * T + 0.052099641302735818d) * T + 31.501359071894147d) * T2; + // /* l, t^2 */ + Args[12] = STR * x; + + // /* Mean longitude of moon, re mean ecliptic and equinox of date = L */ + x = mods3600(1732564372.0442266d * T + 785939.8092105242d); + x += (((((0.00000000000007200592540556d * T + 0.0000000002235210987108d) * T - 0.00000001024222633731d) * T - 0.00006073960534117d) * T + 0.006901724852838049d) * T - 5.65504600274714d) * T2; + // /* L, t^2 */ + LP_equinox = x; + Args[13] = STR * x; + + // /* Precession of the equinox */ + x = (((((((((-8.66E-20d * T - 4.759E-17d) * T + 0.000000000000002424d) * T + 0.0000000000013095d) * T + 0.00000000017451d) * T - 0.000000018055d) * T - 0.0000235316d) * T + 0.000076d) * T + 1.105414d) * T + 5028.791959d) * T; + + // /* Moon's longitude re fixed J2000 equinox. */ + // /* + // Args(13) -= x; + // */ + pA_precession = STR * x; + + // /* Free librations. */ + // /* longitudinal libration 2.891725 years */ + x = mods3600(44817540.9d * T + 806045.7d); + Args[14] = STR * x; + // /* libration P, 24.2 years */ + x = mods3600(5364867.87d * T - 391702.8d); + Args[15] = STR * x; + + // Args(16) = 0.0 + + // /* libration W, 74.7 years. */ + x = mods3600(1735730.0d * T); + Args[17] = STR * x; + } + + + // /* Generic program to accumulate sum of trigonometric series + // in three variables (e.g., longitude, latitude, radius) + // of the same list of arguments. */ + + internal static int g3plan(double JD, ref plantbl plan, ref double[] pobj, int objnum) + { + int i, j, k, m, n, k1, ip, np, nt; + int p, pl, pb, pr; + double su, cu, sv, cv; + double TI, t, sl, sb, sr; + + mean_elements(JD); + // #If 0 Then + // /* For librations, moon's longitude is sidereal. */ + // If (flag) Then + // Args(13) -= pA_precession; + // #End If + + TI = (JD - J2000) / plan.timescale; + n = plan.maxargs; + // /* Calculate sin( i*MM ), etc. for needed multiple angles. */ + var loopTo = n - 1; + for (i = 0; i <= loopTo; i++) + { + j = plan.max_harmonic[i]; + if (j > 0) + sscc(i, Args[i], j); + } + + // /* Point to start of table of arguments. */ + p = 0; // plan.arg_tbl + // /* Point to tabulated cosine and sine amplitudes. */ + pl = 0; // plan.lon_tbl + pb = 0; // plan.lat_tbl + pr = 0; // plan.rad_tbl + sl = 0.0d; + sb = 0.0d; + sr = 0.0d; + + do + { + // /* argument of sine and cosine */ + // /* Number of periodic arguments. */ + np = plan.arg_tbl[p]; + p += 1; + if (np < 0) + break; + if (np == 0) // /* It is a polynomial term. */ + { + nt = plan.arg_tbl[p]; + p += 1; + cu = plan.lon_tbl[pl]; + pl += 1; // /* "Longitude" polynomial (phi). */ + var loopTo1 = nt - 1; + for (ip = 0; ip <= loopTo1; ip++) + { + cu = cu * TI + plan.lon_tbl[pl]; + pl += 1; + } + // /* sl += mods3600 (cu); */ + sl += cu; + + cu = plan.lat_tbl[pb]; + pb += 1; // /* "Latitude" polynomial (theta). */ + var loopTo2 = nt - 1; + for (ip = 0; ip <= loopTo2; ip++) + { + cu = cu * TI + plan.lat_tbl[pb]; + pb += 1; + } + sb += cu; + + cu = plan.rad_tbl[pr]; + pr += 1; // /* Radius polynomial (psi). */ + var loopTo3 = nt - 1; + for (ip = 0; ip <= loopTo3; ip++) + { + cu = cu * TI + plan.rad_tbl[pr]; + pr += 1; + } + sr += cu; + } + else + { + k1 = 0; + cv = 0.0d; + sv = 0.0d; + var loopTo4 = np - 1; + for (ip = 0; ip <= loopTo4; ip++) + { + j = plan.arg_tbl[p]; + p += 1; // /* What harmonic. */ + m = plan.arg_tbl[p] - 1; + p += 1; // /* Which planet. */ + if (j != 0) + { + // /* k = abs (j); */ + if (j < 0) + { + k = -j; + } + else + { + k = j; + } + k -= 1; + su = ss[m, k]; // /* sin(k*angle) */ + if (j < 0) + su = -su; + cu = cc[m, k]; + if (k1 == 0) // /* set first angle */ + { + sv = su; + cv = cu; + k1 = 1; + } + else + { + // /* combine angles */ + t = su * cv + cu * sv; + cv = cu * cv - su * sv; + sv = t; + } + } + } + // /* Highest power of T. */ + nt = plan.arg_tbl[p]; + p += 1; + + // /* Longitude. */ + cu = plan.lon_tbl[pl]; + pl += 1; + su = plan.lon_tbl[pl]; + pl += 1; + var loopTo5 = nt - 1; + for (ip = 0; ip <= loopTo5; ip++) + { + cu = cu * TI + plan.lon_tbl[pl]; + pl += 1; + su = su * TI + plan.lon_tbl[pl]; + pl += 1; + } + sl += cu * cv + su * sv; + + // /* Latitiude. */ + cu = plan.lat_tbl[pb]; + pb += 1; + su = plan.lat_tbl[pb]; + pb += 1; + var loopTo6 = nt - 1; + for (ip = 0; ip <= loopTo6; ip++) + { + cu = cu * TI + plan.lat_tbl[pb]; + pb += 1; + su = su * TI + plan.lat_tbl[pb]; + pb += 1; + } + sb += cu * cv + su * sv; + + // /* Radius. */ + cu = plan.rad_tbl[pr]; + pr += 1; + su = plan.rad_tbl[pr]; + pr += 1; + var loopTo7 = nt - 1; + for (ip = 0; ip <= loopTo7; ip++) + { + cu = cu * TI + plan.rad_tbl[pr]; + pr += 1; + su = su * TI + plan.rad_tbl[pr]; + pr += 1; + } + sr += cu * cv + su * sv; + } + } + while (true); + t = plan.trunclvl; + pobj[0] = Args[objnum - 1] + STR * t * sl; + pobj[1] = STR * t * sb; + pobj[2] = plan.distance * (1.0d + STR * t * sr); + return 0; + } + + // /* Generic program to accumulate sum of trigonometric series + // in two variables (e.g., longitude, radius) + // of the same list of arguments. */ + internal static int g2plan(double JD, ref plantbl plan, ref double[] pobj) + { + int i, j, k, m, n, k1, ip, np, nt; + int p, pl, pr; + double su, cu, sv, cv; + double TI, t, sl, sr; + + mean_elements(JD); + // #If 0 Then + // /* For librations, moon's longitude is sidereal. */ + // If (flag) Then + // Args(13) -= pA_precession; + // #End If + TI = (JD - J2000) / plan.timescale; + n = plan.maxargs; + // /* Calculate sin( i*MM ), etc. for needed multiple angles. */ + var loopTo = n - 1; + for (i = 0; i <= loopTo; i++) + { + j = plan.max_harmonic[i]; + if (j > 0) + sscc(i, Args[i], j); + } + + // /* Point to start of table of arguments. */ + p = 0; // plan.arg_tbl + // /* Point to tabulated cosine and sine amplitudes. */ + pl = 0; // (long *) plan.lon_tbl; + pr = 0; // (long *) plan.rad_tbl; + sl = 0.0d; + sr = 0.0d; + + do + { + // /* argument of sine and cosine */ + // /* Number of periodic arguments. */ + np = plan.arg_tbl[p]; + p += 1; // *p++; + if (np < 0) + break; + + if (np == 0) // /* It is a polynomial term. */ + { + nt = plan.arg_tbl[p]; + p += 1; + cu = plan.lon_tbl[pl]; + pl += 1; // *pl++; '/* Longitude polynomial. */ + var loopTo1 = nt - 1; + for (ip = 0; ip <= loopTo1; ip++) + { + cu = cu * TI + plan.lon_tbl[pl]; + pl += 1; // *pl++; + } + // /* sl += mods3600 (cu); */ + sl += cu; + // /* Radius polynomial. */ + cu = plan.rad_tbl[pr]; + pr += 1; // *pr++; + var loopTo2 = nt - 1; + for (ip = 0; ip <= loopTo2; ip++) + { + cu = cu * TI + plan.rad_tbl[pr]; + pr += 1; + } + sr += cu; + } + else + { + k1 = 0; + cv = 0.0d; + sv = 0.0d; + var loopTo3 = np - 1; + for (ip = 0; ip <= loopTo3; ip++) + { + j = plan.arg_tbl[p]; + p += 1; // /* What harmonic. */ + m = plan.arg_tbl[p] - 1; + p += 1; // /* Which planet. */ + if (j != 0) + { + // /* k = abs (j); */ + if (j < 0) + { + k = -j; + } + else + { + k = j; + } + k -= 1; + su = ss[m, k]; // /* sin(k*angle) */ + if (j < 0) + su = -su; + cu = cc[m, k]; + if (k1 == 0) + { + // /* set first angle */ + sv = su; + cv = cu; + k1 = 1; + } + else + { + // /* combine angles */ + t = su * cv + cu * sv; + cv = cu * cv - su * sv; + sv = t; + } + } + } + // /* Highest power of T. */ + nt = plan.arg_tbl[p]; + p += 1; // *p++; + // /* Longitude. */ + cu = plan.lon_tbl[pl]; + pl += 1; + su = plan.lon_tbl[pl]; + pl += 1; + var loopTo4 = nt - 1; + for (ip = 0; ip <= loopTo4; ip++) + { + cu = cu * TI + plan.lon_tbl[pl]; + pl += 1; + su = su * TI + plan.lon_tbl[pl]; + pl += 1; + } + sl += cu * cv + su * sv; + // /* Radius. */ + cu = plan.rad_tbl[pr]; + pr += 1; + su = plan.rad_tbl[pr]; + pr += 1; + var loopTo5 = nt - 1; + for (ip = 0; ip <= loopTo5; ip++) + { + cu = cu * TI + plan.rad_tbl[pr]; + pr += 1; + su = su * TI + plan.rad_tbl[pr]; + pr += 1; + } + sr += cu * cv + su * sv; + } + } + while (true); + t = plan.trunclvl; + pobj[0] = t * sl; + pobj[2] = t * sr; + return 0; + } + + + // /* Generic program to accumulate sum of trigonometric series + // in one variable. */ + + internal static double g1plan(double JD, ref plantbl plan) + { + int i, j, k, m, k1, ip, np, nt; + int p, pl; + double su, cu, sv, cv; + double TI, t, sl; + + TI = (JD - J2000) / plan.timescale; + mean_elements(JD); + // /* Calculate sin( i*MM ), etc. for needed multiple angles. */ + for (i = 0; i <= NARGS - 1; i++) + { + j = plan.max_harmonic[i]; + if (j > 0) + sscc(i, Args[i], j); + } + + // /* Point to start of table of arguments. */ + p = 0; // plan.arg_tbl; + // /* Point to tabulated cosine and sine amplitudes. */ + pl = 0; // (long *) plan.lon_tbl; + sl = 0.0d; + + do // /* argument of sine and cosine */ + { + // /* Number of periodic arguments. */ + np = plan.arg_tbl[p]; + p += 1; // *p++; + if (np < 0) + break; + if (np == 0) + { + // /* It is a polynomial term. */ + nt = plan.arg_tbl[p]; + p += 1; // *p++; + cu = plan.lon_tbl[pl]; + pl += 1; // *pl++; + var loopTo = nt - 1; + for (ip = 0; ip <= loopTo; ip++) + { + cu = cu * TI + plan.lon_tbl[pl]; + pl += 1; // *pl++; + } + // /* sl += mods3600 (cu); */ + sl += cu; + } + else + { + k1 = 0; + cv = 0.0d; + sv = 0.0d; + var loopTo1 = np - 1; + for (ip = 0; ip <= loopTo1; ip++) + { + j = plan.arg_tbl[p]; + p += 1; // /* What harmonic. */ + m = plan.arg_tbl[p] - 1; + p += 1; // /* Which planet. */ + if (j != 0) + { + // /* k = abs (j); */ + if (j < 0) + { + k = -j; + } + else + { + k = j; + } + k -= 1; + su = ss[m, k]; // /* sin(k*angle) */ + if (j < 0) + su = -su; + cu = cc[m, k]; + if (k1 == 0) + { + // /* set first angle */ + sv = su; + cv = cu; + k1 = 1; + } + else + { + // /* combine angles */ + t = su * cv + cu * sv; + cv = cu * cv - su * sv; + sv = t; + } + } + } + // /* Highest power of T. */ + nt = plan.arg_tbl[p]; + p += 1; + // /* Cosine and sine coefficients. */ + cu = plan.lon_tbl[pl]; + pl += 1; + su = plan.lon_tbl[pl]; + pl += 1; + var loopTo2 = nt - 1; + for (ip = 0; ip <= loopTo2; ip++) + { + cu = cu * TI + plan.lon_tbl[pl]; + pl += 1; + su = su * TI + plan.lon_tbl[pl]; + pl += 1; + } + sl += cu * cv + su * sv; + } + } + while (true); + return plan.trunclvl * sl; + } + + internal static int gmoon(double J, ref double[] rect, ref double[] pol) + { + double x, cosB, sinB, cosL, sinL, eps = default, coseps = default, sineps = default; + // Dim TL As New TraceLogger("", "GMoon") + // TL.Enabled = True + // Kepler.Ephemeris.TL.LogMessage("GMoon", "Before G2Plan") + g2plan(J, ref Mlr404Data.moonlr, ref pol); + // Kepler.Ephemeris.TL.LogMessage("GMoon", "After G2Plan") + x = pol[0]; + x += LP_equinox; + if (x < -645000.0d) + x += 1296000.0d; + if (x > 645000.0d) + x -= 1296000.0d; + pol[0] = STR * x; + // Kepler.Ephemeris.TL.LogMessage("GMoon", "Before G1Plan") + x = g1plan(J, ref Mlat404Data.moonlat); + // Kepler.Ephemeris.TL.LogMessage("GMoon", "After G1Plan") + pol[1] = STR * x; + x = (1.0d + STR * pol[2]) * Mlr404Data.moonlr.distance; + pol[2] = x; + // /* Convert ecliptic polar to equatorial rectangular coordinates. */ + // Kepler.Ephemeris.TL.LogMessage("GMoon", "Before Epsilin") + epsiln(J, ref eps, ref coseps, ref sineps); + // Kepler.Ephemeris.TL.LogMessage("GMoon", "After Epsilin") + cosB = Cos(pol[1]); + sinB = Sin(pol[1]); + cosL = Cos(pol[0]); + sinL = Sin(pol[0]); + rect[0] = cosB * cosL * x; + rect[1] = (coseps * cosB * sinL - sineps * sinB) * x; + rect[2] = (sineps * cosB * sinL + coseps * sinB) * x; + // TL.Enabled = False : TL.Dispose() : TL = Nothing + + return 0; + } + + #endregion + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Ear404Data.cs b/ASCOM.Tools/Kepler/Planets/Ear404Data.cs new file mode 100644 index 0000000..f09aa14 --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Ear404Data.cs @@ -0,0 +1,1065 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Ear404Data + { + // /* heliocentric earth-moon barycenter + // polar coordinates re fixed J2000 mean equinox and ecliptic + // S. L. Moshier + // December, 1996 + // Residuals against JPL ephemeris DE404 (arc seconds) + // First date in file = 1221000.50 + // Number of samples = 524290 + // Sampling interval = 3.0 days + // Julian Years Longitude Latitude Distance + // 1 = 725 km + // Peak RMS Ave Peak RMS Ave Peak RMS Ave + // -1369.0 to -1000.0: 0.07 0.02 0.00 0.02 0.00 -0.00 0.03 0.01 -0.00 + // -1000.0 to -500.0: 0.05 0.01 -0.00 0.01 0.00 -0.00 0.03 0.01 -0.00 + // -500.0 to 0.0: 0.04 0.01 0.00 0.01 0.00 0.00 0.03 0.01 -0.00 + // 0.0 to 500.0: 0.05 0.01 -0.00 0.01 0.00 0.00 0.03 0.01 -0.00 + // 500.0 to 1000.0: 0.06 0.01 0.00 0.01 0.00 0.00 0.03 0.01 -0.00 + // 1000.0 to 1500.0: 0.05 0.01 -0.00 0.01 0.00 0.00 0.02 0.01 -0.00 + // 1500.0 to 2000.0: 0.05 0.01 0.00 0.01 0.00 0.00 0.02 0.00 0.00 + // 2000.0 to 2500.0: 0.05 0.01 -0.00 0.01 0.00 -0.00 0.03 0.01 -0.00 + // 2500.0 to 2937.2: 0.07 0.02 0.00 0.02 0.00 -0.00 0.03 0.01 -0.00 + // */ + + internal static double[] tabl = new double[] { -242809, -178223, -6154, -6547, 15526d, -79460, 66185d, -19531, -12754, 4389d, 3153d, -1151, 768d, 1750d, -248, 657d, -80, 0d, -4, -29, -3020, 301d, -360, 412d, -1463, 2266d, -41, 30d, -39868, -14275, -25052, 1583d, 15695d, 10018d, -113, -122, -243, 18d, -33, 31d, -134, -171, 243d, -115, 18d, 148d, -120, -129, 19d, -220, -30, 19d, 8d, 23d, -162, -124, 189d, -315, 73d, 77d, 32006d, -11295, 11595d, 5629d, -838, 1728d, 0d, 4d, 38d, 15d, 142d, -228, 92d, 32d, -2274, -1500, -2277, 3143d, 3204d, 127d, -20, -11, 5186d, 1054d, 996d, 1769d, -231, 163d, -88, -19, -2, -145, -27, 48d, -8, 421d, -7, 148d, -16, -2, -3964, 4259d, -11192, -8385, 11513d, -13415, 103d, -43, -289, -79, -29, 163d, -117, 559d, -190, -15, 7108d, 5345d, 12933d, -7709, 3485d, -26023, 11d, -5, 311d, 78d, 22d, 76d, 2846d, -3922, 2329d, 43d, 34d, 442d, 3d, -245, -5, -3, -17, 5d, 318d, 15963d, 2520d, 7115d, 2548d, -9836, -7063, 1950d, -4471, -8326, 4964d, -3101, 563d, -80, -1444, -472, 8d, -22, 1558d, -88, 235d, 359d, 293d, -16, 144d, 209d, -13, -7, 812d, -744, 150d, -740, -2569, -956, 69d, -2475, 1009d, -55, -1707, -2525, 1071d, -1761, 550d, 279d, -14, 36d, -10442, 3344d, -6759, -21551, 24737d, -434, 504d, -385, 191d, 96d, -2760, -1068, 85d, -2617, 1062d, -43, 192d, -16, 30d, 42d, -2446, 588d, -1522, -2933, 1746d, -1070, 511d, -1401, 139d, 729d, -12, 29d, -2618, -2076, 2079d, -3711, -21, -2727, -80, -19, 113d, 2420d, 325d, 1058d, 379d, -1478, 296d, -251, -265, -409, -10, 20d, 15d, -15, 11d, 143d, -83, 19d, 266d, -17, 40d, 59d, 19d, -105, 5d, 48331d, 21d, -16, -97, -318, 158d, -171, 456d, -351, 168d, 85d, 12d, -2, 20d, -15, 15d, 2d, 385d, -1125, 521d, -23, -815, -2088, 1644d, -1329, 7d, 14d, -582, 234d, -67, -467, -167, -51, -684, -2302, 1315d, -797, 6d, -70, -118, -406, 67d, -63, -4848, 3713d, -8483, -8776, 13049d, -9404, -23, 34d, -12, 1d, -24, -10, -21, 0d, -1, 24d, -3, 28d, -3032, -2494, 2498d, -4342, -6538, 1899d, -4414, -13249, 15540d, -292, -228, 176d, -40, -161, -20, -36, -800, -172, -36, -208, -249, -374, -1410, -72118, -745, 213d, -23, 196d, -14, -2, -239, -341, 1015d, -291, 33d, -94, 90d, -20431, 4d, -39, 75d, 216d, -23, 41d, 116d, 24d, 5d, 26d, -45, -4178, -9, -23, 12d, 18d, 68d, -2, 36d, -19, 42d, -8, 6d, -106, 4d, -38, -73, 259d, 107d, -293, -12, -44, 37d, 13d, 73d, -46, 17d, 8d, 5832d, 1989d, -1404, 4469d, -1619, -743, -1796, -2206, 461d, -291, 153d, 1104d, 19195d, 652503d, 5587d, -5252787, 47d, -17340051, -32, 68926621d, 1054d, -230, -1601, 356d, -562, -998, 124d, -446, -171, 66d, 26d, 60d, -7, 0d, -88, -43, 65d, -400, 4d, 183d, -1014, 2043d, -1076, 126d, -41, -205, -127, -85, -15, 68d, 0d, 0d, -320, 75d, -42, 285d, -303, 771d, 616d, 400d, -470, 48d, -76, -103, -190, -11, -139, -5, -48, -87, -22, -362, -271, 1233d, -392, 353d, -154, -71, -109, 112d, 17d, 8d, 1d, -17, -170, 623d, -279, 21d, 139d, -151, -107, -55199, 588d, -188, 397d, 674d, -406, 269d, 166d, -207, 585d, 333d, -386, 754d, 29d, -65, 35d, 10d, 63d, 1291d, 62d, 8d, 239d, 1323d, -1434, 53d, 19d, -1, 34d, 82d, -15, -16, 265d, -338, -729, -207, 3d, 17d, 697d, 399d, 274d, 760d, -12, 2d, -48, -9, 3d, 64d, 147d, 36d, 9d, 46d, 77d, 144d, -76, 65d, 2329d, 1763d, 987d, 5506d, 66d, -123, -41, -24, -12, 1d, -19, 94d, 19d, 8d, -1, -18, 142d, 77d, -78, 187d, 6d, 18d, 607d, 163d, 17d, 158d, 27d, -208, 154d, 27317d, 587d, -143, 22d, -153, 5d, -34, 75d, 330d, 98d, -128, -67, -6542, -115, -236, 217d, -12, 10d, -6, -250, 653d, 1611d, -209, 4d, 1072d, -129, 216d, 402d, 81d, 117d, 11d, 0d, 20d, 24d, -28, 245d, 437d, -16, 59d, 527952d, -74895, 169682d, 177186d, -376, -362869, -60, 719658d, -151, -382, -22, -43, 5d, -5, 14d, 5d, -9, 13d, 83d, 296d, -369, -1, -14, -6, 42d, 8d, -31, 7d, -354, 634d, 1132d, 243d, -38, 42d, -14, 68d, -6, 31d, -36, -13, 7d, -2104, 16d, 67d, 9d, -4, 174d, 144d, 58d, 438d, -15, 5d, -16, 19d, -135, 1642d, -140, -11, -4, 27d, 253d, -382, -651, -221, 11d, 1d, -12, -6, 136d, 23d, -1, 43d, 3d, 38d, -26, -5, 17864d, -4244, 5704d, 7754d, -36, -7891, -3, 10418d, 2d, -844, -1, 126d, -7, 32d, -67, -5, 39d, 10d, 5d, 52d, -13, 159d, -49, -21, 1d, -394, 7d, -15, -4, -245, 1d, 172d, -36, -3, 13d, 5d, 0d, 1d, -1, 0d, 0d, -202, -2, 19d, -20, -2, 5d, 3d, 0d, -110, -12, -1, 0d, -62, 0d, -36, 0d, -22, -13, 3d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabb = new double[] { -428091, -488399, 746850d, 6d, 210d, -93, 32d, 1d, -365, 332d, -105, 76d, -7, 2d, -8, 14d, -1, 2d, 0d, 0d, -65, 12d, -17, 7d, -1, 1d, 0d, 0d, -15, 65d, -4, 26d, -2, 0d, 0d, 0d, 0d, 2d, 0d, 0d, 2d, 2d, 0d, 0d, 0d, 0d, -1, -3, 0d, 0d, 0d, 0d, 0d, 0d, -2, 0d, 0d, 0d, -1, 0d, -30, 28d, -6, 10d, 0d, 0d, 0d, 0d, 0d, 0d, 2d, 0d, 0d, 0d, -16, 20d, -6, -41, -9, -3, 0d, 0d, -6, 2d, 2d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, -96, 33d, -12, 228d, -23, -21, 0d, 0d, -12, -2, -4, 4d, -1, 0d, 1d, 0d, -329, -22, -34, -726, -147, -21, 0d, 0d, -2, 4d, -1, 0d, 2d, -7, 0d, 1d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 36d, 88d, -162, -19, -11, 21d, 31d, 37d, -31, 53d, -5, -15, -3, -11, 9d, 3d, 0d, 0d, -2, 0d, 1d, 0d, 2d, -1, 0d, 0d, 0d, 0d, -162, -102, -37, 30d, 19d, 23d, -18, 9d, 1d, -6, -6, 22d, -2, 3d, 1d, -2, 0d, -1, 26d, -25, 66d, 52d, -641, -153, -13, -9, 2d, -3, -29, 8d, -6, -2, 0d, -6, 2d, -4, 1d, 0d, -26, -11, -1, -10, -6, -13, 66d, -1337, -879, -207, 1d, -1, 8d, -30, -24, -18, -16, 1d, 9d, 1d, -24, -8, 9d, -17, -13, 75d, 19d, -8, -29, 24d, 0d, 0d, -1, 1d, -25, 36d, -7, -22, 0d, -3, 1d, -1, 187d, -46, -6, 74d, 5d, -10, -5, -4, -16, 10d, -5, -5, 2d, -4, 5d, -2, -2, 1d, -1, 0d, -16, -12, 1d, -13, -17, -111, -186, 73d, -1, -2, -277, -77, -27, 106d, 16d, 5d, -12, -15, -13, -30, -1, 1d, 0d, 36d, -10, 4d, 607d, 262d, 533d, -1530, -1630, 304d, 8d, -6, 1d, 1d, 0d, -1, 5d, -2, 0d, -1, -1, -4, -44, -22, -64, -46, 537d, 430d, 268d, -1553, -2040, -486, -3, -23, 20d, 41d, -1, 2d, -21, -4, -1, -3, -84, 50d, -177, 26d, 5d, -12, 2d, -4, 7d, 1d, -115, -305, -310, 138d, -186, 246d, -96, 17d, 0d, 0d, 4d, -2, 1d, 1d, -3, 2d, -1, 0d, -15, 68d, 0d, 2d, -3, 0d, -5, 0d, -1, 1d, -5, 6d, 0d, 0d, 0d, 0d, -235, -98, -2, 2d, 9d, -40, -1, -2, -33, -9, -5, -4, 5662d, -3849, 1941d, -124, 210d, 160d, -24721, -72945, 4099d, -21914, 1345d, -555, 23637393d, -5516830, 17737677d, 43330654d, -44668315, 14540723d, -824, -2086, -4423, -41801, 5562d, -11664, 960d, -125, 2001d, -149, 587d, -350, 23d, -52, -3, 3d, -248, -148, -40, 86d, 2d, 0d, 21d, -82, 11d, 8d, -8, 0d, -30, -33, -22, 46d, 0d, -191, -168, -135, 27d, -85, 14d, 232d, 217d, 59d, 5d, 12d, -5, 2d, -24, -26, -52, 13d, -3, 18d, 26d, 45d, 32d, -169, 14d, -6, -3, 4d, -5, 2d, 6d, 2d, -2, 3d, 20d, -15, 0d, 10d, -486, -8, 4d, -114, 102d, -188, 23d, -67, 6d, 12d, -43, -1, -32, 2d, 15d, 9d, 16d, -36, -6, -2, 14d, -5, 17d, -15, -28, 307d, 289d, 69d, 2d, -7, 3d, -1, -1, 1d, -16, -811, 287d, -68, 0d, 0d, 0d, -1, 16d, -7, 0d, 0d, 0d, 2d, 0d, 0d, 0d, -1, 1d, 0d, -3, -4, 2d, 3d, -29, 34d, 59d, -15, -3, -3, -1, 0d, -2, -3, 3d, -19, 0d, 0d, 0d, 0d, -15, 1d, 5d, 2d, 0d, 0d, -1, -5, 0d, -1, -120, 84d, 7d, -30, -7, -3, -1, 0d, 0d, -1, 9d, -6, -186, -11, 13d, -57, 1d, 4d, 1d, -1, 0d, 0d, -5, 796d, 46d, 5d, -1, -6, -10, 228d, 5d, -6, 1d, -5, 0d, 0d, -6, -2, 148d, 137d, 10d, 28d, 430546d, -279834, 488902d, 664558d, -746515, 243112d, -39, -37, -13, -174, 6d, -25, 2d, -3, -4, -2, 0d, 4d, -5, 70d, 82d, 20d, 0d, 1d, 1d, 1d, 0d, 1d, -27, 430d, 226d, -53, 1d, 1d, 0d, 1d, 1d, -7, 2d, 1d, -3, -8, 1d, 0d, -1, 12d, -2, -5, 4d, 0d, 0d, 1d, 1d, 1d, 1d, 9d, 33d, 4d, 0d, 0d, 0d, -321, 4d, 1d, 0d, 0d, 1d, 0d, 106d, -22, 0d, 0d, 4d, 0d, 0d, 2d, 7006d, -9443, 12833d, 11137d, -14037, 4575d, -2, 0d, -1, -6, 1d, 1d, 4d, 6d, 16d, 2d, 55d, -10, 1d, 0d, 0d, 1d, 0d, 2d, 0d, -4, -2, 0d, -351, 24d, 0d, 0d, 8d, 1d, 30d, -5, -12, 10d, -4, 1d, -1, -2, 0d, 0d, 4d, 0d, 17d, -3, 0d, -2, 2d, 0d, 0d, -1, 0d, -1, 0d, 0d, 0d, 0d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabr = new double[] { 14575d, -26192, -144864, 2d, -22, 15d, -8, -21, -148, -104, -14, -75, 15d, 2d, -5, -3, -1, 0d, 0d, 0d, 0d, 21d, -2, 7d, -5, -3, 0d, 0d, 83d, -94, 9d, -67, -29, 50d, 1d, -1, 3d, 2d, 0d, 0d, 4d, 3d, 1d, 1d, -1, -1, 0d, -1, 2d, -1, 0d, 1d, 0d, 0d, -2, 3d, -5, -2, -1, 1d, 197d, 511d, -82, 189d, -28, -12, 0d, 0d, 0d, -1, 6d, -1, 0d, 1d, 30d, -30, -37, -25, 6d, 21d, 0d, 0d, 16d, -139, 43d, -28, 4d, 6d, 0d, 3d, 4d, 0d, 1d, 1d, -13, 0d, -4, 0d, 0d, 1d, 150d, 135d, -291, 436d, -560, -343, 1d, 3d, 8d, -15, -13, -5, -17, -3, 1d, -6, -314, 428d, 606d, 758d, 1230d, -411, 0d, -1, 11d, -14, 4d, 1d, 221d, 157d, 1d, 132d, -25, 3d, 12d, 0d, 0d, 0d, 0d, -1, 1487d, -108, 707d, -79, -950, -190, 177d, 582d, -676, 399d, -281, -396, 0d, 52d, 39d, -130, 2d, 1d, 12d, 148d, -34, 23d, 1d, 27d, -20, 13d, 1d, -1, 198d, -34, -21, -80, -99, 332d, -307, 9d, -15, -125, 330d, -231, 236d, 139d, -36, 74d, 7d, 3d, -588, -1722, 3623d, -1245, 187d, 4366d, -72, -75, 11d, -33, 174d, -467, 444d, 9d, 11d, 180d, -6, -39, 8d, -7, -126, -500, 599d, -317, 224d, 355d, -590, -39, 134d, -379, -7, -3, 494d, -628, 893d, 490d, 712d, -7, -7, 35d, -720, 50d, -321, 72d, 443d, 106d, 74d, 82d, 112d, -84, -6, -3, 5d, 4d, 58d, 7d, -2, 38d, 6d, 92d, -20, 14d, 33d, 13d, -11189, -2, -11, -8, 106d, -35, 58d, 52d, 132d, 170d, -32, 63d, -2, -6, 6d, 7d, -1, 6d, 452d, 155d, 9d, 209d, 788d, -318, 511d, 616d, -5, 3d, 142d, 303d, -280, 32d, 21d, -69, 984d, -291, 340d, 562d, 30d, 2d, 171d, -51, 27d, 28d, -1570, -2053, 3702d, -3593, 4012d, 5467d, -14, -9, -1, -6, 4d, -11, 0d, -9, -11, 0d, 15d, 2d, 1133d, -1366, 1961d, 1134d, -867, -3010, 6041d, -2049, 142d, 7138d, -79, -103, 73d, -18, 17d, -9, 79d, -372, 97d, -17, 182d, -118, 33577d, -675, -99, -347, -91, -11, 1d, -7, 158d, -111, 136d, 474d, 50d, 16d, 9739d, 51d, 19d, 2d, -105, 36d, -20, -11, -12, 56d, -13, 2d, 2030d, -22, 11d, -4, 9d, -6, 1d, 33d, 10d, 18d, 4d, 21d, 53d, 3d, 19d, 2d, 130d, 37d, -147, -54, -22, 6d, 7d, -19, 22d, 36d, -4, 8d, -949, 2911d, -2221, -697, 371d, -808, 1203d, -1117, 191d, 189d, -549, 77d, -321201, 19788d, 2622593d, 5990d, 8667033d, 114d, -34455835, 86d, -92, -493, 179d, 807d, -499, 281d, 225d, 51d, -34, -88, -30, 13d, 0d, -3, 20d, -43, 201d, 33d, -93, 2d, -1034, -518, -63, -545, 104d, -20, 43d, -64, -34, -7, 0d, 0d, -61, -159, -143, -8, -392, -157, -204, 309d, -24, -248, 55d, -40, -6, 91d, -16, 57d, -41, 18d, 197d, -20, -668, -150, -192, -216, 39d, -84, -62, -59, -4, 8d, -7, -1, -352, -100, -10, -158, 61d, 55d, 32493d, -49, 107d, 344d, -395, 227d, -154, -238, 123d, 104d, -205, 348d, -449, -236, -54, -19, -6, 21d, -790, 27d, -5, 30d, -846, 154d, -26, -920, 0d, 12d, -54, 21d, 11d, -10, 137d, 132d, 109d, -337, -11, 2d, -272, 467d, -511, 179d, -1, -8, 7d, -32, -44, 2d, -26, 101d, -32, 6d, -98, 48d, -42, -53, -1222, 1601d, -3775, 656d, 83d, 46d, 16d, -28, 0d, 7d, -66, -14, -6, 13d, 12d, 0d, -58, 91d, -123, -58, -12, 4d, -114, 423d, -111, 12d, 112d, 27d, -19072, 71d, 100d, 410d, 107d, 15d, 24d, 3d, -214, 30d, 49d, 44d, 5017d, -27, 167d, -80, 8d, 153d, 4d, 7d, -219, -35, 244d, 694d, -762, 2d, -84, -49, -28, 158d, -4, 56d, -14, 0d, 9d, 12d, 7d, 18d, 2d, -7, -15426, 91d, 25800d, -15, 144767d, -53, -287824, -24, 19d, -9, 6d, 7d, 0d, 0d, -3, 8d, -5, -3, -232, 53d, -1, -271, 4d, -12, -8, 30d, -8, -25, -253, -150, -105, 470d, -37, -29, -59, -6, -24, -5, 9d, -18, 1784d, 3d, -54, 13d, -12, 7d, -116, 144d, -353, 52d, -4, -12, -17, -14, -1340, -64, 10d, -116, -24, -2, 190d, 131d, 130d, -307, -1, 9d, 5d, -7, -10, 56d, -33, 0d, -14, 3d, 2d, -12, -635, -160, 64d, -44, 2712d, -3, -3606, -1, 774d, 1d, 133d, -1, -19, 0d, 5d, -59, -5, 14d, -45, 5d, -140, -8, 15d, -28, 379d, 1d, 6d, 3d, 55d, 0d, -54, 0d, 3d, -33, -3, 4d, 0d, -4, 0d, -1, 200d, 0d, -17, -1, 2d, -20, -2, 0d, 111d, 0d, 1d, -12, 64d, 0d, 38d, 0d, 23d, 0d, 3d, 13d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 3, 3, 4, 3, -8, 4, 3, 5, 1, 2, 2, 5, -5, 6, 2, 4, 4, 3, -8, 4, 5, 5, -5, 6, 1, 3, 2, 2, 1, 3, -8, 4, 0, 3, 3, 2, -7, 3, 4, 4, 2, 3, 7, 3, -13, 4, -1, 5, 0, 2, 8, 2, -13, 3, 2, 3, 1, 3, -2, 4, 2, 6, 0, 3, 1, 2, -8, 3, 12, 4, 1, 3, 6, 2, -10, 3, 3, 5, 1, 1, 1, 7, 0, 2, 1, 5, -2, 6, 1, 2, 1, 5, -3, 6, 0, 3, 1, 3, -2, 4, 1, 5, 0, 3, 3, 3, -6, 4, 2, 5, 1, 3, 1, 1, -5, 2, 4, 3, 0, 2, 8, 3, -15, 4, 2, 3, 4, 3, -7, 4, -3, 5, 0, 3, 2, 2, -7, 3, 7, 4, 0, 2, 2, 5, -4, 6, 1, 1, 1, 6, 2, 2, 2, 5, -6, 6, 0, 2, 9, 3, -17, 4, 2, 3, 3, 2, -5, 3, 1, 5, 0, 3, 2, 3, -4, 4, 2, 5, 0, 3, 2, 3, -4, 4, 1, 5, 0, 3, 3, 2, -5, 3, 2, 5, 0, 2, 1, 5, -1, 6, 0, 3, 3, 2, -6, 3, 2, 4, 0, 2, 1, 3, -2, 4, 2, 2, 2, 5, -3, 6, 0, 1, 2, 6, 1, 2, 3, 5, -5, 6, 1, 1, 1, 5, 2, 3, 4, 3, -8, 4, 2, 5, 0, 2, 1, 5, -5, 6, 1, 2, 7, 3, -13, 4, 2, 2, 2, 5, -2, 6, 0, 2, 10, 3, -19, 4, 0, 2, 3, 5, -4, 6, 0, 2, 3, 2, -5, 3, 2, 2, 2, 3, -4, 4, 2, 2, 5, 2, -8, 3, 1, 2, 3, 5, -3, 6, 0, 2, 6, 3, -11, 4, 1, 2, 1, 1, -4, 3, 1, 2, 4, 5, -5, 6, 0, 1, 2, 5, 1, 2, 3, 3, -6, 4, 2, 2, 5, 3, -9, 4, 2, 2, 6, 2, -10, 3, 0, 2, 2, 2, -3, 3, 2, 2, 4, 3, -8, 4, 1, 2, 4, 3, -7, 4, 2, 2, 5, 3, -10, 4, 1, 2, 3, 3, -5, 4, 2, 2, 1, 2, -2, 3, 1, 2, 7, 2, -11, 3, 0, 2, 2, 3, -3, 4, 1, 2, 1, 3, -1, 4, 0, 2, 4, 2, -7, 3, 0, 2, 4, 2, -6, 3, 2, 1, 1, 4, 1, 2, 8, 3, -14, 4, 0, 2, 1, 3, -5, 5, 0, 2, 1, 3, -3, 4, 1, 2, 7, 3, -12, 4, 1, 2, 1, 2, -1, 3, 1, 2, 2, 3, -5, 4, 0, 2, 1, 3, -4, 5, 1, 2, 6, 3, -10, 4, 1, 2, 3, 3, -7, 4, 0, 3, 1, 3, -4, 5, 2, 6, 0, 3, 1, 3, -1, 5, -5, 6, 0, 2, 5, 3, -8, 4, 1, 2, 1, 3, -3, 5, 1, 3, 1, 3, -5, 5, 5, 6, 0, 2, 2, 2, -4, 3, 1, 2, 6, 2, -9, 3, 0, 2, 4, 3, -6, 4, 1, 3, 1, 3, -3, 5, 2, 6, 0, 2, 1, 3, -5, 6, 1, 2, 1, 3, -2, 5, 2, 3, 1, 3, -4, 5, 5, 6, 0, 3, 1, 3, -1, 5, -2, 6, 0, 3, 1, 3, -3, 5, 3, 6, 0, 2, 1, 3, -4, 6, 0, 3, 1, 3, -2, 5, 1, 6, 0, 2, 5, 2, -9, 3, 0, 2, 3, 3, -4, 4, 1, 2, 3, 2, -4, 3, 2, 2, 1, 3, -3, 6, 1, 3, 1, 3, -2, 5, 2, 6, 0, 3, 1, 3, 1, 5, -5, 6, 1, 2, 1, 3, -1, 5, 1, 3, 1, 3, -3, 5, 5, 6, 1, 3, 1, 3, 2, 5, -7, 6, 0, 2, 1, 3, -2, 6, 1, 2, 2, 3, -2, 4, 1, 3, 3, 2, -4, 3, 1, 5, 0, 2, 10, 3, -17, 4, 1, 3, 1, 3, 2, 5, -6, 6, 1, 2, 1, 3, -1, 6, 0, 3, 1, 3, -2, 5, 4, 6, 0, 2, 7, 3, -15, 4, 0, 2, 1, 3, -2, 7, 0, 3, 1, 3, 1, 5, -3, 6, 0, 2, 1, 3, -2, 8, 0, 2, 1, 3, -1, 7, 0, 2, 1, 3, -1, 8, 0, 2, 8, 2, -14, 3, 1, 3, 3, 2, -8, 3, 4, 4, 1, 3, 1, 3, 4, 5, -10, 6, 1, 3, 1, 3, 2, 5, -5, 6, 2, 3, 5, 3, -8, 4, 3, 5, 2, 1, 1, 12, 3, 3, 3, 3, -8, 4, 3, 5, 2, 3, 1, 3, -2, 5, 5, 6, 2, 3, 3, 2, -6, 3, 4, 4, 0, 2, 8, 2, -12, 3, 1, 3, 1, 3, 1, 5, -2, 6, 0, 2, 9, 3, -15, 4, 2, 2, 1, 3, 1, 6, 1, 2, 1, 10, -1, 11, 0, 1, 2, 4, 1, 2, 1, 3, 1, 5, 1, 2, 8, 3, -13, 4, 1, 2, 3, 2, -6, 3, 0, 2, 1, 3, -4, 4, 1, 2, 5, 2, -7, 3, 1, 2, 7, 3, -11, 4, 1, 2, 1, 1, -3, 3, 0, 2, 1, 3, 2, 5, 0, 2, 2, 3, -6, 4, 0, 2, 6, 3, -9, 4, 1, 2, 2, 2, -2, 3, 1, 2, 5, 3, -7, 4, 2, 2, 4, 3, -5, 4, 2, 2, 1, 2, -3, 3, 0, 2, 7, 2, -10, 3, 0, 2, 3, 3, -3, 4, 0, 2, 2, 3, -1, 4, 0, 2, 4, 2, -5, 3, 1, 2, 1, 3, 1, 4, 0, 2, 2, 3, -5, 5, 0, 2, 8, 3, -12, 4, 0, 1, 1, 2, 1, 3, 2, 3, -5, 5, 2, 6, 0, 2, 2, 3, -4, 5, 1, 3, 2, 3, -6, 5, 5, 6, 0, 2, 7, 3, -10, 4, 0, 3, 2, 3, -4, 5, 2, 6, 0, 3, 2, 3, -1, 5, -5, 6, 1, 2, 6, 3, -8, 4, 1, 2, 2, 3, -3, 5, 1, 3, 2, 3, -5, 5, 5, 6, 1, 2, 2, 2, -5, 3, 0, 2, 6, 2, -8, 3, 0, 3, 2, 3, -4, 5, 3, 6, 0, 3, 2, 3, -3, 5, 1, 6, 0, 2, 5, 3, -6, 4, 1, 3, 2, 3, -3, 5, 2, 6, 0, 2, 2, 3, -5, 6, 1, 2, 2, 3, -2, 5, 1, 3, 2, 3, -4, 5, 5, 6, 1, 2, 2, 3, -4, 6, 0, 2, 4, 3, -4, 4, 0, 2, 3, 2, -3, 3, 1, 2, 2, 3, -3, 6, 1, 3, 2, 3, -2, 5, 2, 6, 0, 2, 2, 3, -1, 5, 1, 2, 2, 3, -2, 6, 0, 2, 3, 3, -2, 4, 1, 2, 2, 3, -1, 6, 0, 2, 2, 3, -2, 7, 0, 3, 2, 3, 2, 5, -5, 6, 0, 3, 6, 3, -8, 4, 3, 5, 1, 1, 2, 12, 3, 3, 2, 3, -8, 4, 3, 5, 1, 3, 2, 3, -2, 5, 5, 6, 0, 2, 8, 2, -11, 3, 0, 2, 2, 3, 1, 5, 0, 2, 5, 2, -6, 3, 1, 2, 8, 3, -11, 4, 0, 2, 1, 1, -2, 3, 0, 2, 7, 3, -9, 4, 0, 2, 2, 2, -1, 3, 1, 2, 6, 3, -7, 4, 0, 2, 5, 3, -5, 4, 0, 2, 7, 2, -9, 3, 0, 2, 4, 3, -3, 4, 0, 2, 4, 2, -4, 3, 0, 2, 3, 3, -5, 5, 0, 2, 1, 2, 1, 3, 0, 2, 3, 3, -4, 5, 1, 2, 8, 3, -10, 4, 0, 2, 7, 3, -8, 4, 0, 2, 3, 3, -3, 5, 0, 2, 6, 2, -7, 3, 0, 2, 6, 3, -6, 4, 0, 2, 3, 3, -2, 5, 1, 2, 3, 3, -4, 6, 0, 2, 5, 3, -4, 4, 0, 2, 3, 2, -2, 3, 0, 2, 3, 3, -3, 6, 0, 2, 3, 3, -1, 5, 0, 2, 3, 3, -2, 6, 0, 1, 3, 12, 3, 2, 5, 2, -5, 3, 0, 2, 1, 1, -1, 3, 0, 1, 2, 2, 0, 2, 7, 2, -8, 3, 0, 2, 4, 2, -3, 3, 0, 2, 4, 3, -5, 5, 0, 2, 4, 3, -4, 5, 0, 2, 4, 3, -3, 5, 0, 2, 6, 2, -6, 3, 0, 2, 4, 3, -2, 5, 0, 1, 4, 12, 1, 2, 8, 2, -9, 3, 0, 2, 5, 2, -4, 3, 0, 1, 1, 1, 0, 2, 7, 2, -7, 3, 1, 2, 5, 3, -5, 5, 0, 2, 9, 2, -10, 3, 0, 2, 6, 2, -5, 3, 0, 2, 8, 2, -8, 3, 0, 2, 10, 2, -11, 3, 0, 2, 9, 2, -9, 3, 0, 2, 10, 2, -10, 3, 0, 2, 11, 2, -11, 3, 0, 2, 2, 1, -1, 3, 0, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static KeplerGlobalCode.plantbl ear404 = new KeplerGlobalCode.plantbl(12, new int[19] { 2, 11, 14, 19, 6, 10, 2, 2, 0, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0 }, 3, args, tabl, tabb, tabr, 1.000139872959708d, 3652500.0d, 0.0001d); + + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Jup404Data.cs b/ASCOM.Tools/Kepler/Planets/Jup404Data.cs new file mode 100644 index 0000000..f43bacc --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Jup404Data.cs @@ -0,0 +1,793 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Jup404Data + { + // /* + // First date in file = 625296.50 + // Number of records = 16731.0 + // Days per record = 131.0 + // Julian Years Lon Lat Rad + // -3000.0 to -2499.7: 0.64 0.09 0.40 + // -2499.7 to -1999.7: 0.70 0.09 0.45 + // -1999.7 to -1499.7: 0.44 0.08 0.32 + // -1499.7 to -999.8: 0.42 0.07 0.32 + // -999.8 to -499.8: 0.55 0.06 0.34 + // -499.8 to 0.2: 0.43 0.06 0.31 + // 0.2 to 500.2: 0.56 0.07 0.32 + // 500.2 to 1000.1: 0.49 0.06 0.41 + // 1000.1 to 1500.1: 0.48 0.06 0.38 + // 1500.1 to 2000.1: 0.56 0.06 0.38 + // 2000.1 to 2500.0: 0.63 0.08 0.33 + // 2500.0 to 3000.0: 0.70 0.09 0.36 + // 3000.0 to 3000.4: 0.526 0.023 0.190 + // */ + + internal static double[] tabl = new double[] { 153429.13855d, 130818.16897d, 18120.42948d, -8463.12663d, -5058.91447d, 1092566021.02148d, 123671.25097d, -5.43364d, 12.06012d, 30428.31077d, -74667.61443d, 46848.16236d, -66373.44474d, 24312.54264d, -26045.64766d, 18353.92564d, -4022.13679d, 4037.97936d, 10059.82468d, -4622.55896d, 1383.21617d, -187.25468d, -1171.66028d, -0.00062d, -0.21713d, -1198.83945d, 1178.62445d, -1492.07393d, 153.07155d, -245.57966d, -391.9401d, 82.264d, -40.92104d, 3.7252d, 10.57242d, -0.0472d, -0.04448d, -0.04329d, -0.06043d, -0.03905d, 0.15712d, -0.05644d, -0.00129d, -0.00342d, 0.02473d, 0.00434d, -0.01862d, 0.00431d, -0.03993d, -0.03159d, -0.15982d, -0.09928d, 0.0443d, -0.00357d, 0.31312d, -0.01346d, -0.0018d, -0.09107d, 0.01215d, 0.02485d, 0.01024d, 27.29869d, 2.70896d, 12.91956d, 19.21726d, -6.91384d, 5.12954d, -1.07533d, -1.71691d, -0.01423d, 0.03121d, -32.48652d, -26.13483d, 46.78162d, -62.02701d, 94.96809d, 81.73791d, -20.13673d, 131.05065d, -0.00798d, 0.01786d, 13.99591d, 16.87756d, -8.51726d, 21.5949d, -14.28833d, -9.4553d, 7.73954d, -6.53078d, 0.03175d, -0.04295d, 3.06742d, -0.11838d, 1.0363d, 0.94004d, -0.14085d, 0.14434d, -0.03363d, 0.00993d, -0.00007d, -0.02748d, 26.01507d, -7.37178d, 16.96955d, 6.24203d, -0.40481d, 3.72456d, -0.53597d, -0.14938d, 37.82081d, 26.15887d, -2.82115d, 78.26478d, -63.39155d, -5.52419d, 13.11482d, -43.54977d, 15.6494d, 6.67505d, -10.25616d, -7.39672d, -12.37441d, 12.24417d, 8.54922d, 9.68451d, -0.03658d, -0.00963d, 1.65523d, 0.43093d, 0.32023d, 0.71365d, -0.12226d, 0.03759d, 0.10388d, 0.47212d, -0.02791d, 0.09929d, -0.04116d, -0.03125d, -0.1024d, -0.23199d, -0.03524d, -0.13625d, 7.52726d, 6.86314d, 0.01239d, 13.4653d, -5.22256d, 1.56116d, -0.15925d, -1.19571d, 3.26302d, 0.06097d, -0.14444d, -0.20301d, 1.93822d, -80.12566d, 0.98665d, -7.52986d, 3.86703d, -2.43028d, 0.6418d, 0.78351d, 0.0019d, -0.00633d, -0.00321d, -0.04403d, 0.19018d, 0.14335d, 0.10315d, 0.53154d, -0.00062d, -0.00464d, -0.00109d, 0.0215d, 1.19993d, 47.21638d, -24.56067d, 25.06332d, -7.50751d, -6.3625d, 1.39443d, -1.23806d, 0.04951d, 0.02176d, 0.02802d, -0.01665d, -0.10698d, -0.13635d, 73.54797d, -52.34968d, 74.98754d, 86.56283d, -69.01463d, 44.56866d, 0.04387d, -0.05925d, -0.03732d, -0.03264d, 0.00967d, 0.02143d, 10.59429d, 26.48226d, 34.0347d, 3.9616d, 4.15919d, -20.22616d, -5.25903d, -3.40177d, 0.05111d, -0.06788d, 0.06497d, 1.21024d, -0.29607d, 0.49991d, -0.06055d, -0.03464d, 0.0295d, 0.16429d, 0.00722d, -0.90806d, -0.02161d, 0.00902d, -0.00261d, 0.00077d, 0.00434d, -0.29231d, 0.00456d, 0.04781d, 1.33214d, -2.62015d, 0.79761d, -0.8185d, 0.06371d, 0.00119d, 0.03049d, -0.03553d, 0.02373d, -0.01411d, -189.06132d, -169.1794d, 5.27464d, -227.72664d, 83.72511d, -12.04794d, 0.23965d, 23.75496d, -3.43532d, -0.34276d, -1.3588d, 0.45053d, -0.34298d, -0.11441d, -0.16328d, 0.07423d, 481.4815d, 79.82461d, 453.82764d, 941.94205d, -635.83924d, 397.29087d, -81.54066d, -417.2242d, 149.91822d, 10.5349d, -0.1321d, 0.3674d, 0.33777d, 0.15893d, -2562.04968d, 2442.77844d, -2602.66709d, 2838.87348d, 723.50715d, -1284.58208d, -4557.23362d, -4514.611d, -8960.81693d, 4663.55087d, -4947.6153d, 19377.42027d, -0.16786d, -0.19514d, 0.321d, 0.91502d, 4.966d, -1.11836d, 307.38057d, 175.14618d, 16.02093d, 444.42376d, -219.80047d, 62.39286d, -18.14266d, -52.23698d, 0.02111d, 0.00469d, -20.97409d, -34.48296d, -2.03906d, -27.0756d, 3.73818d, -3.00599d, 0.24112d, 0.4143d, -0.03552d, 0.00394d, -0.00217d, 0.02307d, 0.03686d, 0.0051d, 34.46537d, 10.23293d, 9.9952d, 28.88781d, -11.3121d, 3.52646d, -0.48062d, -2.93641d, -0.00987d, -0.0531d, -38.39539d, 0.04568d, -31.73684d, -1.83151d, -24.97332d, -1.71244d, 0.33498d, 7.03899d, -4.15247d, 200.43434d, -0.008d, 0.04462d, 37.83113d, -13.40661d, 9.49434d, -35.41588d, -14.72767d, -3.84674d, -0.31412d, 3.97734d, 0.02908d, -0.00353d, 1.89935d, -14.31774d, 7.77051d, -7.08945d, 1.90915d, 1.78908d, -0.41445d, 0.30506d, -14.43121d, 7.30707d, -11.97842d, -17.64121d, 13.38962d, -7.20982d, -5.23362d, 2.11364d, -0.45605d, 4.08835d, 1.42683d, 0.24838d, -0.00605d, 0.03199d, -0.17609d, -1.43091d, 0.32444d, -0.51371d, 0.06182d, 0.03733d, 0.00696d, -0.13438d, 4.67581d, 4.42379d, -1.52602d, 4.20659d, -1.31757d, -0.7291d, 1.29012d, 0.9778d, 2.25895d, -0.85306d, 1.7412d, -5.09507d, 0.28107d, -0.0504d, 0.05508d, -0.06349d, -0.00061d, 0.48249d, -2.37749d, 1.7818d, -1.67423d, -0.35618d, 0.05789d, -0.35287d, 0.56252d, -0.66584d, 0.61979d, 4.84016d, -4.64462d, 17.48002d, 0.40982d, -4.19214d, -1.55252d, -1.87505d, -0.3107d, 0.15554d, -0.00034d, 0.11102d, 0.01116d, -0.04166d, 9.27689d, -4.3209d, 6.84888d, 1.78741d, -0.09306d, 1.68391d, -0.27482d, -0.04197d, -7.83068d, 37.71086d, -37.53346d, 7.18559d, 0.74427d, -24.29751d, 10.87837d, 1.35503d, 0.00998d, -0.03395d, -133.52206d, -150.11329d, 4.27494d, -173.79469d, 150.87961d, -356.29181d, -330.17873d, -426.29809d, -607.98186d, 126.35464d, -299.69623d, 556.41055d, -0.00342d, 0.04411d, 44.65946d, 42.07312d, 85.71397d, 5.9513d, 24.98064d, -41.20026d, -14.0597d, -10.46101d, -2.24038d, 2.89211d, 0.06175d, 0.08128d, 0.00705d, 0.01939d, -1.08361d, -0.08213d, -0.20868d, -0.36268d, -4.96489d, -2.05966d, -6.16586d, 3.65514d, -3.12555d, 12.20821d, -1.11236d, -1.73772d, -1.34045d, -0.22774d, -0.08639d, 0.27355d, -0.077d, 1.0626d, -0.46013d, 0.31916d, -0.04969d, -0.09488d, -1.54d, 0.04949d, -0.07616d, -0.95933d, 0.93303d, 3.43183d, -0.82917d, -0.82042d, -0.68158d, 0.17083d, 0.06942d, 0.17491d, -0.02699d, -0.01051d, 0.00657d, 0.03063d, -0.52595d, 0.84035d, -0.88323d, -0.70188d, 0.60928d, -0.48179d, 0.3829d, 0.04482d, 0.26456d, -0.32369d, -0.00615d, 0.03218d, -0.32943d, 0.14675d, -0.10782d, -0.09036d, -0.58003d, 0.72888d, -0.46654d, 1.17977d, 0.00222d, 0.01541d, -0.19226d, -0.0777d, -0.01829d, -0.0507d, -1.75385d, -1.32969d, 0.52361d, -1.36036d, 0.67222d, 1.34612d, 6.96841d, -29.24025d, -23.769d, -39.91647d, -41.01215d, -2.23638d, -18.81024d, 20.77095d, -0.68592d, -2.26212d, -1.14065d, -0.76493d, -0.18044d, 0.15193d, -0.20669d, -0.44387d, 0.25697d, -0.1788d, -0.53097d, 0.43181d, -0.35187d, 0.71934d, -0.14962d, 0.0922d, -0.05031d, -0.03924d, 0.06571d, 0.29487d, 0.0517d, 0.36847d, 0.02754d, -0.00411d, -0.08313d, -0.16907d, 0.10273d, -0.07315d, -0.02312d, 0.04912d, -0.01062d, -0.02713d, 0.03806d, 0.13401d, -1.79865d, -2.0454d, -2.69965d, -0.65706d, -1.17916d, 0.79292d, 0.02415d, 0.14001d, -0.01767d, 0.04209d, 0.05212d, -0.01795d, 0.01285d, 0.04028d, 0.01075d, 0.05533d, 0.02323d, -0.00864d, -0.04691d, 0.03128d, 0.00548d, 0.02254d, 0.00011d, 0.12033d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabb = new double[] { 548.59659d, 594.29629d, 219.97664d, 59.71822d, 23.62157d, 40.77732d, 227.0738d, 0.00293d, -0.00745d, -307.33226d, -347.92807d, -309.49383d, -428.18929d, -96.59506d, -191.36254d, 2.11014d, -34.44145d, 2.23085d, 6.7711d, -5.43468d, -0.28391d, 0.28355d, -1.8169d, 0.00036d, 0.00078d, -1.83259d, 1.17464d, -2.66976d, -0.92339d, -0.23645d, -1.20623d, 0.25248d, -0.04958d, 0.00064d, 0.03599d, -0.00079d, 0.00004d, -0.00005d, -0.0001d, -0.00024d, 0.00051d, 0.00001d, 0.00005d, 0.00015d, 0.0001d, 0.00017d, -0.00004d, 0.00113d, -0.00011d, 0.00021d, 0.00087d, 0.0012d, -0.00114d, -0.00881d, -0.0002d, -0.00005d, 0.00009d, 0.00005d, 0.00007d, 0.00002d, -0.00033d, -0.00554d, -0.32274d, 0.23695d, -0.11184d, 0.0405d, 0.09929d, -0.02189d, 0.00305d, -0.00142d, -0.00055d, 0.66623d, 0.3459d, 0.74913d, -0.23202d, -1.08316d, -1.40407d, 1.72287d, -0.07604d, 0.00024d, 0.00004d, 0.03592d, 0.91143d, -1.11848d, -0.17473d, 0.915d, -1.34912d, 0.85229d, 0.69029d, -0.00019d, 0.00075d, 0.03615d, 0.30768d, -0.08733d, 0.12016d, -0.01716d, -0.01138d, 0.00021d, 0.00004d, 0.00531d, 0.00098d, -0.14354d, -0.02364d, -0.05559d, -0.07561d, 0.01419d, -0.01141d, 0.00014d, 0.00218d, -0.36564d, 0.13498d, -0.13283d, -0.11462d, 0.23741d, 0.1496d, -0.23173d, 0.25148d, 0.00763d, -0.05987d, -0.00857d, 0.20312d, -0.29399d, 0.34831d, -1.33166d, -0.46808d, -0.00027d, 0.00046d, 0.15729d, 0.01367d, 0.04093d, 0.07447d, -0.01598d, 0.00785d, 0.00583d, 0.00324d, 0.00053d, 0.0016d, -0.0003d, 0.00043d, -0.00208d, 0.00334d, -0.00316d, 0.00136d, 0.23086d, 0.05711d, 0.19558d, 0.05897d, 0.0107d, 0.05021d, -0.00818d, -0.02242d, 0.06301d, -0.26483d, 0.66177d, 0.02125d, 0.13477d, 0.19376d, -0.3652d, 0.83588d, -0.69848d, -0.00877d, 0.01626d, -0.23878d, -0.00373d, 0.00044d, 0.00008d, -0.00004d, -0.00374d, -0.00283d, 0.01104d, -0.00619d, 0.00004d, 0.00015d, 0.00026d, 0.00013d, 0.0463d, -0.11815d, 0.00773d, 0.03796d, -0.05172d, 0.00149d, 0.00444d, -0.01493d, -0.00064d, -0.00044d, -0.00033d, 0.00002d, -0.00012d, 0.00284d, -0.15622d, -0.92158d, -0.8269d, -1.52101d, -0.55934d, 0.69375d, -0.00171d, 0.00031d, 0.00129d, -0.00013d, -0.00024d, -0.00083d, 0.66101d, -0.21764d, -0.43967d, 0.30157d, 0.53389d, 1.59141d, 1.94286d, 0.14146d, -0.00064d, -0.00006d, 0.2185d, -0.02912d, 0.08594d, 0.08734d, -0.01678d, 0.01629d, 0.00133d, 0.00562d, 0.00128d, -0.00025d, -0.00005d, 0.00027d, 0.00032d, 0.00001d, 0.00037d, 0.00042d, 0.0007d, 0.00003d, 0.00275d, -0.13096d, 0.02329d, -0.05582d, 0.00405d, -0.00251d, 0.01316d, -0.01165d, 0.00279d, -0.00374d, -39.62783d, 20.91467d, -28.97236d, 3.7756d, -3.30029d, 0.11472d, -0.48216d, 1.05814d, -0.21607d, -0.03055d, -0.64162d, -0.57355d, -0.05861d, -0.18592d, -0.12207d, -0.06279d, -38.55325d, -125.74207d, -47.22357d, 41.75842d, -119.38841d, 18.88515d, -11.0483d, -50.98851d, 16.64895d, 1.76553d, 0.09474d, 0.03714d, 0.02593d, 0.07967d, -1187.61854d, -1094.91786d, -1011.21939d, -1102.25998d, -575.88672d, -107.8486d, -890.58889d, -807.06589d, 971.78461d, -1287.2456d, -4601.44669d, -849.54329d, -0.00904d, 0.06233d, -0.19456d, -0.05521d, -0.36915d, 1.15363d, 32.64763d, -85.19705d, 114.34437d, -13.37747d, 15.92865d, 55.84857d, -13.10538d, 3.07629d, -0.00327d, 0.00104d, -7.81035d, 6.1996d, -6.36096d, 1.00493d, -0.66971d, -0.84572d, 0.09943d, -0.04583d, 0.002d, -0.00032d, -0.00265d, 0.00047d, -0.00053d, 0.00046d, -0.24396d, 0.20664d, -0.3082d, -0.04917d, 0.06184d, -0.12642d, 0.03053d, 0.05054d, 0.00035d, 0.00012d, 0.42063d, -0.58254d, 0.90517d, -0.66276d, 0.64765d, 0.39338d, -1.40645d, 0.33017d, -1.43377d, -0.67089d, -0.00045d, -0.00036d, 0.2369d, 0.07185d, 0.28386d, -0.04397d, 0.02836d, -0.13082d, -0.00978d, 0.00108d, 0.00046d, 0.00083d, -0.01665d, 0.32499d, -0.0998d, 0.18611d, -0.02561d, 0.00239d, -0.00084d, -0.0011d, 0.46854d, -0.35113d, 0.69908d, 0.53244d, 0.12875d, 0.01115d, 0.1393d, 0.02747d, -0.10587d, -0.17759d, -0.2685d, 0.044d, 0.0001d, -0.00015d, 0.00164d, -0.01308d, 0.00488d, -0.01046d, 0.0017d, 0.00024d, 0.00084d, 0.00014d, -0.08481d, -0.02547d, -0.0229d, -0.02281d, -0.03946d, -0.0281d, 0.01298d, 0.08658d, 0.05575d, -0.01081d, 1.09695d, 0.35441d, -0.03127d, 0.07946d, 0.01245d, 0.02578d, -0.00524d, -0.00027d, 0.08217d, -0.31742d, 0.15273d, -0.07804d, 0.01197d, 0.03053d, 0.81596d, 0.3864d, -0.89777d, 0.59499d, -0.39581d, -0.87375d, 0.02096d, 0.49772d, 0.29986d, 0.2421d, 0.14038d, -0.03016d, -0.00208d, 0.00045d, 0.01024d, 0.00114d, 1.2301d, 1.75663d, -0.12741d, 1.44996d, -0.31607d, 0.03151d, 0.00259d, -0.04741d, -11.57091d, 8.00331d, -9.24028d, -6.36906d, 4.71248d, -2.43695d, 0.3863d, 1.90625d, 0.01401d, 0.00114d, 33.5669d, -55.17784d, 33.21425d, -52.57002d, 27.04138d, 13.7861d, 69.60307d, -81.16312d, 27.5396d, -158.28336d, -205.94418d, -95.08051d, -0.01407d, -0.00364d, -18.56128d, 6.0227d, -10.11059d, 24.69471d, 12.31878d, 9.94393d, 3.81994d, -4.84109d, -1.0844d, -0.72136d, 0.03731d, -0.02094d, 0.00789d, -0.00176d, 0.09673d, -0.11181d, 0.03112d, -0.00065d, -0.29167d, -0.82083d, 0.40866d, -0.77487d, -2.23349d, -0.46973d, 0.41024d, -0.14274d, 0.07755d, -0.24895d, -0.04965d, -0.01197d, -0.02264d, 0.05917d, -0.02817d, 0.01242d, -0.0025d, -0.00247d, -0.14414d, -0.03739d, 0.14708d, -0.07908d, 0.05843d, 0.15173d, -0.01601d, -0.07844d, -0.05957d, -0.03143d, -0.0183d, 0.01257d, -0.00109d, -0.0d, 0.00174d, 0.0005d, -0.02119d, 0.06918d, -0.0247d, 0.00185d, 0.02372d, -0.02417d, 0.01081d, 0.05222d, 0.0982d, 0.05931d, -0.00588d, -0.00086d, 0.01688d, -0.00133d, -0.00073d, 0.00041d, -0.0228d, -0.05706d, -0.17694d, -0.12027d, 0.00196d, -0.0006d, 0.00051d, -0.02426d, 0.00314d, -0.00302d, 0.17923d, -0.78343d, 0.52073d, -0.02398d, -0.03978d, 0.20841d, 6.51325d, 3.37139d, 12.88844d, -6.72098d, 3.40949d, -14.34313d, -9.68278d, -7.85143d, 1.06886d, -0.21727d, 0.36675d, -0.49815d, -0.07289d, -0.07537d, 0.01107d, -0.00644d, 0.01013d, -0.00306d, -0.00708d, -0.13488d, -0.23041d, -0.10698d, -0.00049d, -0.00692d, -0.00142d, -0.00211d, -0.04021d, 0.01805d, 0.00479d, 0.0062d, 0.00739d, 0.00566d, -0.00101d, -0.00022d, 0.00261d, -0.00188d, -0.01812d, -0.01205d, -0.00061d, -0.00061d, -0.02479d, 0.01157d, 0.91642d, -0.65781d, 0.39969d, -1.13699d, -0.43337d, -0.57828d, 0.00145d, 0.00281d, -0.01675d, -0.00975d, 0.00119d, -0.00074d, -0.00343d, 0.00139d, 0.00061d, 0.00086d, 0.00054d, -0.00046d, -0.01996d, -0.02689d, 0.00034d, 0.00037d, -0.00006d, 0.00001d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabr = new double[] { -734.58857d, -1081.0446d, -551.6575d, -148.79782d, -25.23171d, 164.64781d, 248.64813d, -0.05163d, -0.02413d, -1306.61004d, 560.02437d, -1622.58047d, 589.92513d, -812.39674d, 166.8534d, -157.92826d, -107.14755d, 68.989d, -18.95875d, -0.16183d, 36.24345d, -9.19972d, -2.29315d, -0.00316d, 0.00222d, 10.95234d, 21.37177d, -6.2955d, 21.83656d, -7.70755d, 1.38228d, -0.2177d, -1.49525d, 0.17951d, 0.01043d, 0.00062d, 0.00208d, -0.00066d, 0.0005d, 0.00313d, 0.00187d, 0.0001d, 0.00131d, 0.00102d, 0.00047d, 0.00102d, 0.00012d, 0.00012d, -0.00037d, 0.00808d, 0.00027d, -0.01219d, -0.00961d, -0.04166d, -0.00327d, -0.00001d, -0.00146d, -0.00092d, -0.00989d, -0.00135d, 0.00196d, 0.19216d, 2.48442d, -1.43599d, 1.39651d, -0.48549d, -0.53272d, 0.14066d, -0.10352d, 0.00141d, 0.00066d, 2.96838d, -3.09575d, 6.27741d, 5.24306d, -8.7708d, 9.03247d, -10.9835d, -3.58579d, -0.00168d, -0.001d, 0.20234d, -0.75737d, 0.36838d, -0.58241d, 0.4143d, -0.35784d, 0.47038d, -0.10586d, 0.00539d, 0.0049d, -0.01375d, -0.0195d, 0.00145d, 0.00723d, -0.00391d, 0.00391d, -0.00131d, -0.00568d, 0.01317d, 0.00319d, 1.31006d, 5.89394d, -1.61753d, 3.68814d, -0.80644d, -0.14747d, 0.04481d, -0.11361d, -4.3613d, 7.92488d, -16.29047d, -1.52163d, 2.14492d, -14.38028d, 9.65573d, 3.56881d, -1.87208d, 3.36213d, 1.84499d, -2.41575d, -2.77076d, -3.23915d, -3.34573d, 1.40979d, 0.00217d, -0.00841d, 0.29313d, -0.36246d, 0.22043d, 0.02328d, -0.01182d, 0.04074d, -0.15728d, 0.02468d, -0.03185d, -0.01099d, 0.01059d, -0.01274d, 0.07362d, -0.02642d, 0.04035d, -0.00968d, -2.14457d, 2.53297d, -4.34196d, -0.11421d, -0.38757d, -1.73872d, 0.39784d, -0.01397d, -0.03311d, 0.97723d, 0.1606d, -0.07486d, 25.96413d, 0.75088d, -3.04736d, 0.3034d, -1.43451d, -1.35136d, 0.26526d, -0.40247d, -0.0046d, -0.00056d, 0.01633d, -0.00128d, -0.05197d, 0.07002d, -0.1945d, 0.03737d, 0.00188d, -0.00037d, -0.00903d, -0.00059d, -19.73809d, 0.58424d, -10.42034d, -10.14579d, 2.6599d, -3.07889d, 0.50884d, 0.58508d, -0.0097d, 0.02099d, 0.00716d, 0.01161d, 0.05751d, -0.04515d, 22.08042d, 30.82415d, -36.2743d, 31.40265d, -18.3015d, -29.16403d, 0.02454d, 0.01834d, -0.01312d, 0.01576d, -0.00928d, 0.0033d, -11.78094d, 4.06738d, -2.5159d, 15.05277d, 9.12747d, 2.88088d, 2.32916d, -2.08271d, 0.02872d, 0.02194d, 0.60494d, -0.04597d, 0.24749d, 0.15971d, -0.02185d, 0.03384d, -0.07075d, 0.01287d, 0.40201d, 0.00347d, -0.0041d, -0.00998d, -0.00005d, -0.00121d, 0.1377d, 0.00186d, -0.02268d, 0.0021d, 1.26291d, 0.65546d, 0.38885d, 0.3888d, -0.00184d, 0.03067d, 0.01273d, 0.01136d, 0.00557d, 0.01117d, 94.13171d, -88.37882d, 120.53292d, 8.32903d, 7.77313d, 43.46523d, -11.66698d, 0.44639d, 0.15092d, -1.68367d, -0.30833d, -0.4903d, 0.01971d, -0.14144d, -0.04019d, -0.0511d, -39.70024d, 272.91667d, -468.46263d, 256.77696d, -200.6313d, -307.98554d, 206.56301d, -41.76039d, -4.74242d, 74.19909d, 0.18474d, 0.05547d, -0.06732d, 0.16515d, -1156.31285d, -1102.97666d, -1346.99288d, -1121.0109d, 666.8455d, 421.92305d, 2259.4974d, -2268.69758d, -2325.87639d, -4476.46256d, -9683.77583d, -2472.92565d, -0.104d, 0.08075d, -0.45225d, 0.16621d, 0.57789d, 2.43804d, 85.21675d, -154.17208d, 219.91042d, -9.71116d, 31.1324d, 108.60117d, -25.85622d, 8.98402d, -0.00233d, 0.0103d, -17.01324d, 10.41588d, -13.34449d, 1.08782d, -1.48199d, -1.81734d, 0.20334d, -0.11734d, -0.0023d, -0.01869d, -0.01182d, -0.00129d, -0.00281d, 0.02021d, -5.75973d, 19.13309d, -16.1369d, 5.53382d, -1.96585d, -6.29211d, 1.63105d, -0.26089d, 0.02935d, -0.00555d, 0.307d, -19.96182d, 0.99825d, -16.32664d, 0.83052d, -13.76201d, -3.15609d, 0.1736d, -111.81423d, -2.05419d, -0.02455d, -0.00478d, 7.45114d, 21.53296d, 19.90263d, 5.6942d, 2.31253d, -8.15116d, -2.1744d, -0.23014d, 0.00168d, 0.0159d, 8.78005d, 0.71418d, 4.48561d, 4.5068d, -1.05713d, 1.1788d, -0.19327d, -0.24877d, -5.0087d, -8.66354d, 10.51902d, -7.71011d, 4.65486d, 8.05673d, -1.39635d, -3.07669d, -2.40347d, -0.11167d, -0.04064d, 0.83512d, -0.02041d, -0.00351d, 0.97375d, -0.15795d, 0.36361d, 0.19913d, -0.02142d, 0.04193d, 0.08801d, 0.00475d, -2.8101d, 3.11341d, -2.79191d, -0.93313d, 0.4457d, -0.88287d, -0.51815d, 0.54776d, 0.29736d, 0.99779d, 2.28957d, 0.82183d, 0.03386d, 0.12855d, 0.03124d, 0.02454d, -0.31958d, 0.0007d, -1.48184d, -1.28195d, 0.03965d, -1.12026d, 0.2391d, 0.01293d, 0.36146d, -0.64483d, -1.8847d, 0.21469d, -11.79819d, -1.87287d, 2.65699d, -0.36287d, 0.88148d, -1.26883d, -0.19657d, -0.14279d, -0.07536d, -0.00004d, 0.01496d, 0.00537d, 2.48352d, 3.75581d, -0.34909d, 3.26696d, -0.82105d, 0.11287d, -0.00755d, -0.13764d, -15.34429d, -2.79957d, -3.22976d, -15.46084d, 10.66793d, -0.26054d, -0.12188d, 5.06211d, 0.01313d, 0.00424d, 84.34332d, -57.05646d, 92.6815d, -0.02024d, 149.62698d, 59.14407d, 174.04569d, -129.26785d, -55.99789d, -238.01484d, -212.51618d, -115.94914d, -0.0172d, -0.00158d, -13.65602d, 17.47396d, 0.16714d, 32.66367d, 16.30095d, 9.18345d, 3.98555d, -5.39985d, -1.09958d, -0.86072d, 0.02752d, -0.02474d, 0.00671d, -0.00278d, -0.2103d, -0.73658d, 0.20708d, -0.21378d, 0.78462d, -2.14051d, -1.6007d, -2.60915d, -5.02441d, -1.19246d, 0.67622d, -0.41889d, 0.0743d, -0.53204d, -0.11214d, -0.03417d, -0.72636d, -0.15535d, -0.16815d, -0.35603d, 0.0753d, -0.02521d, -0.01261d, -0.94883d, 0.3993d, -0.0537d, -2.77309d, 0.38431d, 0.72127d, -0.5203d, -0.01804d, -0.51188d, -0.11993d, 0.02189d, 0.00928d, -0.02129d, -0.0276d, 0.00441d, -0.56832d, -0.48114d, 0.64192d, -0.65656d, 0.37483d, 0.51883d, -0.08474d, 0.20324d, 0.12783d, 0.13041d, -0.01545d, -0.00282d, -0.16196d, -0.2698d, 0.06584d, -0.09987d, -0.36305d, -0.2761d, -0.57074d, -0.13607d, -0.00824d, 0.00369d, 0.06094d, -0.12214d, 0.03581d, -0.00876d, 0.49346d, -0.74596d, 0.47814d, 0.18201d, -1.0064d, 0.24465d, 10.09808d, 2.30496d, 13.63359d, -7.94007d, 0.29792d, -13.55724d, -6.48556d, -5.99581d, 0.69686d, -0.22434d, 0.23198d, -0.35579d, -0.04736d, -0.05683d, 0.3671d, -0.16571d, 0.14876d, 0.21824d, -0.1894d, -0.15063d, -0.23692d, -0.0999d, -0.08923d, -0.12222d, 0.02998d, -0.0456d, -0.16229d, 0.04552d, -0.33051d, 0.02585d, -0.00622d, 0.01583d, 0.15436d, -0.07109d, 0.06429d, 0.09218d, -0.01277d, -0.00019d, 0.02345d, -0.01057d, -0.07294d, 0.02506d, 0.62063d, -0.52533d, 0.16814d, -0.77168d, -0.20614d, -0.31828d, -0.12856d, 0.01316d, -0.01522d, -0.00126d, 0.01558d, 0.04765d, -0.02776d, 0.01166d, -0.05185d, 0.00674d, 0.00754d, 0.02183d, -0.00645d, -0.0105d, -0.02155d, 0.00375d, 0.1204d, -0.00004d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 6, 3, 2, 5, -6, 6, 3, 7, 0, 2, 2, 5, -5, 6, 6, 3, 1, 5, -2, 6, -3, 8, 0, 2, 4, 5, -10, 6, 4, 3, 2, 5, -4, 6, -3, 7, 1, 3, 3, 5, -10, 6, 7, 7, 0, 2, 6, 5, -15, 6, 0, 3, 1, 5, -4, 6, 4, 7, 0, 3, 3, 5, -8, 6, 2, 7, 0, 3, 1, 5, -3, 6, 1, 7, 0, 3, 1, 5, -3, 6, 2, 7, 0, 1, 1, 7, 1, 2, 5, 5, -12, 6, 0, 3, 2, 5, -7, 6, 7, 7, 0, 3, 1, 5, -1, 6, -3, 7, 0, 2, 3, 5, -7, 6, 3, 3, 1, 5, -4, 6, 3, 7, 0, 2, 1, 5, -2, 6, 3, 3, 3, 5, -8, 6, 3, 7, 0, 2, 1, 5, -3, 6, 3, 3, 1, 5, -3, 6, 3, 7, 0, 2, 3, 5, -8, 6, 2, 3, 2, 5, -5, 6, 2, 7, 0, 1, 2, 7, 0, 2, 4, 5, -9, 6, 3, 2, 2, 5, -4, 6, 4, 1, 1, 6, 2, 3, 2, 5, -5, 6, 3, 7, 0, 2, 2, 5, -6, 6, 2, 2, 5, 5, -11, 6, 1, 3, 1, 5, -2, 7, -2, 8, 0, 2, 1, 5, -3, 7, 1, 2, 3, 5, -6, 6, 3, 2, 1, 5, -1, 6, 2, 2, 1, 5, -4, 6, 2, 2, 3, 5, -9, 6, 0, 3, 2, 5, -4, 6, 2, 7, 0, 2, 1, 5, -2, 7, 1, 2, 6, 5, -13, 6, 0, 3, 2, 5, -2, 6, -3, 7, 0, 2, 4, 5, -8, 6, 3, 2, 3, 6, -3, 7, 0, 3, 6, 5, -14, 6, 3, 7, 0, 3, 1, 5, -2, 7, 1, 8, 0, 2, 2, 5, -3, 6, 2, 3, 1, 5, -4, 7, 5, 8, 0, 3, 2, 5, -8, 6, 3, 7, 0, 3, 4, 5, -9, 6, 3, 7, 0, 1, 2, 6, 3, 3, 2, 5, -4, 6, 3, 7, 0, 2, 2, 5, -7, 6, 2, 2, 1, 5, -2, 8, 0, 2, 1, 5, -1, 7, 0, 3, 3, 5, -6, 6, 2, 7, 0, 3, 4, 5, -8, 6, 2, 8, 0, 2, 1, 5, -1, 8, 0, 3, 2, 5, -3, 6, 1, 7, 0, 2, 7, 5, -15, 6, 2, 3, 3, 5, -4, 6, -3, 7, 1, 2, 5, 5, -10, 6, 4, 3, 1, 5, 1, 6, -3, 7, 1, 3, 7, 5, -16, 6, 3, 7, 0, 2, 3, 5, -5, 6, 4, 3, 1, 5, -6, 6, 3, 7, 0, 3, 5, 5, -11, 6, 3, 7, 0, 1, 1, 5, 5, 3, 3, 5, -11, 6, 3, 7, 0, 3, 3, 5, -6, 6, 3, 7, 0, 2, 2, 5, -7, 7, 0, 2, 1, 5, -5, 6, 3, 3, 1, 5, -1, 6, 3, 7, 0, 2, 3, 5, -10, 6, 3, 3, 2, 5, -3, 6, 2, 7, 0, 2, 1, 5, 1, 7, 0, 3, 2, 5, -1, 6, -3, 7, 0, 2, 4, 5, -7, 6, 3, 2, 4, 6, -3, 7, 0, 2, 2, 5, -2, 6, 4, 3, 4, 5, -8, 6, 3, 7, 0, 1, 3, 6, 3, 3, 2, 5, -3, 6, 3, 7, 0, 2, 5, 5, -9, 6, 3, 2, 3, 5, -4, 6, 2, 2, 1, 5, 1, 6, 2, 2, 2, 5, -4, 7, 0, 2, 6, 5, -11, 6, 2, 2, 2, 5, -3, 7, 0, 2, 4, 5, -6, 6, 2, 2, 2, 5, -1, 6, 2, 1, 4, 6, 1, 2, 2, 5, -2, 7, 0, 2, 5, 5, -8, 6, 2, 2, 3, 5, -3, 6, 2, 2, 1, 5, 2, 6, 2, 2, 2, 5, -2, 8, 0, 2, 2, 5, -1, 7, 0, 2, 6, 5, -10, 6, 3, 2, 4, 5, -5, 6, 3, 2, 6, 6, -3, 7, 0, 1, 2, 5, 5, 3, 4, 5, -6, 6, 3, 7, 0, 1, 5, 6, 4, 2, 2, 5, -10, 6, 1, 2, 5, 5, -7, 6, 1, 2, 3, 5, -2, 6, 2, 2, 1, 5, 3, 6, 2, 2, 6, 5, -9, 6, 2, 2, 4, 5, -4, 6, 2, 2, 2, 5, 1, 6, 2, 2, 7, 5, -11, 6, 0, 2, 3, 5, -3, 7, 0, 2, 5, 5, -6, 6, 2, 2, 3, 5, -1, 6, 1, 2, 3, 5, -2, 7, 0, 2, 6, 5, -8, 6, 1, 2, 4, 5, -3, 6, 1, 2, 2, 5, 2, 6, 0, 2, 7, 5, -10, 6, 1, 2, 5, 5, -5, 6, 2, 1, 3, 5, 3, 2, 1, 5, 5, 6, 2, 2, 6, 5, -7, 6, 1, 2, 4, 5, -2, 6, 1, 2, 7, 5, -9, 6, 1, 2, 5, 5, -4, 6, 0, 2, 6, 5, -6, 6, 0, 2, 4, 5, -1, 6, 0, 2, 7, 5, -8, 6, 1, 2, 5, 5, -3, 6, 0, 2, 8, 5, -10, 6, 0, 2, 6, 5, -5, 6, 0, 1, 4, 5, 2, 2, 7, 5, -7, 6, 0, 2, 5, 5, -2, 6, 0, 2, 8, 5, -9, 6, 0, 2, 7, 5, -6, 6, 0, 2, 8, 5, -8, 6, 0, 2, 9, 5, -10, 6, 0, 1, 5, 5, 0, 2, 9, 5, -9, 6, 0, 2, 1, 3, -1, 5, 0, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // /* Total terms = 142, small = 140 */ + + internal static KeplerGlobalCode.plantbl jup404 = new KeplerGlobalCode.plantbl(9, new int[19] { 0, 0, 1, 0, 9, 16, 7, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 6, args, tabl, tabb, tabr, 5.2026032092d, 3652500.0d, 1.0d); + + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Mar404Data.cs b/ASCOM.Tools/Kepler/Planets/Mar404Data.cs new file mode 100644 index 0000000..71a224c --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Mar404Data.cs @@ -0,0 +1,959 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Mar404Data + { + // /* + // First date in file = 1228000.50 + // Number of records = 397276.0 + // Days per record = 4.0 + // Julian Years Lon Lat Rad + // -1349.9 to -1000.0: 0.42 0.18 0.25 + // -1000.0 to -500.0: 0.45 0.14 0.21 + // -500.0 to 0.0: 0.37 0.10 0.20 + // 0.0 to 500.0: 0.33 0.09 0.22 + // 500.0 to 1000.0: 0.48 0.07 0.22 + // 1000.0 to 1500.0: 0.40 0.07 0.19 + // 1500.0 to 2000.0: 0.36 0.11 0.19 + // 2000.0 to 2500.0: 0.38 0.14 0.20 + // 2500.0 to 3000.0: 0.45 0.15 0.24 + // 3000.0 to 3000.8: 0.182 0.125 0.087 + // */ + + internal static double[] tabl = new double[] { 43471.6614d, 21291.11063d, 2033.37848d, 6890507597.78366d, 1279543.73631d, 317.74183d, 730.69258d, -15.26502d, 277.5696d, -62.96711d, 20.96285d, 1.01857d, -2.19395d, 3.75708d, 3.65854d, 0.01049d, 1.09183d, -0.00605d, -0.04769d, 0.41839d, 0.10091d, 0.03887d, 0.11666d, -0.03301d, 0.02664d, 0.38777d, -0.56974d, 0.02974d, -0.15041d, 0.02179d, -0.00808d, 0.08594d, 0.09773d, -0.00902d, -0.04597d, 0.00762d, -0.03858d, -0.00139d, 0.01562d, 0.02019d, 0.01878d, -0.01244d, 0.00795d, 0.00815d, 0.03501d, -0.00335d, -0.0297d, -0.00518d, -0.01763d, 0.17257d, 0.14698d, -0.14417d, 0.26028d, 0.00062d, -0.0018d, 13.35262d, 39.38771d, -15.49558d, 22.0015d, -7.71321d, -4.20035d, 0.62074d, -1.42376d, 0.07043d, -0.0667d, 0.1696d, -0.06859d, 0.07787d, 0.01845d, -0.01608d, -0.00914d, 5.60438d, -3.44436d, 5.88876d, 6.77238d, -5.29704d, 3.48944d, 0.01291d, 0.0128d, -0.53532d, 0.86584d, 0.79604d, 0.31635d, -3.92977d, -0.94829d, -0.74254d, -1.37947d, 0.17871d, -0.12477d, 0.00171d, 0.11537d, 0.02281d, -0.03922d, -0.00165d, 0.02965d, 1.59773d, 1.24565d, -0.35802d, 1.37272d, -0.44811d, -0.08611d, 3.04184d, -3.39729d, 8.8627d, 6.65967d, -9.1058d, 10.66103d, 0.02015d, -0.00902d, -0.01166d, -0.23957d, -0.12128d, -0.0464d, -0.07114d, 0.14053d, -0.04966d, -0.01665d, 0.28411d, -0.37754d, -1.26265d, 1.01377d, 3.70433d, -0.21025d, -0.00972d, 0.0035d, 0.00997d, 0.0045d, -2.15305d, 3.18147d, -1.81957d, -0.02321d, -0.0256d, -0.35188d, 0.00003d, -0.0111d, 0.00244d, -0.05083d, -0.00216d, -0.02026d, 0.05179d, 0.04188d, 5.92031d, -1.61316d, 3.72001d, 6.98783d, -4.1769d, 2.6125d, 0.04157d, 2.76453d, -1.34043d, 0.74586d, -0.20258d, -0.30467d, 0.00733d, 0.00376d, 1.728d, 0.76593d, 1.26577d, -2.02682d, -1.14637d, -0.91894d, -0.00002d, 0.00036d, 2.54213d, 0.89533d, -0.04166d, 2.36838d, -0.97069d, 0.05486d, 0.46927d, 0.045d, 0.23388d, 0.35005d, 1.61402d, 2.30209d, -0.99859d, 1.63349d, -0.5149d, -0.26112d, 0.27848d, -0.261d, -0.07645d, -0.22001d, 0.92901d, 1.12627d, -0.39829d, 0.7712d, -0.23716d, -0.11245d, -0.02387d, 0.0396d, -0.00802d, 0.02179d, 2.86448d, 1.00246d, -0.14647d, 2.80278d, -1.14143d, 0.05177d, 1.68671d, -1.23451d, 3.16285d, 0.7007d, 0.25817d, 3.17416d, 0.07447d, -0.08116d, -0.03029d, -0.02795d, 0.00816d, 0.01023d, 0.00685d, -0.01075d, -0.34268d, 0.0368d, -0.05488d, -0.0743d, -0.00041d, -0.02968d, 3.13228d, -0.83209d, 1.95765d, 3.78394d, -2.26196d, 1.3852d, -0.00401d, -0.01397d, 1.01604d, -0.99485d, 0.62465d, 0.22431d, -0.05076d, 0.12025d, 4.35229d, -5.04483d, 14.87533d, 9.00826d, -10.37595d, 19.26596d, 0.40352d, 0.19895d, 0.09463d, -0.10774d, -0.17809d, -0.08979d, -0.00796d, -0.04313d, 0.0152d, -0.03538d, 1.53301d, -1.75553d, 4.87236d, 3.23662d, -3.62305d, 6.42351d, -0.00439d, -0.01305d, 0.17194d, -0.64003d, 0.26609d, 0.066d, 0.01767d, -0.00251d, -0.08871d, -0.15523d, 0.01201d, -0.03408d, -0.29126d, -0.07093d, -0.00998d, -0.07876d, 1.05932d, -25.3865d, -0.29354d, 0.04179d, -0.01726d, 0.07473d, -0.07607d, -0.08859d, 0.00842d, -0.02359d, 0.47858d, -0.39809d, 1.25061d, 0.87017d, -0.82453d, 1.56864d, -0.00463d, 0.02385d, -0.2907d, 8.56535d, -0.12495d, 0.0658d, -0.03395d, -0.02465d, -1.06759d, 0.47004d, -0.40281d, -0.23957d, 0.03572d, -0.07012d, 0.00571d, -0.00731d, 0.18601d, -1.34068d, 0.03798d, -0.00532d, 0.00448d, -0.01147d, 1.41208d, -0.00668d, 0.25883d, 1.23788d, -0.57774d, 0.09166d, -2.49664d, -0.25235d, -0.53582d, -0.80126d, 0.10827d, -0.08861d, -0.03577d, 0.06825d, -0.00143d, 0.04633d, 0.01586d, -0.01056d, -0.02106d, 0.03804d, -0.00088d, -0.03458d, -0.00033d, -0.01079d, 0.05821d, -0.02445d, 0.00602d, 0.00721d, -0.00315d, -0.01021d, -0.65454d, 1.08478d, -0.44593d, -0.21492d, -1.35004d, 4.47299d, -4.1917d, 3.51236d, 1946.04629d, 13960.88247d, 576.24572d, 8023.81797d, 2402.48512d, -753.87007d, -6376.99217d, -10278.88014d, -25743.89874d, 15506.87748d, 15609.59853d, 35173.63133d, -3.7037d, 6.29538d, -4.84183d, -0.76942d, -0.02465d, -0.0384d, 0.00565d, -0.06071d, 0.01174d, 0.00253d, -0.0023d, 0.05252d, -0.02813d, 0.01359d, 0.23208d, 0.03393d, 0.01734d, 0.04838d, -0.4634d, -0.18941d, 0.25428d, -0.56925d, 0.05213d, 0.24704d, 0.12922d, -0.01531d, 0.06885d, -0.0851d, 0.01853d, -0.0039d, 0.01196d, -0.3053d, 0.13117d, -0.03533d, 1.79597d, -0.42743d, 0.98545d, 2.13503d, -1.32942d, 0.68005d, -0.01226d, 0.00571d, 0.31081d, 0.34932d, 0.34531d, -0.32947d, -0.00548d, 0.00186d, -0.00157d, -0.00065d, 0.30877d, -0.03864d, 0.04921d, 0.06693d, 0.01761d, -0.04119d, 1.28318d, 0.38546d, 0.06462d, 1.18337d, -0.48698d, 0.07086d, 0.26031d, -0.22813d, 0.10272d, 0.04737d, -0.04506d, -0.38581d, -0.16624d, -0.04588d, 0.00992d, 0.00722d, -0.21041d, 0.2056d, -0.09267d, -0.03438d, 0.32264d, -0.07383d, 0.09553d, -0.3873d, 0.17109d, -0.01342d, -0.02336d, -0.01286d, 0.0023d, 0.04626d, 0.01176d, 0.01868d, -0.15411d, -0.32799d, 0.22083d, -0.14077d, 1.98392d, 1.68058d, -0.02526d, -0.13164d, -0.04447d, -0.00153d, 0.01277d, 0.00553d, -0.26035d, -0.11362d, 0.14672d, -0.32242d, 0.16686d, -0.69957d, 0.40091d, -0.06721d, 0.00837d, 0.09635d, -0.08545d, 0.25178d, -0.22486d, 16.03256d, 0.3413d, -0.06313d, 0.01469d, -0.09012d, -0.00744d, -0.0251d, -0.08492d, -0.13733d, -0.0762d, -0.15329d, 0.13716d, -0.03769d, 2.01176d, -1.35991d, -1.04319d, -2.97226d, -0.01433d, 0.61219d, -0.55522d, 0.38579d, 0.31831d, 0.81843d, -0.04583d, -0.14585d, -0.10218d, 0.16039d, -0.06552d, -0.01802d, 0.0648d, -0.06641d, 0.01672d, -0.00287d, 0.00308d, 0.09982d, -0.05679d, -0.00249d, -0.36034d, 0.52385d, -0.29759d, 0.59539d, -3.59641d, -1.02499d, -547.53774d, 734.1147d, 441.8676d, -626.68255d, -2255.81376d, -1309.01028d, -2025.6959d, 2774.69901d, 1711.21478d, 1509.99797d, -0.99274d, 0.61858d, -0.47634d, -0.33034d, 0.00261d, 0.01183d, -0.00038d, 0.11687d, 0.00994d, -0.01122d, 0.03482d, -0.01942d, -0.11557d, 0.38237d, -0.17826d, 0.0083d, 0.01193d, -0.05469d, 0.01557d, 0.01747d, 0.0273d, -0.01182d, -0.11284d, 0.12939d, -0.05621d, -0.01615d, 0.04258d, 0.01058d, -0.01723d, 0.00963d, 0.20666d, 0.11742d, 0.0783d, -0.02922d, -0.10659d, -0.05407d, 0.07254d, -0.13005d, -0.02365d, 0.24583d, 0.31915d, 1.2706d, 0.00009d, -0.21541d, -0.55324d, -0.45999d, -1.45885d, 0.8653d, 0.85932d, 1.92999d, -0.00755d, -0.00715d, -0.02004d, -0.00788d, 0.01539d, 0.00837d, 0.27652d, -0.50297d, -0.26703d, -0.28159d, 0.0395d, 0.07182d, -0.07177d, 0.1414d, 0.07693d, 0.07564d, -0.01316d, -0.01259d, 0.01529d, 0.07773d, -90.74225d, -378.15784d, -510.3019d, -52.35396d, -89.15267d, 415.56828d, 181.52119d, 54.0157d, -0.01093d, -0.05931d, -0.01344d, -0.0239d, 0.01432d, -0.0247d, -0.01509d, -0.01346d, 0.03352d, 0.02248d, 0.02588d, -0.00948d, 0.0361d, 0.17238d, 0.02909d, -0.04065d, 0.00155d, -0.07025d, -0.09508d, 0.14487d, 0.12441d, 0.16451d, 0.00001d, -0.00005d, -0.00982d, -0.01895d, -0.16968d, 0.36565d, 0.20234d, 0.17789d, -0.04519d, -0.00588d, 0.01268d, 0.00107d, -56.32137d, -58.22145d, -80.5527d, 28.14532d, 11.43301d, 52.05752d, 17.7948d, -2.61997d, -0.00005d, -0.02629d, 0.0108d, -0.0039d, 0.00744d, 0.03132d, 0.01156d, -0.01621d, 0.02162d, 0.02552d, 0.00075d, -0.02497d, 0.02495d, 0.0083d, 0.0323d, 0.00103d, -14.84965d, -4.502d, -9.73043d, 9.40426d, 4.08054d, 5.38571d, 1.53731d, -1.01288d, 0.21076d, 1.74227d, 0.7976d, 0.39583d, 0.09879d, -0.16736d, -0.00723d, -0.01536d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabb = new double[] { -364.4938d, -47.17612d, -554.97858d, -430.63121d, 596.44312d, -3.94434d, -7.43169d, -0.06665d, -2.23987d, 0.10366d, -0.05567d, -0.01463d, 0.01908d, -0.02611d, -0.0035d, -0.01057d, -0.0061d, -0.00015d, 0.00002d, 0.0001d, 0.00033d, 0.00007d, -0.0d, -0.0001d, -0.00004d, 0.00012d, 0.00002d, -0.00014d, -0.00048d, -0.00003d, -0.00007d, 0.00008d, -0.00005d, -0.00043d, -0.00003d, -0.0001d, -0.00004d, 0.00001d, 0.00001d, -0.00003d, -0.00003d, 0.00004d, 0.00007d, -0.00041d, 0.00031d, 0.00076d, 0.00062d, 0.00001d, -0.00002d, 0.00035d, 0.00053d, 0.00026d, 0.00019d, 0.0002d, 0.0001d, 0.02936d, 0.09624d, -0.01153d, 0.01386d, 0.00551d, -0.0069d, 0.00196d, 0.00148d, -0.00408d, -0.00673d, -0.00067d, -0.00152d, -0.00014d, -0.00005d, 0.0d, 0.00005d, -0.00116d, 0.00276d, -0.00391d, 0.00983d, -0.01327d, -0.01986d, -0.00003d, 0.00001d, 0.01104d, 0.00631d, -0.01364d, 0.01152d, -0.00439d, 0.01103d, -0.00546d, 0.00181d, -0.00039d, -0.00083d, 0.00007d, 0.00002d, -0.0001d, -0.00008d, 0.00005d, 0.00002d, -0.00584d, 0.00512d, -0.00722d, -0.00174d, 0.00101d, -0.00316d, -0.02229d, -0.02797d, -0.10718d, 0.05741d, 0.11403d, 0.10033d, 0.00036d, -0.00022d, 0.00787d, 0.01191d, 0.01756d, -0.02121d, -0.00169d, -0.00364d, 0.0007d, -0.00051d, 0.0185d, -0.06836d, 0.21471d, 0.00162d, -0.29165d, 0.16799d, -0.00002d, 0.00011d, -0.00075d, -0.00077d, -0.00675d, -0.00814d, 0.00029d, -0.00599d, 0.00107d, 0.00013d, 0.0001d, -0.00002d, 0.00005d, 0.0002d, 0.00355d, 0.00306d, -0.00013d, -0.00061d, -0.0295d, -0.00847d, 0.01037d, -0.04783d, 0.04237d, 0.11662d, -0.00331d, 0.00207d, -0.00107d, -0.00264d, 0.00072d, -0.00023d, -0.00151d, 0.00146d, -0.12847d, 0.02294d, 0.03611d, 0.19705d, 0.16855d, -0.28279d, -0.0d, -0.00002d, -0.00525d, -0.03619d, 0.05048d, -0.00481d, -0.00745d, 0.04618d, 0.00286d, 0.00443d, 0.00521d, -0.00351d, 0.002d, 0.00474d, -0.00149d, 0.00031d, -0.00003d, 0.00029d, 0.00686d, 0.02467d, 0.04275d, -0.02223d, 0.02282d, -0.04228d, 0.03312d, 0.01847d, -0.01253d, 0.01601d, 0.00076d, 0.00091d, 0.00045d, 0.00035d, 0.00658d, 0.01586d, -0.0031d, 0.00628d, -0.00045d, 0.00316d, -0.01602d, -0.0034d, -0.01744d, 0.04907d, 0.06426d, 0.02275d, -0.00217d, -0.00377d, -0.00091d, 0.00037d, 0.0004d, -0.00003d, -0.00017d, -0.00027d, 0.00366d, 0.02693d, -0.00934d, 0.00386d, 0.00616d, -0.00037d, 0.02028d, 0.0212d, -0.01768d, 0.02421d, 0.00102d, 0.00877d, 0.00012d, 0.0003d, -0.00019d, -0.02165d, 0.01245d, -0.00742d, 0.00172d, 0.0032d, -0.17117d, -0.12908d, -0.43134d, 0.15617d, 0.21216d, 0.56432d, 0.01139d, -0.00937d, -0.00058d, -0.00337d, -0.00999d, 0.01862d, -0.00621d, -0.0008d, -0.00025d, -0.0014d, 0.0925d, 0.01173d, -0.03549d, 0.14651d, -0.01784d, 0.00945d, 0.0d, -0.00006d, -0.005d, 0.00086d, 0.01079d, -0.00002d, -0.00012d, -0.00029d, -0.02661d, 0.0014d, -0.00524d, -0.0046d, -0.00352d, -0.00563d, -0.00277d, -0.00052d, -0.10171d, -0.02001d, 0.00045d, 0.00265d, -0.00082d, 0.0016d, -0.00302d, -0.00434d, -0.00022d, -0.00134d, 0.03285d, 0.02964d, -0.05612d, -0.00668d, -0.01821d, 0.0659d, 0.00039d, 0.00061d, -0.13531d, -0.03831d, 0.02553d, 0.0213d, -0.00336d, 0.00468d, -0.04522d, -0.0554d, 0.00129d, -0.01767d, 0.00181d, 0.00031d, -0.00011d, -0.00034d, -0.00146d, 0.01101d, -0.0003d, 0.0024d, -0.00039d, 0.00072d, -0.01954d, -0.03822d, 0.09682d, -0.04541d, -0.01567d, 0.09617d, -0.03371d, 0.33028d, -0.12102d, 0.05874d, -0.0099d, -0.02236d, 0.00109d, 0.00158d, -0.00482d, 0.00019d, -0.00036d, 0.00004d, 0.00024d, 0.00201d, 0.00017d, 0.00011d, -0.00012d, 0.00002d, -0.00323d, -0.01062d, -0.0013d, 0.00091d, 0.00056d, -0.00017d, 0.00774d, 0.00601d, 0.0255d, 0.017d, -0.84327d, 0.77533d, -0.71414d, -0.50643d, -473.30877d, -1504.79179d, -458.52274d, -865.82237d, -417.34994d, -681.03976d, 765.50697d, -1653.67165d, 4427.33176d, 710.53895d, -5016.39367d, 4280.60361d, 0.33957d, 0.3839d, -0.38631d, 0.81193d, 0.00154d, -0.00043d, 0.01103d, -0.00017d, -0.00046d, 0.00221d, 0.00059d, 0.00014d, 0.0016d, 0.00475d, 0.06191d, -0.13289d, 0.02884d, -0.00566d, -0.01572d, 0.2378d, -0.0514d, -0.03228d, -0.00716d, -0.00978d, -0.01048d, 0.01317d, -0.01267d, -0.01198d, 0.00037d, -0.0033d, -0.02305d, 0.00355d, -0.00121d, -0.00496d, -0.04369d, -0.01343d, 0.05347d, -0.12433d, 0.0209d, 0.17683d, 0.00028d, -0.0049d, -0.02778d, -0.05587d, -0.01658d, 0.05655d, 0.00204d, -0.00092d, 0.0002d, 0.00014d, -0.00603d, -0.03829d, 0.00778d, -0.00588d, -0.00266d, 0.00097d, -0.02158d, -0.07742d, 0.09306d, -0.01827d, -0.01048d, 0.07885d, -0.02485d, -0.02505d, 0.00471d, -0.01026d, 0.06663d, 0.0111d, 0.00469d, -0.05347d, -0.00016d, -0.00013d, 0.02622d, 0.02273d, -0.01009d, 0.01391d, -0.01042d, -0.00444d, -0.04293d, -0.00767d, -0.00154d, -0.01739d, 0.00353d, -0.00763d, -0.0006d, 0.0001d, -0.00053d, -0.00146d, -0.05317d, 0.0576d, -0.01801d, -0.02099d, -0.02611d, -0.01836d, -0.00256d, 0.00812d, -0.00145d, 0.00054d, -0.00008d, 0.00015d, -0.04087d, 0.0886d, -0.05385d, -0.02134d, 0.02771d, 0.02441d, -0.00234d, 0.01571d, -0.0026d, 0.00097d, 0.10151d, 0.49378d, -0.28555d, 0.11428d, -0.00286d, 0.01224d, 0.0016d, 0.00069d, 0.0d, -0.0004d, -0.13286d, 0.00448d, 0.01225d, -0.00568d, 0.00341d, 0.00224d, -0.23483d, -0.07859d, 0.30733d, -0.21548d, -0.02608d, 0.00756d, 0.09789d, 0.02878d, -0.11968d, 0.08981d, 0.02046d, -0.00888d, 0.02955d, 0.01486d, -0.00981d, 0.01542d, -0.01674d, -0.0154d, 0.00019d, -0.00449d, -0.0214d, 0.00638d, 0.00112d, -0.0073d, -0.08571d, 0.13811d, -0.16951d, -0.02917d, -0.03931d, -0.32643d, -68.64541d, -81.00521d, -47.97737d, 15.7529d, 181.76392d, -36.00647d, -48.32098d, -259.02226d, -265.57466d, 554.05904d, 0.09017d, 0.18803d, -0.12459d, 0.10852d, 0.00211d, 0.00002d, 0.00304d, -0.0037d, 0.00174d, 0.00279d, 0.00139d, 0.00095d, 0.04881d, 0.00262d, -0.0102d, 0.03762d, 0.00987d, 0.00612d, 0.00054d, -0.00036d, 0.00009d, -0.00094d, 0.02279d, 0.01785d, -0.00778d, 0.01263d, 0.0004d, -0.00112d, -0.00452d, -0.00662d, 0.00483d, -0.0003d, -0.00054d, -0.00205d, -0.00052d, -0.00362d, -0.00215d, -0.00247d, 0.02893d, -0.01965d, -0.00004d, 0.04114d, -0.00284d, -0.00103d, 0.01827d, -0.07822d, 0.1801d, 0.04805d, -0.21702d, 0.18808d, 0.00095d, -0.00132d, -0.01488d, 0.00746d, 0.00198d, 0.0019d, 0.01032d, 0.03392d, 0.04318d, -0.07332d, -0.01004d, 0.00787d, -0.00308d, -0.01177d, -0.01431d, 0.02659d, 0.00273d, -0.00374d, -0.02545d, 0.00644d, 28.68376d, 13.74978d, 29.60401d, -47.98255d, -65.91944d, -18.48404d, -1.7358d, 64.67487d, -0.02492d, 0.00104d, -0.00829d, -0.00134d, 0.00077d, 0.00005d, -0.00513d, 0.00403d, 0.00071d, -0.00047d, -0.00023d, -0.00063d, 0.0012d, 0.0037d, -0.00038d, -0.00037d, 0.0008d, -0.00018d, 0.00866d, 0.00156d, -0.01064d, 0.02131d, 0.0d, -0.00001d, 0.00038d, -0.00068d, -0.00909d, -0.02187d, -0.02599d, 0.05507d, -0.00022d, -0.01468d, 0.00032d, 0.005d, 9.86233d, -2.85314d, -2.25791d, -13.83444d, -12.38794d, 3.79861d, 2.76343d, 6.63505d, 0.00066d, 0.00007d, -0.00016d, -0.00039d, 0.00014d, 0.00059d, -0.00031d, -0.00024d, -0.00168d, 0.00259d, 0.00007d, -0.00005d, -0.00052d, 0.00558d, 0.0011d, 0.01037d, 1.59224d, -2.37284d, -2.00023d, -2.2828d, -1.49571d, 1.48293d, 0.60041d, 0.56376d, -0.54386d, 0.03568d, -0.10392d, 0.31005d, 0.09104d, 0.03015d, 0.00826d, -0.00524d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabr = new double[] { -816.07287d, -381.41365d, -33.69436d, 177.22955d, 0.1863d, -8.29605d, -11.15519d, -0.57407d, -3.53642d, 0.16663d, -0.06334d, -0.03056d, 0.02767d, -0.04161d, 0.03917d, -0.02425d, 0.00204d, -0.00034d, 0.00023d, 0.00058d, -0.00111d, 0.00039d, -0.00015d, 0.00006d, -0.00023d, 0.00237d, 0.00191d, 0.00154d, -0.00029d, 0.00009d, 0.00011d, -0.00041d, 0.00037d, -0.0001d, -0.00064d, 0.00015d, -0.00005d, 0.00012d, -0.00003d, -0.00034d, 0.00026d, 0.00011d, -0.00007d, -0.00158d, 0.00087d, 0.00278d, 0.00137d, 0.00024d, -0.0002d, 0.0053d, -0.00448d, 0.0078d, 0.00408d, 0.00062d, 0.00035d, -1.35261d, 0.79891d, -0.81597d, -0.43774d, 0.14713d, -0.27415d, 0.05298d, 0.0223d, -0.02089d, -0.0107d, -0.00374d, 0.00342d, -0.00142d, 0.0027d, -0.00039d, 0.00063d, 0.16024d, 0.27088d, -0.32127d, 0.27467d, -0.16615d, -0.2446d, -0.00073d, 0.00032d, -0.0571d, -0.05265d, -0.06025d, 0.0512d, -0.05295d, 0.23477d, -0.08211d, 0.04575d, -0.00769d, -0.01067d, -0.0057d, 0.00015d, -0.00251d, -0.0014d, -0.00131d, -0.00018d, -0.12246d, 0.15836d, -0.13065d, -0.03222d, 0.00795d, -0.04232d, -0.36585d, -0.31154d, 0.68504d, -0.96006d, 1.19304d, 0.88631d, 0.00132d, 0.00046d, 0.13105d, 0.04252d, 0.05164d, -0.06837d, -0.01351d, -0.01458d, 0.00376d, -0.00557d, 0.28532d, -0.1729d, -0.53946d, -0.79365d, -0.95246d, 0.74984d, 0.00019d, 0.00132d, -0.00163d, -0.00295d, -0.40106d, -0.26573d, -0.00155d, -0.22655d, 0.04349d, -0.00376d, 0.00149d, -0.00001d, 0.00523d, 0.00078d, 0.01203d, 0.00558d, -0.00708d, 0.0052d, -0.36428d, -1.28827d, 1.50845d, -0.83063d, 0.58802d, 0.89998d, -0.55256d, 0.01255d, -0.15169d, -0.26715d, 0.06061d, -0.04122d, -0.00397d, 0.00534d, -0.52576d, 1.22031d, 1.44098d, 0.92406d, 0.67214d, -0.85486d, -0.0001d, 0.00001d, 0.2882d, -0.84198d, 0.78291d, 0.00251d, 0.02398d, 0.32093d, -0.02331d, 0.10109d, -0.07555d, 0.03557d, -0.6158d, 0.43399d, -0.43779d, -0.2639d, 0.06885d, -0.13803d, 0.17694d, 0.19245d, 0.15119d, -0.051d, 0.49469d, -0.45028d, 0.3359d, 0.15677d, -0.04702d, 0.10265d, -0.00942d, -0.0058d, -0.00555d, -0.00252d, -0.32933d, 0.92539d, -0.91004d, -0.0449d, -0.01812d, -0.37121d, 0.34695d, 0.50855d, -0.24721d, 0.86063d, -0.84747d, 0.01983d, 0.01948d, 0.02039d, 0.00748d, -0.00727d, -0.00271d, 0.0022d, 0.00309d, 0.00196d, 0.0203d, 0.17201d, -0.03716d, 0.02801d, 0.01871d, 0.00002d, 0.31736d, 1.17319d, -1.42245d, 0.73416d, -0.52302d, -0.85056d, 0.00522d, -0.00126d, 0.33571d, 0.34594d, -0.07709d, 0.21114d, -0.04066d, -0.01742d, 1.72228d, 1.46934d, -3.06437d, 5.06723d, -6.538d, -3.55839d, -0.06933d, 0.13815d, 0.03684d, 0.03284d, -0.04841d, 0.09571d, -0.0235d, 0.00418d, 0.01302d, 0.00579d, 0.73408d, 0.64718d, -1.37437d, 2.04816d, -2.70756d, -1.52808d, 0.00523d, -0.00166d, 0.25915d, 0.069d, -0.02758d, 0.10707d, 0.00062d, 0.00744d, -0.08117d, 0.0484d, -0.01806d, -0.00637d, 0.03034d, -0.12414d, 0.03419d, -0.00388d, 10.92603d, 0.48169d, -0.01753d, -0.12853d, -0.03207d, -0.00801d, 0.03904d, -0.03326d, 0.01033d, 0.00366d, 0.17249d, 0.20846d, -0.38157d, 0.54639d, -0.68518d, -0.36121d, -0.01043d, -0.00186d, -3.33843d, -0.16353d, 0.03462d, 0.06669d, -0.01305d, 0.01803d, -0.22703d, -0.52219d, 0.11709d, -0.19628d, 0.0341d, 0.01741d, 0.00338d, 0.00265d, 0.63213d, 0.08944d, 0.00236d, 0.01829d, 0.00546d, 0.00218d, 0.00073d, -0.7257d, 0.63698d, -0.1334d, 0.04698d, 0.29716d, -0.13126d, 1.27705d, -0.4098d, 0.274d, -0.04525d, -0.05529d, -0.03249d, -0.01696d, -0.02314d, -0.00076d, 0.0051d, 0.00764d, -0.01847d, -0.01021d, 0.01688d, -0.00044d, 0.00531d, -0.00016d, -0.01219d, -0.02903d, -0.00361d, 0.00299d, 0.00504d, -0.00153d, -0.53625d, -0.3246d, 0.10642d, -0.2207d, -2.21651d, -0.66036d, -1.74652d, -2.08198d, -6810.78679d, 967.02869d, -3915.9714d, 291.65905d, 372.99563d, 1196.01966d, 5108.01033d, -3172.64698d, -7685.78246d, -12789.43898d, -17474.50562d, 7757.84703d, 3.13224d, 1.84743d, -0.38257d, 2.4059d, 0.0186d, -0.01217d, 0.03004d, 0.00278d, -0.00125d, 0.00579d, -0.02673d, -0.00112d, 0.00662d, 0.01374d, -0.02729d, 0.13109d, -0.02836d, 0.00877d, 0.12171d, -0.27475d, 0.34765d, 0.15882d, -0.12548d, 0.02603d, 0.0071d, 0.06538d, -0.04039d, -0.03257d, -0.00186d, -0.0088d, 0.16643d, 0.00707d, 0.01918d, 0.07156d, -0.20459d, -0.85107d, 1.01832d, -0.47158d, 0.32582d, 0.63002d, -0.00282d, -0.00711d, -0.19695d, 0.15053d, 0.15676d, 0.17847d, 0.00071d, 0.00286d, -0.00039d, 0.00083d, 0.02009d, 0.17859d, -0.03894d, 0.02805d, 0.02379d, 0.00752d, 0.17529d, -0.57783d, 0.53257d, -0.02829d, 0.03211d, 0.21777d, 0.13813d, 0.16305d, -0.02996d, 0.06303d, 0.21058d, -0.02659d, 0.02596d, -0.08808d, -0.00389d, 0.00586d, 0.08986d, 0.09204d, -0.0148d, 0.04031d, 0.06115d, 0.18366d, 0.25636d, 0.06905d, 0.00719d, 0.11391d, 0.00636d, -0.01113d, -0.02808d, 0.0015d, -0.01219d, 0.00832d, 0.28626d, -0.09573d, 0.10481d, 0.16559d, -0.94578d, 1.26394d, 0.08846d, -0.01623d, 0.00082d, -0.0264d, -0.00347d, 0.00798d, 0.12873d, -0.21248d, 0.27999d, 0.14348d, 0.44082d, 0.10453d, 0.04362d, 0.25332d, -0.06077d, 0.00555d, -0.06947d, -0.05511d, -10.08703d, -0.10614d, 0.04059d, 0.21355d, 0.05632d, 0.00871d, 0.01599d, -0.00531d, 0.36835d, -0.0353d, 0.09519d, -0.04961d, 0.02568d, 0.08613d, 0.57033d, 0.84599d, 1.27123d, -0.41266d, -0.36937d, -0.00655d, -0.16547d, -0.24d, -0.35213d, 0.13345d, 0.0587d, -0.01524d, 0.06419d, 0.04136d, -0.00681d, 0.02606d, -0.02519d, -0.02732d, -0.00105d, -0.00677d, -0.03891d, 0.00106d, 0.00087d, -0.02256d, -0.20834d, -0.14624d, -0.23178d, -0.11786d, 0.32479d, -1.41222d, -303.74549d, -202.79324d, 260.2029d, 184.8432d, 536.68016d, -881.56427d, -1125.64824d, -791.09928d, -596.61162d, 659.35664d, 0.24561d, 0.39519d, -0.12601d, 0.18709d, -0.007d, 0.00136d, 0.3075d, 0.00009d, 0.00443d, 0.00384d, 0.0117d, 0.02078d, 0.15043d, 0.04802d, 0.00386d, 0.06942d, 0.02107d, 0.00495d, -0.01067d, 0.00951d, 0.00937d, 0.01996d, 0.04922d, 0.04337d, -0.00583d, 0.0211d, -0.00691d, 0.02793d, -0.00364d, -0.00682d, -0.09143d, 0.15369d, 0.02043d, 0.05451d, 0.04053d, -0.08179d, 0.09645d, 0.0533d, -0.10149d, -0.01594d, -0.96773d, 0.1366d, 0.17326d, 0.00013d, 0.2099d, -0.23184d, -0.38407d, -0.64733d, -0.84754d, 0.38889d, 0.0031d, -0.0034d, 0.0097d, -0.00788d, -0.01111d, 0.00677d, 0.18147d, 0.09968d, 0.1017d, -0.09233d, -0.03165d, 0.0179d, -0.04727d, -0.02364d, -0.02546d, 0.02451d, 0.00442d, -0.00426d, -0.0254d, 0.00471d, 130.42585d, -31.30051d, 17.99957d, -174.75585d, -142.96798d, -27.89752d, -19.42122d, 59.14872d, -0.01899d, 0.00388d, -0.01265d, 0.00694d, 0.01966d, 0.0114d, -0.00439d, 0.00503d, -0.01867d, 0.02826d, 0.00752d, 0.02012d, -0.14734d, 0.01909d, 0.03312d, 0.02327d, 0.05843d, 0.00061d, -0.06958d, -0.05798d, -0.09174d, 0.06242d, 0.00003d, 0.00001d, 0.0067d, -0.00305d, -0.13637d, -0.06058d, -0.06372d, 0.07257d, 0.00209d, -0.01369d, -0.00044d, 0.00355d, 17.90079d, -17.4827d, -8.77915d, -24.54483d, -15.67123d, 3.62668d, 0.52038d, 5.1322d, 0.02574d, 0.00003d, 0.00339d, 0.00919d, -0.02778d, 0.00464d, 0.01429d, 0.01003d, -0.01661d, 0.01327d, 0.02216d, 0.00034d, -0.00389d, 0.01076d, -0.00035d, 0.00983d, 1.23731d, -4.18017d, -2.61932d, -2.66346d, -1.4554d, 1.1031d, 0.23322d, 0.40775d, -0.43623d, 0.06212d, -0.099d, 0.19456d, 0.03639d, 0.02566d, 0.00309d, -0.00116d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 4, 3, 4, 3, -8, 4, 3, 5, 2, 3, 5, 2, -6, 3, -4, 4, 0, 2, 2, 5, -5, 6, 1, 3, 12, 3, -24, 4, 9, 5, 0, 3, 2, 2, 1, 3, -8, 4, 1, 3, 11, 3, -21, 4, 2, 5, 0, 3, 3, 2, -7, 3, 4, 4, 0, 3, 7, 3, -13, 4, -1, 5, 1, 3, 1, 3, -2, 4, 2, 6, 0, 3, 1, 2, -8, 3, 12, 4, 1, 3, 1, 4, -8, 5, 4, 6, 0, 3, 1, 4, -7, 5, 2, 6, 0, 3, 1, 4, -9, 5, 7, 6, 0, 1, 1, 7, 0, 2, 1, 5, -2, 6, 0, 3, 1, 3, -2, 4, 1, 5, 0, 3, 3, 3, -6, 4, 2, 5, 1, 3, 12, 3, -23, 4, 3, 5, 0, 2, 8, 3, -15, 4, 3, 2, 1, 4, -6, 5, 2, 3, 2, 2, -7, 3, 7, 4, 0, 2, 1, 2, -3, 4, 2, 2, 2, 5, -4, 6, 0, 1, 1, 6, 1, 2, 9, 3, -17, 4, 2, 3, 2, 3, -4, 4, 2, 5, 0, 3, 2, 3, -4, 4, 1, 5, 0, 2, 1, 5, -1, 6, 0, 2, 2, 2, -6, 4, 2, 2, 1, 3, -2, 4, 2, 2, 2, 5, -3, 6, 0, 1, 2, 6, 1, 2, 3, 5, -5, 6, 1, 1, 1, 5, 2, 3, 4, 3, -8, 4, 2, 5, 0, 2, 1, 5, -5, 6, 0, 2, 7, 3, -13, 4, 2, 2, 3, 2, -9, 4, 0, 2, 2, 5, -2, 6, 0, 1, 3, 6, 0, 2, 1, 4, -5, 5, 0, 2, 2, 3, -4, 4, 2, 2, 6, 3, -11, 4, 2, 2, 4, 5, -5, 6, 0, 1, 2, 5, 2, 3, 1, 4, -3, 5, -3, 6, 0, 2, 3, 3, -6, 4, 2, 2, 1, 4, -4, 5, 1, 2, 5, 3, -9, 4, 2, 1, 3, 5, 1, 2, 4, 3, -8, 4, 2, 3, 1, 4, -4, 5, 2, 6, 0, 3, 1, 4, -1, 5, -5, 6, 0, 2, 4, 3, -7, 4, 2, 2, 1, 4, -3, 5, 2, 3, 1, 4, -5, 5, 5, 6, 1, 3, 1, 4, -4, 5, 3, 6, 0, 3, 1, 4, -3, 5, 1, 6, 0, 2, 5, 3, -10, 4, 1, 1, 4, 5, 0, 2, 3, 3, -5, 4, 2, 3, 1, 4, -3, 5, 2, 6, 0, 2, 1, 4, -5, 6, 2, 2, 1, 4, -2, 5, 2, 3, 1, 4, -4, 5, 5, 6, 1, 2, 6, 3, -12, 4, 1, 2, 1, 4, -4, 6, 0, 2, 2, 3, -3, 4, 2, 2, 10, 3, -18, 4, 0, 2, 1, 4, -3, 6, 1, 3, 1, 4, -2, 5, 2, 6, 0, 2, 7, 3, -14, 4, 1, 3, 1, 4, 1, 5, -5, 6, 1, 2, 1, 4, -1, 5, 0, 3, 1, 4, -3, 5, 5, 6, 1, 3, 1, 4, 2, 5, -7, 6, 1, 2, 1, 4, -2, 6, 2, 3, 1, 4, -2, 5, 3, 6, 0, 2, 1, 3, -1, 4, 0, 2, 2, 2, -7, 4, 1, 2, 9, 3, -16, 4, 2, 2, 1, 4, -3, 7, 0, 2, 1, 4, -1, 6, 0, 3, 1, 4, -2, 5, 4, 6, 1, 2, 1, 2, -4, 4, 2, 2, 8, 3, -16, 4, 2, 2, 1, 4, -2, 7, 0, 3, 3, 3, -5, 4, 2, 5, 0, 3, 1, 4, 1, 5, -3, 6, 0, 2, 1, 4, -2, 8, 0, 2, 1, 4, -1, 7, 0, 2, 1, 4, -1, 8, 0, 3, 3, 2, -7, 3, 3, 4, 0, 3, 2, 2, 1, 3, -7, 4, 0, 3, 1, 4, 1, 6, -3, 7, 0, 3, 1, 4, 2, 5, -5, 6, 1, 3, 4, 3, -7, 4, 3, 5, 1, 1, 1, 4, 5, 3, 4, 3, -9, 4, 3, 5, 1, 3, 1, 4, -2, 5, 5, 6, 0, 3, 3, 2, -7, 3, 5, 4, 0, 3, 1, 3, -1, 4, 2, 6, 0, 3, 1, 4, 1, 5, -2, 6, 0, 3, 3, 3, -7, 4, 2, 5, 0, 2, 8, 3, -14, 4, 1, 2, 1, 2, -2, 4, 1, 2, 1, 4, 1, 6, 1, 2, 9, 3, -18, 4, 1, 2, 2, 2, -5, 4, 1, 2, 1, 3, -3, 4, 2, 2, 1, 4, 2, 6, 0, 2, 1, 4, 1, 5, 1, 3, 4, 3, -9, 4, 2, 5, 1, 2, 7, 3, -12, 4, 1, 2, 2, 4, -5, 5, 0, 2, 2, 3, -5, 4, 2, 2, 6, 3, -10, 4, 1, 2, 1, 4, 2, 5, 1, 3, 2, 4, -5, 5, 2, 6, 0, 2, 3, 3, -7, 4, 1, 2, 2, 4, -4, 5, 0, 2, 5, 3, -8, 4, 1, 2, 1, 4, 3, 5, 0, 3, 2, 4, -4, 5, 2, 6, 0, 3, 2, 4, -1, 5, -5, 6, 0, 2, 4, 3, -6, 4, 1, 2, 2, 4, -3, 5, 0, 3, 2, 4, -5, 5, 5, 6, 1, 3, 2, 4, -4, 5, 3, 6, 0, 2, 3, 3, -4, 4, 1, 2, 2, 4, -5, 6, 2, 2, 2, 4, -2, 5, 1, 3, 2, 4, -4, 5, 5, 6, 1, 2, 2, 4, -4, 6, 0, 2, 2, 3, -2, 4, 0, 2, 2, 4, -3, 6, 1, 2, 2, 4, -1, 5, 1, 2, 2, 4, -2, 6, 0, 1, 1, 3, 1, 2, 2, 4, -1, 6, 0, 2, 1, 2, -5, 4, 1, 2, 8, 3, -17, 4, 1, 3, 2, 4, 2, 5, -5, 6, 1, 3, 4, 3, -6, 4, 3, 5, 1, 3, 10, 3, -17, 4, 3, 6, 0, 1, 2, 4, 4, 3, 4, 3, -10, 4, 3, 5, 1, 2, 8, 3, -13, 4, 0, 2, 1, 2, -1, 4, 0, 2, 2, 4, 1, 6, 0, 2, 2, 2, -4, 4, 0, 2, 1, 3, -4, 4, 1, 2, 2, 4, 1, 5, 0, 2, 7, 3, -11, 4, 0, 2, 3, 4, -5, 5, 0, 2, 2, 3, -6, 4, 1, 2, 6, 3, -9, 4, 0, 2, 2, 4, 2, 5, 0, 2, 3, 4, -4, 5, 0, 2, 5, 3, -7, 4, 0, 2, 4, 3, -5, 4, 1, 2, 3, 4, -3, 5, 1, 2, 3, 3, -3, 4, 0, 2, 3, 4, -2, 5, 2, 3, 3, 4, -4, 5, 5, 6, 0, 2, 2, 3, -1, 4, 0, 2, 3, 4, -3, 6, 0, 2, 3, 4, -1, 5, 1, 2, 3, 4, -2, 6, 0, 2, 1, 3, 1, 4, 1, 2, 3, 4, -1, 6, 0, 3, 4, 3, -5, 4, 3, 5, 0, 1, 3, 4, 3, 3, 4, 3, -11, 4, 3, 5, 0, 1, 1, 2, 0, 2, 2, 2, -3, 4, 0, 2, 1, 3, -5, 4, 0, 2, 4, 4, -5, 5, 0, 2, 6, 3, -8, 4, 0, 2, 4, 4, -4, 5, 0, 2, 5, 3, -6, 4, 0, 2, 4, 3, -4, 4, 0, 2, 4, 4, -3, 5, 1, 3, 6, 3, -8, 4, 2, 5, 0, 2, 3, 3, -2, 4, 0, 2, 4, 4, -2, 5, 1, 2, 4, 4, -1, 5, 0, 2, 1, 3, 2, 4, 0, 1, 4, 4, 3, 2, 2, 2, -2, 4, 0, 2, 7, 3, -9, 4, 0, 2, 5, 4, -5, 5, 0, 2, 6, 3, -7, 4, 0, 2, 5, 4, -4, 5, 0, 2, 5, 3, -5, 4, 0, 2, 5, 4, -3, 5, 0, 2, 5, 4, -2, 5, 0, 1, 5, 4, 3, 1, 6, 4, 2, 1, 7, 4, 0, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // /* Total terms = 201, small = 199 */ + internal static KeplerGlobalCode.plantbl mar404 = new KeplerGlobalCode.plantbl(9, new int[19] { 0, 5, 12, 24, 9, 7, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 5, args, tabl, tabb, tabr, 1.53033488271d, 3652500.0d, 1.0d); + + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Mer404Data.cs b/ASCOM.Tools/Kepler/Planets/Mer404Data.cs new file mode 100644 index 0000000..7949f2e --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Mer404Data.cs @@ -0,0 +1,633 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Mer404Data + { + // /* + // First date in file = 1228000.50 + // Number of records = 397276.0 + // Days per record = 4.0 + // Julian Years Lon Lat Rad + // -1349.9 to -1000.0: 0.42 0.18 0.16 + // -1000.0 to -500.0: 0.37 0.19 0.13 + // -500.0 to 0.0: 0.35 0.17 0.12 + // 0.0 to 500.0: 0.34 0.15 0.10 + // 500.0 to 1000.0: 0.28 0.14 0.09 + // 1000.0 to 1500.0: 0.34 0.14 0.09 + // 1500.0 to 2000.0: 0.35 0.13 0.09 + // 2000.0 to 2500.0: 0.38 0.12 0.12 + // 2500.0 to 3000.0: 0.42 0.13 0.16 + // 3000.0 to 3000.8: 0.252 0.087 0.115 + // */ + internal static double[] tabl = new double[] { 35.85255d, -163.26379d, 53810162857.560257d, 908082.18475d, 0.05214d, -0.07712d, 1.07258d, 0.04008d, 0.49259d, 0.0023d, 0.02324d, 0.05869d, 0.24516d, 0.22898d, -0.06037d, 0.13023d, 0.00331d, -0.03576d, 0.06464d, 0.00089d, 0.03103d, 0.05078d, -0.01133d, 0.0152d, 0.14654d, 0.07538d, 0.25112d, -0.24473d, -0.17928d, -0.53366d, -0.06367d, 0.20458d, -0.42985d, 0.14848d, -0.35317d, -0.61364d, 0.00325d, -0.08617d, -0.2318d, 0.08576d, 0.22995d, 0.43569d, 1.92114d, 2.89319d, -5.55637d, 4.70329d, -4.91411d, -5.45521d, 0.02607d, 0.04468d, -0.05439d, 0.13476d, -0.07329d, -0.00985d, -0.00278d, 0.05377d, 0.07474d, -0.09658d, 0.29818d, 0.20422d, -0.29074d, 0.44962d, -0.15411d, -0.04287d, 0.29907d, -1.02948d, 3.62183d, 0.84869d, -0.08157d, 0.02754d, -0.0361d, -0.12909d, 0.09195d, -0.04424d, -0.08845d, 0.09347d, -0.2714d, 0.08185d, 0.24783d, 0.19543d, -0.25154d, 0.41371d, -0.00046d, 0.01524d, 0.04127d, 0.06663d, 0.43023d, 0.1179d, 0.04427d, 0.05329d, 0.00411d, -0.71074d, -0.07111d, -0.09824d, 0.01264d, -0.02075d, -0.00068d, -0.01678d, 0.01186d, 0.00181d, 0.00302d, -0.21963d, -0.06412d, -0.10155d, -0.36856d, 0.2024d, 0.32282d, 0.65133d, -0.07178d, -0.01876d, 0.13399d, -0.39522d, 1.28413d, 0.3379d, 0.0504d, -0.01679d, -0.00794d, 0.01117d, 0.0263d, 0.00575d, -0.07113d, -0.11414d, 0.16422d, -0.2306d, 0.35198d, 0.05409d, 1.11486d, -0.35833d, 0.87313d, 1.66304d, -1.28434d, 0.72067d, 0.014d, 0.00971d, 0.21044d, -0.87385d, 3.2082d, 0.67957d, -0.01716d, 0.00111d, -0.13776d, -0.0265d, -0.06778d, 0.00908d, 0.00616d, -0.0452d, -0.31625d, -0.61913d, 0.36184d, 0.09373d, 0.00984d, -0.03292d, 0.01944d, 0.0053d, 0.00243d, -0.00123d, 0.01589d, 0.02223d, -0.02992d, -0.01086d, 4356.04809d, -5859.86328d, 2918.27323d, -4796.67315d, 510.24783d, -1220.02233d, 127.48927d, 250.10654d, 3250.43013d, -904.27614d, -5667.40042d, -22634.00922d, -82471.79425d, 18615.92342d, 0.01941d, 0.00372d, 0.0183d, -0.00652d, -0.02548d, -0.01157d, 0.00635d, 0.02343d, -0.0098d, 0.00961d, 0.12137d, 0.10068d, 0.16676d, -0.07257d, -0.07267d, -0.13761d, 0.25305d, -0.28112d, -0.07974d, 0.07866d, -0.41726d, 0.49991d, -1.55187d, -1.1415d, 1.54754d, -2.35141d, -0.00862d, 0.00808d, 0.00218d, -0.03726d, 0.06914d, -0.08986d, -0.00501d, 2.09577d, -0.01409d, -0.01842d, 0.04138d, 0.05961d, -0.12276d, -0.04929d, -0.03963d, -0.0608d, -0.27697d, -0.09329d, -0.01011d, 0.00295d, -0.01374d, 0.01328d, -0.00171d, 0.25815d, 0.01446d, 0.00782d, 0.17909d, -0.04683d, 0.03765d, -0.0499d, 0.00036d, 0.00528d, 0.05508d, -0.01369d, -0.11751d, -0.10624d, -0.14448d, 0.10522d, -0.00884d, 0.43006d, 0.01162d, 0.01659d, -0.00076d, 0.10143d, 0.55779d, 0.0551d, 0.1235d, -0.34025d, 0.0132d, 0.92985d, -0.00026d, -0.03426d, 0.01305d, 0.00041d, 0.13187d, -0.11903d, 0.00058d, 0.09877d, -33.1023d, -41.96782d, -268.28908d, 174.29259d, 731.20089d, 1508.07639d, 5223.99114d, -3008.08849d, -3909.34957d, -9646.69156d, 0.02988d, 0.03182d, 0.07149d, 0.04513d, -0.02356d, -0.01641d, -0.03188d, -0.03711d, 0.15084d, -0.22436d, 0.61987d, 0.25706d, 0.02425d, 0.012d, -0.05543d, -0.14435d, -0.53398d, 0.10997d, 0.00465d, -0.01893d, 0.0126d, -0.01314d, 0.0065d, -0.05499d, -0.06804d, 0.01608d, 0.02134d, 0.0416d, 0.00636d, 0.01293d, -0.0347d, -0.02697d, -0.11323d, 0.02409d, -0.02618d, 0.00827d, 0.01879d, 0.16838d, 0.08978d, 0.01934d, -0.23564d, 0.05565d, 0.03686d, 0.02644d, -0.02471d, 0.00558d, -140.22669d, -120.40692d, -501.88143d, 434.05868d, 1044.54998d, 1162.72084d, 1527.78437d, -882.37371d, -0.00768d, 0.02213d, -0.0409d, 0.16718d, -0.05923d, -0.12595d, 0.01154d, -0.00025d, -0.00776d, -0.01653d, -0.01213d, -0.02773d, 0.00344d, 0.0218d, -0.02558d, -0.05682d, -0.0049d, 0.0105d, 38.75496d, -78.17502d, -189.907d, -136.33371d, -249.94062d, 319.76423d, 205.73478d, 272.64549d, -0.01132d, -0.01071d, -0.04607d, -0.0039d, 0.02903d, -0.0207d, 0.01326d, -0.00901d, 35.38435d, 7.45358d, 31.08987d, -70.52685d, -92.13879d, -51.58876d, -51.80016d, 48.98102d, -0.00124d, -0.01159d, 0.47335d, 13.71886d, 23.71637d, 5.55804d, 10.0685d, -25.65292d, -11.853d, -10.20802d, -4.72861d, 1.27151d, -0.47322d, 7.46754d, 6.99528d, 1.79089d, 2.05336d, -2.90866d, -1.97528d, 0.72236d, -0.25084d, 1.90269d, 0.72127d, 0.41354d, -0.30286d, -0.53125d, -0.50883d, -0.012d, -0.08301d, 0.18083d, -0.04286d, -0.10963d, -0.04544d, -0.01645d, -0.00013d, -0.00986d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabb = new double[] { 68.33369d, 422.77623d, -2057.26405d, -2522.29068d, -0.0003d, -0.00009d, 0.024d, -0.06471d, 0.02074d, -0.00904d, 0.00044d, 0.00261d, -0.00174d, -0.00088d, -0.00027d, 0.00003d, 0.00005d, -0.00004d, -0.00036d, 0.002d, 0.01432d, 0.01199d, 0.00006d, -0.00004d, 0.00236d, 0.00803d, 0.01235d, 0.00406d, -0.03253d, 0.00179d, -0.00243d, 0.00132d, -0.00352d, 0.00011d, -0.00146d, -0.01154d, 0.00824d, -0.01195d, -0.01829d, -0.00465d, 0.1254d, 0.09997d, 0.004d, 0.00288d, -0.02848d, 0.01094d, -0.02273d, -0.07051d, 0.01305d, 0.01078d, -0.00119d, 0.00136d, -0.00107d, -0.00066d, 0.00097d, -0.00315d, 0.0012d, 0.0043d, -0.0071d, -0.00157d, 0.06052d, -0.04777d, 0.00192d, -0.00229d, -0.02077d, 0.00647d, 0.06907d, 0.07644d, -0.00717d, 0.00451d, 0.00052d, -0.00262d, 0.00345d, 0.00039d, -0.00674d, 0.00346d, -0.0288d, 0.00807d, 0.00054d, 0.00206d, -0.01745d, 0.00517d, -0.00044d, 0.00049d, 0.01749d, 0.0123d, 0.01703d, 0.01563d, 0.00934d, 0.02372d, 0.0161d, -0.01136d, 0.00186d, -0.00503d, 0.00082d, -0.00673d, 0.0017d, -0.00539d, 0.00042d, 0.00037d, 0.00415d, -0.0043d, 0.00258d, -0.00914d, -0.01761d, -0.00251d, 0.15909d, 0.13276d, 0.02436d, -0.00791d, 0.00491d, 0.0389d, -0.02982d, 0.05645d, -0.00003d, 0.00427d, -0.00363d, 0.00221d, 0.00077d, 0.0013d, 0.00131d, -0.00071d, 0.00796d, 0.00453d, 0.01186d, 0.01631d, 0.12949d, -0.02546d, 0.03613d, 0.32854d, -0.43001d, 0.01417d, 0.00034d, 0.00095d, -0.03268d, 0.04034d, 0.11407d, 0.15049d, -0.00079d, -0.00052d, -0.04009d, 0.00988d, -0.00259d, -0.00085d, 0.00221d, -0.00133d, 0.00003d, -0.01733d, 0.01055d, 0.01976d, 0.00222d, 0.00085d, 0.00089d, 0.00087d, 0.00014d, 0.00001d, 0.00145d, 0.00802d, 0.00122d, 0.00068d, 947.79367d, -1654.3969d, 542.00864d, -1281.09901d, 90.02068d, -318.36115d, -87.6709d, 92.9196d, 376.98232d, -419.10705d, 5094.60412d, 2476.97098d, -18160.57888d, 16010.48165d, 0.00621d, -0.00128d, 0.00186d, -0.00153d, -0.0079d, 0.00011d, -0.00032d, 0.00165d, -0.00277d, 0.00539d, 0.00552d, 0.00682d, 0.01086d, -0.00978d, -0.02292d, -0.013d, 0.0294d, -0.04427d, -0.02051d, 0.0486d, -0.0502d, 0.29089d, -0.50763d, -0.049d, 0.11177d, -0.41357d, -0.00222d, 0.00504d, -0.00006d, -0.00459d, -0.00175d, -0.02691d, 0.05921d, 0.18938d, -0.00181d, -0.00154d, 0.00322d, 0.00586d, -0.01098d, -0.0052d, -0.00861d, -0.01342d, -0.02694d, -0.00706d, -0.00103d, 0.00012d, -0.00284d, 0.00797d, 0.00743d, 0.02523d, 0.00872d, 0.00096d, 0.03155d, -0.01644d, 0.00414d, -0.00583d, 0.00029d, 0.00066d, 0.00935d, -0.00619d, -0.02498d, -0.016d, -0.03545d, 0.07623d, 0.01649d, 0.06498d, 0.00148d, 0.00209d, 0.00621d, 0.02014d, 0.17407d, -0.05022d, -0.03485d, -0.17012d, 0.06164d, 0.20059d, -0.00804d, -0.01475d, 0.00296d, -0.00068d, 0.0188d, -0.03797d, 0.00608d, 0.0227d, 5.89651d, -6.62562d, -37.41057d, -10.51542d, -47.22373d, 95.76862d, 494.45951d, -5.37252d, -3991.04809d, -2886.9775d, 0.01232d, 0.00487d, 0.03163d, 0.00561d, -0.01847d, -0.00207d, -0.10138d, 0.0143d, -0.04269d, -0.22338d, 0.24955d, -0.02066d, 0.01119d, -0.00186d, 0.03416d, 0.01805d, -0.12498d, 0.10385d, -0.0021d, -0.01011d, 0.00346d, -0.00682d, -0.00683d, -0.02227d, -0.01649d, 0.01259d, 0.01392d, 0.01174d, 0.0044d, 0.00351d, -0.02871d, -0.00375d, -0.0317d, 0.02246d, -0.00833d, 0.00596d, 0.04081d, 0.06666d, 0.054d, -0.02387d, -0.07852d, 0.05781d, 0.01881d, 0.00324d, -0.00868d, 0.00606d, -6.52157d, -19.74446d, -72.46009d, 43.12366d, 321.78233d, 215.45201d, 452.61804d, -1025.05619d, 0.00119d, 0.01169d, 0.02239d, 0.09003d, -0.05329d, -0.03974d, 0.00688d, -0.00421d, -0.00676d, -0.00515d, -0.01171d, -0.00952d, 0.01337d, 0.0127d, -0.02791d, -0.02184d, 0.00058d, 0.00679d, 8.42102d, -11.87757d, -49.07247d, -25.34584d, -43.54829d, 161.26509d, 261.70993d, 56.25777d, 0.00568d, 0.00871d, -0.02656d, 0.01582d, 0.00875d, -0.02114d, 0.00464d, -0.01075d, 9.08966d, 1.3781d, 3.44548d, -27.44651d, -59.62749d, -0.73611d, -0.77613d, 65.72607d, -0.00664d, -0.00723d, 1.04214d, 4.7892d, 11.67397d, -1.84524d, -4.16685d, -19.14211d, -16.14483d, 3.02496d, -1.9814d, 1.16261d, 1.81526d, 4.21224d, 5.5902d, -2.55741d, -1.54151d, -3.85817d, -1.08723d, 1.23372d, 1.12378d, 1.51554d, 0.88937d, -0.57631d, -0.50549d, -0.25617d, -0.37618d, 0.42163d, 0.18902d, 0.19575d, -0.15402d, -0.04062d, -0.04017d, 0.05717d, -0.01665d, -0.00199d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabr = new double[] { -8.3049d, -11.68232d, 86.5488d, 4361.05018d, 0.00002d, -0.00001d, -0.01102d, 0.0041d, 0.00007d, -0.00276d, 0.00117d, 0.00082d, 0.00049d, 0.00007d, 0.00003d, -0.00001d, 0.00012d, 0.00005d, -0.00186d, -0.00534d, -0.03301d, 0.01808d, 0.00008d, 0.00005d, -0.00394d, 0.00202d, 0.02362d, -0.00359d, 0.00638d, -0.06767d, 0.00422d, -0.00493d, 0.0066d, 0.00513d, -0.00417d, 0.00708d, 0.05849d, -0.00213d, -0.07647d, -0.16162d, -0.30551d, 0.13856d, -0.02789d, 0.01811d, -0.04155d, -0.06229d, 0.05729d, -0.03694d, -0.03087d, 0.0161d, -0.00297d, -0.00167d, 0.00041d, -0.00157d, -0.00115d, 0.00058d, 0.00796d, 0.00436d, -0.01393d, 0.02921d, -0.05902d, -0.02363d, 0.00459d, -0.01512d, 0.10038d, 0.02964d, -0.08369d, 0.3457d, -0.00749d, -0.02653d, 0.01361d, -0.00326d, 0.00406d, 0.00952d, -0.00594d, -0.00829d, -0.02763d, -0.09933d, -0.04143d, 0.05152d, -0.08436d, -0.05294d, -0.00329d, -0.00016d, -0.0434d, 0.02566d, -0.03027d, 0.10904d, 0.03665d, -0.0307d, 0.23525d, 0.00182d, 0.03092d, -0.02212d, 0.01255d, 0.00777d, -0.01025d, 0.00042d, -0.00065d, 0.0044d, 0.08688d, 0.00136d, 0.057d, -0.03616d, -0.11272d, -0.20838d, -0.37048d, 0.18314d, 0.00717d, -0.02911d, 0.15848d, 0.05266d, -0.13451d, 0.51639d, 0.00688d, 0.02029d, 0.00596d, 0.00423d, -0.00253d, 0.01196d, 0.05264d, -0.03301d, 0.10669d, 0.07558d, -0.02461d, 0.16282d, -0.18481d, -0.57118d, 0.85303d, -0.44876d, 0.3709d, 0.65915d, -0.00458d, 0.0066d, 0.41186d, 0.09829d, -0.31999d, 1.51149d, -0.00052d, -0.00809d, 0.01384d, -0.07114d, -0.00435d, -0.03237d, 0.02162d, 0.00294d, 0.29742d, -0.1543d, -0.04508d, 0.17436d, 0.01577d, 0.00485d, -0.00258d, 0.00946d, 0.00061d, 0.00119d, 0.01095d, -0.00788d, 0.0053d, -0.01478d, 2885.0638d, 2152.76256d, 2361.91098d, 1442.28586d, 602.45147d, 251.18991d, -121.68155d, 71.20167d, 404.94753d, 1607.3758d, 11211.0409d, -2905.3734d, -9066.27933d, -40747.62807d, -0.00189d, 0.00957d, 0.00332d, 0.00907d, 0.00574d, -0.01255d, -0.01134d, 0.00291d, -0.00666d, -0.00615d, -0.04947d, 0.06182d, 0.03965d, 0.08091d, 0.06846d, -0.03612d, 0.13966d, 0.12543d, -0.05494d, -0.05043d, -0.24454d, -0.20507d, 0.56201d, -0.75997d, 1.15728d, 0.76203d, -0.00559d, -0.00536d, 0.01872d, 0.00104d, 0.03044d, 0.02504d, -1.07241d, -0.00288d, 0.0095d, -0.0076d, -0.03211d, 0.02261d, 0.02678d, -0.06868d, 0.03008d, -0.02062d, 0.04997d, -0.15164d, -0.00176d, -0.0058d, -0.0073d, -0.00676d, -0.13906d, -0.00089d, -0.00362d, 0.00817d, 0.02021d, 0.07719d, 0.02788d, 0.02061d, -0.00274d, 0.00016d, 0.00566d, 0.02293d, 0.04691d, -0.05005d, -0.05095d, -0.06225d, -0.1977d, -0.00456d, -0.00848d, 0.00595d, -0.04506d, -0.00172d, -0.0196d, 0.22971d, 0.14459d, 0.04362d, -0.40199d, 0.00386d, 0.01442d, -0.00088d, -0.0002d, 0.00544d, 0.04768d, 0.05222d, -0.04069d, -0.00003d, 15.71084d, -12.28846d, -66.23443d, -109.83758d, -586.31996d, 311.09606d, 1070.7504d, 2094.3408d, 3839.04103d, -1797.34193d, -0.01216d, 0.01244d, -0.01666d, 0.02627d, 0.00687d, -0.01291d, 0.00939d, -0.01905d, 0.09401d, 0.05027d, -0.09398d, 0.23942d, -0.00379d, 0.00834d, 0.05632d, -0.01907d, -0.04654d, -0.21243d, 0.00255d, 0.00179d, 0.0054d, 0.00497d, 0.01427d, 0.00243d, -0.00697d, -0.02792d, -0.01524d, 0.0081d, -0.00461d, 0.00238d, 0.00899d, -0.01515d, -0.01011d, -0.0439d, -0.00447d, -0.00992d, -0.0611d, 0.00975d, -0.00261d, 0.03415d, -0.02336d, -0.08776d, -0.00883d, 0.01346d, -0.00229d, -0.00895d, 42.18049d, -48.21316d, -148.61588d, -171.57236d, -414.27195d, 343.09118d, 394.59044d, 511.79914d, -0.00911d, -0.0022d, -0.06315d, -0.00988d, 0.04357d, -0.02389d, 0.00004d, 0.00232d, 0.00581d, -0.00317d, 0.00948d, -0.00497d, -0.00734d, 0.003d, 0.01883d, -0.01055d, -0.00365d, -0.00126d, 24.18074d, 12.28004d, 43.18187d, -58.69806d, -102.40566d, -79.48349d, -74.8106d, 89.71332d, 0.00241d, -0.00135d, -0.00136d, -0.01617d, 0.00818d, 0.00873d, 0.00368d, 0.00383d, -2.25893d, 10.18542d, 20.73104d, 9.07389d, 13.73458d, -29.10491d, -20.62071d, -10.63404d, 0.00382d, -0.00143d, -3.77385d, 0.12725d, -1.30842d, 6.75795d, 7.94463d, 1.79092d, 1.24458d, -4.73211d, -0.36978d, -1.2571d, -2.06373d, 0.06194d, -0.00509d, 2.08851d, 1.07491d, 0.04112d, -0.28582d, -0.51413d, -0.53312d, 0.11936d, 0.04447d, 0.23945d, 0.1245d, -0.11821d, -0.061d, -0.12924d, -0.05193d, 0.02219d, 0.01977d, -0.02933d, -0.00771d, -0.01077d, 0.00109d, -0.00273d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 3, 3, 1, 1, -10, 3, 11, 4, 0, 2, 2, 5, -5, 6, 2, 3, 5, 1, -14, 2, 2, 3, 1, 3, 1, 1, -5, 2, 4, 3, 0, 1, 1, 6, 0, 1, 2, 6, 0, 3, 2, 1, -7, 2, 3, 3, 0, 1, 1, 5, 2, 2, 1, 1, -4, 3, 2, 1, 2, 5, 2, 2, 2, 1, -5, 2, 2, 1, 3, 5, 0, 2, 4, 1, -10, 2, 1, 2, 3, 1, -8, 2, 0, 2, 1, 1, -3, 2, 2, 2, 1, 1, -2, 2, 2, 1, 1, 3, 0, 2, 3, 1, -7, 2, 1, 2, 1, 1, -3, 3, 0, 1, 1, 2, 0, 2, 2, 1, -4, 2, 1, 2, 4, 1, -9, 2, 0, 1, 2, 3, 0, 2, 1, 1, -2, 3, 0, 2, 1, 1, -4, 2, 0, 2, 1, 1, -1, 2, 0, 2, 3, 1, -6, 2, 0, 1, 3, 3, 0, 2, 2, 1, -7, 2, 0, 2, 1, 1, -2, 4, 0, 2, 1, 1, -1, 3, 0, 1, 2, 2, 2, 2, 2, 1, -3, 2, 2, 2, 4, 1, -8, 2, 0, 2, 3, 1, -10, 2, 0, 2, 1, 1, -4, 5, 0, 2, 1, 1, -3, 5, 2, 2, 1, 1, -5, 2, 2, 2, 1, 1, -5, 6, 0, 2, 1, 1, -2, 5, 1, 3, 1, 1, -4, 5, 5, 6, 0, 1, 4, 3, 0, 2, 1, 1, -3, 6, 1, 2, 1, 1, -1, 5, 0, 2, 1, 1, -2, 6, 0, 2, 1, 1, -1, 6, 0, 2, 1, 1, -2, 7, 0, 2, 1, 1, -1, 7, 0, 3, 4, 1, -14, 2, 2, 3, 0, 3, 1, 1, 2, 5, -5, 6, 0, 1, 1, 1, 6, 3, 2, 1, -10, 3, 11, 4, 0, 3, 1, 1, -2, 5, 5, 6, 0, 3, 6, 1, -14, 2, 2, 3, 0, 2, 1, 1, 1, 6, 0, 2, 1, 1, 2, 6, 0, 2, 1, 1, 1, 5, 1, 2, 2, 1, -4, 3, 1, 2, 1, 1, 2, 5, 0, 2, 3, 1, -5, 2, 2, 2, 1, 1, 3, 5, 0, 2, 5, 1, -10, 2, 0, 1, 3, 2, 0, 2, 2, 1, -2, 2, 0, 2, 1, 1, 1, 3, 0, 2, 4, 1, -7, 2, 0, 2, 2, 1, -3, 3, 0, 2, 1, 1, 1, 2, 0, 2, 3, 1, -4, 2, 0, 2, 5, 1, -9, 2, 0, 2, 1, 1, 2, 3, 0, 2, 2, 1, -2, 3, 0, 1, 4, 2, 0, 2, 2, 1, -1, 2, 0, 2, 4, 1, -6, 2, 0, 2, 2, 1, -2, 4, 0, 2, 2, 1, -1, 3, 0, 2, 1, 1, 2, 2, 1, 2, 3, 1, -3, 2, 0, 2, 5, 1, -8, 2, 0, 2, 2, 1, -3, 5, 0, 1, 5, 2, 1, 2, 2, 1, -2, 5, 0, 2, 1, 1, 4, 3, 0, 2, 2, 1, -3, 6, 0, 2, 2, 1, -1, 5, 0, 2, 2, 1, -2, 6, 0, 1, 2, 1, 4, 2, 2, 1, 1, 5, 0, 2, 3, 1, -4, 3, 0, 2, 2, 1, 2, 5, 0, 2, 4, 1, -5, 2, 2, 2, 1, 1, 3, 2, 0, 2, 3, 1, -2, 2, 1, 2, 3, 1, -3, 3, 0, 2, 2, 1, 1, 2, 0, 2, 4, 1, -4, 2, 0, 2, 3, 1, -2, 3, 0, 2, 3, 1, -1, 2, 0, 2, 3, 1, -1, 3, 0, 2, 2, 1, 2, 2, 0, 2, 4, 1, -3, 2, 0, 2, 3, 1, -3, 5, 0, 2, 1, 1, 5, 2, 1, 2, 3, 1, -2, 5, 0, 2, 3, 1, -1, 5, 0, 2, 3, 1, -2, 6, 0, 1, 3, 1, 3, 2, 4, 1, -4, 3, 0, 2, 5, 1, -5, 2, 0, 2, 4, 1, -2, 2, 0, 2, 5, 1, -4, 2, 0, 2, 4, 1, -2, 3, 0, 2, 5, 1, -3, 2, 0, 2, 2, 1, 5, 2, 0, 2, 4, 1, -2, 5, 0, 2, 4, 1, -1, 5, 0, 1, 4, 1, 3, 2, 6, 1, -5, 2, 1, 2, 5, 1, -2, 2, 0, 2, 5, 1, -2, 5, 0, 1, 5, 1, 3, 2, 7, 1, -5, 2, 0, 1, 6, 1, 3, 1, 7, 1, 3, 1, 8, 1, 2, 1, 9, 1, 2, 1, 10, 1, 1, 1, 11, 1, 0, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static KeplerGlobalCode.plantbl mer404 = new KeplerGlobalCode.plantbl(9, new int[19] { 11, 14, 10, 11, 4, 5, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 6, args, tabl, tabb, tabr, 0.3870983098d, 3652500.0d, 1.0d); + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Mlat404Data.cs b/ASCOM.Tools/Kepler/Planets/Mlat404Data.cs new file mode 100644 index 0000000..87b09db --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Mlat404Data.cs @@ -0,0 +1,752 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Mlat404Data + { + // /* geocentric moon + // polar coordinates re mean ecliptic and equinox of date + // S. L. Moshier + // December, 1996 + // See mlr404.c for test summary. */ + + internal static double[] tabr = new double[] { -1 }; + internal static double[] tabb = new double[] { -1 }; + internal static double[] tabl = new double[] { -3, -4, 4d, -1856, 0d, 8043d, -9, -1082, -1, -310, -1, -522, -330, -1449, -853, 4656d, -66, 7d, -1, 9996928d, -66, 6d, 23d, 183d, 0d, 173d, 0d, -56, 0d, 50d, 0d, -785, 1d, 51d, 0d, -60, 1d, 11843d, 0d, -50754, 0d, 1834d, 1d, -7910, 0d, -48060, 1d, 56d, 0d, 13141d, -1, -56318, 0d, 2541d, -1, -649, -133, 778d, -46, 8d, 1d, 1665737d, -47, 7d, 0d, 65d, 0d, 45d, 0d, -138, 0d, -1005, 0d, -2911, 0d, -47, 0d, 96d, 0d, -394, 2d, 76d, 2d, -17302, 0d, 74337d, 0d, -101, 0d, 58d, 0d, -171, 0d, -77, 0d, -1283, 0d, 2686d, 0d, -55, 0d, 99d, 0d, 55d, 0d, 397d, 0d, 540d, 0d, 626d, -1, -5188, 0d, 10857d, 0d, -216, -2, -123, 0d, 6337d, 2d, 224d, -152, -23472, -29, -74336, 0d, 295775d, -20, 149d, -2, 84d, 9d, 304d, 0d, -3051, -70, -6, -57, 34d, 0d, -638, 0d, -201, -73, 9d, 0d, -100, -101, -8, 0d, -57, 0d, -207, -3, 80d, -45, 45d, -5, 102d, -59, -23, 52d, 201d, -48, 233d, -220, 71d, 4d, 2810d, 0d, 6236541d, -61, 218d, -216, 67d, 51d, 201d, -59, -23, -144, -837, -457, 3029d, -45, 42d, -15, 73d, -6, -169, 0d, 135d, -64, -7, 0d, -16245, 0d, -81, -74, -10, 0d, 702d, 0d, -3013, 0d, -5889, 1d, 141d, 58d, 9598d, 12d, 30443d, 1d, -120946, -1, -84, -2, 11246d, -1, -48391, 0d, 1393d, 0d, 200d, -136, -17, 0d, 558d, -64, -8, 0d, -71, 0d, 317577d, -28, 183d, 1d, 219d, 0d, 421d, 0d, -133, 501d, -139, 3d, 354d, -101, -13, 74d, 7d, 144d, -84, 59d, -2, 1d, 64d, -2931, 12559d, -4641, 2638d, -303, -2058, -13, -100, -123, -79, -19214, 6084d, 1494d, 26993d, 15213d, -82219, 42d, 52d, 48d, -101, -53, -4, 4d, 47d, 58d, -131, 46d, 14d, -21, -6, -1311, -8791, 10198d, -4185, 2815d, 5640d, 167d, 422d, -229, 83d, 3140d, 39d, 1221d, 120d, 96d, -30, -1, 184612405d, 187d, 416d, -226, 81d, -1985, -10083, 9983d, -4464, 2807d, 5643d, -21, -9, 113d, -367, 120d, 580d, -667, 27d, 8d, 66d, -56, -6, 337d, 95d, -87, 3303d, -1, 65d, 68d, -374, 0d, -574, 15d, -94, 0d, -53, 0d, -1303, 0d, -236, 283d, 36d, -1, -54, 269d, -35, 0d, -83, 0d, -52, 0d, 730d, 0d, -3129, 0d, 813d, 0d, -4299, 1d, 59d, -6, 5130d, 1d, 16239d, -1, -64603, 0d, -80, 91d, 12d, 0d, -561, 133d, -17, 0d, 250d, -12, 71d, 0d, 155664d, 82d, -11, 0d, 106d, 0d, -604, 0d, 21862d, 55d, -7, 0d, -1514, 0d, 6501d, 0d, 906d, 0d, -68, 0d, 241d, 0d, 366d, 0d, 70d, 0d, -1382, 0d, 5957d, 0d, 113d, 0d, -51, 0d, -55, 0d, 731d, 0d, -264, 0d, 65788d, 1d, -1504, 0d, 3147d, 0d, 217d, 0d, -4105, 0d, 17658d, 1d, 69d, 0d, -3518, 0d, -1767, -43, -7044, -10, -22304, 0d, 88685d, 3d, 91d, 0d, -485, 0d, -57, -1, 333548d, -24, 172d, 11d, 544d, 1d, -1132, 0d, 353d, 0d, -188, 0d, 53d, 0d, 77d, 158d, -887, 35d, 131d, -54, 13d, 0d, 1994821d, -53, 14d, 36d, 125d, 2d, 56d, 0d, -243, 0d, -364, -2, 1916d, 0d, -8227, 0d, 15700d, -1, -67308, 1d, 66d, 0d, -53686, 1d, 3058d, 1d, -13177, 0d, -72, 0d, -72, 0d, 61d, 0d, 15812d, 0d, 165d, 8d, -96, 318d, 1341d, 803d, -4252, 24d, 193d, 1137d, -226, 310d, 622d, -56, 30d, -3, 10101666d, -56, 30d, 1096d, -225, 300d, 600d, -31, 409d, -1, -507, 0d, -287, 0d, -1869, 0d, 8026d, 1d, 544d, -1, -1133, 0d, 27984d, 0d, -62, 0d, -249, 0d, 187d, 0d, -1096, 1d, 53d, 2d, 12388d, 0d, -53107, 0d, -322, 0d, -94, 0d, 15157d, 0d, -582, 0d, 3291d, 0d, 565d, 0d, 106d, 0d, 112d, 0d, 306d, 0d, 809d, 0d, 130d, 0d, -961, 0d, 4149d, 0d, 174d, 0d, -105, 0d, 2196d, 0d, 59d, 0d, 36737d, -1, -1832, 0d, 3835d, 0d, -139, 0d, 24138d, 0d, 1325d, 1d, 64d, 0d, -361, 0d, -1162, -44, -6320, -10, -20003, 0d, 79588d, 2d, 80d, 0d, -2059, 0d, -304, 0d, 21460d, 0d, -166, 0d, -87, 89d, -493, 32d, 114d, 34d, 510d, 1d, 1172616d, 31d, 113d, -1, 57d, 0d, 214d, 0d, -656, 0d, -646, 0d, 1850d, 0d, -7931, 0d, -6674, 0d, 2944d, 0d, -12641, 0d, 916d, 45d, -255, 16d, 60d, -1, 619116d, 16d, 57d, 0d, -58, 0d, 1045d, 0d, -156, -15, 88d, 0d, -62964, 0d, -126, 0d, 1490d, 0d, -6387, 0d, 119d, 0d, 1338d, 0d, -56, 0d, 204d, 0d, 153d, 0d, 940d, 0d, 251d, 0d, 312d, 0d, 584d, 0d, -786, 0d, 3388d, 0d, -52, 0d, 4733d, 0d, 618d, 0d, 29982d, 0d, 101d, 0d, -174, 0d, -2637, 0d, 11345d, 0d, -284, 0d, -524, 0d, -121, 0d, 1464d, 11d, -60, -1, 151205d, 0d, 139d, 0d, -2448, 0d, -51, 0d, -768, 0d, -638, 0d, 552d, 0d, -2370, 0d, 70d, 0d, 64d, 0d, 57d, 0d, 39840d, 0d, 104d, 0d, -10194, 0d, -635, 0d, 69d, 0d, 113d, 0d, 67d, 0d, 96d, 0d, 367d, 0d, 134d, 0d, 596d, 0d, 63d, 0d, 1622d, 0d, 483d, 0d, 72d, 0d, 11917d, 0d, -63, 0d, 1273d, 0d, -66, 0d, -262, 0d, -97, 0d, 103d, 0d, 15196d, 0d, -1445, 0d, -66, 0d, -55, 0d, -323, 0d, 2632d, 0d, -1179, 0d, 59d, 0d, -56, 0d, 78d, 0d, 65d, 0d, 422d, 0d, 309d, 0d, 2125d, 0d, -66, 0d, 124d, 0d, -57, 0d, 1379d, 0d, -304, 0d, 177d, 0d, -118, 0d, 146d, 0d, 283d, 0d, 119d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 1, 3, 1, 10, 1, 12, -1, 11, 1, 4, 2, 10, 2, 12, -1, 13, -1, 11, 0, 5, 2, 10, -1, 13, -1, 11, 3, 2, -3, 3, 0, 5, 2, 10, -1, 13, -1, 11, 2, 3, -2, 5, 0, 2, -1, 13, 1, 14, 1, 5, -1, 13, 1, 11, 4, 3, -8, 4, 3, 5, 0, 2, 1, 13, -1, 11, 0, 5, 1, 13, -1, 11, 4, 3, -8, 4, 3, 5, 0, 5, 2, 10, -1, 13, -1, 11, 2, 3, -3, 5, 0, 4, 1, 10, 1, 12, -2, 13, 1, 11, 0, 4, 1, 13, -1, 11, 1, 2, -1, 3, 0, 5, 2, 10, -1, 13, -1, 11, 2, 2, -2, 3, 0, 3, 1, 10, -2, 13, 1, 11, 0, 4, 1, 13, -1, 11, 1, 3, -1, 5, 0, 4, -1, 13, 1, 11, 1, 2, -1, 3, 0, 3, 1, 12, 1, 13, -1, 11, 1, 4, 2, 10, 1, 12, -1, 13, -1, 11, 1, 2, 1, 10, -1, 11, 0, 4, -1, 13, 1, 11, 1, 3, -1, 5, 0, 3, 1, 12, -1, 13, 1, 11, 1, 3, 2, 10, -3, 13, 1, 11, 0, 3, 2, 12, 1, 13, -1, 11, 0, 3, -2, 10, 1, 13, 1, 14, 0, 6, -2, 10, 1, 13, 1, 11, 4, 3, -8, 4, 3, 5, 0, 3, 2, 10, -1, 13, -1, 11, 0, 6, 2, 10, -1, 13, -1, 11, 4, 3, -8, 4, 3, 5, 0, 4, -1, 13, 1, 11, 2, 3, -2, 5, 0, 4, -1, 13, 1, 11, 3, 2, -3, 3, 0, 3, 1, 10, -1, 12, -1, 11, 0, 3, 2, 12, -1, 13, 1, 11, 0, 3, 2, 10, 1, 13, -3, 11, 0, 5, -2, 10, 1, 13, 1, 11, 1, 2, -1, 3, 0, 4, 2, 10, -1, 12, -3, 13, 1, 11, 0, 3, 3, 10, -2, 13, -1, 11, 0, 5, -2, 10, 1, 13, 1, 11, 1, 3, -1, 5, 0, 4, 2, 10, -1, 12, -1, 13, -1, 11, 1, 2, 3, 10, -3, 11, 0, 5, -2, 10, 1, 13, 1, 11, 2, 2, -2, 3, 0, 4, 2, 10, -1, 12, 1, 13, -3, 11, 0, 3, 4, 10, -3, 13, -1, 11, 0, 4, 2, 10, -2, 12, -1, 13, -1, 11, 1, 3, 4, 10, -1, 13, -3, 11, 0, 4, 2, 10, -3, 12, -1, 13, -1, 11, 0, 3, 4, 10, -1, 12, -3, 11, 0, 3, 2, 10, -3, 12, -1, 11, 0, 4, 4, 10, -1, 12, -2, 13, -1, 11, 0, 2, 4, 10, -3, 11, 0, 3, 2, 10, -2, 12, -1, 11, 1, 4, 3, 10, -1, 12, -1, 13, -1, 11, 0, 4, -2, 10, 1, 11, 2, 3, -2, 5, 0, 3, 4, 10, -2, 13, -1, 11, 0, 4, -2, 10, 1, 11, 2, 2, -2, 3, 0, 3, 2, 10, -1, 12, -1, 11, 2, 3, -2, 10, 1, 12, 1, 14, 0, 4, -2, 10, 1, 11, 2, 3, -2, 4, 0, 4, -2, 10, 1, 11, 1, 3, -1, 5, 0, 3, 3, 10, -1, 13, -1, 11, 0, 4, -2, 10, 1, 11, 3, 2, -4, 3, 0, 4, -2, 10, 1, 11, 1, 3, -2, 5, 0, 4, 2, 10, -1, 12, -2, 13, 1, 11, 0, 4, -2, 10, 1, 11, 1, 2, -1, 3, 0, 2, -1, 10, 1, 2, 0, 3, 2, 10, 2, 13, -3, 11, 0, 4, -2, 10, 1, 11, 2, 2, -3, 3, 0, 3, 2, 12, -2, 13, 1, 11, 0, 4, 1, 10, -1, 12, 1, 13, -1, 11, 0, 3, -2, 10, 1, 11, 1, 5, 0, 4, 2, 10, -1, 11, 1, 3, -2, 4, 0, 3, 2, 10, -2, 11, 1, 14, 0, 4, -2, 10, 1, 11, 8, 2, -13, 3, 0, 5, -2, 10, -1, 13, 1, 11, 18, 2, -16, 3, 0, 5, 2, 10, -1, 11, 4, 3, -8, 4, 3, 5, 1, 2, 2, 10, -1, 11, 1, 5, -2, 10, 1, 11, 4, 3, -8, 4, 3, 5, 1, 5, 2, 10, -1, 13, -1, 11, 18, 2, -16, 3, 0, 4, 2, 10, -1, 11, 8, 2, -13, 3, 0, 2, -2, 10, 1, 14, 1, 4, -2, 10, 1, 11, 1, 3, -2, 4, 0, 3, 2, 10, -1, 11, 1, 5, 0, 2, 2, 12, -1, 11, 0, 4, 3, 10, 1, 12, -1, 13, -1, 11, 0, 4, 2, 10, -1, 11, 2, 2, -3, 3, 0, 3, 2, 10, -2, 13, 1, 11, 0, 4, 2, 10, -1, 11, 1, 2, -1, 3, 0, 3, 1, 10, 1, 2, -2, 3, 0, 3, 1, 12, -2, 13, 1, 11, 1, 3, 1, 10, 1, 13, -1, 11, 0, 4, 2, 10, -1, 11, 1, 3, -1, 5, 0, 3, 2, 10, 1, 12, -1, 11, 2, 3, -2, 10, -1, 12, 1, 14, 0, 2, 1, 12, -1, 11, 1, 3, 1, 10, -1, 13, 1, 11, 0, 4, 2, 10, -1, 11, 2, 2, -2, 3, 0, 3, 1, 10, 2, 2, -3, 3, 0, 4, 2, 10, 1, 12, -2, 13, 1, 11, 0, 3, -1, 10, 1, 2, -2, 3, 0, 3, -1, 11, 1, 2, -1, 3, 0, 2, 2, 13, -1, 11, 0, 2, -2, 13, 1, 14, 0, 4, 2, 10, -1, 11, 2, 3, -2, 5, 0, 4, 2, 10, -1, 11, 3, 2, -3, 3, 0, 4, 2, 10, 2, 12, -2, 13, -1, 11, 0, 3, 1, 10, 1, 3, -2, 5, 0, 4, 1, 10, 1, 12, 1, 13, -1, 11, 0, 3, 1, 10, 3, 2, -4, 3, 0, 3, 1, 10, 1, 3, -1, 5, 0, 3, 1, 10, 1, 3, -2, 6, 0, 3, 1, 10, 2, 3, -2, 4, 0, 4, 1, 10, 1, 12, -1, 13, -1, 11, 0, 3, 2, 10, 2, 12, -1, 11, 2, 4, 1, 10, 1, 3, 2, 5, -5, 6, 1, 1, 1, 14, 2, 3, 1, 10, 8, 2, -12, 3, 1, 5, -2, 10, 1, 13, -1, 11, 20, 2, -21, 3, 0, 5, 2, 10, -2, 13, 1, 11, 2, 3, -3, 5, 0, 3, 1, 10, 1, 3, 1, 6, 0, 4, -1, 13, -1, 11, 26, 2, -29, 3, 0, 3, -1, 11, 8, 2, -13, 3, 0, 4, -1, 13, -1, 11, 18, 2, -16, 3, 2, 4, -1, 13, 1, 11, 10, 2, -3, 3, 1, 1, 1, 11, 3, 4, -1, 13, -1, 11, 10, 2, -3, 3, 1, 4, -1, 13, 1, 11, 18, 2, -16, 3, 2, 3, 1, 11, 8, 2, -13, 3, 0, 2, 1, 10, 2, 4, 0, 4, 2, 10, -1, 11, 5, 2, -6, 3, 1, 5, 2, 10, -2, 13, -1, 11, 2, 3, -3, 5, 0, 5, -2, 10, 1, 13, 1, 11, 20, 2, -21, 3, 0, 3, 1, 10, 1, 3, 1, 5, 0, 2, -2, 11, 1, 14, 0, 5, 2, 10, -2, 13, 1, 11, 2, 3, -2, 5, 0, 3, 1, 10, 5, 2, -7, 3, 0, 4, 1, 10, 1, 12, -1, 13, 1, 11, 0, 3, 1, 10, 2, 2, -2, 3, 0, 4, 2, 10, 2, 12, -2, 13, 1, 11, 0, 2, 2, 13, -3, 11, 0, 4, 2, 10, -1, 11, 4, 2, -4, 3, 0, 3, 1, 10, 4, 2, -5, 3, 0, 3, 1, 10, -3, 13, 1, 11, 0, 2, 1, 10, 1, 2, 0, 3, 1, 11, 1, 2, -1, 3, 0, 4, 2, 10, -1, 11, 3, 3, -3, 5, 0, 3, 1, 12, 2, 13, -1, 11, 1, 4, 2, 10, 1, 12, -2, 13, -1, 11, 0, 3, 1, 10, -1, 13, -1, 11, 0, 3, 1, 11, 1, 3, -1, 5, 0, 2, 1, 12, 1, 11, 2, 4, 2, 10, -1, 11, 5, 2, -5, 3, 0, 3, 1, 10, 5, 2, -6, 3, 0, 3, 2, 10, 1, 12, -3, 11, 0, 3, 1, 10, 2, 2, -1, 3, 0, 3, 2, 10, -4, 13, 1, 11, 0, 3, -2, 10, 2, 13, 1, 14, 0, 3, 2, 10, -2, 13, -1, 11, 0, 3, 1, 10, 3, 2, -2, 3, 0, 4, 1, 10, -1, 12, -1, 13, -1, 11, 0, 2, 2, 12, 1, 11, 0, 2, 2, 10, -3, 11, 0, 3, 1, 10, 4, 2, -3, 3, 0, 4, 2, 10, -1, 12, -2, 13, -1, 11, 1, 3, 2, 10, -1, 12, -3, 11, 0, 3, 4, 10, -4, 13, -1, 11, 0, 4, 2, 10, -2, 12, -2, 13, -1, 11, 0, 4, 4, 10, -2, 12, -1, 13, -1, 11, 0, 3, 6, 10, -3, 13, -1, 11, 0, 4, 4, 10, -1, 12, -1, 13, -1, 11, 1, 4, 2, 10, -3, 12, -1, 13, 1, 11, 0, 3, 5, 10, -2, 13, -1, 11, 0, 3, 4, 10, 1, 13, -3, 11, 0, 4, 2, 10, -2, 12, 1, 13, -1, 11, 0, 3, 3, 10, -1, 12, -1, 11, 0, 3, 4, 10, -1, 13, -1, 11, 0, 4, 2, 10, -2, 12, -1, 13, 1, 11, 1, 3, 4, 10, -3, 13, 1, 11, 0, 4, 2, 10, -1, 12, 1, 13, -1, 11, 1, 5, -2, 10, 1, 13, -1, 11, 2, 2, -2, 3, 0, 2, 3, 10, -1, 11, 0, 4, 4, 10, 1, 12, -1, 13, -1, 11, 0, 4, 2, 10, -1, 12, -1, 13, 1, 11, 2, 5, -2, 10, 1, 13, -1, 11, 1, 3, -1, 5, 0, 3, 3, 10, -2, 13, 1, 11, 0, 5, -2, 10, 1, 13, -1, 11, 1, 2, -1, 3, 0, 3, 2, 10, 1, 13, -1, 11, 0, 3, -2, 10, -1, 13, 1, 14, 0, 3, 2, 12, -1, 13, -1, 11, 1, 3, 3, 10, 1, 12, -1, 11, 0, 3, 1, 10, -1, 12, 1, 11, 0, 4, -1, 13, -1, 11, 3, 2, -3, 3, 0, 4, -1, 13, -1, 11, 2, 3, -2, 5, 0, 3, 2, 10, -1, 13, 1, 14, 0, 4, -2, 10, -1, 11, 18, 2, -16, 3, 0, 6, 2, 10, -1, 13, 1, 11, 4, 3, -8, 4, 3, 5, 0, 3, 2, 10, -1, 13, 1, 11, 0, 6, -2, 10, 1, 13, -1, 11, 4, 3, -8, 4, 3, 5, 0, 5, 2, 10, -2, 13, 1, 11, 18, 2, -16, 3, 0, 4, -2, 10, 1, 13, -2, 11, 1, 14, 0, 3, 1, 12, -3, 13, 1, 11, 0, 3, 1, 10, 2, 13, -1, 11, 0, 4, 2, 10, 1, 12, 1, 13, -1, 11, 1, 3, 1, 12, -1, 13, -1, 11, 1, 4, -1, 13, -1, 11, 1, 3, -1, 5, 0, 2, 1, 10, 1, 11, 0, 4, 2, 10, 1, 12, -1, 13, 1, 11, 1, 3, 1, 12, 1, 13, -3, 11, 0, 4, -1, 13, -1, 11, 1, 2, -1, 3, 0, 5, 2, 10, -1, 13, 1, 11, 2, 2, -2, 3, 0, 2, 3, 13, -1, 11, 0, 4, 1, 10, 1, 12, -2, 13, -1, 11, 0, 4, 2, 10, 2, 12, 1, 13, -1, 11, 0, 2, 1, 13, 1, 14, 1, 5, 2, 10, -1, 13, 1, 11, 2, 3, -3, 5, 0, 4, -2, 13, -1, 11, 18, 2, -16, 3, 1, 5, 1, 13, 1, 11, 4, 3, -8, 4, 3, 5, 0, 2, 1, 13, 1, 11, 0, 5, -1, 13, -1, 11, 4, 3, -8, 4, 3, 5, 0, 3, 1, 11, 18, 2, -16, 3, 1, 3, -1, 13, -2, 11, 1, 14, 0, 5, 2, 10, -1, 13, 1, 11, 2, 3, -2, 5, 0, 5, 2, 10, -1, 13, 1, 11, 3, 2, -3, 3, 0, 3, 1, 10, 1, 12, 1, 11, 1, 4, 2, 10, 2, 12, -1, 13, 1, 11, 1, 2, 1, 13, -3, 11, 0, 4, 1, 13, 1, 11, 1, 2, -1, 3, 0, 3, 1, 12, 3, 13, -1, 11, 0, 4, 2, 10, 1, 12, -3, 13, -1, 11, 0, 3, 1, 10, -2, 13, -1, 11, 0, 4, 1, 13, 1, 11, 1, 3, -1, 5, 0, 3, 1, 12, 1, 13, 1, 11, 1, 2, 1, 10, -3, 11, 0, 3, 1, 12, -1, 13, 3, 11, 0, 3, 2, 10, -3, 13, -1, 11, 0, 3, 2, 12, 1, 13, 1, 11, 0, 3, 2, 10, -1, 13, -3, 11, 0, 4, 2, 10, -1, 12, -3, 13, -1, 11, 0, 4, 2, 10, -1, 12, -1, 13, -3, 11, 0, 4, 6, 10, -1, 12, -2, 13, -1, 11, 0, 3, 4, 10, -2, 12, -1, 11, 0, 3, 6, 10, -2, 13, -1, 11, 0, 4, 4, 10, -2, 12, -2, 13, 1, 11, 0, 3, 4, 10, -1, 12, -1, 11, 1, 3, 2, 10, -3, 12, 1, 11, 0, 3, 5, 10, -1, 13, -1, 11, 0, 4, 4, 10, -1, 12, -2, 13, 1, 11, 0, 4, 2, 10, -2, 12, 2, 13, -1, 11, 0, 2, 4, 10, -1, 11, 0, 3, 2, 10, -2, 12, 1, 11, 1, 4, 3, 10, -1, 12, -1, 13, 1, 11, 0, 3, 4, 10, -2, 13, 1, 11, 0, 4, 2, 10, -1, 12, 2, 13, -1, 11, 0, 4, -2, 10, -1, 11, 2, 2, -2, 3, 0, 3, 3, 10, 1, 13, -1, 11, 0, 3, 4, 10, 1, 12, -1, 11, 0, 3, 2, 10, -1, 12, 1, 11, 2, 4, -2, 10, -1, 11, 1, 3, -1, 5, 0, 3, 3, 10, -1, 13, 1, 11, 0, 4, 4, 10, 1, 12, -2, 13, 1, 11, 0, 3, 2, 10, 2, 13, -1, 11, 0, 3, 2, 12, -2, 13, -1, 11, 0, 4, 1, 10, -1, 12, 1, 13, 1, 11, 0, 2, 2, 10, 1, 14, 0, 5, -2, 10, -1, 13, -1, 11, 18, 2, -16, 3, 0, 2, 2, 10, 1, 11, 1, 5, 2, 10, -1, 13, 1, 11, 18, 2, -16, 3, 0, 3, -2, 10, -2, 11, 1, 14, 0, 4, 3, 10, 1, 12, -1, 13, 1, 11, 0, 3, 2, 10, -2, 13, 3, 11, 0, 4, 2, 10, 1, 12, 2, 13, -1, 11, 0, 3, 1, 12, -2, 13, -1, 11, 1, 3, 1, 10, 1, 13, 1, 11, 0, 3, 2, 10, 1, 12, 1, 11, 1, 2, 4, 13, -1, 11, 0, 2, 2, 13, 1, 14, 0, 4, -3, 13, -1, 11, 18, 2, -16, 3, 0, 2, 2, 13, 1, 11, 0, 4, 1, 13, 1, 11, 18, 2, -16, 3, 0, 4, 2, 10, 1, 11, 2, 3, -2, 5, 0, 4, 1, 10, 1, 12, 1, 13, 1, 11, 0, 3, 2, 10, 2, 12, 1, 11, 0, 2, 2, 11, 1, 14, 0, 1, 3, 11, 0, 3, 1, 10, -3, 13, -1, 11, 0, 3, 1, 12, 2, 13, 1, 11, 1, 2, 1, 12, 3, 11, 0, 3, 2, 10, -4, 13, -1, 11, 0, 3, 2, 12, 2, 13, 1, 11, 0, 3, 2, 10, -2, 13, -3, 11, 0, 4, 6, 10, -1, 12, -1, 13, -1, 11, 0, 3, 6, 10, -1, 13, -1, 11, 0, 4, 4, 10, -2, 12, -1, 13, 1, 11, 0, 3, 6, 10, -3, 13, 1, 11, 0, 4, 4, 10, -1, 12, 1, 13, -1, 11, 0, 4, 4, 10, -1, 12, -1, 13, 1, 11, 1, 3, 5, 10, -2, 13, 1, 11, 0, 3, 4, 10, 1, 13, -1, 11, 0, 4, 2, 10, -2, 12, 1, 13, 1, 11, 0, 3, 4, 10, -1, 13, 1, 11, 0, 4, 2, 10, -1, 12, 3, 13, -1, 11, 0, 4, 4, 10, 1, 12, 1, 13, -1, 11, 0, 4, 2, 10, -1, 12, 1, 13, 1, 11, 1, 2, 3, 10, 1, 11, 0, 4, 4, 10, 1, 12, -1, 13, 1, 11, 0, 4, 2, 10, -1, 12, -1, 13, 3, 11, 0, 3, 2, 10, 3, 13, -1, 11, 0, 3, 2, 10, 1, 13, 1, 14, 0, 3, 2, 10, 1, 13, 1, 11, 0, 3, 3, 10, 1, 12, 1, 11, 0, 3, 2, 10, -1, 13, 3, 11, 0, 4, 2, 10, 1, 12, 3, 13, -1, 11, 0, 3, 1, 12, -3, 13, -1, 11, 0, 3, 1, 10, 2, 13, 1, 11, 0, 4, 2, 10, 1, 12, 1, 13, 1, 11, 1, 3, 1, 12, -1, 13, -3, 11, 0, 2, 1, 10, 3, 11, 0, 2, 5, 13, -1, 11, 0, 2, 3, 13, 1, 11, 0, 4, 1, 10, 1, 12, 2, 13, 1, 11, 0, 2, 1, 13, 3, 11, 0, 3, 1, 12, 3, 13, 1, 11, 0, 3, 1, 12, 1, 13, 3, 11, 0, 3, 2, 10, -5, 13, -1, 11, 0, 3, 6, 10, -1, 12, -1, 11, 0, 4, 6, 10, -1, 12, -2, 13, 1, 11, 0, 2, 6, 10, -1, 11, 0, 3, 4, 10, -2, 12, 1, 11, 0, 3, 6, 10, -2, 13, 1, 11, 0, 4, 4, 10, -1, 12, 2, 13, -1, 11, 0, 3, 4, 10, -1, 12, 1, 11, 0, 3, 4, 10, 2, 13, -1, 11, 0, 4, 2, 10, -2, 12, 2, 13, 1, 11, 0, 2, 4, 10, 1, 11, 0, 3, 4, 10, -2, 13, 3, 11, 0, 4, 2, 10, -1, 12, 2, 13, 1, 11, 0, 3, 3, 10, 1, 13, 1, 11, 0, 3, 4, 10, 1, 12, 1, 11, 0, 3, 2, 10, -1, 12, 3, 11, 0, 3, 2, 10, 4, 13, -1, 11, 0, 3, 2, 10, 2, 13, 1, 11, 0, 2, 2, 10, 3, 11, 0, 3, 1, 12, -4, 13, -1, 11, 0, 3, 1, 10, 3, 13, 1, 11, 0, 4, 2, 10, 1, 12, 2, 13, 1, 11, 0, 2, 4, 13, 1, 11, 0, 2, 2, 13, 3, 11, 0, 1, 5, 11, 0, 3, 1, 12, 4, 13, 1, 11, 0, 4, 6, 10, -1, 12, -1, 13, 1, 11, 0, 3, 6, 10, 1, 13, -1, 11, 0, 3, 6, 10, -1, 13, 1, 11, 0, 4, 4, 10, -1, 12, 1, 13, 1, 11, 0, 3, 4, 10, 1, 13, 1, 11, 0, 3, 4, 10, -1, 13, 3, 11, 0, 4, 2, 10, -1, 12, 3, 13, 1, 11, 0, 4, 4, 10, 1, 12, 1, 13, 1, 11, 0, 3, 2, 10, 3, 13, 1, 11, 0, 3, 2, 10, 1, 13, 3, 11, 0, 2, 5, 13, 1, 11, 0, 2, 3, 13, 3, 11, 0, 2, 6, 10, 1, 11, 0, 3, 4, 10, 2, 13, 1, 11, 0, 3, 2, 10, 4, 13, 1, 11, 0, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static KeplerGlobalCode.plantbl moonlat = new KeplerGlobalCode.plantbl(14, new int[19] { 0, 26, 29, 8, 3, 5, 0, 0, 0, 6, 5, 3, 5, 1, 0, 0, 0, 0, 0 }, 3, args, tabl, tabb, tabr, 0.0d, 3652500.0d, 0.0001d); + + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Mlr404Data.cs b/ASCOM.Tools/Kepler/Planets/Mlr404Data.cs new file mode 100644 index 0000000..0d400d8 --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Mlr404Data.cs @@ -0,0 +1,1996 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Mlr404Data + { + // /* geocentric moon + // polar coordinates re mean equinox and ecliptic of date + // For latitude coefficients, see mlat404.c. + // S. L. Moshier + // December, 1996 + // Residuals against JPL ephemeris DE404 (arc seconds) + // First date in file = 1221000.5 + // Number of samples = 1053099 + // Sampling interval = 1.515625 days + // Peak excursions from these mostly different test points + // were consolidated with the above. They added .01" to a few + // of the peak readings. + // First date in file = 1221000.50 + // Number of samples = 524290.0 + // Sampling interval = 3.0 days + // Julian Years Longitude Latitude Distance + // 1 = 1.9 km + // Peak RMS Ave Peak RMS Ave Peak RMS Ave + // -1369.0 to -1000.0: 0.43 0.07 0.00 0.33 0.05 -0.00 0.18 0.03 0.00 + // -1000.0 to -500.0: 0.49 0.06 -0.00 0.33 0.04 -0.00 0.18 0.03 0.00 + // -500.0 to 0.0: 0.48 0.06 0.00 0.32 0.04 0.00 0.15 0.03 0.00 + // 0.0 to 500.0: 0.45 0.05 0.00 0.30 0.04 -0.00 0.17 0.03 -0.00 + // 500.0 to 1000.0: 0.48 0.05 -0.00 0.29 0.04 0.00 0.17 0.03 -0.00 + // 1000.0 to 1500.0: 0.42 0.05 -0.00 0.28 0.04 -0.00 0.16 0.03 0.00 + // 1500.0 to 2000.0: 0.35 0.05 -0.00 0.26 0.04 0.00 0.15 0.03 0.00 + // 2000.0 to 2500.0: 0.39 0.06 0.00 0.25 0.04 -0.00 0.15 0.03 -0.00 + // 2500.0 to 3000.0: 0.44 0.07 -0.00 0.30 0.05 -0.00 0.19 0.03 -0.00 + // 3000.0 to 3000.8: 0.23 0.08 -0.04 0.11 0.04 -0.00 0.08 0.03 -0.00 + // */ + + internal static double[] tabl = new double[] { 175667d, 66453d, 5249d, -42, 20057d, 403d, -2360, 6148d, -7644, 24646d, -1273, 9127d, -1395, 1958d, 232d, -289, -97, 553d, 69d, 130d, -80, 6d, 129d, -868, 26d, -89, 1042d, 1172d, 194d, -112, -47433, -241666, 224626d, -103752, 63419d, 127606d, 2294d, -691, -1827, -1254, -1, -119, 1057d, 324d, 505d, -195, 254d, -641, -36, 1008d, -1082, -3, -87, 122d, 161d, 11d, 2d, -106, 29d, -123, -32, 41d, -524, -35, 133d, -595, 225d, 837d, -108, -191, -2294, 841d, -340, -394, -351, -1039, 238d, -108, -66, 21d, 1405d, 869d, 520d, 2776d, -174, 71d, 425d, 652d, -1260, -80, 249d, 77d, -192, -17, -97, 134d, -7, -54, -802, -7436, -2824, 70869d, -35, 2481d, 1865d, 1749d, -2166, 2415d, 33d, -183, -835, 283d, 27d, -45, 56d, 235d, 2d, 718d, -1206, 275d, -87, -158, -7, -2534, 0d, 10774d, 1d, -324, -208, 821d, 281d, 1340d, -797, 440d, 224d, 72d, -65, -5, -7, -44, -48, 66d, -151, -40, -41, -45, 76d, -108, -18, 1202d, 0d, -2501, 1438d, -595, 900d, 3040d, -3435, -5, -100, -26, 0d, -13714, -183, 68d, 453d, -83, -228, 325d, 97d, 13d, 2d, 105d, -61, 257d, 0d, 57d, 88d, -11, -1, -8220, 0d, 275d, -43, -10, -199, 105d, 1d, -5849, 2d, 24887d, -128, 48d, 712d, 970d, -1407, 845d, -266, 378d, 311d, 1526d, -1751, 27d, 0d, -185858, 133d, 6383d, -108, 25d, -7, 1944d, 5d, 390d, -11, 31d, 277d, -384, 158d, 72d, -81, -41, -13, -111, -2332, -65804, -698, 505812d, 34d, 1676716d, -72, -6664384, 154d, -57, 52d, 95d, -4, -5, -7, 37d, -63, -32, 4d, 3349d, 1d, -14370, 16d, -83, 0d, -401, 13d, 3013d, 48d, -20, 0d, 250d, 51d, -79, -7, -146, 148d, 9d, 0d, -64, -17, -59, -67, -492, -2, 2116601d, -12, -1848, 8d, -436, -6, 324d, 0d, -1363, -163, 9d, 0d, -74, 63d, 8167d, -29, 37587d, -22, -74501, -71, 497d, -1, 551747d, -87, -22, 0d, -51, -1, -463, 0d, -444, 3d, 89d, 15d, -84, -36, -6829, -5, -21663, 0d, 86058d, 0d, -298, -2, 751d, -2, -1015, 0d, 69d, 1d, -4989, 0d, 21458d, 0d, -330, 0d, -7, 0d, -226, 0d, -1407, 0d, 2942d, 0d, 66d, 0d, 667d, 0d, -155, 0d, 105d, 0d, -107, 0d, -74, 0d, -52, 0d, 91d, 0d, 59d, 0d, 235d, -1, -1819, 0d, 2470d, 71d, 13d, 0d, 1026d, 14d, -54, 0d, -174, -121, -19, 0d, -200, 0d, 3008d, -16, -8043, -10, -37136, -3, 73724d, -157, -5, 0d, -854, 8d, 147d, -13, -893, 0d, 11869d, -23, -172, 89d, 14d, -1, 872d, 0d, -3744, 11d, 1606d, 0d, -559, -1, -2530, 0d, 454d, 0d, -193, -60, -10, -82, -13, -75, 6d, 36d, 81d, 354d, -162836, 148d, -516569, 4d, 2054441d, 4d, -94, 39d, 38d, 61d, -30, 2d, 121d, -11, 590d, 62d, 2108d, 0d, -12242, -476, -42, -84, 113d, -394, 236d, 0d, 276d, -49, 31d, 0d, 86d, 1d, -1313, 1d, 69d, -60, 88d, -46, 18d, 0d, -63818, 14d, -93, 113d, 547d, -618, 17d, -7, 12290d, -1, -25679, 0d, 92d, -115, 50d, -48, 233d, 4d, 1311d, 1d, -5567, 3d, 1251d, 29d, 548d, -244, 257d, -2, 1825d, 42d, 637d, -46, 68d, -62, 8d, 3d, 110d, 445d, -100, -316, -202, 2925d, -621, 763d, 1495d, -169, -184, 20d, -76, -475, -138, 8d, -141, -197, 1351d, -1284, 422d, -129, 1879d, -102, 8382d, -9, 45864958d, -215, 1350d, -1285, 422d, -481, -136, 8d, -140, 40d, -53, 2622d, -543, 700d, 1406d, 402d, -95, -318, -194, 122d, 13d, -30, 147d, -121, -902, 61d, -23, -63, 7d, 69d, 479d, -224, 228d, -7, 500d, 0d, -429, -42, 193d, -92, 37d, 67d, 5d, -350, -31, 0d, 67d, -55, -5, 0d, 47d, -36, 53d, 5d, 561d, 0d, -126, 0d, 871d, -52, 4d, -201, 116922d, -22, 371352d, -12, -1473285, 0d, 87d, -164, 84d, -3, 422d, 30d, 1434d, -26, 38d, 2d, -1249943, -404, -34, -57, 79d, 5d, 509d, 1d, 131d, -344, 168d, 112d, 22540d, 30d, 71218d, 18d, -283983, 0d, -851, 0d, -1538, 0d, 1360d, -12, 51d, -48, 68d, 88d, -20, 1d, 63d, 0d, -568, 303d, 25d, 0d, -122, 87d, 586d, -606, -14, 0d, -100, -85, 8d, -165, 54d, -45, 140d, 0d, -54, 4d, -831, 1d, 3495d, 31d, 116d, -46, -11, -371, 190d, -507, 399d, -2, 57d, -60, 36d, -198, -1174, -613, 4988d, -87, -4, 141d, 560d, -276, 187d, 1876d, 1379d, 778d, 4386d, 24d, -15, 167d, -774, -71, -9, -62, 90d, 98d, 580d, -663, -7, 34d, -112, 57d, 15d, -355, -214, -3240, -13605, 12229d, -5723, 3496d, 7063d, 33d, -51, 1908d, 1160d, -226, 715d, 964d, 1170d, -1264, 623d, 14071d, 5280d, 5614d, 3026d, 488d, 1576d, -2, 226395859d, 824d, 1106d, -1287, 617d, 1917d, 1156d, -214, 718d, 90d, -97, 12078d, -2366, 3282d, 6668d, -219, 9179d, 593d, 2015d, -282, -186, 57d, 25d, 31d, -102, -77, -4, -268, -341, -7, -45, -3, 74d, 15d, -615, -88, -7, 234d, -353, 1d, -119, -163, -1159, -601, 4969d, 22d, -58, -17, -11434, 17d, 54d, 348d, 348d, -460, 434d, -371, 175d, -11, -204, 4d, -6440, -5, -53, -4, -14388, -37, -45231, -7, 179562d, -44, 136d, -160, 49d, -101, 81d, -1, -188, 0d, 2d, -4, 12124d, -11, -25217, 71d, 543d, -557, -14, -75, 526d, 0d, 395274d, -233, -16, 93d, -20, -43, 61d, 0d, -1275, 0d, -824, 1d, -415, 0d, 1762d, -261, 131d, -45, 64d, -297, -25, 0d, -17533, -6, -56, 21d, 1100d, 1d, 327d, 1d, 66d, 23d, -217, -83, -7, 83d, 86847d, 49d, 275754d, -4, -1093857, -46, 2d, 0d, -24, 0d, -419, 0d, -5833, 1d, 506d, 0d, -827, -1, -377, -11, -78, 0d, 131945d, -2, -334, 1d, -75, 0d, -72, 0d, -213, -6, 5564d, -2, -11618, 0d, 1790d, 0d, -131, 0d, 6d, 0d, -76, 0d, -130, 0d, -1115, 0d, 4783d, 0d, -195, 0d, -627, 0d, -55, 0d, -83, 0d, 163d, 0d, -54, 0d, 82d, 0d, 149d, 0d, -754, 0d, 1578d, 0d, 138d, 0d, 68d, 2d, -2506, 0d, 3399d, 0d, -125, 86d, 16d, 0d, -6350, 0d, 27316d, 18d, -63, 0d, -169, -1, 46d, -136, -21, 0d, -239, -30, -8788, -15, -40549, -4, 80514d, -46, -8, -168, -6, -1, 536d, 0d, -2314, 9d, 148d, -13, -842, -1, 307713d, -23, -175, 95d, 15d, 0d, -297, 11d, 1341d, 0d, -106, 0d, 5d, -4, 68d, -114, 10d, 32d, 75d, 159d, -130487, 98d, -413967, 2d, 1647339d, -4, -85, 100d, -46, 2d, 95d, -11, 461d, 51d, 1647d, 0d, -32090, -375, -33, -65, 86d, -300, 180d, 0d, 836d, 0d, -3576, 0d, -222, 0d, -993, -41, 60d, 0d, -4537, -431, -34, 2d, 927d, 0d, -1931, -79, 33d, -31, 144d, -1, 284d, 0d, -1207, 0d, 88d, -11, 315d, -178, 177d, -1, 144d, -58, 986d, 11d, 86d, -228, -110, 2636d, -494, 718d, 1474d, 28d, -35, -24, 782d, -797, 277d, 2142d, -1231, 856d, 1853d, 74d, 10797d, 0d, 23699298d, -21, 786d, -796, 277d, 27d, -34, 2615d, -494, 712d, 1461d, -226, -109, -11, 663d, 0d, -123, -169, 157d, -54, 266d, 0d, -76, 1d, -634, 0d, 2738d, -25, 106d, -63, 24d, 0d, -372, -221, -24, 0d, -5356, 0d, -219, 0d, 91d, -28, 7684d, -6, 24391d, -1, -96795, -77, 43d, 2d, 95d, -47, -3, 0d, -84530, 2d, 310d, 1d, 88d, 111d, 19331d, 32d, 61306d, 4d, -243595, 0d, 770d, 0d, -103, 0d, 160d, 0d, 356d, 0d, 236d, -41, 354d, 39d, 303d, 12d, -56, 873d, -143, 238d, 482d, -28, 35d, -93, 31d, -3, 7690211d, -91, 33d, -34, 43d, 824d, -130, 226d, 450d, -39, 341d, -1, -687, 0d, -303, 11d, -2935, 1d, 12618d, 121d, 924d, 9d, -1836, -268, -1144, -678, 3685d, -69, -261, 0d, -4115951, -69, -261, 5d, -151, 0d, -88, 0d, 91d, 0d, 187d, 0d, -1281, 1d, 77d, 1d, 6059d, 3d, 19238d, 0d, -76305, 0d, -90, 0d, -238, 0d, -962, 0d, 4133d, 0d, 96d, 0d, 9483d, 0d, 85d, 0d, -688, 0d, -5607, 0d, 55d, 0d, -752, 0d, 71d, 0d, 303d, 0d, -288, 0d, 57d, 0d, 45d, 0d, 189d, 0d, 401d, 0d, -1474, 0d, 3087d, 0d, -71, 0d, 2925d, 0d, -75, 0d, 359d, 0d, 55d, 1d, -10155, 0d, 43735d, 0d, -572, 0d, -49, 0d, -660, 0d, -3591, 0d, 7516d, 0d, 668d, -1, -53, -2, 384259d, 0d, -163, 0d, -93, 1d, 112d, -95, -11528, -22, -36505, -1, 145308d, 5d, 145d, 0d, 4047d, 1d, 1483d, 0d, -6352, 0d, 991d, 0d, -4262, 0d, -93, 0d, -334, 0d, -160, 0d, -153, -10, 127d, 51d, 185d, -77, 18d, 56d, 1217d, 6d, 1919574d, -74, 17d, 50d, 180d, -5, 93d, 0d, -104, 0d, -58, -3, -353, -1, 1499d, 0d, -229, -15, 86d, 0d, -93657, 0d, 1561d, 0d, -6693, 0d, -5839, 1d, 6791d, 0d, -29143, 1d, -701, 0d, 3015d, 0d, 2543d, 0d, 693d, -1, 361233d, 0d, -50, 0d, 946d, -1, -140, -70, 407d, 0d, -450995, 0d, -368, 0d, 54d, 0d, -802, 0d, -96, 0d, 1274d, 0d, -5459, 0d, -614, 0d, 2633d, 0d, 685d, 0d, -915, 0d, -85, 0d, 88d, 0d, 106d, 0d, 928d, 0d, -726, 0d, 1523d, 0d, 5715d, 0d, -4338, 0d, 18706d, 0d, -135, 0d, -132, 0d, -158, 0d, -98, 0d, 680d, -1, 138968d, 0d, -192, 0d, -1698, 0d, -2734, 0d, 11769d, 0d, 4d, 0d, 673d, 0d, -2891, 0d, 889d, 0d, -3821, 0d, 121d, -1, 143783d, 0d, 231d, -9, 51d, 0d, -57413, 0d, -483, 0d, -407, 0d, 676d, 0d, -2902, 0d, 531d, 0d, 445d, 0d, 672d, 0d, 19336d, 0d, 70d, 0d, -39976, 0d, -68, 0d, 4203d, 0d, -406, 0d, 446d, 0d, -108, 0d, 79d, 0d, 84d, 0d, 734d, 0d, 255d, 0d, 3944d, 0d, -655, 0d, 2825d, 0d, -109, 0d, -234, 0d, 57d, 0d, 19773d, 0d, -2013, 0d, 958d, 0d, -521, 0d, -757, 0d, 10594d, 0d, -9901, 0d, 199d, 0d, -275, 0d, 64d, 0d, 54d, 0d, 165d, 0d, 1110d, 0d, -3286, 0d, 909d, 0d, 54d, 0d, 87d, 0d, 258d, 0d, 1261d, 0d, -51, 0d, 336d, 0d, -114, 0d, 2185d, 0d, -850, 0d, 75d, 0d, -69, 0d, -103, 0d, 776d, 0d, -1238, 0d, 137d, 0d, 67d, 0d, -260, 0d, 130d, 0d, 49d, 0d, 228d, 0d, 215d, 0d, -178, 0d, 57d, 0d, -133 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabb = new double[] { -1 }; + + internal static double[] tabr = new double[] { -5422, -2120, 1077d, 772d, 39d, 75d, 3d, 10d, -468, -326, -113, -78, -4, -2, 1d, 3d, 29d, 24d, 4d, 2d, 1d, 0d, -9, 7d, -2, 0d, -32, -13, -3, -3, 233d, 126d, 89d, 77d, -33, 16d, 3d, -3, 0d, -1, 2d, 0d, 0d, 1d, 4d, 9d, 1d, 1d, 16d, -1, 0d, 18d, 3d, 2d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, 0d, -1, -22, -5, 10d, 3d, 1d, 1d, -15, 7d, -2, 1d, -8, -11, -1, -2, -1, 1d, 46d, -58, 126d, -23, 4d, 8d, 35d, 8d, 10d, -17, 0d, 0d, 0d, 0d, -10, -7, 0d, 0d, -23, 3d, 151d, 10d, -327, 0d, 4d, -5, 6d, 5d, 1d, 0d, -1, -3, 0d, 0d, 0d, 1d, -185, 0d, -3, -24, -5, -2, -1062, 3d, 4560d, 0d, -3, 0d, 4d, 1d, 8d, -1, 2d, 4d, 0d, 1d, 0d, -1, 0d, 0d, -1, 0d, 0d, 1d, 0d, 0d, -1, -1, 277d, 3d, -583, 1d, -1, 4d, -32, 7d, 0d, -34, 1d, -1, -23685, 0d, -1, -2, -1, -7, -5, -4, 0d, 2d, -2, 0d, -5, -1, 35d, 0d, 0d, 2d, 202d, 0d, 180d, 0d, 0d, -1, -3, -6, -193, 0d, 770d, -1, -2, -4, -32, 23d, -28, -46, -13, -9, -54, 10d, -1, -61, -44895, 0d, -230, 5d, -1, -4, -71, 0d, -15, 0d, 1d, 0d, 15d, 11d, -3, 6d, 2d, -3, 4d, -1, 2576d, -138, -19881, -47, -65906, -1, 261925d, -4, -2, -7, 4d, -2, 0d, 0d, -1, 0d, 1d, -3, 172d, -2, -727, 0d, 4d, 1d, 324d, 0d, -139, 1d, 1d, 3d, -276, 0d, 5d, 3d, 9d, 0d, -1, 10d, -37, 0d, 5d, -1, 76d, -10, 1318810d, 1d, 12d, -1, -38, 1d, -141, 0d, 611d, 0d, 0d, -11, 4d, 0d, -627, 2d, -2882, -3, 5711d, -2, -48, -7, 55294d, 0d, 2d, -7, 31d, 0d, 34d, 0d, -259, 0d, -55, 2d, 6d, 3d, -4273, 20d, -13554, 3d, 53878d, 0d, -46, 0d, -85, 0d, 114d, 0d, -45, 0d, -818, 0d, 3520d, 0d, 34d, 0d, -157, 0d, 29d, 0d, -878, 0d, 1838d, 0d, -428, 0d, 161d, 0d, 24d, 0d, 65d, 0d, 19d, 0d, 15d, 0d, 12d, 0d, -26, 0d, -14, 0d, -149, 0d, 584d, 0d, -793, 0d, 4d, -23, -238, 0d, -18, -5, 45d, 0d, -7, 42d, 79d, 0d, -1723, 0d, 2895d, -6, 13362d, -4, -26525, -1, -2, 57d, 291d, 0d, 52d, -3, -327, 5d, -2755, 0d, -63, 9d, 5d, -33, -261, -1, 1122d, 0d, 621d, -4, -227, 0d, 1077d, 0d, -167, 0d, 85d, 0d, -4, 23d, -5, 32d, 3d, 30d, -32, 14d, 64607d, 141d, 204958d, 59d, -815115, 2d, -37, -1, 15d, -15, 12d, 24d, 48d, -1, 235d, 4d, 843d, -25, 4621d, 0d, -17, 191d, 45d, 34d, 95d, 159d, -132, 0d, 13d, 20d, 32d, 0d, -540, 0d, 29d, 0d, 37d, 25d, 8d, 19d, 22127d, 0d, -35, -5, 232d, -48, 7d, 262d, 5428d, 3d, -11342, 1d, -45, 0d, -21, -49, -100, -21, -626, 1d, 2665d, 0d, 532d, -2, 235d, -12, -111, -105, 774d, 1d, -283, 17d, 29d, 20d, 3d, 27d, 47d, -2, -43, -192, -87, 136d, -269, -1264, 646d, -330, -79, 73d, -33, -9, 60d, -205, 61d, 4d, -584, -85, -182, -555, -780, -57, -3488, -45, -19818328, -4, 583d, 93d, 182d, 555d, -59, 208d, -60, -4, 23d, 17d, 235d, 1133d, -608, 302d, 41d, 174d, 84d, -137, 6d, -53, 63d, 13d, -392, 52d, -10, -27, -3, -27, 199d, -31, 99d, 97d, -218, -3, 209d, 0d, 84d, 18d, 16d, 40d, 2d, -30, 14d, -154, 30d, 0d, -2, 24d, -108, 0d, -24, -16, 262d, -2, 55d, 0d, -304, 0d, 2d, 25d, 55112d, 95d, 175036d, 11d, -694477, 5d, 41d, 0d, -38, -76, 199d, 1d, 679d, -14, -17, -12, 582619d, 1d, -16, 191d, 38d, 27d, -234, 2d, -60, 0d, 80d, 163d, -10296, 48d, -32526, 13d, 129703d, 8d, -1366, 0d, -741, 0d, -646, 0d, 25d, 6d, 33d, 23d, 10d, 43d, -31, 0d, -6, 0d, -12, 147d, 59d, 0d, 287d, -42, -7, 297d, -59, 0d, -4, -42, -27, -81, -69, -22, 27d, 0d, -423, -2, 1779d, -1, -57, 15d, 5d, -23, 94d, 182d, -197, -250, 24d, 1d, -18, -30, 581d, -98, -2473, -303, -2, 43d, -277, 70d, -92, -136, -681, 925d, -2165, 384d, -8, -12, 382d, 82d, -4, 35d, -45, -31, -286, 48d, 3d, -328, -55, -17, 8d, -28, -106, 175d, -6735, 1601d, -2832, -6052, 3495d, -1730, -25, -17, -574, 944d, -354, -112, -579, 476d, -308, -625, -2411, 7074d, -1529, 2828d, -1335, 247d, -112000844, -1, 545d, -409, 305d, 637d, 572d, -950, 356d, 106d, 48d, 44d, 1170d, 5974d, -3298, 1624d, -4538, -106, -996, 294d, 92d, -139, -12, 28d, 50d, 16d, 2d, -38, 169d, -133, 22d, -3, 38d, 1d, 305d, 7d, 4d, -44, 175d, 116d, 59d, 1d, -573, 81d, 2453d, 297d, 29d, 11d, 5674d, -8, -27, 9d, 173d, -173, 215d, 228d, -87, -184, 102d, -5, 3206d, 2d, -53, 2d, 7159d, -7, 22505d, -19, -89344, -3, 67d, 22d, 24d, 79d, -40, -50, 94d, 0d, 186d, 0d, -6063, 0d, 12612d, -5, -271, 35d, 7d, -278, -479, -74, 426754d, 0d, 8d, -116, -10, -47, -31, -22, 645d, 0d, 426d, 0d, -213, 0d, 903d, 0d, -67, -133, -33, -23, 13d, -152, -9316, 0d, 29d, -3, -564, 11d, -167, 0d, -34, 0d, 114d, 12d, 4d, -44, -44561, 42d, -141493, 25d, 561256d, -2, -1, -24, -261, 0d, 211d, 0d, -4263, 0d, -262, 1d, 1842d, 0d, 202d, 0d, 41d, -6, 77165d, 0d, 176d, -1, 39d, 1d, -24, 0d, 118d, 0d, -2991, -4, 6245d, -1, 46886d, 0d, -75, 0d, -100, 0d, 40d, 0d, 75d, 0d, -618, 0d, 2652d, 0d, 112d, 0d, 1780d, 0d, 30d, 0d, 49d, 0d, 86d, 0d, 33d, 0d, -30, 0d, -95, 0d, 277d, 0d, -580, 0d, -35, 0d, -319, 0d, 1622d, 1d, -2201, 0d, 79d, 0d, 10d, -57, 2363d, 0d, -10162, 0d, -41, -12, 62d, 0d, 30d, 1d, -14, 89d, -2721, 0d, 5780d, -19, 26674d, -10, -52964, -2, -5, 30d, -4, 111d, -317, -1, 1369d, 0d, 93d, -6, -564, 9d, -115913, 0d, -113, 15d, 10d, -62, 99d, 0d, 891d, -7, 36d, 0d, 108d, 0d, -42, -2, 7d, 75d, -50, 21d, 86822d, 104d, 275441d, 65d, -1096109, 1d, -56, 3d, 31d, 66d, 63d, -1, 307d, 7d, 1097d, -34, 17453d, 0d, -22, 250d, 57d, 43d, 120d, 200d, -297, 0d, 1269d, 0d, 166d, 0d, -662, 0d, 40d, 28d, 1521d, 0d, -23, 288d, 351d, -2, -729, 0d, -22, -52, -96, -21, -139, -1, 589d, 0d, 35d, 0d, 210d, 7d, -118, -119, 62d, 0d, -583, -26, -42, 5d, -73, 152d, -330, -1759, 983d, -479, -23, -19, -522, -15, -185, -533, 739d, 1559d, -1300, 614d, -7332, 52d, -15836758, 0d, 524d, 16d, 185d, 532d, 23d, 18d, 330d, 1751d, -978, 476d, 73d, -151, 519d, 18d, 38d, 0d, 105d, 113d, -178, -37, 26d, 0d, 262d, 1d, -1139, 0d, 71d, 17d, 16d, 42d, 151d, 0d, 16d, -148, 4147d, 0d, 149d, 0d, -30, 0d, 2980d, 9d, 9454d, 2d, -37519, 0d, -28, -49, 37d, -1, 2d, -31, 33870d, 0d, -208, 1d, -59, 1d, -13105, 68d, -41564, 21d, 165148d, 3d, -1022, 0d, -40, 0d, -132, 0d, -228, 0d, 95d, 0d, -138, -16, -126, 16d, 24d, 5d, -57, -346, 191d, -94, -14, -11, -12, -37, -3053364, -1, 13d, 36d, 17d, 13d, 51d, 327d, -179, 90d, 138d, 16d, 233d, 0d, 62d, 0d, 1164d, 0d, -5000, 0d, -407, 117d, 770d, 9d, -4, 1d, 21d, 2d, 1d, 0d, -16869, 0d, -1, 0d, 1d, 0d, 35d, 0d, -78, 0d, 78d, 0d, -533, 0d, -31, 1d, -2448, -6, -7768, -1, 30812d, 0d, 37d, 0d, -227, 0d, 197d, 0d, -846, 0d, -77, 0d, 4171d, 0d, -67, 0d, 287d, 0d, 2532d, 0d, -19, 0d, -40, 0d, -56, 0d, 128d, 0d, 83d, 0d, -45, 0d, -36, 0d, -92, 0d, -134, 0d, 714d, 0d, -1495, 0d, 32d, 0d, -981, 0d, 15d, 0d, -166, 0d, -59, 0d, 4923d, 0d, -21203, 0d, 246d, 0d, 15d, 0d, 104d, 0d, 1683d, 0d, -3523, 0d, -865, 0d, -25, 1d, -186329, -1, 10d, 0d, 50d, 0d, 53d, 0d, 5455d, -45, 17271d, -10, -68747, 0d, 69d, -2, -7604, 0d, -724, 1d, 3101d, 0d, -46, 0d, 200d, 0d, -44, 0d, 97d, 0d, -53, 0d, 62d, 0d, -54, -4, 88d, -24, -9, -36, -581, 27d, -914711, 3d, 8d, 35d, -86, 24d, 51d, 3d, 48d, 0d, 26d, 0d, 133d, 1d, -577, 0d, 105d, 0d, -3, -1, 3194d, 0d, 528d, 0d, -2263, 0d, 2028d, 0d, -3266, 1d, 14016d, 0d, 10d, 0d, -41, 0d, -100, 0d, -32, 0d, -124348, 0d, 16d, 0d, -325, 0d, 50d, -1, 1d, 0d, -553, 0d, 0d, 0d, 0d, 0d, 2d, 0d, -34, 0d, -444, 0d, 1902d, 0d, 9d, 0d, -37, 0d, 254d, 0d, 156d, 0d, -2, 0d, -35, 0d, -48, 0d, -368, 0d, 327d, 0d, -686, 0d, -2263, 0d, 1952d, 0d, -8418, 0d, -13, 0d, 52d, 0d, 9d, 0d, 21d, 0d, -261, 0d, -62404, 0d, 0d, 0d, 79d, 0d, 1056d, 0d, -4547, 0d, -351, 0d, -305, 0d, 1310d, 0d, -1, 0d, 6d, 0d, 0d, 0d, -55953, 0d, -80, 0d, 0d, 0d, 168d, 0d, -147, 0d, 127d, 0d, -265, 0d, 1138d, 0d, -1, 0d, -9, 0d, -8, 0d, -5984, 0d, -22, 0d, -5, 0d, 0d, 0d, 0d, 0d, 127d, 0d, -2, 0d, 10d, 0d, -31, 0d, -29, 0d, -286, 0d, -98, 0d, -1535, 0d, 252d, 0d, -1087, 0d, 43d, 0d, 4d, 0d, -19, 0d, -7620, 0d, 29d, 0d, -322, 0d, 203d, 0d, 0d, 0d, -3587, 0d, 10d, 0d, 0d, 0d, 94d, 0d, 0d, 0d, -1, 0d, -1, 0d, -315, 0d, 1d, 0d, 0d, 0d, 0d, 0d, -30, 0d, -94, 0d, -460, 0d, 1d, 0d, -114, 0d, 0d, 0d, -746, 0d, 4d, 0d, -23, 0d, 24d, 0d, 0d, 0d, -237, 0d, 1d, 0d, 0d, 0d, -18, 0d, 0d, 0d, 0d, 0d, -16, 0d, -76, 0d, -67, 0d, 0d, 0d, -16, 0d, 0d, 0d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 3, 3, 4, 3, -8, 4, 3, 5, 1, 2, 2, 5, -5, 6, 2, 5, -1, 10, 2, 13, -1, 11, 3, 3, -7, 4, 0, 3, 1, 13, -1, 11, 2, 5, 1, 2, 4, 5, -10, 6, 0, 4, 2, 10, -2, 13, 14, 3, -23, 4, 1, 3, 3, 2, -7, 3, 4, 4, 1, 3, -1, 13, 18, 2, -16, 3, 2, 2, 8, 2, -13, 3, 1, 5, 2, 10, -2, 13, 2, 3, -3, 5, 1, 6, 0, 3, -1, 13, 26, 2, -29, 3, 0, 3, 1, 10, -1, 11, 2, 4, 1, 4, 1, 10, -1, 13, 3, 2, -4, 3, 1, 4, 1, 10, -1, 13, 3, 3, -4, 4, 0, 3, -1, 10, 15, 2, -12, 3, 0, 4, 2, 10, -3, 13, 24, 2, -24, 3, 0, 3, -1, 10, 23, 2, -25, 3, 0, 4, 1, 10, -1, 11, 1, 3, 1, 6, 0, 4, 2, 10, -2, 11, 5, 2, -6, 3, 0, 4, 2, 10, -2, 13, 6, 2, -8, 3, 0, 4, -2, 10, 1, 13, 12, 2, -8, 3, 1, 5, -1, 10, 1, 13, -1, 11, 20, 2, -20, 3, 1, 4, -2, 10, 1, 13, 3, 1, -1, 3, 1, 5, 2, 10, -2, 13, 2, 3, -5, 5, 5, 6, 0, 4, 2, 10, -2, 13, 2, 3, -3, 5, 1, 4, 2, 10, -2, 13, 6, 3, -8, 4, 0, 4, -2, 10, 1, 13, 20, 2, -21, 3, 1, 4, 1, 10, -1, 11, 1, 3, 1, 5, 0, 1, 1, 6, 0, 4, 2, 10, -2, 13, 5, 3, -6, 4, 0, 3, 3, 2, -5, 3, 2, 5, 0, 2, -1, 11, 1, 14, 1, 4, 2, 10, -2, 13, 2, 3, -2, 5, 0, 2, 1, 3, -2, 4, 1, 4, 1, 10, -1, 11, 5, 2, -7, 3, 0, 1, 1, 5, 0, 2, 7, 3, -13, 4, 0, 4, -2, 10, 1, 13, 15, 2, -13, 3, 0, 4, 2, 10, -2, 13, 3, 2, -3, 3, 0, 2, -2, 11, 2, 14, 1, 3, 1, 10, 1, 12, -1, 13, 1, 3, -1, 13, 21, 2, -21, 3, 0, 2, 3, 2, -5, 3, 0, 2, 2, 3, -4, 4, 1, 2, 5, 2, -8, 3, 0, 3, -1, 13, 23, 2, -24, 3, 0, 2, 6, 3, -11, 4, 0, 1, 2, 5, 0, 2, 3, 3, -6, 4, 0, 2, 5, 3, -9, 4, 0, 4, 1, 10, -1, 11, 1, 3, -2, 5, 0, 3, 2, 10, 2, 12, -2, 13, 1, 2, 2, 2, -3, 3, 2, 2, 4, 3, -7, 4, 0, 2, 2, 13, -2, 11, 0, 2, 3, 3, -5, 4, 0, 2, 1, 2, -2, 3, 0, 2, 2, 3, -3, 4, 0, 4, 1, 10, -1, 11, 4, 2, -5, 3, 0, 2, 1, 3, -1, 4, 0, 2, 4, 2, -6, 3, 0, 4, 2, 10, -2, 13, 2, 2, -2, 3, 0, 3, 1, 10, -1, 11, 1, 2, 0, 2, 1, 2, -1, 3, 0, 3, 1, 12, 2, 13, -2, 11, 0, 2, 5, 3, -8, 4, 0, 2, 1, 3, -3, 5, 0, 3, 2, 10, 1, 12, -2, 13, 1, 2, 4, 3, -6, 4, 0, 2, 1, 3, -2, 5, 1, 2, 3, 3, -4, 4, 0, 2, 3, 2, -4, 3, 1, 2, 1, 10, -1, 13, 0, 2, 1, 3, -1, 5, 0, 2, 1, 3, -2, 6, 0, 2, 2, 3, -2, 4, 0, 2, 1, 3, -1, 6, 0, 2, 8, 2, -14, 3, 0, 3, 1, 3, 2, 5, -5, 6, 1, 3, 5, 3, -8, 4, 3, 5, 1, 1, 1, 12, 3, 3, 3, 3, -8, 4, 3, 5, 1, 3, 1, 3, -2, 5, 5, 6, 0, 2, 8, 2, -12, 3, 0, 2, 1, 3, 1, 5, 0, 3, 2, 10, 1, 12, -2, 11, 1, 2, 5, 2, -7, 3, 0, 3, 1, 10, 1, 13, -2, 11, 0, 2, 2, 2, -2, 3, 0, 2, 5, 3, -7, 4, 0, 3, 1, 12, -2, 13, 2, 11, 0, 2, 4, 3, -5, 4, 0, 2, 3, 3, -3, 4, 0, 1, 1, 2, 0, 3, 3, 10, 1, 12, -3, 13, 0, 2, 2, 3, -4, 5, 0, 2, 2, 3, -3, 5, 0, 2, 2, 10, -2, 13, 0, 2, 2, 3, -2, 5, 0, 2, 3, 2, -3, 3, 0, 3, 1, 10, -1, 12, -1, 13, 1, 2, 2, 3, -1, 5, 0, 2, 2, 3, -2, 6, 0, 1, 2, 12, 2, 3, -2, 10, 1, 11, 1, 14, 0, 2, 2, 10, -2, 11, 0, 2, 2, 2, -1, 3, 0, 4, -2, 10, 2, 13, 1, 2, -1, 3, 0, 2, 4, 2, -4, 3, 0, 2, 3, 10, -3, 13, 0, 4, -2, 10, 2, 13, 1, 3, -1, 5, 0, 2, 3, 3, -3, 5, 0, 3, 2, 10, -1, 12, -2, 13, 2, 3, 3, 10, -1, 13, -2, 11, 0, 1, 3, 12, 1, 4, -2, 10, 2, 13, 2, 2, -2, 3, 0, 3, 2, 10, -1, 12, -2, 11, 1, 2, 5, 2, -5, 3, 0, 2, 4, 10, -4, 13, 0, 2, 6, 2, -6, 3, 0, 3, 2, 10, -2, 12, -2, 13, 1, 3, 4, 10, -2, 13, -2, 11, 0, 3, 2, 10, -2, 12, -2, 11, 0, 2, 7, 2, -7, 3, 0, 3, 2, 10, -3, 12, -2, 13, 0, 2, 8, 2, -8, 3, 0, 2, 9, 2, -9, 3, 0, 2, 10, 2, -10, 3, 0, 3, 2, 10, -4, 12, -1, 13, 0, 3, 4, 10, -2, 12, -3, 13, 0, 4, 4, 10, -1, 12, -1, 13, -2, 11, 0, 3, 2, 10, -3, 12, -1, 13, 1, 4, -2, 10, 1, 13, 3, 3, -2, 5, 0, 3, 4, 10, -1, 12, -3, 13, 0, 4, -2, 10, 1, 13, 3, 3, -3, 5, 0, 4, 2, 10, -2, 12, 1, 13, -2, 11, 0, 4, -2, 10, 1, 13, 2, 2, -1, 3, 0, 3, 3, 10, -1, 12, -2, 11, 0, 3, 4, 10, -1, 13, -2, 11, 0, 3, 2, 10, -2, 12, -1, 13, 2, 4, -2, 10, 1, 13, 2, 3, -1, 5, 0, 3, 3, 10, -1, 12, -2, 13, 0, 4, -2, 10, 1, 13, 3, 2, -3, 3, 0, 4, -2, 10, 1, 13, 2, 3, -2, 5, 0, 2, 4, 10, -3, 13, 0, 4, -2, 10, 1, 13, 2, 3, -3, 5, 0, 3, -2, 10, 1, 13, 1, 2, 0, 4, 2, 10, -1, 12, 1, 13, -2, 11, 1, 4, -2, 10, 1, 13, 2, 2, -2, 3, 0, 2, 3, 12, -1, 13, 0, 2, 3, 10, -2, 11, 0, 2, 1, 10, -2, 12, 0, 4, 4, 10, 1, 12, -1, 13, -2, 11, 0, 3, -1, 13, 3, 2, -2, 3, 0, 3, -1, 13, 3, 3, -2, 5, 0, 3, -2, 10, 18, 2, -15, 3, 0, 5, 2, 10, -1, 13, 3, 3, -8, 4, 3, 5, 0, 3, 2, 10, -1, 12, -1, 13, 2, 5, -2, 10, 1, 13, 5, 3, -8, 4, 3, 5, 0, 5, -2, 10, 1, 13, 1, 3, 2, 5, -5, 6, 0, 4, 2, 10, -2, 13, 18, 2, -17, 3, 0, 4, -2, 10, 1, 13, 1, 3, -1, 6, 0, 4, -2, 10, 1, 13, 2, 3, -2, 4, 0, 4, -2, 10, 1, 13, 1, 3, -1, 5, 0, 2, 3, 10, -2, 13, 0, 4, -2, 10, 1, 13, 3, 2, -4, 3, 0, 4, -2, 10, 1, 13, 3, 3, -4, 4, 0, 4, -2, 10, 1, 13, 1, 3, -2, 5, 0, 3, 4, 10, 1, 12, -3, 13, 0, 4, -2, 10, 1, 13, 1, 3, -3, 5, 0, 3, -1, 13, 4, 2, -4, 3, 0, 4, -2, 10, 1, 13, 1, 2, -1, 3, 0, 4, -2, 10, 1, 13, 1, 3, -1, 4, 0, 4, -2, 10, 1, 13, 2, 3, -3, 4, 0, 4, -2, 10, 1, 13, 3, 3, -5, 4, 0, 3, 2, 10, 1, 13, -2, 11, 0, 4, -2, 10, -1, 13, 1, 11, 1, 14, 0, 4, -2, 10, 1, 13, 2, 2, -3, 3, 1, 2, 2, 12, -1, 13, 1, 3, 3, 10, 1, 12, -2, 11, 0, 4, 2, 10, -1, 13, 2, 3, -4, 4, 0, 4, 2, 10, -1, 13, 3, 2, -5, 3, 0, 2, 1, 10, -1, 12, 1, 3, -1, 13, 3, 2, -3, 3, 0, 3, -2, 10, 1, 13, 1, 5, 0, 4, 2, 10, -1, 13, 1, 3, -2, 4, 0, 3, -1, 13, 2, 3, -2, 5, 0, 4, 2, 10, -1, 13, -1, 11, 1, 14, 0, 3, -1, 13, 5, 3, -6, 4, 0, 3, -2, 10, 1, 13, 1, 6, 0, 3, -1, 10, 1, 3, -1, 5, 0, 4, -2, 10, 1, 13, 8, 2, -13, 3, 1, 3, -2, 10, 18, 2, -16, 3, 1, 5, -2, 10, 1, 13, 3, 2, -7, 3, 4, 4, 1, 4, 2, 10, -1, 13, 2, 5, -5, 6, 1, 5, 2, 10, -1, 13, 4, 3, -8, 4, 3, 5, 1, 2, 2, 10, -1, 13, 2, 5, -2, 10, 1, 13, 4, 3, -8, 4, 3, 5, 1, 4, -2, 10, 1, 13, 2, 5, -5, 6, 1, 5, 2, 10, -1, 13, 3, 2, -7, 3, 4, 4, 0, 4, 2, 10, -2, 13, 18, 2, -16, 3, 1, 4, 2, 10, -1, 13, 8, 2, -13, 3, 1, 3, -1, 10, 3, 2, -4, 3, 0, 3, -1, 13, 6, 2, -8, 3, 0, 3, -1, 13, 2, 3, -3, 5, 0, 3, -1, 13, 6, 3, -8, 4, 0, 3, 2, 10, -1, 13, 1, 6, 0, 4, -2, 10, 1, 13, -1, 11, 1, 14, 0, 4, -2, 10, 1, 13, 1, 3, -2, 4, 0, 3, 2, 10, -1, 13, 1, 5, 0, 3, 3, 10, 1, 12, -2, 13, 0, 4, -2, 10, 1, 13, 3, 2, -5, 3, 0, 4, -2, 10, 1, 13, 2, 3, -4, 4, 0, 2, -1, 13, 1, 2, 0, 4, 2, 10, -1, 13, 2, 2, -3, 3, 0, 3, -1, 10, 1, 2, -1, 3, 0, 3, -1, 13, 4, 2, -5, 3, 0, 3, 2, 10, -3, 13, 2, 11, 0, 4, 2, 10, -1, 13, 2, 3, -3, 4, 0, 3, -1, 13, 2, 2, -2, 3, 0, 4, 2, 10, -1, 13, 1, 2, -1, 3, 0, 4, 2, 10, 1, 12, 1, 13, -2, 11, 0, 3, -2, 13, 18, 2, -15, 3, 0, 2, 1, 12, -1, 13, 2, 3, -1, 13, 1, 3, -1, 6, 0, 4, 2, 10, -1, 13, 1, 3, -2, 5, 0, 3, -1, 13, 2, 3, -2, 4, 0, 3, -1, 13, 1, 3, -1, 5, 0, 4, 2, 10, -1, 13, 3, 3, -4, 4, 0, 1, 1, 10, 0, 3, -1, 13, 3, 2, -4, 3, 0, 3, -1, 13, 3, 3, -4, 4, 0, 4, 2, 10, -1, 13, 1, 3, -1, 5, 0, 4, 2, 10, -1, 13, 2, 3, -2, 4, 0, 3, -1, 13, 1, 3, -2, 5, 0, 3, 2, 10, 1, 12, -1, 13, 2, 3, 1, 12, 1, 13, -2, 11, 0, 3, -1, 13, 1, 2, -1, 3, 0, 4, 2, 10, -1, 13, 2, 2, -2, 3, 0, 3, -1, 13, 4, 2, -6, 3, 0, 3, -1, 13, 2, 3, -3, 4, 0, 3, 1, 13, 1, 2, -2, 3, 0, 4, 2, 10, -1, 13, 3, 3, -3, 4, 0, 2, 3, 13, -2, 11, 0, 4, 2, 10, -1, 13, 4, 2, -5, 3, 0, 3, 1, 10, 1, 2, -1, 3, 0, 3, -1, 13, 2, 2, -3, 3, 1, 3, 2, 10, 2, 12, -3, 13, 0, 3, 2, 10, -1, 13, 1, 2, 0, 3, 1, 13, 2, 3, -4, 4, 0, 3, 1, 13, 3, 2, -5, 3, 0, 2, 21, 2, -21, 3, 0, 3, 1, 10, 1, 12, -2, 13, 1, 4, 2, 10, -1, 13, 2, 3, -4, 5, 0, 4, 2, 10, -1, 13, 7, 3, -10, 4, 0, 2, -1, 13, 1, 5, 0, 3, 1, 13, 1, 3, -2, 4, 0, 4, 2, 10, -3, 13, 2, 3, -2, 5, 0, 3, 1, 10, 1, 3, -2, 5, 0, 3, 1, 13, -1, 11, 1, 14, 1, 2, -1, 13, 1, 6, 0, 4, 2, 10, -1, 13, 6, 3, -8, 4, 1, 4, 2, 10, -1, 13, 2, 3, -3, 5, 1, 3, -1, 13, 8, 3, -15, 4, 0, 4, 2, 10, -1, 13, 6, 2, -8, 3, 0, 5, 2, 10, -1, 13, -2, 11, 5, 2, -6, 3, 0, 3, 1, 10, 3, 3, -4, 4, 0, 3, 1, 10, 3, 2, -4, 3, 1, 4, 1, 10, -1, 13, -1, 11, 2, 4, 0, 3, -2, 13, 26, 2, -29, 3, 0, 3, -1, 13, 8, 2, -13, 3, 0, 3, -2, 13, 18, 2, -16, 3, 2, 4, -1, 13, 3, 2, -7, 3, 4, 4, 0, 3, 1, 13, 2, 5, -5, 6, 1, 4, 1, 13, 4, 3, -8, 4, 3, 5, 1, 1, 1, 13, 3, 4, -1, 13, 4, 3, -8, 4, 3, 5, 1, 3, -1, 13, 2, 5, -5, 6, 1, 4, 1, 13, 3, 2, -7, 3, 4, 4, 0, 2, 18, 2, -16, 3, 1, 3, 1, 13, 8, 2, -13, 3, 2, 2, 26, 2, -29, 3, 0, 4, 1, 10, 1, 13, -1, 11, 2, 4, 0, 5, 2, 10, 1, 13, -2, 11, 5, 2, -6, 3, 0, 3, 1, 13, 8, 3, -15, 4, 1, 4, 2, 10, -3, 13, 2, 3, -3, 5, 0, 3, 1, 10, 1, 3, -1, 5, 0, 2, 1, 13, 1, 6, 0, 4, 2, 10, -1, 13, 5, 3, -6, 4, 0, 3, 1, 10, 2, 3, -2, 4, 0, 3, -1, 13, -1, 11, 1, 14, 1, 4, 2, 10, -1, 13, 2, 3, -5, 6, 0, 4, 2, 10, -1, 13, 2, 3, -2, 5, 0, 5, 2, 10, -1, 13, 2, 3, -4, 5, 5, 6, 0, 3, -1, 13, 1, 3, -2, 4, 1, 2, 1, 13, 1, 5, 0, 4, 2, 10, -1, 13, 4, 3, -4, 4, 0, 4, 2, 10, -1, 13, 3, 2, -3, 3, 0, 4, 2, 10, 2, 12, -1, 13, -2, 11, 0, 2, 1, 10, 1, 12, 2, 3, -1, 13, 3, 2, -5, 3, 0, 3, -1, 13, 2, 3, -4, 4, 0, 4, 2, 10, -1, 13, 2, 3, -1, 5, 0, 4, 2, 10, -1, 13, 2, 3, -2, 6, 0, 3, 1, 10, 1, 12, -2, 11, 0, 3, 2, 10, 2, 12, -1, 13, 1, 3, 1, 13, 2, 2, -3, 3, 1, 3, -1, 13, 1, 11, 1, 14, 0, 2, 1, 13, -2, 11, 0, 4, 2, 10, -1, 13, 5, 2, -6, 3, 0, 3, -1, 13, 1, 2, -2, 3, 0, 3, 1, 13, 2, 3, -3, 4, 0, 3, 1, 13, 1, 2, -1, 3, 0, 4, 2, 10, -1, 13, 4, 2, -4, 3, 0, 3, 2, 10, 1, 12, -3, 13, 1, 3, 1, 13, 1, 3, -2, 5, 0, 3, 1, 13, 3, 3, -4, 4, 0, 3, 1, 13, 3, 2, -4, 3, 0, 2, 1, 10, -2, 13, 0, 4, 2, 10, -1, 13, 3, 3, -4, 5, 0, 3, 1, 13, 1, 3, -1, 5, 0, 3, 1, 13, 2, 3, -2, 4, 0, 3, 1, 13, 1, 3, -1, 6, 0, 4, 2, 10, -1, 13, 3, 3, -3, 5, 0, 4, 2, 10, -1, 13, 6, 2, -7, 3, 0, 2, 1, 12, 1, 13, 2, 4, 2, 10, -1, 13, 3, 3, -2, 5, 0, 4, 2, 10, 1, 12, -1, 13, -2, 11, 0, 2, 1, 10, 2, 12, 0, 2, 1, 10, -2, 11, 0, 3, 1, 13, 2, 2, -2, 3, 0, 3, 1, 12, -1, 13, 2, 11, 0, 4, 2, 10, -1, 13, 5, 2, -5, 3, 0, 3, 1, 13, 2, 3, -3, 5, 0, 2, 2, 10, -3, 13, 0, 3, 1, 13, 2, 3, -2, 5, 0, 3, 1, 13, 3, 2, -3, 3, 0, 3, 1, 10, -1, 12, -2, 13, 0, 4, 2, 10, -1, 13, 6, 2, -6, 3, 0, 2, 2, 12, 1, 13, 1, 3, 2, 10, -1, 13, -2, 11, 0, 3, 1, 10, -1, 12, -2, 11, 0, 3, 2, 10, 1, 13, -4, 11, 0, 3, 1, 13, 4, 2, -4, 3, 0, 4, 2, 10, -1, 13, 7, 2, -7, 3, 0, 3, 2, 10, -1, 12, -3, 13, 1, 2, 3, 12, 1, 13, 0, 4, 2, 10, -1, 12, -1, 13, -2, 11, 0, 3, 1, 13, 5, 2, -5, 3, 0, 4, 2, 10, -1, 13, 8, 2, -8, 3, 0, 3, 2, 10, -2, 12, -3, 13, 0, 4, 2, 10, -1, 13, 9, 2, -9, 3, 0, 3, 4, 10, -3, 12, -2, 13, 0, 2, 2, 10, -4, 12, 0, 3, 4, 10, -2, 12, -2, 13, 1, 2, 6, 10, -4, 13, 0, 3, 4, 10, -1, 12, -2, 11, 0, 2, 2, 10, -3, 12, 1, 3, 3, 10, -2, 12, -1, 13, 0, 3, -2, 10, 3, 3, -2, 5, 0, 3, 4, 10, -1, 12, -2, 13, 1, 3, -2, 10, 3, 3, -3, 5, 0, 2, 5, 10, -3, 13, 0, 3, -2, 10, 4, 2, -4, 3, 0, 3, -2, 10, 2, 2, -1, 3, 0, 2, 4, 10, -2, 11, 0, 2, 2, 10, -2, 12, 2, 3, -2, 10, 3, 3, -2, 4, 0, 3, -2, 10, 2, 3, -1, 5, 0, 3, 3, 10, -1, 12, -1, 13, 1, 3, -2, 10, 3, 2, -3, 3, 0, 3, -2, 10, 2, 3, -2, 5, 0, 2, 4, 10, -2, 13, 0, 3, -2, 10, 2, 3, -3, 5, 0, 2, -2, 10, 1, 2, 0, 4, 2, 10, -1, 12, 2, 13, -2, 11, 0, 3, -2, 10, 2, 2, -2, 3, 0, 3, 3, 10, 1, 13, -2, 11, 0, 3, 4, 10, 1, 12, -2, 11, 0, 4, 2, 10, -1, 12, -1, 11, 1, 14, 0, 4, -2, 10, -1, 13, 18, 2, -15, 3, 0, 4, 2, 10, 3, 3, -8, 4, 3, 5, 0, 2, 2, 10, -1, 12, 2, 4, -2, 10, 5, 3, -8, 4, 3, 5, 0, 4, 2, 10, -1, 13, 18, 2, -17, 3, 0, 3, -2, 10, 1, 3, -1, 6, 0, 3, -2, 10, 2, 3, -2, 4, 0, 3, -2, 10, 1, 3, -1, 5, 0, 2, 3, 10, -1, 13, 0, 3, -2, 10, 3, 2, -4, 3, 0, 3, -2, 10, 3, 3, -4, 4, 0, 3, -2, 10, 1, 3, -2, 5, 0, 3, 4, 10, 1, 12, -2, 13, 1, 4, 2, 10, -1, 12, -2, 13, 2, 11, 0, 3, -2, 10, 1, 2, -1, 3, 0, 3, -2, 10, 2, 3, -3, 4, 0, 3, 2, 10, 2, 13, -2, 11, 0, 3, -2, 10, 2, 2, -3, 3, 0, 2, 2, 12, -2, 13, 1, 3, 2, 10, 2, 3, -4, 4, 0, 3, 2, 10, 3, 2, -5, 3, 0, 3, 1, 10, -1, 12, 1, 13, 1, 3, -2, 13, 3, 2, -3, 3, 0, 2, -2, 10, 1, 5, 0, 3, 2, 10, 1, 3, -2, 4, 0, 3, -2, 13, 2, 3, -2, 5, 0, 3, 2, 10, -1, 11, 1, 14, 0, 4, 4, 10, -2, 13, 2, 3, -3, 5, 0, 3, -2, 10, 8, 2, -13, 3, 0, 4, -2, 10, -1, 13, 18, 2, -16, 3, 1, 4, -2, 10, 3, 2, -7, 3, 4, 4, 0, 4, 2, 10, 4, 3, -8, 4, 3, 5, 1, 1, 2, 10, 3, 4, -2, 10, 4, 3, -8, 4, 3, 5, 1, 4, 2, 10, 3, 2, -7, 3, 4, 4, 0, 4, 2, 10, -1, 13, 18, 2, -16, 3, 1, 3, 2, 10, 8, 2, -13, 3, 0, 3, -2, 10, -1, 11, 1, 14, 0, 4, 4, 10, -2, 13, 2, 3, -2, 5, 0, 3, -2, 10, 1, 3, -2, 4, 0, 2, 2, 10, 1, 5, 0, 4, 4, 10, -2, 13, 3, 2, -3, 3, 0, 3, 3, 10, 1, 12, -1, 13, 1, 3, -2, 10, 3, 2, -5, 3, 0, 3, -2, 10, 2, 3, -4, 4, 0, 3, 4, 10, 2, 12, -2, 13, 0, 3, 2, 10, 2, 2, -3, 3, 0, 3, 2, 10, -2, 13, 2, 11, 0, 3, 2, 10, 1, 2, -1, 3, 0, 4, 2, 10, 1, 12, 2, 13, -2, 11, 0, 2, 1, 12, -2, 13, 2, 3, 2, 10, 1, 3, -2, 5, 0, 3, -2, 13, 1, 3, -1, 5, 0, 3, 2, 10, 3, 2, -4, 3, 0, 2, 1, 10, 1, 13, 0, 3, 2, 10, 1, 3, -1, 5, 0, 3, 2, 10, 2, 3, -2, 4, 0, 2, 2, 10, 1, 12, 2, 2, 1, 12, -2, 11, 0, 3, -2, 13, 1, 2, -1, 3, 0, 3, 1, 10, -1, 13, 2, 11, 0, 3, 2, 10, 2, 2, -2, 3, 0, 3, 1, 10, 1, 12, -3, 13, 0, 3, 2, 13, -1, 11, 1, 14, 0, 3, 2, 10, 2, 3, -3, 5, 0, 3, 2, 10, 6, 2, -8, 3, 0, 3, -3, 13, 18, 2, -16, 3, 1, 3, 2, 13, 2, 5, -5, 6, 0, 4, 2, 13, 4, 3, -8, 4, 3, 5, 0, 1, 2, 13, 0, 4, -2, 13, 4, 3, -8, 4, 3, 5, 0, 3, -2, 13, 2, 5, -5, 6, 0, 3, 1, 13, 18, 2, -16, 3, 1, 3, -2, 13, -1, 11, 1, 14, 0, 3, 2, 10, 2, 3, -2, 5, 0, 3, 2, 10, 3, 2, -3, 3, 0, 3, 1, 10, 1, 12, 1, 13, 1, 2, 2, 10, 2, 12, 1, 2, 1, 11, 1, 14, 1, 4, -1, 13, -2, 11, 18, 2, -16, 3, 0, 1, 2, 11, 0, 4, -1, 13, 2, 11, 18, 2, -16, 3, 0, 2, -3, 11, 1, 14, 0, 3, 2, 13, 1, 2, -1, 3, 0, 3, 2, 10, 4, 2, -4, 3, 0, 3, 2, 10, 1, 12, -4, 13, 0, 2, 1, 10, -3, 13, 0, 3, 2, 13, 1, 3, -1, 5, 0, 2, 1, 12, 2, 13, 2, 3, 1, 10, 2, 12, 1, 13, 0, 3, 1, 10, -1, 13, -2, 11, 0, 2, 1, 12, 2, 11, 1, 3, 2, 10, 5, 2, -5, 3, 0, 2, 2, 10, -4, 13, 0, 3, 2, 10, 6, 2, -6, 3, 0, 2, 2, 12, 2, 13, 0, 3, 2, 10, -2, 13, -2, 11, 0, 2, 2, 12, 2, 11, 0, 2, 2, 10, -4, 11, 0, 3, 2, 10, 7, 2, -7, 3, 0, 3, 2, 10, -1, 12, -4, 13, 0, 4, 2, 10, -1, 12, -2, 13, -2, 11, 0, 3, 2, 10, 8, 2, -8, 3, 0, 3, 2, 10, 9, 2, -9, 3, 0, 3, 4, 10, -3, 12, -1, 13, 0, 3, 6, 10, -1, 12, -3, 13, 0, 3, 4, 10, -2, 12, -1, 13, 1, 3, 5, 10, -1, 12, -2, 13, 0, 2, 6, 10, -3, 13, 0, 4, 4, 10, -1, 12, 1, 13, -2, 11, 0, 3, 2, 10, -3, 12, 1, 13, 0, 2, 3, 10, -2, 12, 0, 3, 4, 10, -1, 12, -1, 13, 1, 2, 5, 10, -2, 13, 0, 3, 6, 10, 1, 12, -3, 13, 0, 3, 4, 10, 1, 13, -2, 11, 0, 3, 2, 10, -2, 12, 1, 13, 1, 2, 3, 10, -1, 12, 0, 4, -2, 10, -1, 13, 2, 3, -2, 5, 0, 2, 4, 10, -1, 13, 0, 4, 2, 10, -2, 12, -1, 13, 2, 11, 0, 3, 4, 10, -3, 13, 2, 11, 0, 4, -2, 10, -1, 13, 2, 2, -2, 3, 0, 3, 2, 10, -1, 12, 1, 13, 2, 4, -2, 10, -1, 13, 1, 3, -1, 5, 0, 1, 3, 10, 0, 3, 4, 10, 1, 12, -1, 13, 1, 4, 2, 10, -1, 12, -1, 13, 2, 11, 1, 4, -2, 10, -1, 13, 1, 2, -1, 3, 0, 3, 2, 10, 3, 13, -2, 11, 0, 2, 2, 12, -3, 13, 0, 3, 1, 10, -1, 12, 2, 13, 0, 4, 2, 10, 1, 13, -1, 11, 1, 14, 0, 4, -2, 10, -2, 13, 18, 2, -16, 3, 0, 5, 2, 10, 1, 13, 4, 3, -8, 4, 3, 5, 0, 2, 2, 10, 1, 13, 1, 5, -2, 10, -1, 13, 4, 3, -8, 4, 3, 5, 0, 3, 2, 10, 18, 2, -16, 3, 0, 4, -2, 10, -1, 13, -1, 11, 1, 14, 0, 4, 4, 10, -1, 13, 2, 3, -2, 5, 0, 4, 4, 10, -1, 13, 3, 2, -3, 3, 0, 2, 3, 10, 1, 12, 1, 3, 4, 10, 2, 12, -1, 13, 0, 4, 2, 10, -1, 13, 1, 11, 1, 14, 0, 3, 2, 10, -1, 13, 2, 11, 0, 2, 1, 12, -3, 13, 1, 2, 1, 10, 2, 13, 0, 3, 2, 10, 1, 12, 1, 13, 1, 3, 1, 12, -1, 13, -2, 11, 1, 2, 1, 10, 2, 11, 0, 4, 2, 10, 1, 12, -1, 13, 2, 11, 0, 1, 3, 13, 0, 4, 2, 10, 1, 13, 2, 3, -2, 5, 0, 3, 1, 10, 1, 12, 2, 13, 0, 3, 2, 10, 2, 12, 1, 13, 0, 3, 1, 13, 1, 11, 1, 14, 0, 2, 1, 13, 2, 11, 0, 3, 1, 10, 1, 12, 2, 11, 0, 4, 2, 10, 2, 12, -1, 13, 2, 11, 0, 2, 1, 13, -4, 11, 0, 2, 1, 10, -4, 13, 0, 2, 1, 12, 3, 13, 1, 3, 1, 12, 1, 13, 2, 11, 1, 2, 2, 10, -5, 13, 0, 3, 2, 10, -3, 13, -2, 11, 0, 3, 2, 10, -1, 13, -4, 11, 0, 3, 6, 10, -2, 12, -2, 13, 0, 2, 4, 10, -3, 12, 0, 3, 6, 10, -1, 12, -2, 13, 0, 2, 4, 10, -2, 12, 1, 2, 6, 10, -2, 13, 0, 2, 4, 10, -1, 12, 1, 2, 5, 10, -1, 13, 0, 3, 6, 10, 1, 12, -2, 13, 0, 4, 4, 10, -1, 12, -2, 13, 2, 11, 0, 3, 4, 10, 2, 13, -2, 11, 0, 3, 2, 10, -2, 12, 2, 13, 0, 1, 4, 10, 0, 3, 2, 10, -2, 12, 2, 11, 0, 3, 4, 10, -2, 13, 2, 11, 0, 3, 2, 10, -1, 12, 2, 13, 1, 2, 3, 10, 1, 13, 0, 2, 4, 10, 1, 12, 1, 3, 2, 10, -1, 12, 2, 11, 1, 3, 3, 10, -1, 13, 2, 11, 0, 2, 2, 10, 2, 13, 0, 3, 3, 10, 1, 12, 1, 13, 0, 3, 2, 10, 1, 11, 1, 14, 0, 2, 2, 10, 2, 11, 0, 2, 1, 12, -4, 13, 0, 2, 1, 10, 3, 13, 0, 3, 2, 10, 1, 12, 2, 13, 1, 3, 1, 12, -2, 13, -2, 11, 0, 3, 1, 10, 1, 13, 2, 11, 0, 3, 2, 10, 1, 12, 2, 11, 0, 1, 4, 13, 0, 3, 1, 10, 1, 12, 3, 13, 0, 2, 2, 13, 2, 11, 0, 4, 1, 10, 1, 12, 1, 13, 2, 11, 0, 1, 4, 11, 0, 2, 1, 12, 4, 13, 0, 3, 1, 12, 2, 13, 2, 11, 0, 3, 2, 10, -4, 13, -2, 11, 0, 3, 6, 10, -2, 12, -1, 13, 0, 2, 8, 10, -3, 13, 0, 3, 6, 10, -1, 12, -1, 13, 0, 3, 4, 10, -2, 12, 1, 13, 0, 2, 6, 10, -1, 13, 0, 3, 4, 10, -1, 12, 1, 13, 1, 3, 6, 10, 1, 12, -1, 13, 0, 4, 4, 10, -1, 12, -1, 13, 2, 11, 0, 3, 2, 10, -2, 12, 3, 13, 0, 2, 4, 10, 1, 13, 0, 3, 4, 10, -1, 13, 2, 11, 0, 3, 2, 10, -1, 12, 3, 13, 0, 3, 4, 10, 1, 12, 1, 13, 0, 4, 2, 10, -1, 12, 1, 13, 2, 11, 0, 2, 2, 10, 3, 13, 0, 3, 2, 10, 1, 13, 2, 11, 0, 3, 2, 10, -1, 13, 4, 11, 0, 3, 2, 10, 1, 12, 3, 13, 0, 3, 1, 12, -3, 13, -2, 11, 0, 3, 1, 10, 2, 13, 2, 11, 0, 4, 2, 10, 1, 12, 1, 13, 2, 11, 0, 1, 5, 13, 0, 2, 3, 13, 2, 11, 0, 2, 1, 13, 4, 11, 0, 3, 1, 12, 3, 13, 2, 11, 0, 2, 8, 10, -2, 13, 0, 2, 6, 10, -1, 12, 0, 1, 6, 10, 0, 3, 6, 10, -2, 13, 2, 11, 0, 3, 4, 10, -1, 12, 2, 13, 0, 3, 4, 10, -1, 12, 2, 11, 0, 2, 4, 10, 2, 13, 0, 2, 4, 10, 2, 11, 0, 3, 2, 10, -1, 12, 4, 13, 0, 3, 4, 10, 1, 12, 2, 13, 0, 4, 2, 10, -1, 12, 2, 13, 2, 11, 0, 2, 2, 10, 4, 13, 0, 3, 2, 10, 2, 13, 2, 11, 0, 2, 2, 10, 4, 11, 0, 1, 6, 13, 0, 2, 4, 13, 2, 11, 0, 2, 2, 13, 4, 11, 0, 3, 6, 10, -1, 12, 1, 13, 0, 2, 6, 10, 1, 13, 0, 2, 4, 10, 3, 13, 0, 3, 4, 10, 1, 13, 2, 11, 0, 2, 2, 10, 5, 13, 0, 3, 2, 10, 3, 13, 2, 11, 0, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static KeplerGlobalCode.plantbl moonlr = new KeplerGlobalCode.plantbl(14, new int[19] { 3, 26, 29, 23, 5, 10, 0, 0, 0, 8, 4, 4, 6, 2, 0, 0, 0, 0, 0 }, 3, args, tabl, tabb, tabr, 0.00257356868953d, 3652500.0d, 0.0001d); + + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Nep404Data.cs b/ASCOM.Tools/Kepler/Planets/Nep404Data.cs new file mode 100644 index 0000000..8a8b405 --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Nep404Data.cs @@ -0,0 +1,286 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Nep404Data + { + // /* + // First date in file = 625296.50 + // Number of records = 16731.0 + // Days per record = 131.0 + // Julian Years Lon Lat Rad + // -3000.0 to -2499.7: 0.44 0.30 0.50 + // -2499.7 to -1999.7: 0.39 0.20 0.39 + // -1999.7 to -1499.7: 0.31 0.15 0.31 + // -1499.7 to -999.8: 0.32 0.19 0.36 + // -999.8 to -499.8: 0.29 0.15 0.29 + // -499.8 to 0.2: 0.31 0.14 0.27 + // 0.2 to 500.2: 0.28 0.14 0.27 + // 500.2 to 1000.1: 0.34 0.15 0.39 + // 1000.1 to 1500.1: 0.31 0.16 0.31 + // 1500.1 to 2000.1: 0.33 0.16 0.29 + // 2000.1 to 2500.0: 0.38 0.21 0.36 + // 2500.0 to 3000.0: 0.43 0.25 0.46 + // 3000.0 to 3000.4: 0.122 0.071 0.260 + // */ + + internal static double[] tabl = new double[] { -1376.8648d, 730.3897d, 78655362.50948d, 1095691.38676d, -196.19023d, 2086.77782d, -122.0465d, -276.81592d, 184.56164d, -148.08924d, 3.39142d, -14.75027d, -9.22741d, 0.87688d, -0.13903d, -0.44707d, -0.17668d, -0.36299d, -0.12682d, -0.26636d, -0.51426d, -0.24667d, -0.04965d, -0.03177d, 0.0505d, -0.00249d, -0.80362d, -0.07363d, -0.15436d, -0.0718d, 2.45034d, -3.50145d, 0.86698d, 0.09777d, 7.72386d, 7.16565d, 2.10273d, 8.86682d, 2.44705d, 77.90155d, 0.28323d, -11.87157d, -13.64083d, 252.70556d, -4.94214d, -6.17988d, -305.60504d, 51.23962d, -2759.81719d, 2476.20912d, 12.65762d, 13.31543d, 0.36996d, -0.19077d, 0.67363d, 0.36737d, 0.02312d, 0.02216d, 0.09953d, 0.04777d, -0.00572d, -0.02772d, -0.02478d, -0.2192d, -0.15289d, -1.50784d, -0.17822d, 0.34638d, -0.70473d, -8.61559d, -2.65756d, 1.25632d, -0.31453d, -1.40348d, -4.02571d, -1.50467d, -69.62308d, 3.21315d, 0.69973d, 0.08832d, -0.00551d, -0.04964d, -0.02264d, -0.34881d, 0.00762d, -1.85072d, 0.01407d, -0.30457d, -0.09851d, -0.02372d, -0.07729d, -0.11602d, -0.75995d, -0.71884d, -0.08585d, -0.30406d, 0.45818d, 0.14921d, -0.01033d, -0.11776d, 0.0064d, -0.57717d, -0.01014d, -0.01357d, -0.00544d, -0.02168d, 0.40468d, 0.28195d, 0.00668d, 0.14448d, 0.01245d, -0.08956d, -0.26283d, 0.01864d, -0.00641d, 18.55347d, 0.0146d, 0.08284d, -0.04785d, 0.1136d, -0.33861d, 0.01327d, -0.06392d, -0.18758d, 0.05449d, -0.05583d, -0.00435d, -0.09869d, -0.00286d, -0.04613d, -0.00395d, -0.14564d, -0.01385d, -0.01762d, 0.2116d, -0.61631d, -0.521d, -0.04583d, 0.32812d, 0.32138d, 0.04749d, -0.05724d, 0.11239d, 0.13216d, -0.01203d, 0.40084d, -0.05207d, 34.07903d, -0.21457d, -0.34938d, -0.04594d, 0.11198d, -0.30662d, -0.20776d, -0.01076d, -0.10959d, 0.10891d, -0.10304d, -0.28141d, 0.25061d, -0.20293d, 0.7993d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabb = new double[] { -391.05987d, -243.95958d, -23.83558d, 58.13857d, 5.04859d, -3.93183d, -14.21914d, 7.14247d, -12.09415d, -9.70132d, 1.04307d, 0.47323d, -0.07504d, 0.70575d, -0.05239d, 0.00482d, -0.02916d, 0.00877d, -0.00528d, -0.00286d, 0.00028d, -0.00228d, -0.00056d, -0.00149d, 0.00049d, 0.00047d, -0.18765d, -0.59571d, 0.03742d, -0.14653d, 2.30535d, 0.65092d, 0.42216d, 0.24521d, -2.86932d, 2.37808d, -0.58456d, 0.27446d, -1.12264d, -2.04413d, -11.71318d, -1.41554d, -23.30671d, -24.70499d, 8.82738d, 85.64657d, -90.02223d, 22.42604d, -4749.41359d, -4244.4682d, 25.20811d, -18.51469d, -1.19892d, -0.61067d, 0.67734d, -1.08912d, -0.01607d, 0.00626d, -0.00008d, 0.00126d, -0.0033d, -0.00078d, -0.01503d, 0.00758d, -0.13208d, -0.00218d, -0.04522d, 0.20297d, -0.94708d, -0.77897d, -2.74075d, -3.01122d, -1.03394d, 0.00886d, 1.55485d, -4.68416d, -0.13244d, -57.26983d, 0.05589d, -0.55396d, -0.0013d, 0.00526d, -0.01028d, 0.02086d, 0.01334d, 0.00699d, 0.08565d, 0.0202d, 0.01001d, -0.08402d, 0.08558d, -0.04488d, 0.57268d, -0.59574d, 0.00807d, 0.00492d, 0.21993d, -0.18949d, -0.00396d, 0.00735d, 0.00487d, 0.0023d, 0.00699d, -0.00473d, 0.01406d, -0.00139d, 0.00738d, 0.00099d, 0.00161d, 0.00019d, -0.00067d, -0.00047d, 0.00572d, -0.00486d, -0.00842d, 0.00322d, 0.00018d, -0.00109d, -0.00272d, 0.00112d, -0.00041d, 0.00763d, 0.00211d, 0.00118d, -0.46842d, -0.17877d, 0.00209d, -0.00179d, 0.0009d, -0.00075d, 0.00618d, 0.0061d, 0.00015d, 0.00032d, -0.00123d, 0.00026d, 0.00332d, 0.00135d, 0.3913d, -0.34727d, 0.00015d, -0.00027d, -0.00026d, -0.00052d, 0.00162d, 0.00913d, -0.00697d, 0.00308d, -0.00333d, -0.00258d, -0.00117d, 0.00035d, 0.00766d, 0.00194d, 0.00135d, 0.00067d, -0.41171d, 0.24241d, 0.00106d, 0.00025d, 0.00013d, -0.00019d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabr = new double[] { -767.68936d, -460.59576d, -52.41861d, -273.85897d, 59.52489d, 1.85006d, -39.6475d, 23.63348d, -34.60399d, -23.41681d, 2.74937d, 1.55389d, 0.20343d, 2.15502d, -0.12846d, 0.07199d, -0.07555d, 0.05582d, -0.04354d, 0.01546d, -0.03931d, 0.07623d, -0.00491d, 0.00661d, 0.00322d, 0.0154d, -0.06741d, -0.35343d, 0.00469d, -0.08073d, 1.94975d, 0.66376d, 0.06137d, 0.31426d, -2.93841d, 4.27732d, -4.00342d, 1.11157d, -36.87785d, 1.2496d, 4.69573d, 2.15164d, -114.24899d, -6.6932d, 12.99919d, -9.47795d, -21.8235d, -156.88624d, -1237.19769d, -1379.88864d, 6.54369d, -6.20873d, -0.14163d, -0.327d, 0.17937d, -0.34864d, 0.01393d, -0.01286d, 0.02876d, -0.05767d, 0.0221d, -0.00128d, 0.16495d, -0.01242d, 1.15915d, -0.10365d, -0.33224d, -0.10045d, 6.83719d, -0.27499d, -0.31284d, -0.94332d, 1.63704d, -0.33318d, 1.48134d, -1.32257d, 0.96498d, -8.31047d, -0.00402d, -0.09441d, 0.04292d, -0.00444d, 0.30325d, -0.02012d, 1.67999d, 0.00353d, 0.00467d, 0.03556d, 0.01393d, -0.01229d, 0.01188d, -0.0139d, 0.04615d, -0.03509d, 0.32423d, -0.12491d, 0.13682d, 0.15131d, 0.11221d, -0.01201d, 0.57239d, 0.00093d, 0.02068d, -0.01162d, 0.00647d, -0.00325d, 0.2701d, -0.42993d, 0.14314d, -0.01353d, -0.08757d, -0.00699d, 0.00199d, 0.31873d, 18.80329d, 0.01681d, 0.08009d, -0.00998d, -0.14421d, -0.15912d, 0.37208d, 0.49744d, 0.35144d, 0.06582d, -0.11501d, -0.14037d, 0.10352d, -0.00768d, 0.04826d, -0.00423d, 0.1985d, 0.0031d, -0.0178d, 0.0135d, -0.61106d, -0.20525d, -0.04388d, 0.52143d, 0.193d, -0.21446d, -0.05749d, -0.04776d, 0.12877d, -0.10908d, 0.39821d, 0.00627d, 34.03956d, 0.04392d, -0.34455d, 0.22015d, 0.11743d, 0.04638d, 0.20723d, -0.30447d, 0.10976d, -0.01008d, -0.20778d, -0.21822d, 0.24939d, 0.27976d, 0.7979d, 0.202d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 3, 2, 1, 7, -2, 8, 0, 3, 3, 5, -8, 6, 3, 8, 0, 2, 2, 7, -4, 8, 0, 3, 1, 5, -3, 6, 3, 8, 0, 2, 3, 7, -6, 8, 0, 2, 4, 7, -8, 8, 0, 3, 1, 6, -6, 7, 6, 8, 0, 3, 1, 6, -5, 7, 4, 8, 0, 3, 1, 6, -4, 7, 2, 8, 0, 2, 1, 6, -3, 7, 0, 3, 1, 6, -2, 7, -1, 8, 0, 2, 5, 7, -9, 8, 1, 2, 4, 7, -7, 8, 1, 2, 3, 7, -5, 8, 1, 2, 2, 7, -3, 8, 0, 2, 1, 7, -1, 8, 1, 1, 1, 8, 2, 2, 1, 7, -3, 8, 0, 2, 2, 7, -5, 8, 1, 3, 1, 6, -6, 7, 5, 8, 0, 3, 1, 6, -5, 7, 3, 8, 0, 2, 5, 7, -8, 8, 0, 2, 4, 7, -6, 8, 0, 2, 3, 7, -4, 8, 0, 2, 2, 7, -2, 8, 1, 1, 1, 7, 0, 1, 2, 8, 2, 2, 1, 7, -4, 8, 0, 2, 5, 7, -7, 8, 0, 2, 4, 7, -5, 8, 0, 2, 3, 7, -3, 8, 0, 2, 2, 7, -1, 8, 0, 2, 1, 7, 1, 8, 0, 1, 3, 8, 1, 2, 1, 6, -2, 8, 1, 2, 5, 7, -6, 8, 0, 2, 4, 7, -4, 8, 0, 1, 4, 8, 1, 3, 2, 5, -4, 6, -1, 8, 1, 3, 1, 6, 1, 7, -3, 8, 0, 2, 1, 6, -1, 8, 1, 3, 1, 6, -1, 7, 1, 8, 0, 3, 2, 5, -6, 6, 1, 8, 0, 2, 5, 7, -5, 8, 1, 1, 1, 6, 0, 2, 6, 7, -6, 8, 0, 2, 7, 7, -7, 8, 0, 2, 2, 6, -2, 8, 0, 3, 2, 5, -3, 6, -1, 8, 0, 2, 2, 6, -1, 8, 1, 2, 1, 5, -2, 8, 0, 3, 3, 5, -5, 6, -1, 8, 0, 2, 4, 7, 5, 8, 0, 2, 1, 5, -1, 8, 1, 3, 1, 5, -1, 7, 1, 8, 1, 3, 1, 5, -5, 6, 1, 8, 1, 1, 1, 5, 0, 2, 2, 5, -1, 8, 1, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // /* Total terms = 59, small = 58 */ + internal static KeplerGlobalCode.plantbl nep404 = new KeplerGlobalCode.plantbl(9, new int[19] { 0, 0, 0, 0, 3, 8, 7, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 3, args, tabl, tabb, tabr, 30.1103868694d, 3652500.0d, 1.0d); + + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Plu404Data.cs b/ASCOM.Tools/Kepler/Planets/Plu404Data.cs new file mode 100644 index 0000000..0e0bfd9 --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Plu404Data.cs @@ -0,0 +1,865 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Plu404Data + { + // /* + // First date in file = 625296.50 + // Number of records = 16731.0 + // Days per record = 131.0 + // Julian Years Lon Lat Rad + // -3000.0 to -2499.7: 1.17 0.90 0.83 + // -2499.7 to -1999.7: 0.57 0.51 0.58 + // -1999.7 to -1499.7: 0.63 0.39 0.40 + // -1499.7 to -999.8: 0.40 0.45 0.41 + // -999.8 to -499.8: 0.42 0.22 0.30 + // -499.8 to 0.2: 0.41 0.24 0.35 + // 0.2 to 500.2: 0.58 0.24 0.26 + // 500.2 to 1000.1: 0.47 0.35 0.33 + // 1000.1 to 1500.1: 0.43 0.31 0.28 + // 1500.1 to 2000.1: 0.37 0.40 0.35 + // 2000.1 to 2500.0: 0.46 0.35 0.39 + // 2500.0 to 3000.0: 1.09 0.70 0.46 + // 3000.0 to 3000.4: 0.871 0.395 0.051 + // */ + + internal static double[] tabl = new double[] { 74986469.33577d, 100898343.7369d, 48199471.54076d, 9520076.03177d, 690431.6734d, -427355.12716d, 52266623.77862d, 860190.70714d, -21.08511d, -143.39295d, -126.71124d, 48.18528d, -88.74508d, 40.50942d, 51.29367d, -10.24075d, 0.63094d, 32.03258d, -410.00781d, 399.90234d, -116.54319d, 51.50329d, 116.84565d, 687.76781d, -13.38605d, 182.70107d, -1668.12226d, -5162.22648d, -585.68297d, -2247.56041d, -20.95875d, -193.13703d, -57.12097d, -10.35058d, -1778.01442d, -6463.73779d, -657.86093d, -2713.44436d, -41.3256d, -211.82042d, -107.16513d, -36.58628d, 97929588.08231d, -33582903.63417d, 143382679.3177d, -47411568.92345d, 79428827.73581d, -24658834.87499d, 19861233.17488d, -5755585.62084d, 1995060.95931d, -693507.08147d, 135176.31467d, 109360.38672d, -8188.00598d, -1680.95072d, 71020.19608d, -70785.39049d, -24.56034d, -20.34919d, 1618.45976d, -2079.48538d, 635.62954d, -850.87068d, 44.95257d, -64.04459d, -18.61475d, -1.77734d, 9.38079d, 5.19958d, 17422.08783d, -4872.53852d, 10985.76629d, -1137.68569d, 1771.28893d, 288.93745d, 40.22664d, 37.90027d, 6.81361d, -32.65868d, 16.97268d, 11.76152d, 29.33024d, -12.92289d, -55.13187d, -14.73791d, 7.52474d, -102.0506d, 182.53144d, -20.1896d, -490237997.494d, 486646248.6336d, -781277018.2643d, 602300460.5729d, -463787999.4642d, 249529525.961d, -123964746.8642d, 31353019.97807d, -13353800.92159d, -3463382.63269d, -35469.17654d, -1035343.45385d, 65076.64025d, -38181.61312d, -16473.33813d, 3928.44674d, 188.60263d, 1000.4253d, -208376.39376d, -700566.62363d, 114839.84613d, -342407.71113d, 39467.04812d, -14553.84849d, 581895.261d, 1012499.16715d, 406317.22416d, 310804.78515d, 43625.07033d, -4157.26545d, -5930.13795d, -2070.62413d, 3348.17582d, -10871.23729d, 144609.1855d, 60383.6365d, 27912.02226d, 15254.61228d, -98561.37758d, -67442.28158d, -15573.63338d, -19931.99773d, 24323.06905d, -37473.32558d, 2840.64042d, -8911.23694d, -19636.31898d, 71725.21946d, -12280.54554d, 12251.00101d, 88626.5226d, 5513.6845d, 18506.41546d, -6513.87434d, -83350.14621d, 44300.00743d, -22075.37353d, 3731.57531d, -29167.7602d, -21642.67384d, 56602666.72177d, -22225578.01823d, 50576897.80669d, -50319847.79086d, 5689259.25622d, -29585299.79697d, -4249711.27661d, -4490830.29568d, -727678.08724d, 366050.85631d, 19183.62792d, 55647.98226d, 1897.78091d, -1091.03988d, 432.38158d, -138.62556d, 101.38743d, 25.67379d, 320.20735d, 362.16615d, 85.06067d, 54.02616d, 2.3946d, 18.70004d, -8.43353d, 2.721d, -3.11205d, -3.06201d, 136.31503d, -28.3362d, 48.68781d, -18.45285d, 1.15302d, -1.5236d, -0.13706d, -0.37489d, 0.0875d, -0.14579d, -0.07051d, -0.06518d, 0.30237d, -0.00448d, 4.83172d, 6.83684d, 1752447.78043d, -945086.75857d, 2340978.12819d, -1963675.42559d, 1254147.25257d, -1274861.91191d, 279459.60237d, -263954.01378d, 11835.6229d, -16344.44434d, 9119.9896d, -2390.44218d, -23.67909d, 86.73916d, -642.78635d, -1290.12208d, -0.43345d, -1.85348d, 0.03094d, -0.01655d, 0.1238d, 0.31834d, 5.54756d, -1.63109d, 1.10598d, -0.17578d, 2.66994d, -2.17573d, 0.9736d, -0.92226d, -0.18533d, -0.39747d, 0.45809d, -0.65286d, 0.26129d, 0.91922d, 0.81068d, 0.11183d, 6.32182d, 14.16786d, 0.20872d, 3.28489d, -1.47458d, -2.11724d, 1.7002d, -1.99889d, 3.13003d, 1.90638d, -4483669.52795d, -446454.90158d, -6586256.67478d, -671890.16779d, -3620444.55554d, -499672.41074d, -855998.32655d, -191073.94266d, -73186.6911d, -22649.38582d, -2414.81729d, -1294.40542d, 436.80907d, 125.48109d, -81.16877d, 458.86508d, -11.57414d, -26.39114d, -4.00801d, -5.01054d, -18.17569d, 20.86879d, -4.80965d, 3.10535d, -4.71122d, 1.18169d, 74.75544d, 649.21464d, -26.5506d, 272.35592d, -8.06982d, 16.8611d, -26.54868d, 26.75711d, -35.8291d, 38.51063d, 22.22814d, 19.38336d, -6.30462d, 0.90602d, 0.62856d, -0.34981d, -0.10232d, -0.00939d, 0.04439d, -0.18875d, 0.16025d, 0.11306d, -0.06803d, 0.06004d, -91305.66728d, 262370.61704d, -194633.44577d, 304838.17733d, -124505.90904d, 94111.75602d, -22317.18255d, 1575.23438d, 748.66316d, -349.78711d, 166.6445d, -89.05045d, 120.76207d, -100.26715d, 3.13806d, 3.71747d, -1.44731d, -0.35235d, -0.5166d, -1.50621d, 2.8131d, -3.93573d, 1.20292d, -0.36412d, -0.0334d, -0.00561d, -5.29764d, 26.02941d, 1.91382d, 3.30686d, -3.35265d, -3.20868d, 0.05807d, -0.11885d, -0.78588d, 0.34807d, -0.19038d, 0.11295d, -0.03642d, -0.03794d, 0.00251d, 0.03449d, -0.08426d, -0.0031d, 0.05297d, -0.09278d, 0.10941d, 0.00099d, -228688.56632d, 312567.73069d, -331458.31119d, 328200.1946d, -143760.57524d, 104182.01134d, -17313.30132d, 12591.15513d, -440.32735d, -105.67674d, 104.35854d, -852.8459d, 0.95527d, 0.30212d, -54.63983d, 4.06948d, 0.07545d, -0.13429d, 16.21005d, 29.24658d, 9.2341d, 50.48867d, 30.55641d, 12.76809d, 0.11781d, 0.70929d, -0.041d, 13.60859d, 0.04976d, -0.02083d, 0.36279d, 0.3013d, -0.02129d, 0.09363d, -0.07812d, 0.0157d, -0.06217d, -0.37181d, -29348.55031d, 43889.87672d, -35765.41577d, 33855.9007d, -10128.69894d, 4535.32148d, 281.75353d, -218.49194d, -7.55224d, 134.2864d, 2.11319d, -2.13109d, 15.71244d, 11.07183d, -0.05406d, -0.23337d, -1.28949d, 1.34281d, 0.04212d, -0.0208d, 0.08109d, 0.1482d, -6010.46564d, 3639.4178d, -5973.16d, 1381.66999d, -1177.36865d, -501.06937d, 166.14792d, -103.36431d, 14.92766d, 4.12877d, -2.20893d, -6.32033d, -0.29038d, -0.43172d, -0.59341d, 0.20477d, -0.13143d, -0.0315d, 0.10992d, 0.01976d, -0.00254d, 0.02028d, -0.30044d, -0.44658d, -0.03409d, -0.10758d, 0.08349d, 0.06153d, -0.06055d, 0.18249d, -1.15341d, -8.68699d, -0.11348d, -3.30688d, 1.08604d, 1.04018d, -0.46892d, -0.69765d, 0.21504d, 0.01968d, -0.00455d, -0.01678d, 3.95643d, -3.17191d, 3.9522d, -2.1267d, 0.99305d, -0.16651d, 0.34839d, -0.49162d, 0.85744d, 0.20173d, -0.00975d, 0.20225d, -0.02627d, -0.02281d, -0.18002d, -0.01803d, -0.06144d, -0.2151d, 0.15935d, -0.01251d, -0.21378d, 0.44806d, -0.01174d, 0.05779d, 0.07646d, -0.19656d, -0.04044d, -0.02521d, 0.02996d, 0.06169d, 0.16698d, -0.0471d, -0.06506d, -0.02114d, 0.055d, 0.00276d, 0.08433d, 0.0316d, 0.08193d, 0.35773d, 0.05454d, 0.10718d, -0.02823d, -0.00839d, 0.54078d, 0.49347d, 0.09609d, 0.11825d, -0.16092d, -0.11897d, 0.09059d, 0.08254d, 0.16712d, 0.0586d, -0.09547d, -0.03206d, 0.03876d, 0.04719d, -0.02345d, 0.0224d, -0.00609d, -0.00649d, 0.03859d, 0.00077d, 0.47819d, 0.26196d, 0.0978d, 0.08104d, -0.16919d, 0.05042d, -0.42652d, 0.3081d, -0.03409d, -0.51452d, -0.2312d, -0.0138d, -0.01157d, -0.00143d, -0.00512d, -0.01628d, -0.00189d, 0.00183d, -0.01427d, -0.02861d, 0.00618d, -0.00015d, 0.13087d, 0.1387d, 0.15158d, -0.21056d, -3.94829d, -1.06028d, -1.36602d, 0.77954d, 0.08709d, -0.03118d, -44.74949d, 91.17393d, 8.78173d, 45.8401d, 1.9756d, -15.02849d, -0.10755d, -0.02884d, 3.3867d, 0.30615d, 130.92778d, -24.33209d, 43.01636d, -40.81327d, -19.439d, 22.18162d, -0.12691d, 0.33795d, -6.4479d, -6.23145d, 0.00319d, 0.01141d, -0.03252d, 0.03872d, 0.04467d, 0.01614d, -0.00382d, -0.00019d, 0.05955d, 0.01533d, 16.11371d, 41.37565d, 61.44963d, 6.90615d, 1.41326d, -0.7392d, -0.03871d, 24.81978d, -0.10229d, -0.32775d, -0.05188d, -0.05628d, -2.33618d, 2.39053d, -0.00584d, 0.00436d, 0.20903d, 0.0222d, -0.01738d, -0.02765d, -0.00217d, 0.00613d, -0.01772d, 0.01903d, 0.07075d, -0.0053d, 0.15234d, -0.3776d, -0.11641d, -0.20102d, -0.63675d, 0.20525d, -0.15783d, 0.58945d, -0.06243d, 0.04306d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabb = new double[] { -35042727.30412d, -49049197.81293d, -25374963.60995d, -5761406.03035d, -467370.5754d, 14040.11453d, 2329.15763d, -13978.6939d, 45.43441d, 29.70305d, 32.33772d, -38.34012d, 26.43575d, -28.76136d, -18.5904d, 12.64837d, 5.56569d, -12.51581d, 248.3735d, -64.44466d, 54.02618d, 4.39466d, -269.35114d, -290.63134d, -48.03841d, -52.83576d, 1508.94995d, 1682.78967d, 554.02336d, 715.65819d, 34.37602d, 58.44397d, 16.63685d, 16.10176d, -1069.51609d, 2300.89166d, -437.16796d, 927.89245d, -33.17679d, 68.74495d, 18.72022d, 32.9764d, -34004958.12619d, -17758805.77098d, -48416073.75788d, -24973405.03542d, -25374996.23732d, -13351084.9734d, -5738294.54942d, -3082092.6335d, -519989.39256d, -206440.89101d, 44186.23548d, -87639.2263d, 2506.47602d, 2327.01164d, -53878.47903d, -19670.13471d, 2.66934d, -3.86086d, 106.32427d, 576.47944d, 46.56388d, 218.28339d, 4.35402d, 15.04642d, 2.68717d, -2.86835d, 0.81728d, -2.34417d, -1604.85823d, -1999.24986d, -631.47343d, -1382.19156d, -15.74075d, -256.97077d, 6.99648d, -4.54257d, 2.63478d, 1.88838d, 0.17628d, -2.11518d, -2.46735d, -1.48743d, 1.83456d, 4.68487d, -7.10919d, 3.57046d, -5.36342d, -7.70367d, 28395956.20816d, -37176795.74372d, 48969952.83034d, -48145798.96248d, 31155823.23557d, -21163596.14822d, 9057634.3826d, -3167688.51696d, 1167488.70078d, 219103.97591d, -19017.97335d, 107849.61195d, -3814.43474d, 4405.9212d, 5800.13959d, 12619.88708d, 22.18168d, -89.47801d, 52202.81929d, 55119.44083d, 5082.58907d, 37955.06062d, -3165.24355d, 3316.67588d, -113906.4397d, -69279.41495d, -57358.07767d, -10176.17329d, -4179.79867d, 2495.99374d, 787.8718d, -154.35591d, -1148.62509d, 1034.58199d, -22194.95235d, 3341.97949d, -4578.53994d, 108.30832d, 7444.39789d, 16646.40725d, 509.7543d, 3808.92686d, -179.85869d, 7408.76716d, 340.65366d, 1504.64227d, -3783.09873d, -13505.60867d, 875.74489d, -3181.27898d, -16220.93983d, 8041.37347d, -2631.07448d, 2899.50781d, 18894.92095d, -20072.81471d, 5925.05701d, -1947.91902d, -6731.56601d, 8014.52403d, -987793.49463d, 6491762.34471d, -279205.73643d, 6117135.96868d, -140925.91402d, 2259422.06929d, 114028.61646d, 605600.90358d, 91858.00186d, 56506.65187d, 8949.15777d, -9782.67413d, -394.66541d, -105.19208d, -76.54752d, -32.59411d, -19.28741d, 10.40013d, -107.64003d, -7.36229d, -22.25126d, 4.05952d, -3.74402d, -2.79308d, 1.03337d, -2.13968d, 1.53794d, -0.02617d, 35.70756d, 12.97733d, 14.46213d, 6.20518d, 1.79381d, 1.65422d, -0.31216d, 0.29053d, -0.03538d, -0.01584d, -0.08934d, 0.00079d, 0.05539d, -0.21591d, 2.86929d, -2.24724d, 320797.07455d, 93342.16556d, -20903.39115d, 79523.22083d, -226588.37473d, -121017.23944d, -48472.25935d, -74195.36778d, -7962.48081d, -4607.76339d, -4597.33274d, -7983.12541d, -20.345d, 56.82999d, -1038.19507d, 619.69624d, 1.08907d, -0.91278d, -0.13391d, 0.34956d, -0.19982d, -0.18296d, -0.97688d, 2.36806d, -0.30127d, 0.5098d, 0.96103d, 1.96432d, 0.43338d, 0.87317d, 0.36997d, -0.01583d, -0.44692d, -0.25159d, -0.53525d, 0.01154d, -0.13231d, 0.35562d, 3.88928d, -4.02882d, 1.06967d, -0.56305d, -0.45204d, 0.77213d, -0.82873d, -0.25854d, 0.21136d, -1.06696d, 458529.05491d, 616790.47568d, 698431.01349d, 1124501.41713d, 300226.10339d, 766533.33698d, 26896.22954d, 207880.7572d, 1116.29607d, 21793.26153d, -850.64044d, 3528.95568d, 29.61278d, -120.13367d, 376.95131d, 66.45758d, -3.64868d, 2.76062d, -0.85352d, 0.95115d, 5.35056d, 2.52803d, 0.90026d, 0.76403d, 0.43191d, 0.83605d, 125.81792d, -39.65364d, 50.14425d, -5.75891d, 2.78555d, 2.05055d, -4.27266d, -4.92428d, 6.78868d, 5.73537d, 3.35229d, -3.70143d, 0.08488d, 1.07465d, 0.10227d, 0.06074d, 0.00291d, 0.01522d, -0.02274d, 0.00297d, 0.01095d, -0.01856d, -0.02862d, 0.00178d, 143640.07486d, 707.21331d, 177163.08586d, 53386.52697d, 56856.89297d, 48268.74645d, 1764.52814d, 7711.76224d, 352.34159d, -968.03169d, -45.16568d, -81.60481d, -76.35993d, -98.06932d, -1.42185d, 1.81425d, -0.23427d, 0.59023d, 0.57127d, -0.36335d, 1.89975d, 0.6689d, 0.28797d, 0.43592d, -0.03769d, 0.03273d, -6.06571d, -2.68515d, -0.55315d, 0.86977d, 1.5384d, -0.59422d, -0.05453d, 0.02447d, -0.12658d, 0.22814d, -0.01715d, 0.08497d, -0.01288d, -0.00606d, 0.01547d, -0.00692d, 0.01157d, 0.02407d, -0.03883d, 0.00835d, -0.01542d, -0.04761d, 174386.39024d, 158048.26273d, 159192.81681d, 220154.55148d, 33716.11953d, 87537.86597d, -116.90381d, 7535.83928d, -962.06994d, -132.28837d, -644.90482d, -110.52332d, 3.42499d, 3.7466d, -0.94008d, 41.55548d, -0.03824d, -0.05607d, 28.74787d, -37.31399d, 30.87853d, -26.1194d, 10.79742d, -5.97905d, 1.01237d, -0.04429d, 0.54402d, 0.41905d, -0.0244d, -0.03991d, -0.00347d, -0.04362d, -0.00347d, -0.00469d, -0.02707d, 0.02761d, -0.17773d, -0.11789d, 26475.0258d, 35363.04345d, 19877.11475d, 41430.3594d, 2948.09998d, 12983.41406d, 281.93744d, 570.70054d, 147.83157d, 16.0009d, -1.62814d, -8.30846d, 9.29131d, -10.16496d, -0.15799d, 0.03843d, 1.44716d, 0.46953d, -0.0215d, -0.02502d, 0.08861d, -0.0669d, 2237.41551d, 3739.08722d, 753.74867d, 3460.41553d, -298.69226d, 520.47031d, -33.62615d, -138.12767d, 3.61843d, -8.2986d, -4.56656d, 0.79553d, 0.20041d, -0.25771d, -0.35233d, -0.27913d, -0.02799d, -0.08328d, -0.06889d, -0.16853d, 0.01701d, -0.00964d, -0.37737d, 0.1803d, -0.08525d, 0.01906d, 0.05236d, -0.05155d, 0.1132d, 0.05991d, -5.66926d, -0.54402d, -2.08508d, -0.39407d, 0.82155d, -0.55975d, 0.39168d, -0.25551d, 0.00623d, 0.16162d, -0.02519d, 0.0242d, -1.23293d, -3.19649d, -0.60519d, -2.79729d, 0.05362d, -0.61569d, -0.25638d, -0.27033d, -0.03987d, 0.46623d, -0.1207d, 0.00643d, 0.00849d, -0.00768d, -0.03687d, 0.10445d, -0.13544d, -0.00592d, 0.02078d, 0.09172d, 0.15824d, 0.15815d, 0.0202d, 0.00747d, 0.10919d, 0.09553d, 0.01953d, -0.00135d, 0.04266d, -0.00218d, 0.02182d, -0.13742d, -0.01249d, 0.01724d, -0.022d, 0.02975d, -0.01401d, 0.03416d, -0.28873d, 0.04235d, -0.08137d, 0.04223d, -0.00326d, 0.02144d, -0.40423d, 0.14281d, -0.08256d, 0.02142d, 0.08116d, -0.0368d, -0.02324d, 0.0726d, -0.06746d, 0.11645d, 0.03233d, -0.05997d, -0.03101d, 0.02197d, -0.00896d, -0.00491d, 0.00574d, 0.00855d, 0.00052d, 0.01209d, -0.31828d, 0.29955d, -0.08133d, 0.04318d, 0.06787d, -0.08865d, -0.13228d, -0.06507d, 0.34008d, 0.06417d, -0.00177d, -0.15116d, -0.00553d, -0.0195d, 0.01144d, -0.00309d, -0.00115d, -0.00153d, 0.02063d, -0.00791d, -0.00314d, 0.00493d, -0.10614d, 0.08338d, 0.08845d, 0.20168d, 1.38955d, -2.52285d, -0.30475d, -1.05787d, 0.0058d, 0.06623d, -44.33263d, -47.70073d, -29.80583d, -8.77838d, 7.02948d, 2.77221d, 0.05248d, -0.13702d, -0.78176d, 1.77489d, -16.32831d, 46.68457d, 2.54516d, 21.78145d, -5.0908d, -8.42611d, -0.24419d, -0.03315d, 2.80629d, -1.12755d, -0.00402d, 0.00053d, 0.00024d, -0.00043d, 0.00403d, -0.0021d, 0.00603d, 0.00411d, -0.0026d, 0.00416d, 2.29235d, 3.05992d, 2.36465d, -0.5875d, 0.1403d, 0.13523d, 0.89998d, 0.70156d, -0.02188d, 0.02003d, -0.00533d, 0.00447d, 2.96411d, 1.30183d, 0.01422d, 0.00624d, -0.10737d, -0.38316d, -0.05968d, 0.04379d, 0.01171d, 0.0118d, -0.00989d, -0.01375d, -0.00845d, 0.03782d, 0.09484d, 0.09909d, 0.0764d, -0.00898d, -0.01076d, 0.0276d, 0.0163d, 0.02198d, 0.05985d, 0.0413d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabr = new double[] { 17990649.12487d, 24806479.30874d, 12690953.00645d, 2892671.69562d, 249947.71316d, -5138.71425d, 1142.68629d, 6075.25751d, -34.76785d, -19.72399d, -15.81516d, 30.47718d, -11.73638d, 21.87955d, 9.42107d, -10.40957d, -5.5967d, 6.85778d, -167.06735d, -2.31999d, -32.42575d, -13.72714d, 130.16635d, 117.97555d, 31.33915d, 39.64331d, -1378.54934d, -395.83244d, -562.79856d, -167.74359d, -45.12476d, -17.08986d, -4.20576d, -16.56724d, 1762.12089d, -1148.86987d, 736.5532d, -423.09108d, 56.13621d, -26.26674d, 9.7781d, -38.05151d, 4702224.98754d, 27254904.94363d, 5306232.25993d, 39518429.29982d, 1725110.05669d, 21833263.27069d, 46010.62605d, 5425411.66252d, 17238.09865d, 536771.62156d, -61263.36051d, 66270.70142d, 2084.66296d, -1936.71208d, 35898.49503d, 34885.28549d, 1.93276d, 10.66292d, -665.11445d, 3.70467d, -265.68478d, 16.16272d, -19.45954d, 2.32738d, 3.04237d, 3.97339d, -2.64312d, 0.66308d, -3207.68754d, 3418.0372d, -2342.6231d, 1729.1503d, -450.84643d, 179.00943d, -13.20367d, -1.86087d, -4.95659d, 7.22347d, -5.0889d, -1.28891d, -6.21713d, 5.10551d, 13.97276d, 0.44529d, 3.25177d, 25.02775d, -45.56672d, 11.5847d, 124443355.5545d, -100018293.41775d, 190506421.77863d, -118262753.40162d, 108199328.45091d, -45247957.63323d, 27272084.41143d, -4125106.01144d, 2583469.66051d, 1024678.12935d, -22702.55109d, 199269.51481d, -15783.14789d, 5564.52481d, -427.22231d, -6330.86079d, -97.50757d, -204.32241d, -9060.54822d, 156661.77631d, -47791.83678d, 59725.58975d, -8807.74881d, -92.38886d, -28886.11572d, -244419.59744d, -53336.36915d, -92232.16479d, -8724.89354d, -2446.76739d, 889.71335d, 936.51108d, 494.80305d, 2252.83602d, -18326.60823d, -25443.13554d, -3130.86382d, -5426.29135d, 23494.08846d, 91.28882d, 4664.14726d, 1552.06143d, -8090.43357d, 2843.48366d, -1445.73506d, 1023.11482d, 11664.20863d, -7020.08612d, 3100.21504d, -64.16577d, -9724.97938d, -12261.47155d, -3008.08276d, -1523.06301d, 6788.74046d, 10708.27853d, 343.09434d, 1701.5276d, 14743.99857d, -4781.96586d, -15922236.41469d, 1825172.51825d, -14006084.36972d, 10363332.64447d, -979550.9136d, 6542446.18797d, 1160614.26915d, 570804.88172d, 89912.68112d, -171247.08757d, -13899.52899d, -6182.25841d, -240.64725d, 412.42581d, -66.2451d, 71.30726d, -15.81125d, -15.76899d, -21.85515d, -102.12717d, -10.18287d, -19.38527d, 1.43749d, -3.87533d, 1.97109d, 0.20138d, 0.32012d, 1.02928d, -40.22077d, 20.80684d, -15.69766d, 9.63663d, -1.2601d, 0.56197d, 0.08592d, 0.1854d, -0.07303d, 0.03897d, 0.01438d, -0.08809d, 0.15479d, 0.10354d, 0.19052d, 2.0879d, 405480.24475d, -607986.83623d, 582811.58843d, -915111.10396d, 258696.21023d, -493391.09443d, 23403.62628d, -119503.67282d, -4036.86957d, -9766.17805d, -663.93268d, 2544.07799d, 40.36638d, 76.2639d, 246.67716d, -13.9344d, 0.12403d, 0.25378d, 0.14004d, -0.08501d, 0.07904d, 0.12731d, 1.02117d, -1.34663d, 0.25142d, -0.26903d, 0.18135d, -0.57683d, -0.30092d, -0.36121d, -0.09623d, 0.05873d, -0.05803d, 0.02869d, -0.01194d, 0.04983d, 0.0425d, 0.04894d, 1.34245d, 0.70137d, 0.24217d, 0.25912d, -0.32759d, -0.03575d, 0.0678d, -0.41277d, 0.43865d, 0.17857d, -763933.02226d, 465658.17048d, -1082753.91241d, 593319.68634d, -553911.8934d, 274748.95145d, -122250.71547d, 56608.95768d, -9914.173d, 2988.43709d, 707.94605d, -765.0147d, 52.7326d, -34.22263d, -43.583d, -38.43647d, -4.95939d, -1.97173d, -1.04406d, -0.13072d, -0.34281d, 4.75202d, -0.35513d, 0.93597d, -0.5438d, 0.70536d, 84.83116d, 102.93003d, 26.34884d, 48.57746d, 0.02853d, 2.91676d, -8.07116d, 1.66613d, -2.07908d, 11.62592d, 6.64704d, 0.98291d, -1.19192d, 0.93791d, 0.18822d, 0.009d, -0.03181d, -0.02d, 0.02755d, -0.01398d, -0.03971d, -0.03756d, 0.13454d, -0.04193d, -18672.98484d, 28230.75834d, -28371.58823d, 26448.45214d, -13352.09393d, 7461.71279d, -2609.33578d, 726.50321d, -309.72942d, -86.71982d, 12.48589d, -9.69726d, 1.82185d, 14.9222d, -0.04748d, 0.4251d, -0.20047d, 0.00154d, 0.00176d, -0.26262d, 0.78218d, -0.73243d, 0.23694d, -0.03132d, -0.0029d, -0.03678d, 14.03094d, 4.25948d, 0.79368d, -0.78489d, -2.30962d, 2.31946d, 0.00158d, -0.04125d, -0.01387d, 0.28503d, 0.00892d, 0.05154d, 0.00184d, -0.01727d, -0.00889d, 0.03526d, -0.00521d, -0.02093d, 0.002d, 0.04872d, -0.02163d, 0.00578d, 20699.27413d, -2175.57827d, 31177.33085d, 4572.02063d, 15486.2819d, 8747.74091d, 2455.51737d, 3839.83609d, 51.31433d, 507.91086d, 15.90082d, 44.75942d, -0.98374d, -2.64477d, 2.52336d, -3.09203d, -0.08897d, -0.00083d, -15.91892d, 0.72597d, 14.04523d, -3.16525d, 4.33379d, -30.8298d, 0.40462d, -0.75845d, 13.14831d, -0.02721d, -0.01779d, 0.00481d, 0.42365d, -0.09048d, 0.08653d, 0.04391d, 0.00846d, 0.01082d, -0.04736d, 0.02308d, 6282.21778d, -4952.70286d, 7886.57505d, -5328.36122d, 3113.76826d, -1696.8459d, 330.70011d, -155.51989d, -18.31559d, -3.90798d, -3.11242d, 1.87818d, -1.05578d, 0.11198d, 0.05077d, -0.01571d, 2.41291d, 2.40568d, -0.01136d, -0.00076d, -0.00392d, -0.02774d, 634.85065d, -352.21937d, 674.31665d, -260.73473d, 199.16422d, -28.44198d, 6.54187d, 6.4496d, -1.55155d, 0.29755d, 0.16977d, 0.1754d, -0.02652d, 0.03726d, -0.00623d, 0.11777d, -0.00933d, 0.02602d, -0.13943d, -0.24818d, 0.02876d, -0.01463d, -0.07166d, 0.06747d, -0.01578d, 0.01628d, 0.00233d, -0.00686d, 0.00431d, -0.00276d, 0.21774d, 0.09735d, 0.07894d, 0.07279d, -0.013d, -0.00268d, 0.10824d, 0.09435d, 0.0072d, 0.02111d, -0.0196d, 0.06154d, 0.56867d, -0.07544d, 0.1821d, 0.06343d, -0.00906d, 0.01942d, -0.0085d, -0.00351d, -0.06988d, 0.01713d, -0.0111d, -0.00663d, 0.00196d, -0.02064d, -0.00008d, 0.00043d, 0.00375d, 0.00084d, -0.00279d, 0.001d, 0.00271d, -0.02017d, -0.00074d, -0.00357d, 0.03793d, -0.10108d, -0.01083d, -0.03952d, 0.0003d, 0.00012d, 0.01576d, 0.01142d, 0.00351d, 0.00277d, 0.01409d, -0.00774d, -0.00065d, 0.01895d, 0.0735d, -0.02519d, 0.01528d, -0.01057d, -0.00099d, -0.00295d, 0.21347d, -0.17458d, 0.0494d, -0.02757d, -0.06243d, 0.05203d, 0.01055d, -0.00109d, 0.00003d, -0.04201d, -0.00263d, 0.02387d, 0.00886d, -0.01168d, 0.00479d, 0.00204d, -0.00239d, 0.00022d, -0.00223d, -0.02029d, -0.1413d, -0.15237d, -0.01827d, -0.04877d, 0.12104d, 0.06796d, 0.16379d, 0.31892d, -0.15605d, 0.07048d, -0.007d, 0.07481d, -0.0037d, -0.00142d, -0.00446d, 0.00329d, -0.00018d, 0.00117d, -0.0091d, 0.0051d, -0.00055d, -0.00114d, 0.04131d, -0.04013d, -0.13238d, 0.0268d, -0.10369d, 1.38709d, 0.35515d, 0.41437d, -0.01327d, -0.02692d, 38.02603d, 13.38166d, 15.33389d, -7.40145d, -8.55293d, -0.13185d, -0.03316d, 0.13016d, 0.04428d, -1.60953d, -12.87829d, -76.97922d, -23.96039d, -22.45636d, 14.83309d, 14.09854d, 0.24252d, 0.1385d, -4.16582d, 4.08846d, 0.00751d, -0.00051d, 0.03456d, 0.029d, 0.01625d, -0.0466d, 0.0139d, -0.0053d, 0.01665d, -0.04571d, 40.90768d, -14.11641d, 7.46071d, -58.07356d, -0.27859d, -1.33816d, 23.76074d, -0.03124d, -0.2786d, 0.13654d, -0.048d, 0.05375d, 4.38091d, 4.39337d, 0.02233d, 0.00514d, -0.25616d, -0.54439d, -0.05155d, 0.11553d, 0.02944d, -0.00818d, 0.0057d, 0.00119d, -0.00733d, -0.027d, -0.23759d, -0.08712d, -0.12433d, 0.07397d, 0.20629d, 0.60251d, 0.56512d, 0.1479d, 0.07778d, 0.11614d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 7, 2, 3, 7, -9, 9, 0, 2, 4, 7, -12, 9, 0, 2, 4, 7, -8, 8, 0, 3, -4, 7, 5, 8, 4, 9, 0, 3, 3, 7, -5, 8, -1, 9, 0, 2, 1, 6, -8, 9, 1, 2, 3, 8, -5, 9, 1, 2, 1, 6, -9, 9, 2, 3, 6, 7, -6, 8, -8, 9, 0, 3, 4, 7, -10, 8, 4, 9, 2, 2, 3, 7, -8, 9, 0, 1, 1, 9, 7, 2, 3, 7, -10, 9, 0, 3, 4, 7, -10, 8, 2, 9, 2, 3, 5, 7, -12, 8, 2, 9, 0, 2, 1, 6, -7, 9, 0, 1, 1, 8, 3, 2, 1, 6, -10, 9, 0, 3, 6, 7, -12, 8, 2, 9, 0, 3, 5, 7, -10, 8, 2, 9, 0, 2, 5, 7, -13, 9, 0, 2, 4, 7, -10, 9, 0, 2, 3, 7, -7, 9, 0, 1, 2, 9, 7, 2, 3, 7, -11, 9, 0, 3, 4, 7, -9, 8, 4, 9, 2, 3, 3, 7, -5, 8, 1, 9, 2, 2, 1, 6, -6, 9, 0, 2, 7, 8, -13, 9, 0, 2, 3, 8, -2, 9, 1, 3, 1, 7, -5, 8, 2, 9, 1, 3, 6, 7, -12, 8, 3, 9, 1, 2, 5, 7, -12, 9, 1, 2, 4, 7, -9, 9, 1, 2, 2, 7, -3, 9, 1, 1, 1, 7, 0, 1, 3, 9, 5, 2, 3, 7, -12, 9, 1, 3, 5, 7, -9, 8, 2, 9, 0, 3, 4, 7, -7, 8, 2, 9, 1, 3, 3, 7, -5, 8, 2, 9, 0, 3, 2, 7, -5, 8, 5, 9, 0, 2, 1, 6, -5, 9, 0, 2, 3, 8, -1, 9, 2, 2, 1, 6, -12, 9, 0, 3, 2, 7, -7, 8, 1, 9, 0, 2, 5, 7, -11, 9, 0, 2, 4, 7, -8, 9, 0, 2, 2, 7, -2, 9, 0, 1, 4, 9, 7, 3, 2, 7, -8, 8, 2, 9, 0, 3, 5, 7, -9, 8, 3, 9, 0, 3, 4, 7, -9, 8, 6, 9, 0, 3, 3, 7, -5, 8, 3, 9, 1, 2, 2, 7, -1, 8, 1, 2, 3, 8, -9, 9, 0, 2, 9, 8, -9, 9, 0, 2, 1, 6, -13, 9, 0, 3, 2, 7, -5, 8, -3, 9, 0, 2, 6, 7, -13, 9, 1, 2, 5, 7, -10, 9, 0, 2, 4, 7, -7, 9, 0, 2, 3, 7, -4, 9, 0, 1, 5, 9, 7, 3, 6, 7, -9, 8, 1, 9, 1, 3, 4, 7, -5, 8, 1, 9, 1, 3, 3, 7, -3, 8, 1, 9, 0, 2, 1, 6, -3, 9, 2, 2, 3, 8, -10, 9, 0, 2, 1, 8, 4, 9, 0, 2, 5, 8, -2, 9, 0, 2, 11, 8, -11, 9, 0, 3, 1, 7, -9, 8, 5, 9, 0, 2, 6, 7, -12, 9, 0, 2, 5, 7, -9, 9, 0, 2, 4, 7, -6, 9, 0, 2, 3, 7, -3, 9, 0, 1, 6, 9, 6, 2, 2, 7, -12, 9, 0, 3, 6, 7, -9, 8, 2, 9, 0, 3, 3, 7, -12, 8, 3, 9, 0, 3, 4, 7, -10, 8, -3, 9, 1, 3, 3, 7, -3, 8, 2, 9, 0, 2, 1, 6, -2, 9, 2, 2, 1, 8, 5, 9, 0, 2, 13, 8, -13, 9, 1, 3, 2, 7, -9, 8, 1, 9, 0, 2, 6, 7, -11, 9, 0, 2, 5, 7, -8, 9, 0, 2, 4, 7, -5, 9, 0, 2, 3, 7, -2, 9, 0, 1, 7, 9, 7, 3, 6, 7, -9, 8, 3, 9, 0, 2, 1, 6, -1, 9, 4, 2, 3, 8, 3, 9, 0, 2, 7, 7, -13, 9, 1, 2, 3, 7, -1, 9, 0, 2, 2, 7, 2, 9, 0, 1, 8, 9, 6, 3, 7, 7, -9, 8, 1, 9, 0, 1, 1, 6, 0, 1, 3, 7, 0, 2, 2, 7, 3, 9, 0, 1, 9, 9, 5, 3, 1, 7, -10, 8, 3, 9, 0, 3, 2, 7, -12, 8, 3, 9, 1, 2, 1, 6, 1, 9, 0, 3, 1, 7, -1, 8, 8, 9, 0, 2, 3, 7, 1, 9, 1, 2, 2, 7, 4, 9, 0, 2, 1, 7, 7, 9, 0, 2, 4, 8, 4, 9, 1, 2, 12, 8, -8, 9, 0, 3, 1, 7, -10, 8, 2, 9, 1, 2, 1, 6, 2, 9, 0, 1, 11, 9, 2, 2, 12, 8, -7, 9, 0, 3, 1, 7, -10, 8, 1, 9, 1, 1, 4, 7, 0, 1, 12, 9, 0, 2, 6, 8, 3, 9, 0, 3, 1, 7, -2, 8, -12, 9, 0, 3, 7, 7, -7, 8, 2, 9, 1, 2, 2, 6, -4, 9, 1, 1, 13, 9, 0, 2, 10, 8, -2, 9, 1, 2, 4, 7, 2, 9, 0, 2, 2, 6, -3, 9, 0, 2, 2, 7, 8, 9, 1, 2, 8, 8, 2, 9, 0, 1, 5, 7, 1, 2, 4, 7, 3, 9, 0, 2, 3, 7, 6, 9, 0, 2, 1, 5, -6, 9, 0, 3, 2, 7, 8, 8, -3, 9, 0, 3, 1, 7, 6, 8, 3, 9, 0, 2, 6, 8, 6, 9, 0, 3, 8, 7, -7, 8, 2, 9, 0, 2, 9, 7, -11, 9, 0, 2, 5, 7, 1, 9, 1, 2, 4, 7, 4, 9, 0, 2, 2, 6, -1, 9, 0, 3, 2, 6, -1, 7, 2, 9, 0, 2, 2, 7, 10, 9, 0, 2, 1, 7, 13, 9, 0, 2, 8, 7, -7, 9, 0, 2, 7, 7, -4, 9, 0, 2, 6, 7, -1, 9, 0, 2, 5, 7, 3, 9, 0, 2, 4, 7, 5, 9, 0, 1, 2, 6, 0, 2, 1, 5, -4, 9, 1, 3, 1, 6, 9, 8, -5, 9, 0, 2, 1, 5, -3, 9, 4, 2, 1, 5, -2, 9, 4, 3, 9, 7, -9, 8, 6, 9, 0, 2, 8, 7, -4, 9, 0, 2, 7, 7, -1, 9, 0, 2, 1, 6, 3, 9, 0, 2, 2, 6, 3, 9, 0, 2, 1, 5, -1, 9, 3, 3, 6, 7, -3, 8, 7, 9, 1, 1, 1, 5, 0, 2, 2, 6, 5, 9, 0, 2, 1, 5, 1, 9, 0, 2, 1, 5, 2, 9, 0, 2, 1, 5, 3, 9, 0, 2, 2, 5, -4, 9, 0, 2, 2, 5, -3, 9, 0, 2, 2, 5, -2, 9, 1, 2, 2, 5, -1, 9, 1, 1, 2, 5, 0, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // /* Total terms = 173, small = 156 */ + internal static KeplerGlobalCode.plantbl plu404 = new KeplerGlobalCode.plantbl(9, new int[19] { 0, 0, 0, 0, 2, 2, 9, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 7, args, tabl, tabb, tabr, 39.54d, 3652500.0d, 1.0d); + + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Sat404Data.cs b/ASCOM.Tools/Kepler/Planets/Sat404Data.cs new file mode 100644 index 0000000..042e3fd --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Sat404Data.cs @@ -0,0 +1,1076 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Sat404Data + { + // /* + // First date in file = 625296.50 + // Number of records = 16731.0 + // Days per record = 131.0 + // Julian Years Lon Lat Rad + // -3000.0 to -2499.7: 0.78 0.26 0.55 + // -2499.7 to -1999.7: 0.66 0.19 0.57 + // -1999.7 to -1499.7: 0.62 0.19 0.53 + // -1499.7 to -999.8: 0.79 0.17 0.61 + // -999.8 to -499.8: 0.78 0.15 0.42 + // -499.8 to 0.2: 0.75 0.19 0.52 + // 0.2 to 500.2: 0.62 0.18 0.41 + // 500.2 to 1000.1: 0.56 0.13 0.54 + // 1000.1 to 1500.1: 0.53 0.15 0.41 + // 1500.1 to 2000.1: 0.51 0.15 0.49 + // 2000.1 to 2500.0: 0.52 0.13 0.41 + // 2500.0 to 3000.0: 0.63 0.22 0.53 + // 3000.0 to 3000.4: 0.047 0.073 0.086 + // */ + + + internal static double[] tabl = new double[] { 1788381.2624d, 2460423.68044d, 1370113.15868d, 415406.99187d, 72040.39885d, 12669.58806d, 439960754.85333d, 180256.80433d, 18.71177d, -40.37092d, 66531.01889d, -195702.70142d, 57188.02694d, -179110.60982d, -19803.0652d, -58084.15705d, -9055.13344d, -31146.10779d, 11245.43286d, -3247.59575d, 459.4867d, 2912.82402d, -4.06749d, -13.53763d, -30.55598d, -4.51172d, 1.48832d, 0.37139d, 597.35433d, 1193.44545d, -297.50957d, 976.38608d, -263.26842d, 34.84354d, -6.77785d, -29.92106d, -0.16325d, -0.18346d, -0.15364d, -0.08227d, 0.2018d, 0.02244d, 0.04672d, -0.29867d, -0.04143d, -0.0076d, -0.17046d, -0.00778d, 0.042d, 0.23937d, -0.00098d, -0.05236d, -0.02749d, -0.01813d, 0.00637d, 0.01256d, -0.04506d, 0.04448d, -0.00105d, 0.06224d, 0.01157d, 0.17057d, -0.03214d, 0.18178d, -0.22059d, -0.01472d, -0.24213d, 0.04309d, 0.03436d, 0.44873d, 0.0135d, -0.01931d, -0.80618d, -0.56864d, 0.29223d, -0.03101d, 0.04171d, 0.02264d, -0.01264d, -0.01645d, 0.01774d, 0.06374d, -0.01925d, -0.03552d, 0.10473d, -0.04119d, 0.08045d, 0.04635d, -3.01112d, -9.26158d, 8.13745d, 1.88838d, -0.15184d, 0.16898d, -0.22091d, 0.2907d, -0.03259d, 0.06938d, -0.08499d, -0.21688d, 0.01848d, -0.05594d, 0.501d, -0.00027d, 0.133d, 0.12055d, 0.03039d, 0.03854d, -1.55287d, 2.55618d, -0.45497d, -0.29895d, -0.93268d, 0.83518d, -0.32785d, 7.03878d, -1.66649d, 2.75564d, -0.29459d, 0.0105d, 0.08293d, -0.03161d, -0.1275d, -0.04359d, 0.04217d, 0.0748d, -114.43467d, 49.47867d, -66.5234d, -26.27841d, 15.4819d, -13.06589d, 3.28365d, 5.02286d, -0.17155d, -0.07404d, 0.00924d, -0.07407d, -0.02922d, 0.06184d, 108.04882d, 86.09791d, -155.12793d, 208.10044d, -311.7281d, -268.92703d, 74.57561d, -420.03057d, -0.07893d, 0.09246d, -0.66033d, -0.39026d, -0.13816d, -0.0849d, -36.79241d, -78.88254d, 71.88167d, -68.05297d, 51.71616d, 65.7797d, -43.59328d, 23.51076d, -0.02029d, -0.32943d, -8.82754d, 1.48646d, -3.12794d, 2.12866d, -0.06926d, 0.44979d, 0.00621d, -0.5172d, -3.82964d, -1.48596d, -0.11277d, -3.21677d, 0.81705d, -0.19487d, -0.06195d, 0.10005d, -0.02208d, 0.00108d, 0.00455d, -0.03825d, 0.01217d, -0.00599d, -0.17479d, -0.4729d, 0.85469d, 1.12548d, -0.80648d, -0.44134d, -0.01559d, -0.07061d, 0.01268d, -0.01773d, 0.01308d, -0.03461d, -0.71114d, 1.9768d, -0.78306d, -0.23052d, 0.94475d, -0.10743d, 0.18252d, -8.03174d, 0.00734d, 0.04779d, 0.12334d, -0.03513d, 0.01341d, 0.02461d, 0.02047d, -0.03454d, 0.02169d, -0.01921d, -1.12789d, 0.09304d, 0.14585d, 0.36365d, 0.03702d, 0.10661d, -0.00464d, -1.72706d, -0.00769d, -0.04635d, -0.01157d, 0.00099d, 10.92646d, 1.96174d, 2.91142d, 4.74585d, -0.29832d, 0.75543d, 0.05411d, 1.0585d, 0.38846d, -0.16265d, 1.52209d, 0.12185d, 0.1865d, 0.35535d, -278.33587d, -82.58648d, -160.00093d, -225.55776d, 35.17458d, -77.56672d, 10.61975d, 3.33907d, 0.0609d, 2.17429d, -4.32981d, -5.84246d, 11.43116d, 20.61395d, -0.65772d, 1.28796d, 1224.46687d, -3113.15508d, 3798.33409d, -137.28735d, -256.89302d, 2227.35649d, -779.78215d, -260.37372d, 11.73617d, -13.2505d, -0.75248d, -2.87527d, -8.38102d, 17.21321d, -61784.69616d, 39475.02257d, -54086.68308d, 54550.8549d, -16403.69351d, 29602.70098d, 14672.06363d, 16234.17489d, 15702.37109d, -22086.303d, -22889.89844d, -1245.88352d, 1.48864d, 19.75d, 0.78646d, 3.29343d, -1058.13125d, 4095.02368d, -2793.78506d, 1381.93282d, -409.19381d, -772.5427d, 161.67509d, -34.1591d, -514.27437d, 27.34222d, -311.04046d, 48.0103d, -43.36486d, 16.19535d, -0.73816d, -0.81422d, 287.32231d, -110.44135d, 200.4361d, 37.9817d, 17.73719d, 34.40023d, -2.46337d, 1.48125d, 0.09042d, -0.11788d, 0.37284d, 0.51725d, 0.00597d, 0.1459d, -0.01536d, 0.0098d, 0.00721d, 0.02023d, 0.00027d, 0.02451d, -0.72448d, -0.71371d, 0.29322d, 0.18359d, 0.72719d, -0.37154d, 0.14854d, -0.0253d, 0.23052d, 0.04258d, 4.82082d, 0.01885d, 3.11279d, -0.63338d, 0.10559d, -0.02146d, -0.01672d, 0.03412d, 0.00605d, 0.06415d, -0.89085d, 1.51929d, -0.36571d, 0.39317d, 12.0525d, -3.79392d, 3.96557d, -3.51272d, -0.17953d, 12.30669d, -0.05083d, -0.11442d, 0.02013d, -0.02837d, -0.02087d, -0.01599d, 0.4919d, 0.3036d, 0.01316d, 0.17649d, 0.21193d, -0.09149d, -0.07173d, -0.05707d, 4.24196d, -1.25155d, 1.81336d, 0.68887d, -0.01675d, 0.20772d, -0.04117d, -0.03531d, -0.0269d, -0.02766d, 37.54264d, 10.95327d, 8.0561d, 30.5821d, -12.68257d, 1.72831d, 0.13466d, -3.27007d, 0.01864d, -0.00595d, 0.03676d, 0.14857d, -0.07223d, 0.06179d, 0.44878d, -1.64901d, -20.06001d, 0.63384d, -4.97849d, 4.78627d, 29.8737d, 7.29899d, 0.00047d, -0.00155d, 0.00314d, 0.01425d, -0.17842d, -0.08461d, -1.6102d, -8.4771d, 6.85048d, -4.38196d, 1.05809d, 2.68088d, -0.01027d, -0.00833d, 0.06834d, -0.04205d, 0.0333d, -0.01271d, 0.01301d, -0.01358d, 0.03537d, 0.03612d, 0.02962d, 0.62471d, -0.304d, -0.64857d, 0.01773d, 0.0189d, 0.01426d, -0.00226d, -0.50957d, -0.01955d, -0.09702d, 1.09983d, 0.64387d, -0.02755d, 0.26604d, 0.30684d, 0.06354d, 0.05114d, -0.00058d, -0.04672d, -0.00828d, 0.00712d, -0.0044d, 0.00029d, -0.01601d, 0.03566d, 0.13398d, -0.02666d, -0.06752d, -0.43044d, 0.07172d, -0.01999d, -0.01761d, -0.05357d, 0.06104d, 0.29742d, -0.08785d, 0.05241d, -6.57162d, -4.20103d, 0.03199d, -6.46187d, 1.32846d, -0.51137d, 0.06358d, 0.37309d, -1.46946d, 2.34981d, -0.18712d, 0.11618d, 240.62965d, -107.21962d, 219.81977d, 84.04246d, -62.22931d, 68.35902d, -9.4846d, -32.62906d, 5.57483d, -1.82396d, 1.00095d, -0.39774d, 7.87054d, 11.45449d, -432.67155d, 55064.72398d, 12444.62359d, 54215.28871d, 8486.03749d, 12297.48243d, -333.27968d, 1147.93192d, 1403.73797d, 990.40885d, -3.84938d, -722.43963d, 16.83276d, 96.48787d, 7.04834d, 38.22208d, 0.63843d, 2.61007d, 230.73221d, 171.64166d, 1.96751d, 287.80846d, -85.21762d, 31.33649d, -2.25739d, -11.28441d, 0.04699d, 0.06555d, -0.08887d, 1.70919d, 0.09477d, 0.26291d, -0.1549d, 0.16009d, 1.93274d, 1.01953d, 0.3638d, 1.29582d, -0.13911d, 0.14169d, -0.00491d, -0.0003d, -0.08908d, -0.10216d, -0.03265d, -0.03889d, 0.40413d, -1.12715d, -0.94687d, -0.04514d, 0.02487d, -0.01048d, 0.39729d, 2.82305d, -0.611d, 1.11728d, -0.13083d, -0.04965d, -0.00602d, -0.02952d, -6.13507d, 13.73998d, -15.70559d, -1.28059d, 2.64422d, -9.33798d, 3.2647d, 1.56984d, -0.00572d, 0.09992d, -8.80458d, -8.2389d, -11.51628d, 9.47904d, 11.31646d, 4.29587d, -2.41367d, -0.05883d, -0.80022d, -1.02706d, 0.21461d, -0.06864d, 0.01882d, 0.01798d, 0.27614d, -0.01007d, 0.04362d, 0.0756d, 0.05519d, 0.23435d, -0.09389d, 0.01613d, 0.01298d, 0.04691d, -0.02665d, -0.03582d, 0.6008d, -4.28673d, 1.87316d, -1.0584d, 0.13248d, 0.40887d, -0.67657d, 0.67732d, 0.05522d, 0.07812d, -0.17707d, -0.0751d, 0.24885d, 10.63974d, -7.40226d, -2.33827d, 2.75463d, -32.51518d, 0.0514d, 0.01555d, 180.43808d, 263.28252d, 384.50646d, -76.53434d, -93.50706d, -220.50123d, -81.9161d, 103.92061d, 30.90305d, -2.89292d, -0.06634d, -0.37717d, -0.01945d, -0.05936d, 29.27877d, -59.73705d, 35.86569d, -18.36556d, 3.88812d, 4.8209d, -0.70903d, 0.06615d, 0.01558d, -0.01854d, 0.16209d, 0.12682d, 0.02508d, 0.02406d, -0.03078d, -0.01737d, -0.00033d, -0.0002d, 0.01023d, 0.05972d, -0.03373d, -0.07289d, -2.08162d, -0.14717d, -0.64233d, -0.75397d, 0.11752d, -0.09202d, 4.42981d, -4.19241d, 5.02542d, 5.03467d, -4.22983d, 2.80794d, 3.03016d, -2.74373d, -1.1149d, -2.72378d, -0.63131d, 0.74864d, -0.00759d, -0.00675d, 0.03615d, -0.01806d, -2.7192d, -1.50954d, 0.54479d, -1.92088d, 0.66427d, 0.32228d, -2.55188d, -0.65332d, -2.73798d, 2.10182d, 1.54407d, 3.01357d, 38.76777d, 23.54578d, 27.29884d, -14.93005d, -7.50931d, -5.66773d, 0.30142d, 1.52416d, 0.00634d, 0.09697d, -0.00748d, 0.01433d, 0.02936d, 0.53228d, -0.03603d, 0.06345d, 0.30816d, -1.07925d, 0.46709d, -0.21568d, 0.01663d, 0.1081d, -0.42511d, 0.35872d, -0.19662d, -6.74031d, 1.05776d, 1.86205d, 1.08919d, 0.10483d, -0.03368d, -0.21535d, 0.07556d, -0.27104d, 0.05142d, -0.03812d, 1.20189d, -1.36782d, 1.35764d, 1.39387d, -1.19124d, 0.77347d, -0.5476d, -0.26295d, -0.07473d, 0.23043d, 2.82621d, -0.23524d, 0.47352d, -0.81672d, -0.08515d, 0.047d, 0.55355d, -0.40138d, 0.22255d, 0.12236d, -0.0911d, 0.31982d, 0.39404d, -0.17898d, -0.00056d, 0.00014d, -0.02012d, 0.03102d, 0.43236d, -0.10037d, -0.00961d, 0.0744d, -0.07076d, -1.97272d, 0.25555d, -0.21832d, -0.00837d, -0.08393d, 0.01531d, 0.00627d, 0.33193d, 0.70765d, -0.43556d, 0.28542d, -0.2319d, -0.04293d, -0.08062d, 0.13427d, 0.23763d, -0.17092d, 0.09259d, 0.05155d, 0.08065d, -0.11943d, -0.02174d, -0.68899d, -0.01875d, -0.01746d, 0.13604d, 0.2928d, -0.17871d, 0.11799d, 0.02003d, 0.04065d, 0.01343d, -0.0606d, -0.0129d, -0.26068d, -0.09033d, 0.02649d, -0.00092d, -0.03094d, -0.0077d, -0.10447d, -0.04113d, 0.01259d, -0.00469d, -0.04346d, -0.0001d, 0.06547d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabb = new double[] { -567865.62548d, -796277.29029d, -410804.00791d, -91793.12562d, -6268.13975d, 398.64391d, -710.67442d, 175.29456d, -0.8726d, 0.18444d, -1314.88121d, 20709.97394d, -1850.41481d, 20670.34255d, -896.96283d, 6597.16433d, -179.80702d, 613.45468d, 17.37823d, -13.62177d, -0.36348d, 12.3474d, 0.47532d, 0.48189d, 0.27162d, -0.20655d, -0.23268d, 0.05992d, 46.94511d, 15.78836d, 21.57439d, 23.11342d, -0.25862d, 5.2141d, -0.22612d, -0.05822d, -0.00439d, -0.01641d, -0.01108d, -0.00608d, 0.00957d, 0.00272d, -0.00217d, 0.00001d, -0.00534d, -0.00545d, 0.00277d, -0.00843d, 0.00167d, -0.00794d, 0.00032d, -0.00242d, -0.00002d, -0.00041d, -0.00025d, 0.00031d, 0.00062d, -0.0006d, 0.00083d, 0.00032d, 0.00527d, -0.00211d, 0.00054d, 0.00004d, -0.02769d, -0.01777d, 0.00247d, 0.00097d, 0.0002d, -0.00232d, 0.00044d, -0.00035d, -0.00072d, 0.01341d, 0.00325d, -0.01159d, 0.00079d, -0.00078d, -0.00009d, 0.00066d, 0.00222d, 0.00002d, 0.00013d, -0.00161d, 0.01374d, -0.05305d, 0.00478d, -0.00283d, 0.16033d, 0.13859d, 0.33288d, -0.16932d, -0.00316d, 0.00625d, -0.00309d, 0.01687d, 0.00001d, 0.00486d, 0.00401d, -0.01805d, -0.00048d, -0.00407d, -0.01329d, 0.01311d, -0.00591d, 0.00166d, 0.0083d, 0.00665d, -0.80207d, 0.22994d, -0.34687d, 0.0846d, -0.11499d, -0.01449d, -0.01574d, 0.78813d, -0.03063d, 0.28872d, -0.00337d, 0.01801d, -0.01703d, -0.00929d, -0.00738d, 0.03938d, 0.05616d, -0.00516d, -3.09497d, 30.13091d, -3.14968d, 17.62201d, -0.73728d, 2.46962d, -0.11233d, 0.0345d, -0.07837d, -0.01573d, -0.01595d, 0.00394d, 0.00174d, 0.0147d, 6.8356d, -2.37594d, 4.95125d, 3.24711d, 2.44781d, 5.17159d, 1.9982d, -2.38419d, 0.0084d, 0.03614d, -0.00209d, -0.30407d, -0.02681d, -0.06128d, 1.50134d, 11.82856d, 4.39644d, 6.9885d, -4.17679d, 5.73436d, -9.66087d, 1.98221d, -0.29755d, 0.08019d, -0.24766d, -8.54956d, -1.74494d, -3.36794d, -0.32661d, -0.00722d, 0.14141d, 0.01023d, -1.21541d, -2.5847d, 0.38983d, -1.70307d, 0.31209d, -0.10345d, 0.02593d, 0.02178d, 0.00289d, 0.00393d, -0.00236d, -0.00373d, -0.0027d, -0.00049d, -0.06282d, -0.00443d, -0.02439d, -0.02254d, -0.0222d, 0.03532d, -0.00072d, 0.0001d, -0.00049d, -0.00112d, 0.00086d, 0.00112d, 0.10135d, -0.10972d, 0.08357d, 0.00155d, 0.04363d, -0.00201d, -0.01996d, -0.01341d, -0.00039d, -0.00042d, -0.00294d, 0.0007d, 0.00005d, -0.00027d, 0.0007d, -0.00076d, 0.00234d, -0.00239d, -0.08365d, -0.08531d, -0.03531d, 0.15012d, -0.01995d, -0.01731d, -0.0037d, -0.00745d, -0.00315d, -0.00079d, -0.0012d, -0.00145d, -0.99404d, -1.31859d, 0.03584d, -0.83421d, 0.1072d, -0.05768d, 0.06664d, -0.09338d, -0.01814d, -0.00003d, -0.05371d, -0.06458d, -0.001d, -0.01298d, -7.0871d, -23.13374d, 4.18669d, -19.94756d, 4.85584d, -3.37187d, 0.58851d, 0.31363d, 0.01994d, 0.27494d, -1.37112d, 2.61742d, 0.52477d, -0.4652d, -0.13183d, 0.26777d, 836.904d, -484.65861d, 815.99098d, 236.54649d, -32.38814d, 288.95705d, -68.17178d, -18.87875d, -1.79782d, -3.68662d, -1.2731d, -0.65697d, -3.6753d, 2.10471d, -13758.97795d, 4807.62301d, -14582.14552d, 9019.73021d, -3202.60105d, 4570.16895d, 2078.68911d, 2892.62326d, -2399.35382d, 3253.16198d, -8182.38152d, -3588.7768d, -0.16505d, 1.08603d, 0.53388d, 0.87152d, 61.53677d, 538.43813d, -407.32927d, 322.27446d, -148.71585d, -179.37765d, 54.07268d, -34.12281d, -14.76569d, -17.95681d, -10.82061d, -6.39954d, -2.10954d, 0.67063d, 0.22607d, -0.43648d, 20.90476d, -45.48667d, 30.39436d, -14.20077d, 5.17385d, 5.12726d, -0.66319d, 0.55668d, 0.02269d, -0.00016d, 0.07811d, 0.00111d, 0.01603d, 0.0102d, -0.00107d, 0.00494d, -0.00077d, -0.00084d, -0.00196d, 0.00081d, -0.03776d, 0.01286d, -0.00652d, -0.0145d, 0.05942d, -0.08612d, 0.01093d, -0.01644d, 0.02147d, -0.00592d, 0.3635d, -0.00201d, 0.14419d, -0.1007d, -0.00491d, -0.01771d, -0.00053d, -0.00033d, 0.00146d, 0.00048d, 0.00582d, 0.04423d, -0.00549d, 0.00983d, 0.27355d, -0.38057d, 0.24001d, -0.05441d, -0.07706d, 0.14269d, -0.00059d, -0.00154d, -0.00013d, -0.00088d, -0.00046d, 0.00029d, -0.00276d, -0.00507d, 0.00075d, -0.00076d, 0.01806d, 0.00862d, -0.0051d, -0.01364d, -0.00029d, -0.12664d, 0.03899d, -0.03562d, 0.00318d, 0.00514d, 0.00057d, 0.00201d, 0.00028d, 0.00014d, -0.47022d, -0.74561d, 0.40155d, -0.16471d, -0.18445d, 0.34425d, -0.07464d, -0.13709d, -0.01018d, -0.00748d, -0.0121d, -0.04274d, -0.00579d, -0.00692d, -11.09188d, -1.67755d, -6.62063d, -13.84023d, 12.75563d, -6.73501d, 8.31662d, 5.40196d, 0.00052d, 0.00034d, 0.00128d, 0.00085d, -0.02202d, -0.00599d, -0.33458d, -1.65852d, 1.47003d, -1.02434d, 0.87885d, 1.15334d, -0.00241d, -0.00721d, 0.03154d, 0.00612d, 0.00318d, -0.02521d, 0.00042d, 0.00213d, -0.01094d, 0.05417d, -0.03989d, -0.00567d, 0.00123d, -0.00244d, 0.00108d, 0.00242d, -0.00138d, -0.00099d, 0.04967d, 0.01643d, -0.00133d, 0.02296d, 0.12207d, 0.05584d, 0.00437d, -0.04432d, -0.00176d, -0.00922d, -0.00252d, 0.00326d, -0.0002d, -0.0005d, -0.00263d, -0.00084d, -0.01971d, 0.00297d, 0.03076d, 0.01736d, -0.01331d, 0.01121d, -0.00675d, 0.0034d, -0.00256d, 0.00327d, -0.00946d, 0.03377d, -0.0077d, 0.00337d, 0.61383d, 0.71128d, -0.02018d, 0.62097d, -0.07247d, 0.04418d, -0.02886d, -0.03848d, -0.44062d, 0.03973d, -0.00999d, -0.04382d, 57.94459d, 117.45112d, -71.22893d, 126.39415d, -62.33152d, -31.90754d, 12.17738d, -16.46809d, -1.13298d, 0.08962d, -0.20532d, 0.1632d, -1.5511d, -1.44757d, -3102.08749d, -7452.61957d, -5009.53858d, -7216.29165d, -2476.87148d, -1880.58197d, -574.49433d, 227.45615d, 144.50228d, 379.15791d, 225.3613d, -443.47371d, -8.51989d, -3.75208d, -4.25415d, -1.59741d, -0.43946d, -0.06595d, 150.42986d, 6.54937d, 87.67736d, 92.32332d, -21.97187d, 29.87097d, -4.21636d, -5.72955d, -0.03879d, -0.01071d, -0.45985d, 0.02679d, -0.02448d, 0.02397d, -0.06551d, -0.01154d, 1.97905d, -0.82292d, 1.1014d, 0.30924d, 0.03389d, 0.1423d, 0.00003d, 0.00119d, -0.01117d, 0.00665d, -0.00132d, -0.00576d, -0.08356d, 0.08556d, -0.26362d, -0.1245d, 0.00509d, 0.00165d, 0.02591d, 0.162d, -0.03318d, 0.06463d, -0.00899d, -0.00462d, 0.00102d, 0.00004d, -0.73102d, 0.08299d, -0.52957d, -0.35744d, 0.14119d, -0.24903d, 0.20843d, 0.14143d, 0.00031d, -0.00234d, -0.42643d, -2.02084d, 1.58848d, -1.57963d, 0.68418d, 2.07749d, -0.45888d, 0.19859d, -0.30277d, -0.22591d, 0.11607d, -0.09705d, 0.0004d, 0.00431d, -0.02683d, 0.03158d, -0.01302d, -0.00541d, 0.01742d, -0.00006d, -0.02231d, -0.01128d, -0.008d, 0.02055d, -0.00346d, 0.00151d, 0.56732d, -0.68995d, 0.27701d, -0.16748d, 0.01002d, 0.00043d, 0.26916d, -0.57751d, 0.15547d, -0.15825d, -0.02074d, -0.07722d, -8.23483d, -4.02022d, 0.69327d, -5.91543d, 1.7244d, 1.0209d, 0.00024d, -0.00053d, 20.03959d, 14.79136d, 76.43531d, -14.42019d, -7.82608d, -69.96121d, -54.94229d, 23.5514d, 26.60767d, 14.68275d, 0.05118d, -0.10401d, -0.00075d, -0.01942d, -3.84266d, -26.23442d, 10.20395d, -14.77139d, 3.40853d, 2.07297d, -0.53348d, 0.40635d, 0.00716d, -0.00189d, 0.12472d, -0.02903d, 0.02254d, -0.00183d, -0.00175d, -0.01522d, 0.00003d, -0.00339d, 0.00383d, -0.00168d, 0.01327d, -0.03657d, -0.08458d, -0.00115d, -0.03991d, -0.02629d, 0.00243d, -0.00505d, 0.33875d, -0.16744d, 0.05183d, 0.01744d, -0.24427d, 0.15271d, 0.3755d, -0.17378d, 0.09198d, -0.27966d, -0.2216d, 0.16426d, 0.00032d, -0.0031d, -0.00022d, -0.00144d, -0.0617d, -0.01195d, -0.00918d, 0.02538d, 0.03602d, 0.03414d, -0.14998d, -0.44351d, 0.45512d, -0.11766d, 0.35638d, 0.27539d, 5.93405d, 10.55777d, 12.42596d, -1.8253d, -2.36124d, -6.04176d, -0.98609d, 1.67652d, -0.09271d, 0.03448d, -0.01951d, 0.00108d, 0.33862d, 0.21461d, 0.02564d, 0.06924d, 0.01126d, -0.01168d, -0.00829d, -0.0074d, 0.00106d, -0.00854d, -0.08404d, 0.02508d, -0.02722d, -0.06537d, 0.01662d, 0.11454d, 0.06747d, 0.00742d, -0.01975d, -0.02597d, -0.00097d, -0.01154d, 0.00164d, -0.00274d, 0.02954d, -0.05161d, -0.02162d, -0.02069d, -0.06369d, 0.03846d, 0.00219d, -0.01634d, -0.04518d, 0.06696d, 1.21537d, 0.995d, 0.68376d, -0.28709d, -0.11397d, -0.06468d, 0.00607d, -0.00744d, 0.01531d, 0.00975d, -0.03983d, 0.02405d, 0.07563d, 0.00356d, -0.00018d, -0.00009d, 0.00172d, -0.00331d, 0.01565d, -0.03466d, -0.0023d, 0.00142d, -0.00788d, -0.01019d, 0.01411d, -0.01456d, -0.00672d, -0.00543d, 0.00059d, -0.00011d, -0.00661d, -0.00496d, -0.01986d, 0.01271d, -0.01323d, -0.00764d, 0.00041d, 0.01145d, 0.00378d, -0.00137d, 0.00652d, 0.00412d, 0.01946d, -0.00573d, -0.00326d, -0.00257d, -0.00225d, 0.0009d, -0.00292d, -0.00317d, -0.00719d, 0.00468d, 0.00245d, 0.00189d, 0.00565d, -0.0033d, -0.00168d, -0.00047d, -0.00256d, 0.0022d, 0.0018d, -0.00162d, -0.00085d, -0.00003d, -0.001d, 0.00098d, -0.00043d, 0.00007d, -0.00003d, -0.00013d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabr = new double[] { -38127.94034d, -48221.08524d, -20986.93487d, -3422.75861d, -8.97362d, 53.34259d, -404.15708d, -0.05434d, 0.46327d, 0.16968d, -387.16771d, -146.07622d, 103.77956d, 19.11054d, -40.21762d, 996.16803d, -702.22737d, 246.36496d, -63.89626d, -304.82756d, 78.23653d, -2.58314d, -0.11368d, -0.06541d, -0.34321d, 0.33039d, 0.05652d, -0.16493d, 67.44536d, -29.43578d, 50.85074d, 18.68861d, 0.39742d, 13.64587d, -1.61284d, 0.11482d, 0.01668d, -0.01182d, -0.00386d, 0.01025d, 0.00234d, -0.0153d, -0.02569d, -0.00799d, -0.00429d, -0.00217d, -0.00672d, 0.0065d, 0.01154d, 0.0012d, -0.00515d, 0.00125d, 0.00236d, -0.00216d, -0.00098d, 0.00009d, -0.0046d, -0.00518d, 0.006d, 0.00003d, 0.00834d, 0.00095d, 0.01967d, 0.00637d, -0.00558d, -0.06911d, -0.01344d, -0.06589d, -0.05425d, -0.00607d, -0.00247d, -0.00266d, 0.0879d, -0.08537d, -0.00647d, 0.04028d, -0.00325d, 0.00488d, 0.00111d, -0.00044d, -0.00731d, 0.00127d, -0.00417d, 0.00303d, 0.05261d, 0.01858d, -0.00807d, 0.01195d, 1.26352d, -0.38591d, -0.34825d, 1.10733d, -0.02815d, -0.02148d, -0.05083d, -0.04377d, -0.01206d, -0.00586d, 0.03158d, -0.01117d, 0.00643d, 0.00306d, -0.01186d, -0.05161d, 0.01136d, -0.00976d, -0.00536d, 0.01949d, -1.4168d, -0.8129d, -0.09254d, -0.24347d, -0.14831d, -0.34381d, -2.44464d, 0.41202d, -0.9924d, -0.33707d, -0.0193d, -0.08473d, 0.0083d, 0.01165d, -0.01604d, -0.02439d, 0.00227d, 0.04493d, -42.7531d, -22.65155d, -9.93679d, -18.36179d, 2.73773d, 3.24126d, -1.20698d, 1.07731d, 0.00434d, -0.1036d, -0.02359d, 0.00054d, -0.02664d, -0.00122d, -19.7952d, 33.1177d, -53.56452d, -35.41902d, 67.95039d, -82.46551d, 117.31843d, 14.08609d, 0.06447d, 0.03289d, 0.40365d, -0.33397d, 0.07079d, -0.09504d, -30.36873d, 6.23538d, -14.25988d, -44.91408d, 38.53146d, -16.31919d, 6.99584d, 22.47169d, -0.13313d, 0.28016d, 6.83715d, -6.01384d, 1.68531d, -3.62443d, -0.22469d, -0.29718d, 0.25169d, 0.1378d, -3.64824d, 1.2242d, -2.48963d, -1.12515d, -0.0151d, -0.5618d, -0.03306d, 0.01848d, -0.00103d, -0.00077d, -0.01681d, -0.00227d, -0.00402d, -0.00287d, 0.04965d, -0.1619d, -0.40025d, 0.20734d, 0.15819d, -0.25451d, 0.02467d, -0.00495d, 0.00597d, 0.0049d, -0.01085d, -0.0046d, -0.71564d, -0.26624d, 0.03797d, -0.28263d, 0.0351d, 0.30014d, 2.7981d, 0.07258d, -0.01618d, 0.00337d, 0.00876d, 0.04438d, 0.00742d, -0.00455d, -0.01163d, -0.00683d, 0.0095d, 0.01275d, -0.02124d, -0.67527d, -0.23635d, 0.06298d, -0.03844d, 0.0101d, 0.73588d, -0.00271d, 0.01742d, -0.00467d, 0.00017d, -0.00505d, -0.27482d, 5.00521d, -1.92099d, 1.55295d, -0.35919d, -0.09314d, -0.47002d, 0.06826d, 0.07924d, 0.16838d, -0.04221d, 0.7151d, -0.16482d, 0.08809d, 41.76829d, -125.79427d, 106.65271d, -71.30642d, 36.18112d, 17.36143d, -1.63846d, 5.02215d, -1.08404d, 0.00061d, 2.45567d, -2.42818d, -9.88756d, 5.36587d, -0.61253d, -0.35003d, 1523.5479d, 602.82184d, 68.66902d, 1878.261d, -1098.78095d, -120.726d, 127.30918d, -383.96064d, -7.00838d, -6.09942d, -1.54187d, 0.34883d, -9.47561d, -4.35408d, -21541.63676d, -32542.09807d, -29720.82604d, -28072.21231d, -15755.56255d, -8084.58657d, -8148.87315d, 7434.89857d, 11033.30133d, 7827.94658d, 610.18256d, -11411.93624d, -9.87426d, 0.94865d, -1.63656d, 0.41275d, 1996.5715d, 511.48468d, 669.78228d, 1363.6761d, -379.72037d, 198.84438d, -16.63126d, -79.37624d, -2.30776d, -246.0782d, -16.85846d, -148.18168d, -6.89632d, -20.49587d, 0.39892d, -0.34627d, -57.81309d, -136.96971d, 15.25671d, -96.61153d, 16.09785d, -8.79091d, 0.70515d, 1.16197d, 0.05647d, 0.04684d, 0.25032d, -0.19951d, 0.07282d, -0.00696d, 0.00493d, 0.00733d, -0.01085d, 0.00422d, -0.01309d, 0.00262d, 0.37616d, -0.36203d, -0.11154d, 0.18213d, 0.15691d, 0.29343d, 0.00485d, 0.06106d, -0.01492d, 0.09954d, 0.28486d, 2.2719d, 0.33102d, 1.50696d, -0.01926d, 0.04901d, 0.01827d, 0.00863d, -0.03315d, 0.00178d, -0.776d, -0.48576d, -0.21111d, -0.19485d, 1.90295d, 6.44856d, 1.71638d, 2.1298d, -7.19585d, -0.08043d, 0.07004d, -0.02764d, 0.01604d, 0.01158d, 0.00936d, -0.01199d, 0.18396d, -0.29234d, 0.10422d, -0.0072d, 0.05196d, 0.10753d, 0.02859d, -0.03602d, 0.63828d, 1.9628d, -0.31919d, 0.85859d, -0.10218d, -0.00673d, 0.01748d, -0.0219d, 0.01266d, -0.02729d, -4.8022d, 8.90557d, -5.94059d, 2.28577d, -0.19687d, -1.28666d, 0.32398d, 0.14879d, -0.02619d, -0.02056d, -0.04872d, -0.07011d, -0.04082d, -0.0474d, 0.60167d, -2.20365d, -0.27919d, -0.45957d, -1.31664d, -2.22682d, 176.89871d, 13.03918d, 0.00568d, 0.0056d, 0.01093d, 0.00486d, -0.00948d, -0.31272d, -11.87638d, -3.68471d, -1.74977d, -9.60468d, 2.94988d, -0.57118d, 0.00307d, -0.01636d, 0.02624d, 0.03032d, -0.00464d, -0.01338d, 0.00935d, 0.0053d, -0.11822d, 0.03328d, -0.41854d, 0.04331d, 0.4134d, -0.21657d, -0.00865d, 0.00849d, -0.00374d, -0.00899d, 0.01227d, -0.23462d, -0.71894d, -0.04515d, 0.00047d, 0.28112d, -0.12788d, 0.11698d, -0.0203d, 0.02759d, 0.02967d, -0.00092d, 0.00454d, 0.00565d, -0.00026d, 0.00164d, -0.01405d, -0.00862d, 0.01088d, 0.05589d, 0.18248d, -0.06931d, -0.00011d, 0.03713d, 0.01932d, -0.00982d, -0.13861d, 0.09853d, -0.03441d, -0.02492d, 2.26163d, -5.94453d, 4.14361d, -0.94105d, 0.39561d, 0.75414d, -0.17642d, 0.03724d, -1.32978d, -0.5661d, -0.03259d, -0.06752d, 39.07495d, 80.25429d, -28.15558d, 82.69851d, -37.53894d, -17.88963d, 6.98299d, -13.04691d, -0.48675d, -1.8453d, -0.07985d, -0.33004d, -3.39292d, 2.73153d, -17268.46134d, 1144.22336d, -16658.48585d, 5252.94094d, -3461.47865d, 2910.56452d, -433.49442d, -305.74268d, -383.45023d, 545.16136d, 313.83376d, 27.00533d, -31.41075d, 7.9057d, -12.40592d, 3.01833d, -0.83334d, 0.23404d, 59.26487d, -112.74279d, 113.29402d, -15.37579d, 14.03282d, 32.74482d, -4.73299d, 1.30224d, -0.00866d, 0.01232d, -0.53797d, 0.00238d, -0.07979d, 0.04443d, -0.05617d, -0.05396d, 0.10185d, -1.05476d, 0.43791d, -0.32302d, 0.06465d, 0.03815d, 0.00028d, -0.00446d, 0.09289d, -0.06389d, 0.01701d, -0.01409d, 0.47101d, 0.16158d, 0.01036d, -0.39836d, 0.00477d, 0.01101d, -2.06535d, 0.33197d, -0.82468d, -0.41414d, 0.03209d, -0.09348d, 0.00843d, -0.0003d, -9.49517d, -3.82206d, 0.66899d, -10.28786d, 6.33435d, 1.73684d, -0.98164d, 2.25164d, -0.07577d, -0.00277d, 1.02122d, 0.75747d, 1.79155d, -0.77789d, -2.5678d, -2.07807d, 0.19528d, 0.77118d, -0.28083d, 0.3213d, -0.0435d, -0.07428d, -0.01161d, 0.01387d, 0.02074d, 0.19802d, -0.036d, 0.04922d, -0.19837d, 0.02572d, -0.00682d, -0.04277d, -0.01805d, 0.00299d, 0.03283d, -0.02099d, 3.57307d, 1.17468d, 0.65769d, 1.88181d, -0.39215d, 0.08415d, -0.53635d, -0.19087d, -0.12456d, 0.02176d, 0.01182d, -0.07941d, -2.43731d, 2.44464d, 1.03961d, -1.81936d, 30.3314d, 0.92645d, 0.00508d, -0.01771d, -81.06338d, 66.43957d, 33.16729d, 131.44697d, 76.63344d, -34.34324d, -35.33012d, -28.04413d, -1.4744d, 13.09015d, 0.13253d, -0.01629d, 0.02187d, -0.00963d, -21.4747d, -9.44332d, -7.21711d, -12.59472d, 1.76195d, -1.63911d, 0.0906d, 0.28656d, 0.00635d, 0.00536d, 0.0347d, -0.06493d, 0.00666d, -0.01084d, 0.01116d, -0.01612d, -0.00102d, 0.00208d, -0.05568d, 0.00628d, 0.02665d, -0.01032d, 0.21261d, -1.90651d, 0.72728d, -0.57788d, 0.08662d, 0.10918d, 3.39133d, 3.97302d, -4.63381d, 4.2667d, -2.50873d, -3.76064d, 1.28114d, 1.81919d, 1.48064d, -0.37578d, -0.26209d, -0.47187d, 0.00282d, -0.00499d, 0.01749d, 0.03222d, 1.60521d, -1.79705d, 1.61453d, 0.68886d, -0.29909d, 0.55025d, -0.07894d, 0.1988d, -0.15635d, 0.46159d, 2.09769d, 1.52742d, -7.60312d, 11.34886d, 4.3564d, 8.61048d, 2.15001d, -2.15303d, -0.61587d, -0.1195d, -0.03289d, -0.0052d, -0.00501d, -0.00445d, 0.15294d, -0.05277d, 0.02455d, 0.00408d, 1.19601d, 0.43479d, 0.20422d, 0.57125d, -0.1279d, 0.01318d, -0.15275d, -0.43856d, 6.99144d, -0.08794d, -1.69865d, 0.82589d, -0.20235d, 0.9704d, 0.20903d, 0.00675d, 0.26943d, 0.08281d, 0.03686d, 0.05311d, 1.28468d, 1.21735d, -1.38174d, 1.2957d, -0.75899d, -1.17168d, 0.44696d, -0.32341d, -0.06378d, -0.27573d, -0.06406d, 0.87186d, 0.21069d, 0.19724d, 0.00119d, -0.04147d, 0.39279d, 0.51437d, -0.11035d, 0.2145d, -0.04309d, 0.02359d, 0.2049d, 0.1421d, 0.00007d, -0.00017d, -0.03529d, -0.02644d, 0.1071d, 0.44476d, -0.02632d, -0.01817d, 2.11335d, -0.04432d, 0.18206d, 0.27335d, 0.08867d, 0.00313d, -0.00692d, 0.01595d, -0.72957d, 0.3208d, -0.29291d, -0.44764d, 0.12767d, -0.05778d, 0.04797d, -0.00223d, 0.17661d, 0.22427d, -0.04914d, 0.09114d, 0.12236d, 0.00708d, 0.74315d, -0.01346d, 0.02245d, -0.02555d, -0.30446d, 0.13947d, -0.1234d, -0.18498d, -0.04099d, 0.02103d, 0.06337d, -0.01224d, 0.28181d, -0.01019d, -0.02794d, -0.09412d, 0.03272d, -0.01095d, 0.11247d, -0.0065d, -0.01319d, -0.04296d, 0.04653d, -0.00423d, 0.06535d, 0.00014d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 7, 3, 2, 5, -6, 6, 3, 7, 0, 2, 2, 5, -5, 6, 5, 3, 1, 6, -4, 7, 2, 8, 0, 2, 1, 6, -3, 7, 0, 3, 1, 6, -2, 7, -2, 8, 0, 2, 4, 5, -10, 6, 3, 3, 1, 5, -1, 6, -4, 7, 0, 3, 2, 5, -4, 6, -3, 7, 0, 3, 2, 6, -8, 7, 4, 8, 0, 3, 3, 5, -10, 6, 7, 7, 0, 2, 6, 5, -15, 6, 0, 2, 2, 6, -6, 7, 0, 3, 1, 5, -4, 6, 4, 7, 1, 3, 1, 5, -2, 6, -1, 7, 0, 3, 2, 5, -5, 6, 1, 8, 0, 3, 3, 5, -8, 6, 2, 7, 0, 3, 1, 5, -3, 6, 2, 8, 0, 3, 1, 5, -3, 6, 1, 7, 1, 1, 1, 8, 0, 3, 1, 5, -3, 6, 2, 7, 1, 3, 1, 5, -2, 6, -2, 7, 0, 2, 2, 6, -5, 7, 1, 3, 2, 6, -6, 7, 2, 8, 0, 3, 2, 6, -7, 7, 4, 8, 0, 3, 2, 5, -4, 6, -2, 7, 0, 3, 1, 5, -1, 6, -5, 7, 0, 3, 2, 6, -7, 7, 5, 8, 0, 3, 1, 6, -1, 7, -2, 8, 0, 2, 1, 6, -2, 7, 1, 3, 1, 6, -3, 7, 2, 8, 0, 3, 1, 6, -4, 7, 4, 8, 1, 3, 2, 5, -5, 6, 2, 8, 1, 3, 2, 5, -6, 6, 2, 7, 1, 2, 2, 7, -2, 8, 0, 1, 1, 7, 2, 2, 5, 5, -12, 6, 2, 3, 2, 6, -5, 7, 1, 8, 0, 3, 1, 5, -1, 6, -3, 7, 0, 3, 7, 5, -18, 6, 3, 7, 0, 2, 3, 5, -7, 6, 3, 3, 1, 6, 1, 7, -5, 8, 0, 3, 1, 5, -4, 6, 3, 7, 0, 3, 5, 5, -13, 6, 3, 7, 0, 2, 1, 5, -2, 6, 3, 3, 3, 5, -9, 6, 3, 7, 0, 3, 3, 5, -8, 6, 3, 7, 1, 2, 1, 5, -3, 6, 3, 3, 5, 5, -14, 6, 3, 7, 0, 3, 1, 5, -3, 6, 3, 7, 2, 2, 3, 6, -7, 7, 0, 2, 3, 5, -8, 6, 2, 3, 2, 5, -3, 6, -4, 7, 1, 3, 2, 5, -8, 6, 7, 7, 0, 2, 5, 5, -13, 6, 0, 2, 2, 6, -4, 7, 2, 3, 2, 6, -5, 7, 2, 8, 0, 3, 2, 5, -4, 6, -1, 7, 0, 3, 2, 5, -7, 6, 4, 7, 0, 2, 1, 6, -2, 8, 2, 2, 1, 6, -1, 7, 0, 3, 1, 6, -2, 7, 2, 8, 0, 3, 2, 5, -5, 6, 2, 7, 0, 3, 2, 5, -6, 6, 2, 8, 0, 3, 2, 5, -6, 6, 1, 7, 0, 2, 3, 7, -2, 8, 0, 1, 2, 7, 1, 2, 1, 6, -1, 8, 1, 3, 1, 5, -2, 6, 1, 7, 0, 3, 1, 5, -2, 6, 2, 8, 0, 2, 3, 6, -6, 7, 2, 2, 6, 5, -14, 6, 0, 3, 3, 6, -7, 7, 2, 8, 0, 3, 2, 5, -3, 6, -3, 7, 1, 2, 4, 5, -9, 6, 3, 3, 2, 6, -2, 7, -2, 8, 0, 2, 2, 6, -3, 7, 1, 3, 2, 6, -4, 7, 2, 8, 0, 2, 2, 5, -4, 6, 3, 3, 2, 5, -7, 6, 3, 7, 1, 3, 1, 6, 1, 7, -2, 8, 0, 1, 1, 6, 5, 3, 2, 5, -5, 6, 3, 7, 1, 2, 2, 5, -6, 6, 3, 1, 3, 7, 3, 2, 4, 5, -11, 6, 3, 2, 1, 5, -4, 7, 0, 3, 2, 5, -5, 6, -3, 7, 1, 2, 6, 5, -16, 6, 0, 3, 3, 5, -7, 6, 2, 7, 0, 3, 3, 6, -4, 7, -2, 8, 0, 2, 3, 6, -5, 7, 1, 3, 3, 6, -6, 7, 2, 8, 1, 3, 3, 6, -7, 7, 4, 8, 0, 3, 2, 5, -3, 6, -2, 7, 2, 3, 2, 5, -8, 6, 5, 7, 0, 2, 2, 6, -4, 8, 0, 3, 2, 6, -1, 7, -2, 8, 1, 2, 2, 6, -2, 7, 2, 3, 2, 6, -3, 7, 2, 8, 0, 3, 2, 5, -4, 6, 1, 7, 0, 3, 2, 5, -4, 6, 2, 8, 0, 3, 2, 5, -7, 6, 2, 7, 1, 2, 1, 6, 1, 7, 1, 2, 5, 5, -11, 6, 2, 3, 1, 5, -2, 7, -2, 8, 0, 2, 1, 5, -3, 7, 0, 2, 3, 5, -6, 6, 3, 3, 2, 6, 1, 7, -5, 8, 0, 2, 2, 6, -3, 8, 1, 2, 1, 5, -1, 6, 3, 3, 2, 5, -7, 6, 3, 8, 0, 3, 3, 5, -7, 6, 3, 7, 0, 3, 2, 5, -1, 6, -7, 7, 0, 2, 1, 5, -4, 6, 2, 3, 1, 5, -2, 6, 3, 7, 0, 2, 4, 6, -7, 7, 0, 2, 3, 5, -9, 6, 0, 3, 2, 5, -2, 6, -4, 7, 0, 2, 3, 6, -4, 7, 2, 3, 2, 5, -3, 6, -1, 7, 0, 3, 2, 5, -8, 6, 4, 7, 0, 2, 2, 6, -2, 8, 1, 2, 2, 6, -1, 7, 0, 3, 2, 6, -2, 7, 2, 8, 1, 3, 2, 5, -4, 6, 2, 7, 0, 3, 2, 5, -7, 6, 2, 8, 0, 3, 2, 5, -7, 6, 1, 7, 0, 2, 1, 6, 2, 7, 0, 2, 2, 6, -1, 8, 0, 2, 4, 6, -6, 7, 1, 2, 6, 5, -13, 6, 0, 3, 2, 5, -2, 6, -3, 7, 1, 2, 4, 5, -8, 6, 2, 3, 3, 6, -2, 7, -2, 8, 0, 2, 3, 6, -3, 7, 0, 3, 3, 6, -4, 7, 2, 8, 0, 2, 2, 5, -3, 6, 3, 3, 2, 5, -8, 6, 3, 7, 1, 3, 2, 6, 1, 7, -2, 8, 0, 1, 2, 6, 5, 3, 2, 5, -4, 6, 3, 7, 2, 2, 2, 5, -7, 6, 3, 3, 1, 6, 4, 7, -2, 8, 0, 2, 1, 6, 3, 7, 1, 3, 1, 6, 2, 7, 2, 8, 0, 2, 4, 5, -12, 6, 2, 2, 5, 6, -8, 7, 0, 2, 4, 6, -5, 7, 0, 3, 2, 5, -2, 6, -2, 7, 0, 2, 3, 6, -2, 7, 1, 3, 3, 6, -3, 7, 2, 8, 0, 2, 5, 5, -10, 6, 2, 3, 1, 5, 1, 6, -3, 7, 0, 2, 3, 5, -5, 6, 3, 2, 3, 6, -3, 8, 0, 1, 1, 5, 2, 2, 1, 5, -5, 6, 2, 2, 5, 6, -7, 7, 0, 2, 4, 6, -4, 7, 2, 2, 3, 6, -2, 8, 0, 2, 3, 6, -1, 7, 0, 2, 5, 6, -6, 7, 0, 2, 4, 5, -7, 6, 2, 2, 4, 6, -3, 7, 2, 2, 2, 5, -2, 6, 2, 3, 2, 6, -9, 7, 3, 8, 0, 1, 3, 6, 4, 3, 2, 5, -3, 6, 3, 7, 1, 2, 2, 5, -8, 6, 3, 3, 2, 6, 4, 7, -2, 8, 0, 2, 4, 5, -13, 6, 1, 2, 6, 6, -8, 7, 1, 2, 5, 6, -5, 7, 0, 2, 4, 6, -2, 7, 0, 2, 5, 5, -9, 6, 2, 2, 3, 5, -4, 6, 2, 2, 1, 5, 1, 6, 2, 2, 6, 5, -11, 6, 0, 3, 6, 6, -7, 7, 2, 8, 0, 2, 4, 5, -6, 6, 2, 2, 2, 5, -1, 6, 2, 1, 4, 6, 3, 3, 2, 5, -2, 6, 3, 7, 1, 2, 2, 5, -9, 6, 1, 2, 5, 5, -8, 6, 2, 2, 3, 5, -3, 6, 1, 2, 1, 5, 2, 6, 2, 2, 6, 5, -10, 6, 1, 2, 4, 5, -5, 6, 2, 1, 2, 5, 1, 1, 5, 6, 2, 2, 5, 5, -7, 6, 1, 2, 3, 5, -2, 6, 1, 3, 1, 5, 2, 6, 3, 7, 0, 2, 6, 5, -9, 6, 0, 2, 4, 5, -4, 6, 2, 2, 2, 5, 1, 6, 1, 2, 7, 5, -11, 6, 0, 2, 5, 5, -6, 6, 1, 2, 3, 5, -1, 6, 1, 2, 6, 5, -8, 6, 1, 2, 4, 5, -3, 6, 0, 2, 5, 5, -5, 6, 0, 1, 3, 5, 0, 2, 6, 5, -7, 6, 1, 2, 7, 5, -9, 6, 0, 2, 5, 5, -4, 6, 0, 2, 6, 5, -6, 6, 0, 2, 7, 5, -8, 6, 0, 2, 6, 5, -5, 6, 0, 2, 7, 5, -7, 6, 0, 2, 8, 5, -9, 6, 0, 2, 8, 5, -8, 6, 0, 2, 1, 3, -1, 6, 0, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // /* Total terms = 215, small = 211 */ + internal static KeplerGlobalCode.plantbl sat404 = new KeplerGlobalCode.plantbl(9, new int[19] { 0, 0, 1, 0, 8, 18, 9, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 7, args, tabl, tabb, tabr, 9.55758135486d, 3652500.0d, 1.0d); + + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Ura404Data.cs b/ASCOM.Tools/Kepler/Planets/Ura404Data.cs new file mode 100644 index 0000000..a651df9 --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Ura404Data.cs @@ -0,0 +1,836 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Ura404Data + { + // /* + // First date in file = 625296.50 + // Number of records = 16731.0 + // Days per record = 131.0 + // Julian Years Lon Lat Rad + // -3000.0 to -2499.7: 0.35 0.06 0.42 + // -2499.7 to -1999.7: 0.50 0.06 0.38 + // -1999.7 to -1499.7: 0.39 0.07 0.34 + // -1499.7 to -999.8: 0.34 0.06 0.30 + // -999.8 to -499.8: 0.35 0.05 0.32 + // -499.8 to 0.2: 0.32 0.05 0.27 + // 0.2 to 500.2: 0.26 0.04 0.25 + // 500.2 to 1000.1: 0.28 0.04 0.25 + // 1000.1 to 1500.1: 0.26 0.06 0.31 + // 1500.1 to 2000.1: 0.33 0.05 0.24 + // 2000.1 to 2500.0: 0.32 0.06 0.26 + // 2500.0 to 3000.0: 0.34 0.06 0.32 + // 3000.0 to 3000.4: 0.406 0.035 0.172 + // */ + + internal static double[] tabl = new double[] { 21.56d, -4652.06828d, 154246324.90417d, 1130486.0508d, 330.11531d, -3020.20235d, -8.03769d, -122.02019d, 212.4513d, 254.23866d, 25.39758d, 60.08296d, 6949.85053d, 51951.42606d, -1834.66531d, 44481.91144d, -3267.45825d, 10776.65972d, -628.05388d, 532.83011d, -16.80583d, -30.05544d, 1420.33767d, 2007.2104d, 592.32842d, 1541.61732d, -163.55984d, 121.14134d, 114.74969d, -16.04944d, 0.06069d, 0.00725d, -0.16861d, 0.28785d, 0.07399d, -0.0968d, 0.19936d, -0.4162d, 0.02922d, 0.07398d, 0.17272d, 0.05602d, 1.65461d, -0.68278d, -2.18745d, -0.85327d, 0.52467d, -0.30863d, 0.01598d, 0.30017d, -0.0419d, -0.03288d, -0.02013d, 0.02257d, -0.54883d, -0.22701d, -0.09257d, -0.03921d, 0.02644d, 0.04667d, 0.24773d, -0.16562d, 44242.85814d, -223163.54065d, 123776.84417d, -206375.74884d, 70472.7382d, -27456.55173d, 4065.74401d, 13202.39154d, -3260.72648d, 802.50579d, -153.13236d, -503.81026d, 30.17812d, -31.91893d, -65.14719d, 77.78417d, -37.38185d, 19.13337d, -3.14043d, -0.21147d, 0.27143d, 0.17424d, 0.04458d, 0.10976d, -0.41841d, -0.21887d, -0.09194d, -0.02303d, 0.02896d, 0.10044d, 0.01385d, 0.01723d, -0.01126d, -0.09318d, -57.9589d, 29.69059d, -46.4139d, 3.07177d, 0.42494d, 2.33678d, -3.09621d, 0.05256d, -0.02134d, -0.35202d, -0.44475d, -0.83135d, 1318.18265d, 25605.86848d, -9168.38371d, 18917.31507d, -5145.7448d, 2130.77612d, -485.2592d, -438.44867d, 19.97802d, -33.148d, -23383.91826d, -45133.19122d, -18520.80729d, -26549.95198d, -2276.70124d, -2974.01604d, 603.23665d, 306.87616d, -87.7307d, -32.49134d, 549975.14525d, 261920.31896d, 526261.09735d, 362619.26839d, 150616.68873d, 164643.90808d, 9550.02662d, 27381.83042d, -1065.89047d, 1024.20231d, -66.63822d, -44.75169d, -92.10532d, -20.2693d, -313205.95341d, 1462242.64616d, 112982.53079d, 1865690.41965d, 308844.30901d, 639864.93227d, 89716.32843d, 10378.80773d, 4395.08428d, -14565.35913d, -3016.07754d, -19348.64612d, 3838.36899d, -9813.42713d, 6883.58821d, -6064.92588d, 2740.47455d, -176.29547d, 241.91895d, 268.44181d, -6.13397d, 17.92503d, -0.01377d, -0.08742d, 387.51915d, 257.03872d, 152.81792d, 221.56197d, -22.94836d, 29.5664d, -2.27801d, 4.72805d, -6.0342d, -0.36763d, 0.00667d, 0.00443d, -0.01405d, 0.04658d, -0.06533d, -0.01966d, 0.10738d, 0.00443d, 0.02889d, 0.01056d, 0.009d, -0.02206d, 0.00013d, 0.05281d, 0.03035d, 0.34793d, 0.1946d, 2.4736d, 0.18189d, -0.83895d, 0.24983d, 15.3205d, 0.4601d, 2.79643d, -0.45793d, 0.96707d, -0.31226d, 0.51911d, 0.04071d, 0.39399d, 0.00038d, 0.03854d, 0.22446d, 0.1363d, -0.04357d, 0.03635d, 0.00202d, -0.04502d, -0.00458d, -0.03884d, 1.32597d, 3.40849d, -1.67839d, -0.95411d, -1.00116d, -0.72744d, -0.22484d, -0.27682d, -0.18069d, 0.00405d, -0.01d, 0.27523d, -0.07038d, -0.01051d, -0.09064d, 0.08518d, 0.02083d, -0.25406d, 0.17745d, -0.00944d, 0.21326d, 0.20454d, 18.84894d, -7.644d, 0.6267d, -11.02728d, 8.91329d, 20.6719d, 0.17757d, -0.15471d, -0.11385d, -0.46057d, 6.23014d, -14.46025d, 2.30012d, -2.22677d, 5.16823d, -1.64235d, -274.58413d, 833.33247d, -191.26241d, 269.90157d, -17.25965d, 9.11368d, -261.65136d, -18274.45858d, -2553.83872d, -10039.1049d, -508.52567d, 336.18172d, 14.88587d, 421.35954d, 162.43462d, 544.9258d, -0.44246d, 0.23216d, -0.29024d, -0.13057d, -1.58438d, 0.34032d, -0.31604d, -0.01166d, -0.07112d, 0.05721d, -0.10813d, 0.01064d, -0.05413d, 0.06705d, -0.41582d, -0.47725d, 0.31031d, 0.08605d, 0.00409d, 0.02373d, 0.08092d, 0.06247d, -0.01026d, 0.05863d, -0.00238d, 0.02948d, 0.00117d, 0.02714d, 0.0172d, 0.18261d, -0.04067d, 0.88639d, -0.15502d, -0.96383d, -0.05307d, -0.17319d, -0.00486d, -0.02373d, -0.14748d, -0.11884d, 0.07798d, -0.00358d, 0.01104d, 0.00805d, 0.15099d, -0.03453d, 0.01846d, 0.03459d, 0.02197d, 0.07012d, -0.43677d, -1.87445d, 1.35202d, 2.28294d, -0.03592d, 0.07679d, 0.16427d, 0.03014d, 0.02472d, 0.05549d, -0.04985d, 0.05874d, 0.35361d, 0.01144d, -0.574d, 1.34898d, 0.00265d, 0.0154d, 0.00951d, 0.08159d, -0.00435d, 0.34759d, -0.12413d, -0.49848d, -0.77075d, -2.7381d, -31.77702d, 12.16042d, -14.87605d, 11.98287d, 12.69358d, 1.31307d, -8.22911d, -21.47437d, -0.24051d, -0.38332d, -0.01162d, -0.03175d, 0.00556d, 0.02454d, -0.02297d, -0.01654d, 0.00707d, 0.04828d, -0.00309d, 0.17381d, -0.005d, -0.07579d, 0.02008d, 0.05356d, 0.00702d, 0.01133d, -0.00237d, -0.00612d, 0.18551d, 0.22799d, -0.14194d, -0.08593d, 0.00002d, -0.01049d, -0.17363d, -0.13986d, 0.00078d, -0.06993d, -0.0043d, -0.07795d, -0.03232d, -4.1317d, 0.00311d, 0.05356d, -0.17324d, -0.15505d, -0.0059d, -0.06608d, 0.04257d, -0.04571d, 0.00501d, 0.02141d, -0.00037d, 0.07845d, -0.00381d, -0.03417d, 0.01834d, 0.03349d, 0.07994d, 0.15297d, -0.82299d, 0.24672d, 0.51764d, 0.96379d, 0.01729d, 0.02489d, -0.08581d, 0.13252d, 0.00538d, 0.01995d, -0.00148d, -0.02261d, 0.00534d, 0.01565d, -0.07518d, -0.28114d, 0.22386d, 0.39023d, -0.00864d, 0.00964d, -0.01923d, -0.02426d, -0.00112d, 0.00923d, -0.00685d, 0.0245d, 0.26733d, -0.99972d, -0.82005d, 0.13725d, 0.0152d, -0.0079d, 0.00358d, 0.00751d, -0.00648d, -0.00605d, -0.04966d, -0.04633d, 0.06394d, -0.01965d, 0.50185d, 0.40553d, -0.25809d, 0.28853d, 0.52545d, -3.41675d, -0.00347d, -0.11848d, 0.02945d, -0.01061d, -0.0416d, -0.03519d, -0.03234d, -0.81852d, -0.02156d, -0.00841d, 0.00029d, 0.0002d, -0.02281d, -0.00364d, 0.04738d, -0.04504d, -0.19161d, 0.37225d, 0.05765d, 0.11987d, 0.0005d, 0.02012d, -0.03806d, 0.39498d, 0.29982d, 0.00886d, 0.01671d, 53.04042d, -0.0416d, -0.38856d, -0.00174d, -0.01773d, -0.47661d, -0.3201d, -0.01088d, -0.16231d, -0.01584d, -0.00144d, 0.06659d, 0.12734d, 0.04884d, 0.02236d, 0.00146d, 0.0603d, -0.2066d, -0.03982d, 0.15091d, 1.24562d, -0.01303d, -0.22426d, -0.01518d, -0.03922d, -0.00043d, -0.00047d, 0.02451d, 0.04437d, 0.0238d, -0.00189d, -0.0064d, -0.07114d, -0.0032d, -0.02491d, -0.00829d, 0.07284d, 0.02846d, -0.28034d, -0.00268d, 0.00256d, -0.4342d, 0.39645d, -0.31053d, 1.25916d, -0.00371d, -0.00651d, -0.00096d, 0.02762d, -0.00067d, -0.02503d, -0.01517d, 0.03748d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabb = new double[] { 0.0d, 107.91527d, 83.39404d, -124.29804d, -7.73277d, -3.99442d, -0.08328d, -1.74251d, -9.05659d, -22.88559d, -2.30655d, -4.40259d, -470.94604d, -3648.43408d, 326.2896d, -2972.91303d, 337.37285d, -650.3357d, 57.18479d, -18.2913d, 1.13897d, 2.70158d, -13.64388d, -71.88619d, 7.36408d, -43.79994d, 6.57463d, -5.81111d, -0.06451d, 0.73379d, 0.00574d, -0.01635d, 0.00074d, -0.01496d, -0.00418d, 0.00647d, -0.00407d, 0.00548d, 0.00002d, 0.00187d, -0.00591d, 0.00557d, 0.32568d, -0.01574d, 0.19347d, -0.01705d, 0.00173d, 0.02384d, -0.00248d, -0.00103d, 0.00227d, 0.00146d, 0.00307d, -0.0004d, 0.03886d, 0.01987d, 0.00546d, 0.00345d, 0.00134d, -0.00609d, -0.01502d, -0.01569d, -10080.59325d, 10806.67752d, -14013.76861d, 9928.38683d, -6540.8348d, 2084.91597d, -1093.05006d, -305.34266d, -9.04558d, -110.3231d, 9.26094d, -3.93195d, 0.25552d, 0.50327d, -13.1217d, -4.19317d, -4.50857d, -3.37626d, -0.2685d, -0.36028d, -0.00357d, 0.05862d, -0.00828d, 0.00926d, -0.01515d, -0.03687d, -0.00224d, -0.00802d, -0.00225d, -0.00158d, -0.00022d, -0.00044d, -0.00281d, 0.00371d, 2.28259d, -4.29888d, 1.74622d, -2.13604d, 0.37023d, -0.37022d, 0.00886d, 0.07081d, 0.01669d, 0.00056d, -0.0202d, 0.01586d, -4255.31929d, 5978.03267d, -7264.48027d, 1884.12585d, -2353.93882d, -1593.23001d, 17.57205d, -498.54139d, 33.28704d, -13.79498d, -38416.64883d, -13774.09664d, -32822.03952d, -3983.42726d, -7538.09822d, 1906.66915d, -221.24439d, 512.77046d, 32.26101d, 12.46483d, 142710.47871d, -96584.83892d, 145395.05981d, -86630.96423d, 48202.96749d, -23596.77676d, 5286.16967d, -1626.44031d, -16.53568d, 95.15428d, -15.19472d, 5.69207d, -6.72181d, 7.28683d, 9515.16142d, -166495.49381d, 5588.84271d, -146260.29445d, 2023.55881d, -30687.22422d, 243.64741d, 971.58076d, 390.73247d, -236.13754d, -2684.56349d, 739.81087d, -597.39429d, 474.89313d, -631.69166d, 213.04947d, -204.89515d, -33.09139d, -17.78004d, -22.21866d, 0.61083d, -1.41177d, -0.0007d, -0.00501d, -58.24552d, 25.27978d, -36.39386d, 0.36376d, -2.2103d, -6.46685d, -0.58473d, -0.09357d, 0.12829d, -0.94855d, 0.00042d, 0.00048d, 0.00411d, 0.00101d, 0.00249d, -0.00865d, 0.00223d, 0.00293d, 0.00041d, -0.00042d, 0.00104d, -0.00086d, 0.00126d, -0.0038d, 0.00906d, -0.02253d, 0.05998d, -0.10318d, 0.00004d, -0.03225d, 0.14303d, -0.05273d, 0.32683d, 0.09386d, -0.17053d, 0.60847d, -0.0619d, 0.28166d, 0.06411d, 0.05289d, 0.01138d, 0.00128d, -0.0093d, 0.00272d, 0.00037d, 0.00215d, 0.00004d, 0.0005d, 0.00114d, -0.00217d, 0.05358d, -0.06413d, -0.00124d, 0.03842d, 0.01006d, 0.22479d, 0.00412d, 0.0404d, 0.01708d, 0.02164d, 0.02484d, -0.02463d, -0.00103d, 0.02633d, -0.01303d, -0.03214d, 0.03613d, 0.02205d, -0.02677d, -0.02522d, -0.00293d, 0.0313d, -1.87255d, -2.50308d, -1.53715d, 0.36859d, -0.17829d, -1.12095d, -0.05652d, -0.00786d, -0.06992d, 0.07279d, -2.95896d, 0.55138d, -0.61498d, -0.11008d, -0.8779d, -0.50965d, 119.73553d, -35.18217d, 44.78683d, -4.22438d, 1.95723d, 0.58033d, -4077.02379d, -353.3911d, -2781.63273d, -75.23318d, -312.50478d, -23.86495d, 24.59887d, 32.56837d, 120.09593d, -51.00495d, 0.09737d, 0.09111d, 0.04799d, -0.05029d, 0.08351d, -0.33726d, 0.03158d, -0.06435d, -0.00523d, -0.01736d, 0.00751d, -0.01757d, -0.00406d, -0.01198d, 0.16402d, -0.10986d, -0.02024d, 0.07205d, -0.0044d, -0.00072d, -0.00465d, 0.0031d, -0.00121d, -0.00121d, 0.00083d, 0.0002d, 0.0014d, -0.00176d, 0.00381d, -0.00731d, -0.01618d, 0.0157d, -0.10201d, 0.05809d, -0.03359d, 0.01024d, -0.00535d, 0.00018d, 0.00024d, 0.00509d, -0.00158d, -0.00466d, 0.00009d, -0.00083d, -0.007d, -0.0009d, -0.00011d, -0.00079d, 0.00133d, -0.00126d, 0.01416d, 0.05553d, 0.04283d, -0.06719d, 0.00119d, 0.00291d, -0.00263d, 0.01282d, -0.0004d, 0.00188d, -0.00237d, 0.00973d, -0.39533d, 0.18773d, -0.79821d, -0.40168d, 0.00151d, -0.00161d, 0.00123d, -0.00516d, -0.01432d, -0.00293d, -0.05477d, 0.0413d, -0.48837d, 0.18944d, -0.12552d, 9.37098d, 1.02045d, 5.11382d, 0.72098d, -3.70049d, -5.80982d, 3.30105d, -0.09682d, 0.09696d, -0.00876d, 0.00504d, 0.00318d, 0.00245d, 0.00563d, -0.00665d, 0.00108d, -0.00233d, -0.00117d, 0.00177d, -0.00343d, 0.00503d, 0.01044d, -0.00651d, 0.00296d, -0.00162d, 0.00037d, 0.00028d, -0.0002d, -0.00786d, 0.00029d, 0.00836d, 0.00004d, 0.00033d, -0.00309d, -0.00086d, -0.00157d, -0.00086d, -0.00058d, 0.00105d, -0.04557d, 0.01794d, -0.00122d, -0.00086d, 0.0042d, -0.00285d, 0.00118d, -0.0002d, 0.00743d, -0.01217d, 0.00053d, -0.00084d, -0.00075d, 0.00097d, -0.00107d, 0.00314d, 0.00576d, -0.00505d, 0.03624d, -0.02546d, 0.05379d, 0.30081d, 0.2987d, -0.22106d, 0.00696d, -0.00801d, -0.03995d, -0.01808d, -0.00139d, 0.00102d, -0.00059d, 0.00138d, 0.00019d, -0.00037d, 0.00274d, 0.00658d, 0.00672d, -0.01132d, 0.00023d, 0.00051d, 0.00031d, 0.0009d, -0.00017d, -0.00001d, 0.00085d, 0.00004d, 0.02221d, -0.01977d, 0.07498d, 0.03025d, -0.00082d, -0.00022d, -0.00073d, -0.00028d, -0.00253d, 0.00259d, -0.01329d, 0.01805d, 0.00096d, 0.00833d, -0.11836d, 0.04277d, -0.1082d, -0.03018d, 0.34504d, 0.09834d, -0.00538d, -0.00231d, 0.00036d, 0.00042d, -0.00023d, 0.0026d, -0.01137d, 0.00036d, 0.01081d, -0.03271d, -0.00029d, -0.00028d, 0.00018d, -0.00003d, 0.00009d, 0.00012d, 0.00127d, 0.00343d, 0.001d, -0.00064d, 0.00014d, 0.00004d, 0.0015d, 0.00069d, -0.01484d, 0.00135d, 0.0393d, 0.01405d, 0.00064d, 0.00029d, 0.00009d, 0.00009d, 0.00054d, -0.00048d, 0.00019d, 0.00005d, -0.00009d, 0.00018d, 0.00192d, -0.00333d, 0.01824d, 0.01071d, 0.00107d, -0.00341d, 0.2553d, -0.18414d, -0.84151d, -0.31475d, -0.004d, -0.0001d, -0.00174d, 0.00019d, 0.00006d, -0.00079d, 0.00066d, -0.0007d, 0.00599d, 0.0033d, -0.0016d, -0.00013d, -0.00067d, -0.00006d, -0.00176d, -0.00111d, 0.00652d, 0.00368d, 0.00004d, 0.00001d, -0.00081d, 0.00089d, 0.00366d, 0.00139d, 0.00002d, 0.00001d, -0.0187d, -0.00998d, -0.0002d, -0.00007d, 0.00005d, 0.00003d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabr = new double[] { 0.0d, -53.23277d, -44.70609d, -62.54432d, -19.15218d, 0.10867d, -1.91911d, 1.47517d, 16.51994d, 5.00458d, 3.8898d, 1.5574d, 3598.17109d, 1831.07574d, 2633.34851d, 1775.69482d, 497.10486d, 488.77343d, 6.03892d, 31.08365d, -2.06585d, -1.12599d, 230.37762d, -113.95449d, 162.40244d, -46.57185d, 6.70207d, 17.27241d, -0.66092d, -14.42065d, -0.01044d, -0.00287d, -0.03894d, -0.01663d, 0.01629d, 0.00496d, 0.08411d, 0.02855d, 0.01795d, -0.00695d, 0.02426d, -0.03921d, -0.24495d, -0.77369d, -0.31404d, 0.38668d, -0.05682d, -0.17197d, 0.06145d, -0.0051d, 0.00606d, -0.00886d, -0.0037d, -0.00588d, 0.02173d, -0.11909d, 0.00302d, -0.01796d, -0.01067d, 0.0099d, 0.05283d, 0.06517d, 59710.89716d, -491.12783d, 58672.38609d, 19564.41947d, 10597.9905d, 14313.02561d, -2585.5204d, 766.78396d, -138.39893d, -802.43403d, 131.35006d, -31.97561d, 7.95978d, 8.16075d, 28.72669d, 31.72473d, 6.45792d, 16.50701d, 0.01066d, 1.29718d, 0.11565d, -0.1324d, 0.0511d, -0.01543d, -0.09994d, 0.18864d, -0.0133d, 0.04148d, 0.0351d, -0.00366d, 0.00604d, -0.00604d, 0.03752d, -0.00256d, -7.00488d, -21.63748d, 1.43064d, -17.10914d, -0.62987d, 0.48719d, 0.00697d, -1.22665d, -0.14435d, -0.0055d, 0.32008d, -0.19855d, -13976.73731d, -3559.49432d, -7709.90803d, -9310.80334d, 749.31835d, -3491.50696d, 540.94979d, -84.5755d, 16.96663d, 35.5393d, 37214.64771d, -36361.15845d, 21093.74492d, -31855.33076d, 1500.84653d, -7031.97901d, -453.40865d, -18.36692d, -2.07726d, -17.92336d, -56348.30507d, 378512.71483d, -111444.4334d, 370543.9516d, -61893.70301d, 112131.05507d, -11977.44617d, 9156.15245d, -567.61838d, -495.2576d, 16.96202d, -44.06279d, 4.2476d, -48.83674d, -643705.49516d, -131013.09649d, -838580.02217d, 67627.11556d, -288441.70339d, 150227.25291d, -2500.57537d, 42676.19888d, 7084.60505d, 2043.65642d, 9639.56835d, -1502.0339d, -4126.00409d, -828.73564d, -2801.35204d, -2293.77751d, -209.23365d, -1045.31476d, 95.57334d, -102.74623d, 7.19216d, 1.89593d, -0.05661d, 0.02166d, 120.38332d, -141.16507d, 98.31386d, -40.23448d, 10.84269d, 17.57713d, 1.69239d, 1.45065d, -0.19626d, 2.76108d, -0.0027d, 0.0036d, -0.02333d, -0.0071d, -0.01035d, 0.0295d, 0.00737d, -0.06311d, -0.00613d, 0.01407d, 0.01377d, 0.00879d, -0.03287d, 0.00012d, -0.21667d, 0.01793d, -1.54865d, 0.10953d, 0.54543d, 0.12102d, -9.48047d, 0.11477d, -1.34966d, 0.23199d, -1.50834d, 0.26567d, -0.64503d, 0.10742d, -0.21452d, 0.04428d, -0.0192d, -0.00906d, -0.09378d, 0.12773d, -0.02787d, -0.0309d, 0.03111d, 0.0014d, 0.03771d, -0.01269d, -1.94794d, 1.22823d, 0.64183d, -1.11467d, -0.19301d, -0.27357d, 0.0571d, -0.08115d, -0.07318d, 0.00806d, 0.14286d, 0.20297d, 0.1492d, -0.07897d, 0.09682d, 0.02379d, -0.13928d, 0.01679d, -0.00774d, 0.1006d, 0.24433d, 0.1676d, -2.88905d, -1.61439d, 2.83052d, -3.41031d, 36.37048d, 3.37867d, 0.29321d, 0.09687d, 0.29324d, -0.14651d, 8.11116d, 1.79211d, 1.36421d, 0.88111d, 1.21683d, 2.3795d, -357.76211d, -87.84636d, -117.55745d, -67.18338d, -5.26029d, -6.27559d, 7509.94562d, 3.68942d, 4223.62097d, -1041.13557d, -74.64464d, -251.41613d, -166.2218d, -1.6819d, -214.5534d, 62.79593d, -0.0825d, -0.15936d, -0.0383d, 0.10857d, 0.21368d, 0.50812d, 0.00869d, 0.09832d, 0.02158d, 0.02045d, 0.01407d, 0.03591d, 0.0346d, 0.01171d, -0.164d, 0.09751d, 0.03521d, -0.12858d, 0.007d, -0.00524d, 0.01698d, -0.04796d, 0.04006d, 0.00565d, -0.02783d, -0.00205d, -0.02296d, 0.00153d, -0.16139d, 0.01514d, -0.78136d, -0.01546d, 0.40374d, -0.06014d, 0.06212d, -0.01828d, 0.00831d, -0.00173d, 0.06857d, -0.11677d, 0.00028d, 0.05765d, -0.00796d, 0.00691d, 0.03764d, 0.14902d, -0.02653d, 0.02122d, -0.05503d, 0.01549d, 1.5663d, -0.35551d, -1.8796d, 1.14303d, -0.06063d, -0.03425d, 0.03367d, -0.11969d, 0.04485d, -0.01651d, 0.04647d, -0.02097d, 0.22841d, 0.47362d, 0.99226d, -0.6066d, -0.01249d, 0.00134d, -0.07435d, 0.00722d, -0.31796d, -0.00015d, 0.20533d, -0.04398d, 0.93944d, -0.2671d, -5.60051d, -9.32918d, -5.13538d, -4.0513d, -0.56529d, 4.34112d, 7.18308d, -2.66103d, 0.13241d, -0.07999d, 0.01046d, -0.00535d, -0.04037d, -0.00455d, -0.0051d, 0.00731d, -0.04576d, 0.00513d, -0.15846d, -0.00236d, 0.04628d, -0.00463d, -0.01585d, 0.00585d, -0.00213d, 0.00283d, 0.00778d, -0.00198d, -0.17803d, 0.18321d, 0.07702d, -0.12325d, 0.01091d, 0.00349d, 0.14211d, -0.2183d, 0.07289d, -0.00994d, 0.0709d, -0.00079d, 4.18441d, -0.07413d, -0.06247d, -0.00011d, -0.15453d, 0.14499d, -0.06557d, -0.00098d, 0.0029d, 0.02921d, -0.01923d, 0.00457d, -0.07538d, -0.0012d, 0.02263d, -0.00037d, -0.01061d, 0.00591d, -0.04725d, 0.02364d, -0.0746d, -0.24108d, -0.2831d, 0.14643d, -0.007d, 0.00427d, 0.22963d, 0.03713d, -0.02062d, 0.00478d, 0.01434d, 0.00095d, -0.01425d, 0.00376d, 0.29611d, -0.08038d, -0.37811d, 0.21703d, -0.00723d, -0.00924d, -0.02736d, 0.01814d, 0.00934d, 0.00731d, 0.00613d, 0.00686d, -0.91503d, -0.32009d, -0.15505d, 0.79589d, -0.00555d, -0.01536d, -0.00698d, 0.0048d, 0.00373d, -0.00046d, 0.00715d, -0.0047d, -0.0197d, -0.05238d, 0.60649d, -0.32669d, 0.1779d, 0.33383d, -2.74922d, -0.25827d, -0.07862d, 0.00406d, -0.00948d, -0.02117d, 0.03127d, -0.04199d, 0.8967d, -0.02413d, 0.01954d, 0.0399d, 0.00063d, -0.00071d, -0.00226d, 0.02009d, -0.04407d, -0.05069d, 0.3823d, 0.16101d, 0.11893d, -0.06125d, 0.02051d, -0.00046d, 0.39211d, 0.03679d, 0.01666d, -0.31336d, 53.28735d, -0.01791d, -0.39414d, 0.04181d, -0.01885d, 0.00165d, 0.31349d, -0.47359d, 0.16133d, -0.01023d, 0.00007d, 0.01758d, -0.13351d, 0.07249d, 0.00977d, 0.05445d, 0.1165d, -0.00191d, -0.09824d, 0.40106d, 2.41155d, -0.30655d, 0.24975d, -0.01248d, -0.03688d, 0.01097d, 0.00038d, -0.00051d, -0.04736d, 0.0261d, 0.00968d, 0.02634d, 0.07918d, -0.00606d, 0.02735d, -0.0032d, -0.07544d, -0.00468d, 0.19996d, -0.01964d, 0.00201d, 0.00267d, 0.39562d, 0.43289d, 1.24743d, 0.31084d, -0.00666d, 0.00377d, 0.05668d, 0.00148d, 0.0322d, -0.00026d, 0.03717d, 0.01509d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 3, 2, 1, 7, -2, 8, 0, 2, 2, 7, -4, 8, 0, 2, 3, 7, -6, 8, 1, 2, 2, 5, -5, 6, 4, 2, 1, 6, -3, 7, 3, 3, 1, 6, -1, 7, -4, 8, 0, 3, 2, 5, -7, 6, 6, 7, 0, 3, 2, 6, -6, 7, 1, 8, 0, 3, 2, 6, -7, 7, 3, 8, 0, 3, 2, 6, -8, 7, 4, 8, 0, 3, 2, 6, -7, 7, 2, 8, 0, 2, 2, 6, -6, 7, 2, 3, 1, 5, -4, 6, 4, 7, 0, 3, 1, 6, -2, 7, -1, 8, 0, 3, 1, 6, -3, 7, 1, 8, 0, 3, 1, 6, -4, 7, 3, 8, 1, 2, 5, 7, -9, 8, 0, 2, 4, 7, -7, 8, 0, 2, 2, 7, -3, 8, 6, 2, 1, 7, -3, 8, 2, 2, 2, 7, -5, 8, 0, 2, 3, 7, -7, 8, 0, 3, 1, 6, -6, 7, 5, 8, 1, 3, 1, 6, -5, 7, 3, 8, 0, 3, 2, 5, -8, 6, 8, 7, 0, 3, 1, 5, -4, 6, 5, 7, 0, 2, 2, 6, -5, 7, 3, 3, 1, 6, 1, 7, -9, 8, 0, 3, 2, 5, -4, 6, -2, 7, 0, 2, 1, 6, -4, 8, 4, 2, 1, 6, -2, 7, 4, 2, 5, 7, -8, 8, 5, 2, 3, 7, -4, 8, 0, 1, 1, 7, 5, 2, 2, 7, -6, 8, 4, 3, 1, 6, -6, 7, 4, 8, 0, 2, 1, 6, -4, 7, 4, 3, 2, 6, -5, 7, 1, 8, 0, 3, 2, 6, -6, 7, 3, 8, 0, 2, 2, 6, -7, 7, 0, 3, 1, 5, -4, 6, 3, 7, 0, 3, 1, 6, -1, 7, -1, 8, 0, 2, 1, 5, -2, 6, 0, 2, 6, 7, -9, 8, 0, 2, 5, 7, -7, 8, 0, 2, 4, 7, -5, 8, 0, 2, 3, 7, -3, 8, 1, 2, 2, 7, -1, 8, 0, 2, 1, 7, 1, 8, 2, 1, 3, 8, 0, 2, 3, 6, -7, 7, 1, 3, 2, 5, -3, 6, -4, 7, 0, 3, 2, 6, -3, 7, -2, 8, 0, 2, 2, 6, -4, 7, 1, 3, 2, 6, -5, 7, 2, 8, 1, 3, 5, 5, -9, 6, -8, 7, 0, 3, 2, 5, -4, 6, -1, 7, 0, 3, 1, 6, 3, 7, -8, 8, 0, 3, 2, 6, -8, 7, 1, 8, 0, 3, 2, 5, -7, 6, 4, 7, 0, 3, 4, 5, -10, 6, 2, 7, 0, 2, 1, 6, -2, 8, 0, 2, 1, 6, -1, 7, 2, 2, 8, 7, -12, 8, 0, 2, 7, 7, -10, 8, 0, 2, 6, 7, -8, 8, 1, 2, 5, 7, -6, 8, 0, 2, 4, 7, -4, 8, 2, 1, 2, 7, 4, 1, 4, 8, 0, 2, 1, 7, -6, 8, 0, 2, 2, 7, -8, 8, 1, 2, 3, 7, -10, 8, 0, 2, 4, 7, -12, 8, 0, 3, 1, 6, -6, 7, 2, 8, 0, 2, 1, 6, -5, 7, 1, 3, 1, 6, -4, 7, -2, 8, 0, 3, 1, 5, -4, 6, 2, 7, 1, 3, 1, 5, -2, 6, 1, 7, 0, 2, 7, 7, -9, 8, 0, 2, 6, 7, -7, 8, 0, 2, 5, 7, -5, 8, 0, 2, 4, 7, -3, 8, 0, 2, 3, 7, -1, 8, 0, 2, 2, 7, 1, 8, 0, 2, 3, 6, -6, 7, 1, 3, 3, 6, -7, 7, 2, 8, 0, 3, 2, 5, -3, 6, -3, 7, 1, 3, 2, 6, -2, 7, -2, 8, 0, 2, 2, 6, -3, 7, 1, 3, 2, 6, -4, 7, 2, 8, 0, 3, 2, 5, -7, 6, 3, 7, 1, 3, 1, 6, 1, 7, -2, 8, 0, 1, 1, 6, 1, 2, 8, 7, -10, 8, 0, 2, 7, 7, -8, 8, 0, 2, 6, 7, -6, 8, 0, 2, 5, 7, -4, 8, 0, 2, 4, 7, -2, 8, 0, 1, 3, 7, 3, 2, 2, 7, 2, 8, 0, 2, 1, 7, 4, 8, 0, 2, 1, 5, -4, 7, 0, 2, 1, 6, -6, 7, 0, 2, 8, 7, -9, 8, 0, 2, 7, 7, -7, 8, 0, 2, 6, 7, -5, 8, 0, 2, 5, 7, -3, 8, 0, 2, 4, 7, -1, 8, 0, 3, 3, 6, -4, 7, -2, 8, 0, 2, 3, 6, -5, 7, 1, 3, 3, 6, -6, 7, 2, 8, 0, 3, 2, 5, -3, 6, -2, 7, 1, 3, 2, 6, -1, 7, -2, 8, 0, 2, 2, 6, -2, 7, 0, 3, 2, 6, -3, 7, 2, 8, 0, 3, 2, 5, -7, 6, 2, 7, 1, 2, 1, 6, 1, 7, 0, 2, 9, 7, -10, 8, 0, 2, 8, 7, -8, 8, 0, 2, 7, 7, -6, 8, 0, 2, 6, 7, -4, 8, 0, 2, 5, 7, -2, 8, 0, 1, 4, 7, 1, 2, 3, 7, 2, 8, 0, 2, 1, 5, -3, 7, 0, 2, 9, 7, -9, 8, 0, 2, 8, 7, -7, 8, 0, 3, 3, 6, -3, 7, -2, 8, 0, 2, 3, 6, -4, 7, 1, 3, 3, 6, -5, 7, 2, 8, 0, 3, 2, 5, -3, 6, -1, 7, 0, 3, 2, 5, -8, 6, 4, 7, 0, 2, 2, 6, -2, 8, 0, 2, 2, 6, -1, 7, 1, 3, 2, 6, -2, 7, 2, 8, 0, 3, 2, 5, -7, 6, 1, 7, 0, 2, 6, 7, -2, 8, 0, 1, 5, 7, 0, 3, 3, 6, -4, 7, 1, 8, 0, 2, 1, 5, -2, 7, 2, 3, 1, 5, -3, 7, 2, 8, 0, 3, 1, 5, -1, 6, 1, 7, 0, 2, 4, 6, -6, 7, 0, 2, 3, 6, -3, 7, 0, 1, 2, 6, 0, 3, 2, 5, -4, 6, 3, 7, 0, 3, 1, 5, 1, 6, -4, 7, 0, 3, 3, 5, -5, 6, -1, 7, 0, 1, 6, 7, 1, 3, 1, 5, 1, 7, -4, 8, 0, 2, 1, 5, -2, 8, 0, 2, 1, 5, -1, 7, 1, 3, 1, 5, -2, 7, 2, 8, 0, 3, 1, 5, -3, 7, 4, 8, 0, 3, 1, 5, -5, 6, 1, 7, 1, 3, 1, 5, -1, 6, 2, 7, 0, 2, 4, 6, -5, 7, 0, 2, 3, 6, -2, 7, 0, 3, 1, 5, 1, 7, -2, 8, 0, 1, 1, 5, 1, 2, 4, 6, -4, 7, 0, 2, 3, 6, -1, 7, 0, 3, 3, 5, -5, 6, 1, 7, 0, 2, 5, 6, -6, 7, 0, 2, 4, 6, -3, 7, 0, 2, 5, 6, -5, 7, 0, 2, 6, 6, -6, 7, 0, 2, 2, 5, -3, 7, 0, 2, 2, 5, -2, 7, 0, 2, 2, 5, -2, 8, 0, 2, 2, 5, -1, 7, 1, 3, 2, 5, -2, 7, 2, 8, 0, 1, 2, 5, 0, 2, 3, 5, -3, 7, 0, 2, 3, 5, -1, 7, 0, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // /* Total terms = 177, small = 171 */ + internal static KeplerGlobalCode.plantbl ura404 = new KeplerGlobalCode.plantbl(9, new int[19] { 0, 0, 0, 0, 5, 10, 9, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 6, args, tabl, tabb, tabr, 19.2184460618d, 3652500.0d, 1.0d); + + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/Kepler/Planets/Ven404Data.cs b/ASCOM.Tools/Kepler/Planets/Ven404Data.cs new file mode 100644 index 0000000..67c861c --- /dev/null +++ b/ASCOM.Tools/Kepler/Planets/Ven404Data.cs @@ -0,0 +1,503 @@ + +namespace ASCOM.Tools.Kepler +{ + static class Ven404Data + { + // /* + // First date in file = 1228000.50 + // Number of records = 397276.0 + // Days per record = 4.0 + // Julian Years Lon Lat Rad + // -1349.9 to -1000.0: 0.23 0.15 0.10 + // -1000.0 to -500.0: 0.25 0.15 0.10 + // -500.0 to 0.0: 0.20 0.13 0.09 + // 0.0 to 500.0: 0.16 0.11 0.08 + // 500.0 to 1000.0: 0.19 0.09 0.08 + // 1000.0 to 1500.0: 0.16 0.09 0.08 + // 1500.0 to 2000.0: 0.21 0.12 0.08 + // 2000.0 to 2500.0: 0.28 0.14 0.09 + // 2500.0 to 3000.0: 0.30 0.15 0.10 + // 3000.0 to 3000.8: 0.116 0.062 0.058 + // */ + + internal static double[] tabl = new double[] { 9.08078d, 55.42416d, 21066413644.989109d, 655127.20186d, 0.00329d, 0.10408d, 0.00268d, -0.01908d, 0.00653d, 0.00183d, 0.15083d, -0.21997d, 6.08596d, 2.34841d, 3.70668d, -0.2274d, -2.29376d, -1.46741d, -0.0384d, 0.01242d, 0.00176d, 0.00913d, 0.00121d, -0.01222d, -1.22624d, 0.65264d, -1.15974d, -1.28172d, 1.00656d, -0.66266d, 0.0156d, -0.00654d, 0.00896d, 0.00069d, 0.21649d, -0.01786d, 0.01239d, 0.00255d, 0.00084d, -0.06086d, -0.00041d, 0.00887d, 0.13453d, -0.20013d, 0.08234d, 0.01575d, 0.00658d, -0.00214d, 0.00254d, 0.00857d, -0.01047d, -0.00519d, 0.63215d, -0.40914d, 0.34271d, -1.53258d, 0.00038d, -0.01437d, -0.02599d, -2.27805d, -0.36873d, -1.01799d, -0.36798d, 1.41356d, -0.08167d, 0.01368d, 0.20676d, 0.06807d, 0.02282d, -0.04691d, 0.30308d, -0.20218d, 0.24785d, 0.27522d, 0.00197d, -0.00499d, 1.43909d, -0.46154d, 0.93459d, 2.99583d, -3.43274d, 0.05672d, -0.06586d, 0.12467d, 0.02505d, -0.08433d, 0.00743d, 0.00174d, -0.04013d, 0.17715d, -0.00603d, -0.01024d, 0.01542d, -0.02378d, 0.00676d, 0.00002d, -0.00168d, -4.89487d, 0.02393d, -0.03064d, 0.0009d, 0.00977d, 0.01223d, 0.00381d, 0.28135d, -0.09158d, 0.1855d, 0.58372d, -0.67437d, 0.01409d, -0.25404d, -0.06863d, 0.06763d, -0.02939d, -0.00009d, -0.04888d, 0.01718d, -0.00978d, -0.01945d, 0.08847d, -0.00135d, -11.2992d, 0.01689d, -0.04756d, 0.02075d, -0.01667d, 0.01397d, 0.00443d, -0.28437d, 0.076d, 0.17996d, -0.44326d, 0.29356d, 1.41869d, -1.58617d, 0.03206d, 0.00229d, -0.00753d, -0.03076d, -2.96766d, 0.00245d, 0.00697d, 0.01063d, -0.02468d, -0.00351d, -0.18179d, -0.01088d, 0.0038d, 0.00496d, 0.02072d, -0.1289d, 0.16719d, -0.0682d, -0.03234d, -60.36135d, -11.74485d, -11.03752d, -3.80145d, -21.33955d, -284.54495d, -763.43839d, 248.50823d, 1493.02775d, 1288.79621d, -2091.10921d, -1851.1542d, -0.00922d, 0.06233d, 0.00004d, 0.00785d, 0.10363d, -0.1677d, 0.45497d, 0.24051d, -0.28057d, 0.61126d, -0.02057d, 0.0001d, 0.00561d, 0.01994d, 0.01416d, -0.00442d, 0.03073d, -0.14961d, -0.06272d, 0.08301d, 0.0204d, 7.12824d, -0.00453d, -0.01815d, 0.00004d, -0.00013d, -0.03593d, -0.18147d, 0.20353d, -0.00683d, 0.00003d, 0.06226d, -0.00443d, 0.00257d, 0.03194d, 0.03254d, 0.00282d, -0.01401d, 0.00422d, 1.03169d, -0.00169d, -0.00591d, -0.00307d, 0.0054d, 0.05511d, 0.00347d, 0.07896d, 0.06583d, 0.00783d, 0.01926d, 0.03109d, 0.15967d, 0.00343d, 0.88734d, 0.01047d, 0.32054d, 0.00814d, 0.00051d, 0.02474d, 0.00047d, 0.00052d, 0.03763d, -57.06618d, 20.34614d, -45.06541d, -115.20465d, 136.46887d, -84.67046d, 92.93308d, 160.44644d, -0.0002d, -0.00082d, 0.02496d, 0.00279d, 0.00849d, 0.00195d, -0.05013d, -0.04331d, -0.00136d, 0.14491d, -0.00183d, -0.00406d, 0.01163d, 0.00093d, -0.00604d, -0.0068d, -0.00036d, 0.06861d, -0.0045d, -0.00969d, 0.00171d, 0.00979d, -0.00152d, 0.03929d, 0.00631d, 0.00048d, -0.00709d, -0.00864d, 1.51002d, -0.24657d, 1.27338d, 2.64699d, -2.4099d, -0.57413d, -0.00023d, 0.03528d, 0.00268d, 0.00522d, -0.0001d, 0.01933d, -0.00006d, 0.011d, 0.06313d, -0.09939d, 0.08571d, 0.03206d, -0.00004d, 0.00645d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabb = new double[] { -23.91858d, 31.44154d, 25.93273d, -67.68643d, -0.00171d, 0.00123d, 0.00001d, -0.00018d, -0.00005d, 0.00018d, -0.00001d, 0.00019d, 0.00733d, 0.0003d, -0.00038d, 0.00011d, 0.00181d, 0.0012d, 0.0001d, 0.00002d, -0.00012d, 0.00002d, 0.00021d, 0.00004d, -0.00403d, 0.00101d, 0.00342d, -0.00328d, 0.01564d, 0.01212d, 0.00011d, 0.0001d, -0.00002d, -0.00004d, -0.00524d, 0.00079d, 0.00011d, 0.00002d, -0.00001d, 0.00003d, 0.00001d, 0.0d, 0.00108d, 0.00035d, 0.00003d, 0.00064d, -0.0d, -0.00002d, -0.00069d, 0.00031d, 0.0002d, 0.00003d, 0.00768d, 0.03697d, -0.07906d, 0.01673d, -0.00003d, -0.00001d, -0.00198d, -0.01045d, 0.01761d, -0.00803d, -0.00751d, 0.04199d, 0.0028d, -0.00213d, -0.00482d, -0.00209d, -0.01077d, 0.00715d, 0.00048d, -0.00004d, 0.00199d, 0.00237d, 0.00017d, -0.00032d, -0.07513d, -0.00658d, -0.04213d, 0.16065d, 0.27661d, 0.06515d, 0.02156d, -0.08144d, -0.23994d, -0.05674d, 0.00167d, 0.00069d, 0.00244d, -0.01247d, -0.001d, 0.00036d, 0.0024d, 0.00012d, 0.0001d, 0.00018d, 0.00208d, -0.00098d, -0.00217d, 0.00707d, -0.00338d, 0.0126d, -0.00127d, -0.00039d, -0.03516d, -0.00544d, -0.01746d, 0.08258d, 0.10633d, 0.02523d, 0.00077d, -0.00214d, -0.02335d, 0.00976d, -0.00019d, 0.00003d, 0.00041d, 0.00039d, 0.00199d, -0.01098d, 0.00813d, -0.00853d, 0.0223d, 0.00349d, -0.0225d, 0.08119d, -0.00214d, -0.00052d, -0.0022d, 0.15216d, 0.17152d, 0.08051d, -0.01561d, 0.27727d, 0.25837d, 0.07021d, -0.00005d, -0.0d, -0.02692d, -0.00047d, -0.00007d, -0.00016d, 0.01072d, 0.01418d, -0.00076d, 0.00379d, -0.00807d, 0.03463d, -0.05199d, 0.0668d, -0.00622d, 0.00787d, 0.00672d, 0.00453d, -10.69951d, -67.43445d, -183.55956d, -37.87932d, -102.30497d, -780.40465d, 2572.2199d, -446.97798d, 1665.42632d, 5698.61327d, -11889.66501d, 2814.93799d, 0.03204d, -0.09479d, 0.00014d, -0.00001d, -0.04118d, -0.04562d, 0.03435d, -0.05878d, 0.017d, 0.02566d, -0.00121d, 0.0017d, 0.0239d, 0.00403d, 0.04629d, 0.01896d, -0.00521d, 0.03215d, -0.01051d, 0.00696d, -0.01332d, -0.08937d, -0.00469d, -0.00751d, 0.00016d, -0.00035d, 0.00492d, -0.0393d, -0.04742d, -0.01013d, 0.00065d, 0.00021d, -0.00006d, 0.00017d, 0.06768d, -0.01558d, -0.00055d, 0.00322d, -0.00287d, -0.01656d, 0.00061d, -0.00041d, 0.0003d, 0.00047d, -0.01436d, -0.00148d, 0.30302d, -0.05511d, -0.0002d, -0.00005d, 0.00042d, -0.00025d, 0.0127d, 0.00458d, -0.00593d, -0.0448d, 0.00005d, -0.00008d, 0.08457d, -0.01569d, 0.00062d, 0.00018d, 9.79942d, -2.48836d, 4.17423d, 6.72044d, -63.33456d, 34.63597d, 39.11878d, -72.89581d, -0.00066d, 0.00036d, -0.00045d, -0.00062d, -0.00287d, -0.00118d, -0.21879d, 0.03947d, 0.00086d, 0.00671d, -0.00113d, 0.00122d, -0.00193d, -0.00029d, -0.03612d, 0.00635d, 0.00024d, 0.00207d, -0.00273d, 0.00443d, -0.00055d, 0.0003d, -0.00451d, 0.00175d, -0.0011d, -0.00015d, -0.02608d, 0.0048d, 2.16555d, -0.70419d, 1.74648d, 0.97514d, -1.1536d, 1.73688d, 0.00004d, 0.00105d, 0.00187d, -0.00311d, 0.00005d, 0.00055d, 0.00004d, 0.00032d, -0.04629d, 0.02292d, -0.00363d, -0.03807d, 0.00002d, 0.0002d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static double[] tabr = new double[] { -0.24459d, 3.72698d, -6.67281d, 5.24378d, 0.0003d, 0.00003d, -0.00002d, -0.0d, -0.0d, 0.00001d, 0.00032d, 0.00021d, -0.00326d, 0.01002d, 0.00067d, 0.00653d, 0.00243d, -0.00417d, -0.00004d, -0.0001d, -0.00002d, -0.00001d, 0.00004d, -0.00002d, -0.00638d, -0.01453d, 0.01458d, -0.01235d, 0.00755d, 0.0103d, 0.00006d, 0.00014d, 0.0d, 0.00009d, 0.00063d, 0.00176d, 0.00003d, -0.00022d, 0.00112d, 0.00001d, -0.00014d, -0.00001d, 0.00485d, 0.00322d, -0.00035d, 0.00198d, 0.00004d, 0.00013d, -0.00015d, -0.00003d, 0.00011d, -0.00025d, 0.00634d, 0.02207d, 0.0462d, 0.0016d, 0.00045d, 0.00001d, -0.11563d, 0.00643d, -0.05947d, 0.02018d, 0.07704d, 0.01574d, -0.0009d, -0.00471d, -0.00322d, 0.01104d, 0.00265d, -0.00038d, 0.01395d, 0.02165d, -0.01948d, 0.01713d, -0.00057d, -0.00019d, 0.04889d, 0.13403d, -0.28327d, 0.10597d, -0.02325d, -0.35829d, 0.01171d, -0.00904d, 0.00747d, 0.02546d, 0.00029d, -0.0019d, -0.03408d, -0.00703d, 0.00176d, -0.00109d, 0.00463d, 0.00293d, 0.0d, 0.00148d, 1.06691d, -0.00054d, -0.00935d, -0.0079d, 0.00552d, -0.00084d, -0.001d, 0.00336d, 0.02874d, 0.08604d, -0.17876d, 0.05973d, -0.0072d, -0.21195d, 0.02134d, -0.0798d, 0.015d, 0.01398d, 0.01758d, -0.00004d, 0.00371d, 0.0065d, -0.03375d, -0.00723d, 4.65465d, -0.0004d, 0.0204d, 0.00707d, -0.00727d, -0.01144d, -0.00196d, 0.0062d, -0.03396d, -0.12904d, 0.2016d, 0.08092d, -0.67045d, 0.14014d, -0.01571d, -0.75141d, 0.00361d, 0.0011d, 1.42165d, -0.01499d, -0.00334d, 0.00117d, 0.01187d, 0.00507d, 0.08935d, -0.00174d, -0.00211d, -0.00525d, 0.01035d, -0.00252d, -0.08355d, -0.06442d, 0.01616d, -0.03409d, 5.55241d, -30.62428d, 2.03824d, -6.26978d, 143.07279d, -10.24734d, -125.25411d, -380.8536d, -644.78411d, 745.02852d, 926.7d, -1045.0982d, -0.03124d, -0.00465d, -0.00396d, 0.00002d, 0.08518d, 0.05248d, -0.12178d, 0.23023d, -0.30943d, -0.14208d, -0.00005d, -0.01054d, -0.00894d, 0.00233d, -0.00173d, -0.00768d, 0.07881d, 0.01633d, -0.04463d, -0.03347d, -3.92991d, 0.00945d, 0.01524d, -0.00422d, -0.00011d, -0.00005d, 0.10842d, -0.02126d, 0.00349d, 0.12097d, -0.03752d, 0.00001d, -0.00156d, -0.0027d, -0.0152d, 0.01349d, 0.00895d, 0.00186d, -0.67751d, 0.0018d, 0.00516d, -0.00151d, -0.00365d, -0.0021d, -0.00276d, 0.03793d, -0.02637d, 0.03235d, -0.01343d, 0.00541d, -0.1127d, 0.02169d, -0.63365d, 0.00122d, -0.24329d, 0.00428d, -0.0004d, 0.00586d, 0.00581d, 0.01112d, -0.02731d, 0.00008d, -2.69091d, 0.42729d, 2.78805d, 3.43849d, -0.87998d, -6.62373d, 0.56882d, 4.6937d, 0.00005d, -0.00008d, -0.00181d, 0.01767d, -0.00168d, 0.0066d, 0.01802d, -0.01836d, -0.11245d, -0.00061d, 0.00199d, -0.0007d, -0.00076d, 0.00919d, 0.00311d, -0.00165d, -0.0565d, -0.00018d, 0.00121d, -0.00069d, -0.00803d, 0.00146d, -0.0326d, -0.00072d, -0.00042d, 0.00524d, 0.00464d, -0.00339d, -0.06203d, -0.00278d, 0.04145d, 0.02871d, -0.01962d, -0.01362d, -0.0304d, -0.0001d, 0.00085d, -0.00001d, -0.01712d, -0.00006d, -0.00996d, -0.00003d, -0.00029d, 0.00026d, 0.00016d, -0.00005d, -0.00594d, -0.00003d }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + internal static int[] args = new int[] { 0, 3, 2, 2, 5, -5, 6, 0, 3, 2, 2, 1, 3, -8, 4, 0, 3, 5, 1, -14, 2, 2, 3, 0, 3, 3, 2, -7, 3, 4, 4, 0, 2, 8, 2, -13, 3, 2, 3, 6, 2, -10, 3, 3, 5, 0, 1, 1, 7, 0, 2, 1, 5, -2, 6, 0, 2, 1, 2, -3, 4, 2, 2, 2, 5, -4, 6, 1, 1, 1, 6, 0, 3, 3, 2, -5, 3, 1, 5, 0, 3, 3, 2, -5, 3, 2, 5, 0, 2, 1, 5, -1, 6, 0, 2, 2, 2, -6, 4, 1, 2, 2, 5, -3, 6, 0, 1, 2, 6, 0, 2, 3, 5, -5, 6, 0, 1, 1, 5, 1, 2, 2, 5, -2, 6, 0, 2, 3, 2, -5, 3, 2, 2, 5, 2, -8, 3, 1, 1, 2, 5, 0, 2, 2, 1, -5, 2, 1, 2, 6, 2, -10, 3, 0, 2, 2, 2, -3, 3, 2, 2, 1, 2, -2, 3, 1, 2, 4, 2, -7, 3, 0, 2, 4, 2, -6, 3, 0, 1, 1, 4, 0, 2, 1, 2, -2, 4, 0, 2, 2, 2, -5, 4, 0, 2, 1, 2, -1, 3, 0, 2, 1, 1, -3, 2, 0, 2, 2, 2, -4, 3, 0, 2, 6, 2, -9, 3, 0, 2, 3, 2, -4, 3, 2, 2, 1, 1, -2, 2, 0, 1, 1, 3, 0, 2, 1, 2, -1, 4, 0, 2, 2, 2, -4, 4, 0, 2, 5, 2, -7, 3, 0, 2, 2, 2, -2, 3, 0, 2, 1, 2, -3, 5, 0, 2, 1, 2, -3, 3, 0, 2, 7, 2, -10, 3, 0, 2, 1, 2, -2, 5, 1, 2, 4, 2, -5, 3, 1, 3, 1, 2, 1, 5, -5, 6, 0, 2, 1, 2, -1, 5, 0, 3, 1, 2, -3, 5, 5, 6, 0, 2, 1, 2, -2, 6, 0, 2, 1, 2, -1, 6, 0, 1, 3, 4, 0, 2, 7, 2, -13, 3, 0, 3, 1, 2, 2, 5, -5, 6, 1, 1, 1, 2, 5, 2, 9, 2, -13, 3, 0, 3, 1, 2, 1, 5, -2, 6, 0, 2, 2, 2, -3, 4, 2, 2, 3, 2, -6, 4, 0, 2, 1, 2, 1, 5, 0, 2, 2, 2, -5, 3, 0, 2, 6, 2, -8, 3, 0, 2, 2, 1, -4, 2, 0, 2, 3, 2, -3, 3, 0, 1, 2, 3, 0, 2, 3, 2, -7, 3, 0, 2, 5, 2, -6, 3, 1, 2, 2, 2, -2, 4, 0, 2, 3, 2, -5, 4, 0, 2, 2, 2, -1, 3, 0, 2, 7, 2, -9, 3, 0, 2, 4, 2, -4, 3, 0, 2, 1, 2, 1, 3, 0, 2, 3, 2, -4, 4, 0, 2, 6, 2, -7, 3, 0, 2, 3, 2, -2, 3, 0, 2, 2, 2, -4, 5, 0, 2, 2, 2, -3, 5, 0, 2, 2, 2, -2, 5, 0, 2, 5, 2, -5, 3, 0, 2, 2, 2, -3, 6, 0, 2, 2, 2, -1, 5, 0, 2, 2, 2, -2, 6, 0, 1, 2, 2, 3, 2, 2, 2, 1, 5, 0, 2, 7, 2, -8, 3, 0, 2, 2, 1, -3, 2, 0, 2, 4, 2, -3, 3, 0, 2, 6, 2, -6, 3, 0, 2, 3, 2, -1, 3, 0, 2, 8, 2, -9, 3, 0, 2, 5, 2, -4, 3, 0, 2, 7, 2, -7, 3, 0, 2, 4, 2, -2, 3, 0, 2, 3, 2, -4, 5, 0, 2, 3, 2, -3, 5, 0, 2, 9, 2, -10, 3, 0, 2, 3, 2, -2, 5, 0, 1, 3, 2, 2, 2, 8, 2, -8, 3, 0, 2, 5, 2, -3, 3, 0, 2, 9, 2, -9, 3, 0, 2, 10, 2, -10, 3, 0, 1, 4, 2, 1, 2, 11, 2, -11, 3, 0, -1 }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // /* Total terms = 108, small = 107 */ + internal static KeplerGlobalCode.plantbl ven404 = new KeplerGlobalCode.plantbl(9, new int[19] { 5, 14, 13, 8, 4, 5, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 5, args, tabl, tabb, tabr, 0.72332982d, 3652500.0d, 1.0d); + + + + + + + + + + + } +} \ No newline at end of file diff --git a/ASCOM.Tools/NamespaceDocs.xml b/ASCOM.Tools/NamespaceDocs.xml index e83fd16..bfb52ab 100644 --- a/ASCOM.Tools/NamespaceDocs.xml +++ b/ASCOM.Tools/NamespaceDocs.xml @@ -52,5 +52,76 @@

+ + + +

KEPLER: Ephemeris Object

+

Introduction

+

+ The Kepler Ephemeris object contains an orbit engine which takes the orbital parameters of a solar system + body, plus a a terrestrial date/time, and produces the heliocentric equatorial position and + velocity vectors of the body in Cartesian coordinates. Orbital parameters are not required for + the major planets, Kepler contains an ephemeris generator for these bodies that is within 0.05 + arc seconds of the JPL DE404 over a wide range of times, Perturbations from major planets are applied + to ephemerides for minor planets. +

+

+ The results are passed back as an array containing the two vectors. + Note that this is the format expected for the ephemeris generator used by the NOVAS-COM vector + astrometry engine. For more information see the description of Ephemeris.GetPositionAndVelocity(). +

+

+ Ephemeris Calculations
+ The ephemeris calculations in Kepler draw heavily from the work of + Stephen Moshier moshier@world.std.com. kepler is released as a free software package, further + extending the work of Mr. Moshier. +

+

+ Kepler does not integrate orbits to the current epoch. If you want the accuracy resulting from + an integrated orbit, you must integrate separately and supply Kepler with elements of the current + epoch. Orbit integration is on the list of things for the next major version. +

+

+ Kepler uses polynomial approximations for the major planet ephemerides. The tables + of coefficients were derived by a least squares fit of periodic terms to JPL's DE404 ephemerides. + The periodic frequencies used were determined by spectral analysis and comparison with VSOP87 and + other analytical planetary theories. The least squares fit to DE404 covers the interval from -3000 + to +3000 for the outer planets, and -1350 to +3000 for the inner planets. For details on the + accuracy of the major planet ephemerides, see the Accuracy Tables page. +

+

+ Date and Time Systems

+ For a detailed explanation of astronomical timekeeping systems, see A Time Tutorial on the NASA + Goddard Spaceflight Center site, and the USNO Systems of Time site. +

ActiveX Date values
+ These are the Windows standard "date serial" numbers, and are expressed in local time or + UTC (see below). The fractional part of these numbers represents time within a day. + They are used throughout applications such as Excel, Visual Basic, VBScript, and other + ActiveX capable environments. +

Julian dates
+ These are standard Julian "date serial" numbers, and are expressed in UTC time or Terrestrial + time. The fractional part of these numbers represents time within a day. The standard ActiveX + "Double" precision of 15 digits gives a resolution of about one millisecond in a full Julian date. + This is sufficient for the purposes of this program. +

Hourly Time Values
+ These are typically used to represent sidereal time and right ascension. They are simple real + numbers in units of hours. +

UTC Time Scale
+ Most of the ASCOM methods and properties that accept date/time values (either Date or Julian) + assume that the date/time is in Coordinated Universal Time (UTC). Where necessary, this time + is converted internally to other scales. Note that UTC seconds are based on the Cesium atom, + not planetary motions. In order to keep UTC in sync with planetary motion, leap seconds are + inserted periodically. The error is at most 900 milliseconds. +

UT1 Time Scale
+ The UT1 time scale is the planetary equivalent of UTC. It it runs smoothly and varies a bit + with time, but it is never more than 900 milliseconds different from UTC. +

TT Time Scale
+ The Terrestrial Dynamical Time (TT) scale is used in solar system orbital calculations. + It is based completely on planetary motions; you can think of the solar system as a giant + TT clock. It differs from UT1 by an amount called "delta-t", which slowly increases with time, + and is about 60 seconds right now (2001). +

+
+
\ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props index 490cc17..0f93152 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -2,6 +2,6 @@ - 1.0.108-rc.38 + 1.0.108-rc.39 \ No newline at end of file