# Class JSOFA

java.lang.Object
org.jastronomy.jsofa.JSOFA

public class JSOFA extends Object
Java implementation of Standards of Fundamental Astronomy. http://www.iausofa.org/ This code has been created by hand translating the official C version.

Since:
  26 Jan 2010
Version:
  JSOFA Release 20180130
Author:
  Paul Harrison (paul.harrison@manchester.ac.uk) 02 Apr 2014

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`JSOFA.Astrom`
Star-independent astrometry parameters.
`static class`
`JSOFA.Calendar`
Representation of Gregorian Calendar with fractional day.
`static class`
`JSOFA.CalendarHMS`
Representation of Gregorian Calendar with integer hours minutes and seconds.
`static class`
`JSOFA.CatalogCoords`
Typical catalogue coordinates.
`static class`
`JSOFA.CelestialIntermediatePole`
The components x,y are components of the Celestial Intermediate Pole unit vector in the Geocentric Celestial Reference System.
`static class`
`JSOFA.EquatorialCoordinate`
Position consisting of (ha, declination) pairs in radians.
`static class`
`JSOFA.EulerAngles`
Euler Angles.
`static class`
`JSOFA.FrameBias`
Frame bias components of IAU 2000 precession-nutation models.
`static class`
`JSOFA.FWPrecessionAngles`
Precession angles, IAU 2006 (Fukushima-Williams 4-angle formulation).
`static class`
`JSOFA.GeodeticCoord`
Geodetic coordinates.
`static class`
`JSOFA.HorizonCoordinate`
Position consisting of (az, el) pairs in radians.
`static class`
`JSOFA.ICRFrame`
The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.
`static class`
`JSOFA.JulianDate`
Julian Date representation.
`static class`
`JSOFA.Ldbody`
Body parameters for light deflection.
`static class`
`JSOFA.NormalizedVector`
A normalized vector with r being the modulus and u[3] being the unit vector.
`static class`
`JSOFA.NutationTerms`
Nutation Terms.
`static class`
`JSOFA.ObservedPosition`
Observed Position.
`static class`
`JSOFA.ObservedPositionEO`
Observed position with the equation of the origins.
`static class`
`JSOFA.PrecessionAngles`
equinox based precession angles.
`static class`
`JSOFA.PrecessionDeltaTerms`
Precession correction terms.
`static class`
`JSOFA.PrecessionNutation`
Precession-nutation model.
`static class`
`JSOFA.PVModulus`
Modulus of pv-vector.
`static class`
`JSOFA.RefCos`
constants A and B in the atmospheric refraction model dZ = A tan Z + B tan^3 Z.
`static class`
`JSOFA.ReferenceEllipsoid`
Reference Ellipsoid of Earth.
`static class`
`JSOFA.SphericalCoordinate`
Position consisting of (α, δ) pairs in radians.
`static class`
`JSOFA.SphericalCoordinateEO`
Spherical coordinate with equation of origins .
`static class`
`JSOFA.SphericalPosition`
A position expressed in spherical polar coordinates.
`static class`
`JSOFA.SphericalPositionVelocity`
A position and velocity expressed in spherical polar coordinates.
`static class`
`JSOFA.TangentPlaneCoordinate`
Tangent Plane Position consisting of (xi, eta) pairs in radians.
`static class`
`JSOFA.TangentPointDirectionCosines`
Tangent point soutions as direction cosines.
`static class`
`JSOFA.TangentPointSolution`
Tangent point soulutions.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final double`
`AULT`
Light time for 1 au (s) 499.00478383615643
`static final double`
`CMPS`
Speed of light (m/s) 2.99792458E8
`static final double`
`D2PI`
2Pi 6.283185307179586
`static final double`
`DAS2R`
Arcseconds to radians 4.84813681109536E-6
`static final double`
`DAU`
Astronomical unit (m) IAU 2012 1.495978707E11
`static final double`
`DAYSEC`
Seconds per day.
`static final double`
`DC`
Speed of light (au per day) 173.1446326742403
`static final double`
`DD2R`
Degrees to radians 0.017453292519943295
`static final double`
`DJ00`
Reference epoch (J2000.0), Julian Date 2451545.0
`static final double`
`DJC`
Days per Julian century 36525.0
`static final double`
`DJM`
Days per Julian millennium 365250.0
`static final double`
`DJM0`
Julian Date of Modified Julian Date zero 2400000.5
`static final double`
`DJM00`
Reference epoch (J2000.0), Modified Julian Date 51544.5
`static final double`
`DJM77`
1977 Jan 1.0 as MJD
`static final double`
`DJY`
Days per Julian year
`static final double`
`DMAS2R`
Milliarcseconds to radians 4.84813681109536E-9
`static final double`
`DPI`
Pi 3.141592653589793
`static final double`
`DR2AS`
Radians to arcseconds 206264.80624709636
`static final double`
`DR2D`
Radians to degrees 57.29577951308232
`static final double`
`DS2R`
Seconds of time to radians 7.27220521664304E-5
`static final double`
`DTY`
Length of tropical year B1900 (days) 365.242198781
`static final double`
`ELB`
L_B = 1 - d(TDB)/d(TCB) at TAI 1977/1/1.0
`static final double`
`ELG`
L_G = 1 - d(TT)/d(TCG)
`static final int`
`IYV`
Release year for this version of jauDat 2023
`static final String`
`JSOFA_RELEASE`
JSOFA release "20231011"
`static final JSOFA.JulianDate`
`latestConfirmedNoLeapSecondChange`
The latest confirmed omission of a leap second form IERS
`static final String`
`SOFA_RELEASE`
tracked IAU SOFA release "2023-10-11".
`static final String`
`SOFA_REVISION`
tracked IAU SOFA revision "19".
`static final double`
`SRS`
Schwarzschild radius of the Sun (au) 1.97412574336E-8 = 2 * 1.32712440041e20 / (2.99792458e8)^2 / 1.49597870700e11
`static final double`
`TDB0`
TDB (s) at TAI 1977/1/1.0
`static final double`
`TTMTAI`
TT minus TAI (s)
`static final double`
`TURNAS`
Arcseconds in a full circle 1296000.0

## Constructor Summary

Constructors
Constructor
Description
`JSOFA()`

## Method Summary

Modifier and Type
Method
Description
`static char`
`jauA2af(int ndp, double angle, int[] idmsf)`
Decompose radians into degrees, arcminutes, arcseconds, fraction.
`static char`
`jauA2tf(int ndp, double angle, int[] ihmsf)`
Decompose radians into hours, minutes, seconds, fraction.
`static double[]`
`jauAb(double[] pnat, double[] v, double s, double bm1)`
Apply aberration to transform natural direction into proper direction.
`static JSOFA.EquatorialCoordinate`
`jauAe2hd(double az, double el, double phi)`
Horizon to equatorial coordinates: transform azimuth and altitude to hour angle and declination.
`static double`
`jauAnp(double a)`
Normalize angle into the range `0 <= a < 2pi`.
`static double`
`jauAnpm(double a)`
Normalize angle into the range `-pi <= a < +pi`.
`static void`
`jauApcg(double date1, double date2, double[][] ebpv, double[] ehp, JSOFA.Astrom astrom)`
For a geocentric observer, prepare star-independent astrometry parameters for transformations between ICRS and GCRS coordinates.
`static void`
`jauApcg13(double date1, double date2, JSOFA.Astrom astrom)`
For a geocentric observer, prepare star-independent astrometry parameters for transformations between ICRS and GCRS coordinates.
`static void`
`jauApci(double date1, double date2, double[][] ebpv, double[] ehp, double x, double y, double s, JSOFA.Astrom astrom)`
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and geocentric CIRS coordinates.
`static double`
`jauApci13(double date1, double date2, JSOFA.Astrom astrom)`
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and geocentric CIRS coordinates.
`static void`
`jauApco(double date1, double date2, double[][] ebpv, double[] ehp, double x, double y, double s, double theta, double elong, double phi, double hm, double xp, double yp, double sp, double refa, double refb, JSOFA.Astrom astrom)`
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and observed coordinates.
`static double`
`jauApco13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, JSOFA.Astrom astrom)`
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and observed coordinates.
`static void`
`jauApcs(double date1, double date2, double[][] pv, double[][] ebpv, double[] ehp, JSOFA.Astrom astrom)`
For an observer whose geocentric position and velocity are known, prepare star-independent astrometry parameters for transformations between ICRS and GCRS.
`static void`
`jauApcs13(double date1, double date2, double[][] pv, JSOFA.Astrom astrom)`
For an observer whose geocentric position and velocity are known, prepare star-independent astrometry parameters for transformations between ICRS and GCRS.
`static void`
`jauAper(double theta, JSOFA.Astrom astrom)`
In the star-independent astrometry parameters, update only the Earth rotation angle, supplied by the caller explicitly.
`static void`
`jauAper13(double ut11, double ut12, JSOFA.Astrom astrom)`
In the star-independent astrometry parameters, update only the Earth rotation angle.
`static void`
`jauApio(double sp, double theta, double elong, double phi, double hm, double xp, double yp, double refa, double refb, JSOFA.Astrom astrom)`
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between CIRS and observed coordinates.
`static void`
`jauApio13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, JSOFA.Astrom astrom)`
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between CIRS and observed coordinates.
`static JSOFA.SphericalCoordinate`
`jauAtcc13(double rc, double dc, double pr, double pd, double px, double rv, double date1, double date2)`
Transform a star's ICRS catalog entry (epoch J2000.0) into ICRS astrometric place.
`static JSOFA.SphericalCoordinate`
`jauAtccq(double rc, double dc, double pr, double pd, double px, double rv, JSOFA.Astrom astrom)`
Quick transformation of a star's ICRS catalog entry (epoch J2000.0) into ICRS astrometric place, given precomputed star-independent astrometry parameters.
`static JSOFA.SphericalCoordinateEO`
`jauAtci13(double rc, double dc, double pr, double pd, double px, double rv, double date1, double date2)`
Transform ICRS star data, epoch J2000.0, to CIRS.
`static JSOFA.SphericalCoordinate`
`jauAtciq(double rc, double dc, double pr, double pd, double px, double rv, JSOFA.Astrom astrom)`
Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed star-independent astrometry parameters.
`static JSOFA.SphericalCoordinate`
`jauAtciqn(double rc, double dc, double pr, double pd, double px, double rv, JSOFA.Astrom astrom, int n, JSOFA.Ldbody[] b)`
Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed star-independent astrometry parameters plus a list of light- deflecting bodies.
`static JSOFA.SphericalCoordinate`
`jauAtciqz(double rc, double dc, JSOFA.Astrom astrom)`
Quick ICRS to CIRS transformation, given precomputed star- independent astrometry parameters, and assuming zero parallax and proper motion.
`static JSOFA.ObservedPositionEO`
`jauAtco13(double rc, double dc, double pr, double pd, double px, double rv, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl)`
ICRS RA,Dec to observed place.
`static JSOFA.SphericalCoordinateEO`
`jauAtic13(double ri, double di, double date1, double date2)`
Transform star RA,Dec from geocentric CIRS to ICRS astrometric.
`static JSOFA.SphericalCoordinate`
`jauAticq(double ri, double di, JSOFA.Astrom astrom)`
Quick CIRS RA,Dec to ICRS astrometric place, given the star- independent astrometry parameters.
`static JSOFA.SphericalCoordinate`
`jauAticqn(double ri, double di, JSOFA.Astrom astrom, int n, JSOFA.Ldbody[] b)`
Quick CIRS to ICRS astrometric place transformation, given the star- independent astrometry parameters plus a list of light-deflecting bodies.
`static JSOFA.ObservedPosition`
`jauAtio13(double ri, double di, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl)`
CIRS RA,Dec to observed place.
`static JSOFA.ObservedPosition`
`jauAtioq(double ri, double di, JSOFA.Astrom astrom)`
Quick CIRS to observed place transformation.
`static JSOFA.SphericalCoordinate`
`jauAtoc13(String type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl)`
Observed place at a groundbased site to to ICRS astrometric RA,Dec.
`static JSOFA.SphericalCoordinate`
`jauAtoi13(String type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl)`
Observed place to CIRS.
`static JSOFA.SphericalCoordinate`
`jauAtoiq(String type, double ob1, double ob2, JSOFA.Astrom astrom)`
Quick observed place to CIRS, given the star-independent astrometry parameters.
`static JSOFA.FrameBias`
`jauBi00()`
Frame bias components of IAU 2000 precession-nutation models part of the Mathews-Herring-Buffett (MHB2000) nutation series, with additions.
`static void`
`jauBp00(double date1, double date2, double[][] rb, double[][] rp, double[][] rbp)`
Frame bias and precession, IAU 2000.
`static void`
`jauBp06(double date1, double date2, double[][] rb, double[][] rp, double[][] rbp)`
Frame bias and precession, IAU 2006.
`static JSOFA.CelestialIntermediatePole`
`jauBpn2xy(double[][] rbpn)`
Extract from the bias-precession-nutation matrix the X,Y coordinates of the Celestial Intermediate Pole.
`static double[][]`
`jauC2i00a(double date1, double date2)`
Form the celestial-to-intermediate matrix for a given date using the IAU 2000A precession-nutation model.
`static double[][]`
`jauC2i00b(double date1, double date2)`
Form the celestial-to-intermediate matrix for a given date using the IAU 2000B precession-nutation model.
`static double[][]`
`jauC2i06a(double date1, double date2)`
Form the celestial-to-intermediate matrix for a given date using the IAU 2006 precession and IAU 2000A nutation models.
`static double[][]`
`jauC2ibpn(double date1, double date2, double[][] rbpn)`
Form the celestial-to-intermediate matrix for a given date given the bias-precession-nutation matrix.
`static double[][]`
`jauC2ixy(double date1, double date2, double x, double y)`
Form the celestial to intermediate-frame-of-date matrix for a given date when the CIP X,Y coordinates are known.
`static double[][]`
`jauC2ixys(double x, double y, double s)`
Form the celestial to intermediate-frame-of-date matrix given the CIP X,Y and the CIO locator s.
`static JSOFA.SphericalCoordinate`
`jauC2s(double[] p)`
P-vector to spherical coordinates.
`static double[][]`
`jauC2t00a(double tta, double ttb, double uta, double utb, double xp, double yp)`
Form the celestial to terrestrial matrix given the date, the UT1 and the polar motion, using the IAU 2000A nutation model.
`static double[][]`
`jauC2t00b(double tta, double ttb, double uta, double utb, double xp, double yp)`
Form the celestial to terrestrial matrix given the date, the UT1 and the polar motion, using the IAU 2000B precession-nutation model.
`static double[][]`
`jauC2t06a(double tta, double ttb, double uta, double utb, double xp, double yp)`
Form the celestial to terrestrial matrix given the date, the UT1 and the polar motion, using the IAU 2006/2000A precession-nutation nutation model.
`static double[][]`
`jauC2tcio(double[][] rc2i, double era, double[][] rpom)`
Assemble the celestial to terrestrial matrix from CIO-based components (the celestial-to-intermediate matrix, the Earth Rotation Angle and the polar motion matrix).
`static double[][]`
`jauC2teqx(double[][] rbpn, double gst, double[][] rpom)`
Assemble the celestial to terrestrial matrix from equinox-based components (the celestial-to-true matrix, the Greenwich Apparent Sidereal Time and the polar motion matrix).
`static double[][]`
`jauC2tpe(double tta, double ttb, double uta, double utb, double dpsi, double deps, double xp, double yp)`
Form the celestial to terrestrial matrix given the date, the UT1, the nutation and the polar motion.
`static double[][]`
`jauC2txy(double tta, double ttb, double uta, double utb, double x, double y, double xp, double yp)`
Form the celestial to terrestrial matrix given the date, the UT1, the CIP coordinates and the polar motion.
`static JSOFA.JulianDate`
`jauCal2jd(int iy, int im, int id)`
Gregorian Calendar to Julian Date.
`static double[]`
`jauCp(double[] p, double[] c)`
Copy a p-vector.
`static double[][]`
`jauCpv(double[][] pv, double[][] c)`
Copy a position/velocity vector.
`static void`
`jauCr(double[][] r, double[][] c)`
Copy an r-matrix.
`static JSOFA.CalendarHMS`
`jauD2dtf(String scale, int ndp, double d1, double d2)`
Format for output a 2-part Julian Date (or in the case of UTC a quasi-JD form that includes special provision for leap seconds).
`static char`
`jauD2tf(int ndp, double days, int[] ihmsf)`
Decompose days to hours, minutes, seconds, fraction.
`static double`
`jauDat(int iy, int im, int id, double fd)`
For a given UTC date, calculate delta(AT) = TAI-UTC.
`static double`
`jauDtdb(double date1, double date2, double ut, double elong, double u, double v)`
An approximation to TDB-TT, the difference between barycentric dynamical time and terrestrial time, for an observer on the Earth.
`static JSOFA.JulianDate`
`jauDtf2d(String scale, int iy, int im, int id, int ihr, int imn, double sec)`
Encode date and time fields into 2-part Julian Date (or in the case of UTC a quasi-JD form that includes special provision for leap seconds).
`static JSOFA.SphericalCoordinate`
`jauEceq06(double date1, double date2, double dl, double db)`
Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec, using the IAU 2006 precession model.
`static double[][]`
`jauEcm06(double date1, double date2)`
ICRS equatorial to ecliptic rotation matrix, IAU 2006.
`static double`
`jauEe00(double date1, double date2, double epsa, double dpsi)`
The equation of the equinoxes, compatible with IAU 2000 resolutions, given the nutation in longitude and the mean obliquity.
`static double`
`jauEe00a(double date1, double date2)`
Equation of the equinoxes, compatible with IAU 2000 resolutions.
`static double`
`jauEe00b(double date1, double date2)`
Equation of the equinoxes, compatible with IAU 2000 resolutions but using the truncated nutation model IAU 2000B.
`static double`
`jauEe06a(double date1, double date2)`
Equation of the equinoxes, compatible with IAU 2000 resolutions and IAU 2006/2000A precession-nutation.
`static double`
`jauEect00(double date1, double date2)`
Equation of the equinoxes complementary terms, consistent with IAU 2000 resolutions.
`static JSOFA.ReferenceEllipsoid`
`jauEform(int n)`
Earth reference ellipsoids.
`static double`
`jauEo06a(double date1, double date2)`
Equation of the origins, IAU 2006 precession and IAU 2000A nutation.
`static double`
`jauEors(double[][] rnpb, double s)`
Equation of the origins, given the classical NPB matrix and the quantity s.
`static double`
`jauEpb(double dj1, double dj2)`
Julian Date to Besselian Epoch.
`static JSOFA.JulianDate`
`jauEpb2jd(double epb)`
Besselian Epoch to Julian Date.
`static double`
`jauEpj(double dj1, double dj2)`
Julian Date to Julian Epoch.
`static JSOFA.JulianDate`
`jauEpj2jd(double epj)`
Julian Epoch to Julian Date.
`static int`
`jauEpv00(double date1, double date2, double[][] pvh, double[][] pvb)`
Earth position and velocity, heliocentric and barycentric, with respect to the Barycentric Celestial Reference System.
`static JSOFA.SphericalCoordinate`
`jauEqec06(double date1, double date2, double dr, double dd)`
Transformation from ICRS equatorial coordinates to ecliptic coordinates (mean equinox and ecliptic of date) using IAU 2006 precession model.
`static double`
`jauEqeq94(double date1, double date2)`
Equation of the equinoxes, IAU 1994 model.
`static double`
`jauEra00(double dj1, double dj2)`
Earth rotation angle (IAU 2000 model).
`static double`
`jauFad03(double t)`
Fundamental argument, IERS Conventions (2003): mean elongation of the Moon from the Sun.
`static double`
`jauFae03(double t)`
Fundamental argument, IERS Conventions (2003): mean longitude of Earth.
`static double`
`jauFaf03(double t)`
Fundamental argument, IERS Conventions (2003): mean longitude of the Moon minus mean longitude of the ascending node.
`static double`
`jauFaju03(double t)`
Fundamental argument, IERS Conventions (2003): mean longitude of Jupiter.
`static double`
`jauFal03(double t)`
Fundamental argument, IERS Conventions (2003): mean anomaly of the Moon.
`static double`
`jauFalp03(double t)`
Fundamental argument, IERS Conventions (2003): mean anomaly of the Sun.
`static double`
`jauFama03(double t)`
Fundamental argument, IERS Conventions (2003): mean longitude of Mars.
`static double`
`jauFame03(double t)`
Fundamental argument, IERS Conventions (2003): mean longitude of Mercury.
`static double`
`jauFane03(double t)`
Fundamental argument, IERS Conventions (2003): mean longitude of Neptune.
`static double`
`jauFaom03(double t)`
Fundamental argument, IERS Conventions (2003): mean longitude of the Moon's ascending node.
`static double`
`jauFapa03(double t)`
Fundamental argument, IERS Conventions (2003): general accumulated precession in longitude.
`static double`
`jauFasa03(double t)`
Fundamental argument, IERS Conventions (2003): mean longitude of Saturn.
`static double`
`jauFaur03(double t)`
Fundamental argument, IERS Conventions (2003): mean longitude of Uranus.
`static double`
`jauFave03(double t)`
Fundamental argument, IERS Conventions (2003): mean longitude of Venus.
`static JSOFA.CatalogCoords`
`jauFk425(double r1950, double d1950, double dr1950, double dd1950, double p1950, double v1950)`
Convert B1950.0 FK4 star catalog data to J2000.0 FK5.
`static JSOFA.SphericalCoordinate`
`jauFk45z(double r1950, double d1950, double bepoch)`
Convert a B1950.0 FK4 star position to J2000.0 FK5, assuming zero proper motion in the FK5 system.
`static JSOFA.CatalogCoords`
`jauFk524(double r2000, double d2000, double dr2000, double dd2000, double p2000, double v2000)`
Convert J2000.0 FK5 star catalog data to B1950.0 FK4.
`static JSOFA.CatalogCoords`
`jauFk52h(double r5, double d5, double dr5, double dd5, double px5, double rv5)`
Transform FK5 (J2000.0) star data into the Hipparcos system.
`static JSOFA.CatalogCoords`
`jauFk54z(double r2000, double d2000, double bepoch)`
Convert a J2000.0 FK5 star position to B1950.0 FK4, assuming zero proper motion in FK5 and parallax.
`static void`
`jauFk5hip(double[][] r5h, double[] s5h)`
FK5 to Hipparcos rotation and spin.
`static JSOFA.SphericalCoordinate`
`jauFk5hz(double r5, double d5, double date1, double date2)`
Transform an FK5 (J2000.0) star position into the system of the Hipparcos catalogue, assuming zero Hipparcos proper motion.
`static double[][]`
`jauFw2m(double gamb, double phib, double psi, double eps)`
Form rotation matrix given the Fukushima-Williams angles.
`static JSOFA.CelestialIntermediatePole`
`jauFw2xy(double gamb, double phib, double psi, double eps)`
CIP X,Y given Fukushima-Williams bias-precession-nutation angles.
`static JSOFA.SphericalCoordinate`
`jauG2icrs(double dl, double db)`
Transformation from Galactic Coordinates to ICRS.
`static JSOFA.GeodeticCoord`
`jauGc2gd(int n, double[] xyz)`
Transform geocentric coordinates to geodetic using the specified reference ellipsoid.
`static JSOFA.GeodeticCoord`
`jauGc2gde(double a, double f, double[] xyz)`
Transform geocentric coordinates to geodetic for a reference ellipsoid of specified form.
`static double[]`
`jauGd2gc(int n, double elong, double phi, double height)`
Transform geodetic coordinates to geocentric using the specified reference ellipsoid.
`static double[]`
`jauGd2gce(double a, double f, double elong, double phi, double height)`
Transform geodetic coordinates to geocentric for a reference ellipsoid of specified form.
`static double`
`jauGmst00(double uta, double utb, double tta, double ttb)`
Greenwich mean sidereal time (model consistent with IAU 2000 resolutions).
`static double`
`jauGmst06(double uta, double utb, double tta, double ttb)`
Greenwich mean sidereal time (consistent with IAU 2006 precession).
`static double`
`jauGmst82(double dj1, double dj2)`
Universal Time to Greenwich mean sidereal time (IAU 1982 model).
`static double`
`jauGst00a(double uta, double utb, double tta, double ttb)`
Greenwich apparent sidereal time (consistent with IAU 2000 resolutions).
`static double`
`jauGst00b(double uta, double utb)`
Greenwich apparent sidereal time (consistent with IAU 2000 resolutions but using the truncated nutation model IAU 2000B).
`static double`
`jauGst06(double uta, double utb, double tta, double ttb, double[][] rnpb)`
Greenwich apparent sidereal time, IAU 2006, given the NPB matrix.
`static double`
`jauGst06a(double uta, double utb, double tta, double ttb)`
Greenwich apparent sidereal time (consistent with IAU 2000 and 2006 resolutions).
`static double`
`jauGst94(double uta, double utb)`
Greenwich apparent sidereal time (consistent with IAU 1982/94 resolutions).
`static JSOFA.CatalogCoords`
`jauH2fk5(double rh, double dh, double drh, double ddh, double pxh, double rvh)`
Transform Hipparcos star data into the FK5 (J2000.0) system.
`static JSOFA.HorizonCoordinate`
`jauHd2ae(double ha, double dec, double phi)`
Equatorial to horizon coordinates: transform hour angle and declination to azimuth and altitude.
`static double`
`jauHd2pa(double ha, double dec, double phi)`
Parallactic angle for a given hour angle and declination.
`static JSOFA.CatalogCoords`
`jauHfk5z(double rh, double dh, double date1, double date2)`
Transform a Hipparcos star position into FK5 J2000.0, assuming zero Hipparcos proper motion.
`static JSOFA.SphericalCoordinate`
`jauIcrs2g(double dr, double dd)`
Transformation from ICRS to Galactic Coordinates.
`static double[][]`
`jauIr()`
return a new r-matrix as the identity matrix.
`static void`
`jauIr(double[][] r)`
Initialize an r-matrix to the identity matrix.
`static JSOFA.Calendar`
`jauJd2cal(double dj1, double dj2)`
Julian Date to Gregorian year, month, day, and fraction of a day.
`static int`
`jauJdcalf(int ndp, double dj1, double dj2, int[] iymdf)`
Julian Date to Gregorian Calendar, expressed in a form convenient for formatting messages: rounded to a specified precision.
`static double[]`
`jauLd(double bm, double[] p, double[] q, double[] e, double em, double dlim)`
Apply light deflection by a solar-system body, as part of transforming coordinate direction into natural direction.
`static double[]`
`jauLdn(int n, JSOFA.Ldbody[] b, double[] ob, double[] sc)`
`static double[]`
`jauLdsun(double[] p, double[] e, double em)`
Deflection of starlight by the Sun.
`static JSOFA.SphericalCoordinate`
`jauLteceq(double epj, double dl, double db)`
Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec, using a long-term precession model.
`static double[][]`
`jauLtecm(double epj)`
ICRS equatorial to ecliptic rotation matrix, long-term.
`static JSOFA.SphericalCoordinate`
`jauLteqec(double epj, double dr, double dd)`
Transformation from ICRS equatorial coordinates to ecliptic coordinates (mean equinox and ecliptic of date) using a long-term precession model.
`static double[][]`
`jauLtp(double epj)`
Long-term precession matrix.
`static double[][]`
`jauLtpb(double epj)`
Long-term precession matrix, including ICRS frame bias.
`static double[]`
`jauLtpecl(double epj)`
Long-term precession of the ecliptic.
`static double[]`
`jauLtpequ(double epj)`
Long-term precession of the equator.
`static double[][]`
`jauMoon98(double date1, double date2)`
Approximate geocentric position and velocity of the Moon.
`static double[][]`
`jauNum00a(double date1, double date2)`
Form the matrix of nutation for a given date, IAU 2000A model.
`static double[][]`
`jauNum00b(double date1, double date2)`
Form the matrix of nutation for a given date, IAU 2000B model.
`static double[][]`
`jauNum06a(double date1, double date2)`
Form the matrix of nutation for a given date, IAU 2006/2000A model.
`static double[][]`
`jauNumat(double epsa, double dpsi, double deps)`
Form the matrix of nutation.
`static JSOFA.NutationTerms`
`jauNut00a(double date1, double date2)`
Nutation, IAU 2000A model (MHB2000 luni-solar and planetary nutation with free core nutation omitted).
`static JSOFA.NutationTerms`
`jauNut00b(double date1, double date2)`
Nutation, IAU 2000B model.
`static JSOFA.NutationTerms`
`jauNut06a(double date1, double date2)`
IAU 2000A nutation with adjustments to match the IAU 2006 precession.
`static JSOFA.NutationTerms`
`jauNut80(double date1, double date2)`
Nutation, IAU 1980 model.
`static double[][]`
`jauNutm80(double date1, double date2)`
Form the matrix of nutation for a given date, IAU 1980 model.
`static double`
`jauObl06(double date1, double date2)`
Mean obliquity of the ecliptic, IAU 2006 precession model.
`static double`
`jauObl80(double date1, double date2)`
Mean obliquity of the ecliptic, IAU 1980 model.
`static JSOFA.PrecessionAngles`
`jauP06e(double date1, double date2)`
Precession angles, IAU 2006, equinox based.
`static double[][]`
`jauP2pv(double[] p)`
Extend a p-vector to a pv-vector by appending a zero velocity.
`static JSOFA.SphericalPosition`
`jauP2s(double[] p)`
P-vector to spherical polar coordinates.
`static double`
`jauPap(double[] a, double[] b)`
Position-angle from two p-vectors.
`static double`
`jauPas(double al, double ap, double bl, double bp)`
Position-angle from spherical coordinates.
`static JSOFA.EulerAngles`
`jauPb06(double date1, double date2)`
This function forms three Euler angles which implement general precession from epoch J2000.0, using the IAU 2006 model.
`static double`
`jauPdp(double[] a, double[] b)`
p-vector inner (=scalar=dot) product.
`static JSOFA.FWPrecessionAngles`
`jauPfw06(double date1, double date2)`
Precession angles, IAU 2006 (Fukushima-Williams 4-angle formulation).
`static double[][]`
`jauPlan94(double date1, double date2, int np)`
Approximate heliocentric position and velocity of a nominated major planet: Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus or Neptune (but not the Earth itself).
`static double`
`jauPm(double[] p)`
Modulus of p-vector.
`static double[][]`
`jauPmat00(double date1, double date2)`
Precession matrix (including frame bias) from GCRS to a specified date, IAU 2000 model.
`static double[][]`
`jauPmat06(double date1, double date2)`
Precession matrix (including frame bias) from GCRS to a specified date, IAU 2006 model.
`static double[][]`
`jauPmat76(double date1, double date2)`
Precession matrix from J2000.0 to a specified date, IAU 1976 model.
`static double[]`
`jauPmp(double[] a, double[] b)`
P-vector subtraction.
`static double[]`
`jauPmpx(double rc, double dc, double pr, double pd, double px, double rv, double pmt, double[] pob)`
Proper motion and parallax.
`static JSOFA.CatalogCoords`
`jauPmsafe(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b)`
Star proper motion: update star catalog data for space motion, with special handling to handle the zero parallax case.
`static JSOFA.NormalizedVector`
`jauPn(double[] p)`
Convert a p-vector into modulus and unit vector.
`static JSOFA.PrecessionNutation`
`jauPn00(double date1, double date2, double dpsi, double deps)`
Precession-nutation, IAU 2000 model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.
`static JSOFA.PrecessionNutation`
`jauPn00a(double date1, double date2)`
Precession-nutation, IAU 2000A model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.
`static JSOFA.PrecessionNutation`
`jauPn00b(double date1, double date2)`
Precession-nutation, IAU 2000B model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.
`static JSOFA.PrecessionNutation`
`jauPn06(double date1, double date2, double dpsi, double deps)`
Precession-nutation, IAU 2006 model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.
`static JSOFA.PrecessionNutation`
`jauPn06a(double date1, double date2)`
Precession-nutation, IAU 2006/2000A models: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.
`static double[][]`
`jauPnm00a(double date1, double date2)`
Form the matrix of precession-nutation for a given date (including frame bias), equinox-based, IAU 2000A model.
`static double[][]`
`jauPnm00b(double date1, double date2)`
Form the matrix of precession-nutation for a given date (including frame bias), equinox-based, IAU 2000B model.
`static double[][]`
`jauPnm06a(double date1, double date2)`
Form the matrix of precession-nutation for a given date (including frame bias), equinox based, IAU 2006 precession and IAU 2000A nutation models.
`static double[][]`
`jauPnm80(double date1, double date2)`
Form the matrix of precession/nutation for a given date, IAU 1976 precession model, IAU 1980 nutation model.
`static double[][]`
`jauPom00(double xp, double yp, double sp)`
Form the matrix of polar motion for a given date, IAU 2000.
`static double[]`
`jauPpp(double[] a, double[] b)`
P-vector addition.
`static double[]`
`jauPv2p(double[][] pv)`
Discard velocity component of a pv-vector.
`static JSOFA.SphericalPositionVelocity`
`jauPv2s(double[][] pv)`
Convert position/velocity from Cartesian to spherical coordinates.
`static double[]`
`jauPvdpv(double[][] a, double[][] b)`
Inner (=scalar=dot) product of two pv-vectors.
`static JSOFA.PVModulus`
`jauPvm(double[][] pv)`
Modulus of pv-vector.
`static double[][]`
`jauPvmpv(double[][] a, double[][] b)`
Subtract one pv-vector from another.
`static double[][]`
`jauPvppv(double[][] a, double[][] b)`
Add one pv-vector to another.
`static JSOFA.CatalogCoords`
`jauPvstar(double[][] pv)`
Convert star position+velocity vector to catalog coordinates.
`static double[][]`
`jauPvtob(double[] xyzm, double xp, double yp, double sp, double theta)`
Alternative Position and velocity of a terrestrial observing station with observatory position already in cartesian.
`static double[][]`
`jauPvtob(double elong, double phi, double hm, double xp, double yp, double sp, double theta)`
Position and velocity of a terrestrial observing station.
`static double[][]`
`jauPvu(double dt, double[][] pv)`
Update a pv-vector.
`static double[]`
`jauPvup(double dt, double[][] pv)`
Update a pv-vector, discarding the velocity component.
`static double[][]`
`jauPvxpv(double[][] a, double[][] b)`
Outer (=vector=cross) product of two pv-vectors.
`static double[]`
`jauPxp(double[] a, double[] b)`
p-vector outer (=vector=cross) product.
`static JSOFA.RefCos`
`jauRefco(double phpa, double tc, double rh, double wl)`
Determine the constants A and B in the atmospheric refraction model dZ = A tan Z + B tan^3 Z.
`static double[]`
`jauRm2v(double[][] r)`
Express an r-matrix as an r-vector.
`static double[][]`
`jauRv2m(double[] w)`
Form the r-matrix corresponding to a given r-vector.
`static void`
`jauRx(double phi, double[][] r)`
Rotate an r-matrix about the x-axis.
`static double[]`
`jauRxp(double[][] r, double[] p)`
Multiply a p-vector by an r-matrix.
`static double[][]`
`jauRxpv(double[][] r, double[][] pv)`
Multiply a pv-vector by an r-matrix.
`static double[][]`
`jauRxr(double[][] a, double[][] b)`
Multiply two r-matrices.
`static void`
`jauRy(double theta, double[][] r)`
Rotate an r-matrix about the y-axis.
`static void`
`jauRz(double psi, double[][] r)`
Rotate an r-matrix about the z-axis.
`static double`
`jauS00(double date1, double date2, double x, double y)`
The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, given the CIP's X,Y coordinates.
`static double`
`jauS00a(double date1, double date2)`
The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2000A precession-nutation model.
`static double`
`jauS00b(double date1, double date2)`
The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2000B precession-nutation model.
`static double`
`jauS06(double date1, double date2, double x, double y)`
The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, given the CIP's X,Y coordinates.
`static double`
`jauS06a(double date1, double date2)`
The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2006 precession and IAU 2000A nutation models.
`static double[]`
`jauS2c(double theta, double phi)`
Convert spherical coordinates to Cartesian.
`static double[]`
`jauS2p(double theta, double phi, double r)`
Convert spherical polar coordinates to p-vector.
`static double[][]`
`jauS2pv(double theta, double phi, double r, double td, double pd, double rd)`
Convert position/velocity from spherical to Cartesian coordinates.
`static double[][]`
`jauS2xpv(double s1, double s2, double[][] pv)`
Multiply a pv-vector by two scalars.
`static double`
`jauSepp(double[] a, double[] b)`
Angular separation between two p-vectors.
`static double`
`jauSeps(double al, double ap, double bl, double bp)`
Angular separation between two sets of spherical coordinates.
`static double`
`jauSp00(double date1, double date2)`
The TIO locator s', positioning the Terrestrial Intermediate Origin on the equator of the Celestial Intermediate Pole.
`static JSOFA.CatalogCoords`
`jauStarpm(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b)`
Star proper motion: update star catalog data for space motion.
`static int`
`jauStarpv(double ra, double dec, double pmr, double pmd, double px, double rv, double[][] pv)`
Convert star catalog coordinates to position+velocity vector.
`static double[]`
`jauSxp(double s, double[] p)`
Multiply a p-vector by a scalar.
`static double[][]`
`jauSxpv(double s, double[][] pv)`
Multiply a pv-vector by a scalar.
`static JSOFA.JulianDate`
`jauTaitt(double tai1, double tai2)`
Time scale transformation: International Atomic Time, TAI, to Terrestrial Time, TT.
`static JSOFA.JulianDate`
`jauTaiut1(double tai1, double tai2, double dta)`
Time scale transformation: International Atomic Time, TAI, to Universal Time, UT1.
`static JSOFA.JulianDate`
`jauTaiutc(double tai1, double tai2)`
Time scale transformation: International Atomic Time, TAI, to Coordinated Universal Time, UTC.
`static JSOFA.JulianDate`
`jauTcbtdb(double tcb1, double tcb2)`
Time scale transformation: Barycentric Coordinate Time, TCB, to Barycentric Dynamical Time, TDB.
`static JSOFA.JulianDate`
`jauTcgtt(double tcg1, double tcg2)`
Time scale transformation: Geocentric Coordinate Time, TCG, to Terrestrial Time, TT.
`static JSOFA.JulianDate`
`jauTdbtcb(double tdb1, double tdb2)`
Time scale transformation: Barycentric Dynamical Time, TDB, to Barycentric Coordinate Time, TCB.
`static JSOFA.JulianDate`
`jauTdbtt(double tdb1, double tdb2, double dtr)`
Time scale transformation: Barycentric Dynamical Time, TDB, to Terrestrial Time, TT.
`static double`
`jauTf2a(char s, int ihour, int imin, double sec)`
Convert hours, minutes, seconds to radians.
`static double`
`jauTf2d(char s, int ihour, int imin, double sec)`
Convert hours, minutes, seconds to days.
`static JSOFA.TangentPointSolution`
`jauTpors(double xi, double eta, double a, double b)`
In the tangent plane projection, given the rectangular coordinates of a star and its spherical coordinates, determine the spherical coordinates of the tangent point.
`static JSOFA.TangentPointDirectionCosines`
`jauTporv(double xi, double eta, double[] v)`
In the tangent plane projection, given the rectangular coordinates of a star and its direction cosines, determine the direction cosines of the tangent point.
`static JSOFA.SphericalCoordinate`
`jauTpsts(double xi, double eta, double a0, double b0)`
In the tangent plane projection, given the star's rectangular coordinates and the spherical coordinates of the tangent point, solve for the spherical coordinates of the star.
`static double[]`
`jauTpstv(double xi, double eta, double[] v0)`
In the tangent plane projection, given the star's rectangular coordinates and the direction cosines of the tangent point, solve for the direction cosines of the star.
`static JSOFA.TangentPlaneCoordinate`
`jauTpxes(double a, double b, double a0, double b0)`
In the tangent plane projection, given celestial spherical coordinates for a star and the tangent point, solve for the star's rectangular coordinates in the tangent plane.
`static JSOFA.TangentPlaneCoordinate`
`jauTpxev(double[] v, double[] v0)`
In the tangent plane projection, given celestial direction cosines for a star and the tangent point, solve for the star's rectangular coordinates in the tangent plane.
`static double[][]`
`jauTr(double[][] r)`
Transpose an r-matrix.
`static double[]`
`jauTrxp(double[][] r, double[] p)`
Multiply a p-vector by the transpose of an r-matrix.
`static double[][]`
`jauTrxpv(double[][] r, double[][] pv)`
Multiply a pv-vector by the transpose of an r-matrix.
`static JSOFA.JulianDate`
`jauTttai(double tt1, double tt2)`
Time scale transformation: Terrestrial Time, TT, to International Atomic Time, TAI.
`static JSOFA.JulianDate`
`jauTttcg(double tt1, double tt2)`
Time scale transformation: Terrestrial Time, TT, to Geocentric Coordinate Time, TCG.
`static JSOFA.JulianDate`
`jauTttdb(double tt1, double tt2, double dtr)`
Time scale transformation: Terrestrial Time, TT, to Barycentric Dynamical Time, TDB.
`static JSOFA.JulianDate`
`jauTtut1(double tt1, double tt2, double dt)`
Time scale transformation: Terrestrial Time, TT, to Universal Time, UT1.
`static JSOFA.JulianDate`
`jauUt1tai(double ut11, double ut12, double dta)`
Time scale transformation: Universal Time, UT1, to International Atomic Time, TAI.
`static JSOFA.JulianDate`
`jauUt1tt(double ut11, double ut12, double dt)`
Time scale transformation: Universal Time, UT1, to Terrestrial Time, TT.
`static JSOFA.JulianDate`
`jauUt1utc(double ut11, double ut12, double dut1)`
Time scale transformation: Universal Time, UT1, to Coordinated Universal Time, UTC.
`static JSOFA.JulianDate`
`jauUtctai(double utc1, double utc2)`
Time scale transformation: Coordinated Universal Time, UTC, to International Atomic Time, TAI.
`static JSOFA.JulianDate`
`jauUtcut1(double utc1, double utc2, double dut1)`
Time scale transformation: Coordinated Universal Time, UTC, to Universal Time, UT1.
`static JSOFA.CelestialIntermediatePole`
`jauXy06(double date1, double date2)`
`static JSOFA.ICRFrame`
`jauXys00a(double date1, double date2)`
For a given TT date, compute the X,Y coordinates of the Celestial Intermediate Pole and the CIO locator s, using the IAU 2000A precession-nutation model.
`static JSOFA.ICRFrame`
`jauXys00b(double date1, double date2)`
For a given TT date, compute the X,Y coordinates of the Celestial Intermediate Pole and the CIO locator s, using the IAU 2000B precession-nutation model.
`static JSOFA.ICRFrame`
`jauXys06a(double date1, double date2)`
For a given TT date, compute the X,Y coordinates of the Celestial Intermediate Pole and the CIO locator s, using the IAU 2006 precession and IAU 2000A nutation models.
`static double[]`
`jauZp()`
Return Zero p-vector.
`static void`
`jauZp(double[] p)`
Zero a p-vector.
`static double[][]`
`jauZpv()`
A Zero pv-vector.
`static void`
`jauZpv(double[][] pv)`
Zero a pv-vector.
`static double[][]`
`jauZr()`
Initialize an r-matrix to the null matrix.
`static void`
`jauZr(double[][] r)`
Initialize an r-matrix to the null matrix.
`static JSOFA.JulianDate`
`lastLeapSecondDate()`
the date of the last leap second.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### SOFA_RELEASE

public static final String SOFA_RELEASE
tracked IAU SOFA release "2023-10-11".

See Also:
  - Constant Field Values

### JSOFA_RELEASE

public static final String JSOFA_RELEASE
JSOFA release "20231011"

See Also:
  - Constant Field Values

### SOFA_REVISION

public static final String SOFA_REVISION
tracked IAU SOFA revision "19".

See Also:
  - Constant Field Values

### IYV

public static final int IYV
Release year for this version of jauDat 2023

See Also:
  - Constant Field Values

### latestConfirmedNoLeapSecondChange

public static final JSOFA.JulianDate latestConfirmedNoLeapSecondChange
The latest confirmed omission of a leap second form IERS

### DS2R

public static final double DS2R
Seconds of time to radians 7.27220521664304E-5

See Also:
  - Constant Field Values

### DPI

public static final double DPI
Pi 3.141592653589793

See Also:
  - Constant Field Values

### D2PI

public static final double D2PI
2Pi 6.283185307179586

See Also:
  - Constant Field Values

### DR2D

public static final double DR2D
Radians to degrees 57.29577951308232

See Also:
  - Constant Field Values

### DD2R

public static final double DD2R
Degrees to radians 0.017453292519943295

See Also:
  - Constant Field Values

### DR2AS

public static final double DR2AS
Radians to arcseconds 206264.80624709636

See Also:
  - Constant Field Values

### DAS2R

public static final double DAS2R
Arcseconds to radians 4.84813681109536E-6

See Also:
  - Constant Field Values

### TURNAS

public static final double TURNAS
Arcseconds in a full circle 1296000.0

See Also:
  - Constant Field Values

### DMAS2R

public static final double DMAS2R
Milliarcseconds to radians 4.84813681109536E-9

See Also:
  - Constant Field Values

### DTY

public static final double DTY
Length of tropical year B1900 (days) 365.242198781

See Also:
  - Constant Field Values

### DJ00

public static final double DJ00
Reference epoch (J2000.0), Julian Date 2451545.0

See Also:
  - Constant Field Values

### DJM0

public static final double DJM0
Julian Date of Modified Julian Date zero 2400000.5

See Also:
  - Constant Field Values

### DJM00

public static final double DJM00
Reference epoch (J2000.0), Modified Julian Date 51544.5

See Also:
  - Constant Field Values

### DAYSEC

public static final double DAYSEC
Seconds per day. 86400.0

See Also:
  - Constant Field Values

### DJY

public static final double DJY
Days per Julian year

See Also:
  - Constant Field Values

### DJC

public static final double DJC
Days per Julian century 36525.0

See Also:
  - Constant Field Values

### DJM

public static final double DJM
Days per Julian millennium 365250.0

See Also:
  - Constant Field Values

### DJM77

public static final double DJM77
1977 Jan 1.0 as MJD

See Also:
  - Constant Field Values

### TTMTAI

public static final double TTMTAI
TT minus TAI (s)

See Also:
  - Constant Field Values

### DAU

public static final double DAU
Astronomical unit (m) IAU 2012 1.495978707E11

See Also:
  - Constant Field Values

### CMPS

public static final double CMPS
Speed of light (m/s) 2.99792458E8

See Also:
  - Constant Field Values

### AULT

public static final double AULT
Light time for 1 au (s) 499.00478383615643

See Also:
  - Constant Field Values

### DC

public static final double DC
Speed of light (au per day) 173.1446326742403

See Also:
  - Constant Field Values

### ELG

public static final double ELG
L_G = 1 - d(TT)/d(TCG)

See Also:
  - Constant Field Values

### ELB

public static final double ELB
L_B = 1 - d(TDB)/d(TCB) at TAI 1977/1/1.0

See Also:
  - Constant Field Values

### SRS

public static final double SRS
Schwarzschild radius of the Sun (au) 1.97412574336E-8 = 2 * 1.32712440041e20 / (2.99792458e8)^2 / 1.49597870700e11

See Also:
  - Constant Field Values

### TDB0

public static final double TDB0
TDB (s) at TAI 1977/1/1.0

See Also:
  - Constant Field Values

## Constructor Details

### JSOFA

public JSOFA()

## Method Details

### jauA2af

public static char jauA2af(int ndp, double angle, int[] idmsf)
Decompose radians into degrees, arcminutes, arcseconds, fraction.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Called:

- `jauD2tf(int, double, int[])` decompose days to hms

Notes:

1. The argument ndp is interpreted as follows:

            ndp         resolution
             :      ...0000 00 00
            -7         1000 00 00
            -6          100 00 00
            -5           10 00 00
            -4            1 00 00
            -3            0 10 00
            -2            0 01 00
            -1            0 00 10
             0            0 00 01
             1            0 00 00.1
             2            0 00 00.01
             3            0 00 00.001
             :            0 00 00.000...

2. The largest positive useful value for ndp is determined by the size of angle, the format of doubles on the target platform, and the risk of overflowing idmsf[3]. On a typical platform, for angle up to 2pi, the available floating-point precision might correspond to ndp=12. However, the practical limit is typically ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is only 16 bits.
3. The absolute value of angle may exceed 2pi. In cases where it does not, it is up to the caller to test for and handle the case where angle is very nearly 2pi and rounds up to 360 degrees, by testing for idmsf[0]=360 and setting idmsf[0-3] to zero.

Parameters:
  `ndp` - int resolution (Note 1)
  `angle` - double angle in radians
  `idmsf` - int[4] returned degrees, arcminutes, arcseconds, fraction
Returns:
  sign char '+' or '-'
Since:
  Release 20101201

### jauA2tf

public static char jauA2tf(int ndp, double angle, int[] ihmsf)
Decompose radians into hours, minutes, seconds, fraction.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `ndp` - int resolution (Note 1)
  `angle` - double angle in radians
  `ihmsf` - int[4] returned hours, minutes, seconds, fraction
Returns:
  sign char returned '+' or '-'

  Called:

  - `jauD2tf(int, double, int[])` decompose days to hms

  Notes:

  1. The argument ndp is interpreted as follows:

              ndp         resolution
               :      ...0000 00 00
              -7         1000 00 00
              -6          100 00 00
              -5           10 00 00
              -4            1 00 00
              -3            0 10 00
              -2            0 01 00
              -1            0 00 10
               0            0 00 01
               1            0 00 00.1
               2            0 00 00.01
               3            0 00 00.001
               :            0 00 00.000...

  2. The largest positive useful value for ndp is determined by the size of angle, the format of doubles on the target platform, and the risk of overflowing ihmsf[3]. On a typical platform, for angle up to 2pi, the available floating-point precision might correspond to ndp=12. However, the practical limit is typically ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is only 16 bits.
  3. The absolute value of angle may exceed 2pi. In cases where it does not, it is up to the caller to test for and handle the case where angle is very nearly 2pi and rounds up to 24 hours, by testing for ihmsf[0]=24 and setting ihmsf[1-3] to zero.
Since:
  Release 20101201

### jauAnp

public static double jauAnp(double a)
Normalize angle into the range `0 <= a < 2pi`.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double angle (radians)
Returns:
  double angle in range 0-2pi
Since:
  Release 20101201

### jauAnpm

public static double jauAnpm(double a)
Normalize angle into the range `-pi <= a < +pi`.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double angle (radians)
Returns:
  double angle in range +/-pi
Since:
  Release 20101201

### jauBi00

public static JSOFA.FrameBias jauBi00()
Frame bias components of IAU 2000 precession-nutation models part of the Mathews-Herring-Buffett (MHB2000) nutation series, with additions.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Returns:
  dpsibi,depsbi double returned longitude and obliquity corrections dra double returned the ICRS RA of the J2000.0 mean equinox

  Notes:

  1. The frame bias corrections in longitude and obliquity (radians) are required in order to correct for the offset between the GCRS pole and the mean J2000.0 pole. They define, with respect to the GCRS frame, a J2000.0 mean pole that is consistent with the rest of the IAU 2000A precession-nutation model.
  2. In addition to the displacement of the pole, the complete description of the frame bias requires also an offset in right ascension. This is not part of the IAU 2000A model, and is from Chapront et al. (2002). It is returned in radians.
  3. This is a supplemented implementation of one aspect of the IAU 2000A nutation model, formally adopted by the IAU General Assembly in 2000, namely MHB2000 (Mathews et al. 2002).

  References: Chapront, J., Chapront-Touze, M. &Francou, G., Astron. Astrophys., 387, 700, 2002.

  Mathews, P.M., Herring, T.A., Buffet, B.A., "Modeling of nutation and precession New nutation series for nonrigid Earth and insights into the Earth's interior", J.Geophys.Res., 107, B4, 2002. The MHB2000 code itself was obtained on 9th September 2002 from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A.

Since:
  Release 20101201

### jauBp00

public static void jauBp00(double date1, double date2, double[][] rb, double[][] rp, double[][] rbp)
Frame bias and precession, IAU 2000.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
  `rb` - double[3][3] returned frame bias matrix (Note 2)
  `rp` - double[3][3] returned precession matrix (Note 3)
  `rbp` - double[3][3] returned bias-precession matrix (Note 4)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                      date1         date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date &time methods are both good compromises between resolution and convenience.
  2. The matrix rb transforms vectors from GCRS to mean J2000.0 by applying frame bias.
  3. The matrix rp transforms vectors from J2000.0 mean equator and equinox to mean equator and equinox of date by applying precession.
  4. The matrix rbp transforms vectors from GCRS to mean equator and equinox of date by applying frame bias then precession. It is the product rp x rb.
  5. It is permissible to re-use the same array in the returned arguments. The arrays are filled in the order given.

  Called:

  - `jauBi00()` frame bias components, IAU 2000
  - `jauPr00(double, double)` IAU 2000 precession adjustments
  - `jauIr(double[][])` initialize r-matrix to identity
  - `jauRx(double, double[][])` rotate around X-axis
  - `jauRy(double, double[][])` rotate around Y-axis
  - `jauRz(double, double[][])` rotate around Z-axis
  - `jauCr(double[][], double[][])` copy r-matrix
  - `jauRxr(double[][], double[][])` product of two r-matrices

  Reference: "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003) n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

Since:
  Release 20101201

### jauBp06

public static void jauBp06(double date1, double date2, double[][] rb, double[][] rp, double[][] rbp)
Frame bias and precession, IAU 2006.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
  `rb` - double[3][3] returned frame bias matrix (Note 2)
  `rp` - double[3][3] returned precession matrix (Note 3)
  `rbp` - double[3][3] returned bias-precession matrix (Note 4)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                      date1         date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date &time methods are both good compromises between resolution and convenience.
  2. The matrix rb transforms vectors from GCRS to mean J2000.0 by applying frame bias.
  3. The matrix rp transforms vectors from mean J2000.0 to mean of date by applying precession.
  4. The matrix rbp transforms vectors from GCRS to mean of date by applying frame bias then precession. It is the product rp x rb.
  5. It is permissible to re-use the same array in the returned arguments. The arrays are filled in the order given.

  Called:

  - `jauPfw06(double, double)` bias-precession F-W angles, IAU 2006
  - `jauFw2m(double, double, double, double)` F-W angles to r-matrix
  - `jauPmat06(double, double)` PB matrix, IAU 2006
  - `jauTr(double[][])` transpose r-matrix
  - `jauRxr(double[][], double[][])` product of two r-matrices

  References:

  Capitaine, N. &Wallace, P.T., 2006, Astron.Astrophys. 450, 855

  Wallace, P.T. &Capitaine, N., 2006, Astron.Astrophys. 459, 981

Since:
  Release 20101201

### jauBpn2xy

public static JSOFA.CelestialIntermediatePole jauBpn2xy(double[][] rbpn)
Extract from the bias-precession-nutation matrix the X,Y coordinates of the Celestial Intermediate Pole.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rbpn` - double[3][3] celestial-to-true matrix (Note 1)
Returns:
  returned Celestial Intermediate Pole (Note 2)

  Notes:

  1. The matrix rbpn transforms vectors from GCRS to true equator (and CIO or equinox) of date, and therefore the Celestial Intermediate Pole unit vector is the bottom row of the matrix.
  2. The arguments x,y are components of the Celestial Intermediate Pole unit vector in the Geocentric Celestial Reference System.

  Reference: "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003) n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

Since:
  Release 20101201

### jauC2i00a

public static double[][] jauC2i00a(double date1, double date2)
Form the celestial-to-intermediate matrix for a given date using the IAU 2000A precession-nutation model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rc2i double[3][3] returned celestial-to-intermediate matrix (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date &time methods are both good compromises between resolution and convenience.
  2. The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] = rc2t * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.
  3. A faster, but slightly less accurate, result (about 1 mas), can be obtained by using instead the jauC2i00b function.

  Called:

  - `jauPnm00a(double, double)` classical NPB matrix, IAU 2000A
  - `jauC2ibpn(double, double, double[][])` celestial-to-intermediate matrix, given NPB matrix

  References:

  - "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003) n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.
  - McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)
Since:
  Release 20101201

### jauC2i00b

public static double[][] jauC2i00b(double date1, double date2)
Form the celestial-to-intermediate matrix for a given date using the IAU 2000B precession-nutation model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rc2i double[3][3] returned celestial-to-intermediate matrix (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date &time methods are both good compromises between resolution and convenience.
  2. The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] = rc2t * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.
  3. The present function is faster, but slightly less accurate (about 1 mas), than the jauC2i00a function.

  Called:

  - `jauPnm00b(double, double)` classical NPB matrix, IAU 2000B
  - `jauC2ibpn(double, double, double[][])` celestial-to-intermediate matrix, given NPB matrix

  References:

  "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003) n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauC2i06a

public static double[][] jauC2i06a(double date1, double date2)
Form the celestial-to-intermediate matrix for a given date using the IAU 2006 precession and IAU 2000A nutation models.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rc2i double[3][3] returned celestial-to-intermediate matrix (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date &time methods are both good compromises between resolution and convenience.
  2. The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] = RC2T * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.

  Called:

  - `jauPnm06a(double, double)` classical NPB matrix, IAU 2006/2000A
  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix
  - `jauS06(double, double, double, double)` the CIO locator s, Given X,Y, IAU 2006
  - `jauC2ixys(double, double, double)` celestial-to-intermediate matrix, Given X,Y and s

  References:

  McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

Since:
  Release 20101201

### jauC2ibpn

public static double[][] jauC2ibpn(double date1, double date2, double[][] rbpn)
Form the celestial-to-intermediate matrix for a given date given the bias-precession-nutation matrix. IAU 2000.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
  `rbpn` - double[3][3] celestial-to-true matrix (Note 2)
Returns:
  rc2i double[3][3] returned celestial-to-intermediate matrix (Note 3)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date &time methods are both good compromises between resolution and convenience.
  2. The matrix rbpn transforms vectors from GCRS to true equator (and CIO or equinox) of date. Only the CIP (bottom row) is used.
  3. The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] = RC2T * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.
  4. Although its name does not include "00", This function is in fact specific to the IAU 2000 models.

  Called:

  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix
  - `jauC2ixy(double, double, double, double)` celestial-to-intermediate matrix, given X,Y

  References:

  "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003)

  n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauC2ixy

public static double[][] jauC2ixy(double date1, double date2, double x, double y)
Form the celestial to intermediate-frame-of-date matrix for a given date when the CIP X,Y coordinates are known. IAU 2000.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
  `x` - double Celestial Intermediate Pole (Note 2)
  `y` - double Celestial Intermediate Pole (Note 2)
Returns:
  rc2i double[3][3] returned celestial-to-intermediate matrix (Note 3)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date &time methods are both good compromises between resolution and convenience.
  2. The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.
  3. The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] = RC2T * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.
  4. Although its name does not include "00", This function is in fact specific to the IAU 2000 models.

  Called:

  - `jauC2ixys(double, double, double)` celestial-to-intermediate matrix, given X,Y and s
  - `jauS00(double, double, double, double)` the CIO locator s, given X,Y, IAU 2000A

  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauC2ixys

public static double[][] jauC2ixys(double x, double y, double s)
Form the celestial to intermediate-frame-of-date matrix given the CIP X,Y and the CIO locator s.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `x` - double Celestial Intermediate Pole (Note 1)
  `y` - double Celestial Intermediate Pole (Note 1)
  `s` - double the CIO locator s (Note 2)
Returns:
  rc2i double[3][3] returned celestial-to-intermediate matrix (Note 3)

  Notes:

  1. The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.
  2. The CIO locator s (in radians) positions the Celestial Intermediate Origin on the equator of the CIP.
  3. The matrix rc2i is the first stage in the transformation from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] = RC2T * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.

  Called:

  - `jauIr(double[][])` initialize r-matrix to identity
  - `jauRz(double, double[][])` rotate around Z-axis
  - `jauRy(double, double[][])` rotate around Y-axis

  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauC2s

public static JSOFA.SphericalCoordinate jauC2s(double[] p)
P-vector to spherical coordinates.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `p` - double[3] p-vector
Returns:
  theta double returned longitude angle (radians) phi double returned latitude angle (radians)

  Notes:

  1. The vector p can have any magnitude; only its direction is used.
  2. If p is null, zero theta and phi are returned.
  3. At either pole, zero theta is returned.
Since:
  Release 20101201

### jauC2t00a

public static double[][] jauC2t00a(double tta, double ttb, double uta, double utb, double xp, double yp)
Form the celestial to terrestrial matrix given the date, the UT1 and the polar motion, using the IAU 2000A nutation model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `tta` - double TT as a 2-part Julian Date (Note 1)
  `ttb` - double TT as a 2-part Julian Date (Note 1)
  `uta` - double UT1 as a 2-part Julian Date (Note 1)
  `utb` - double UT1 as a 2-part Julian Date (Note 1)
  `xp` - double CIP coordinates (radians, Note 2)
  `yp` - double CIP coordinates (radians, Note 2)
Returns:
  rc2t double[3][3] returned celestial-to-terrestrial matrix (Note 3)

  Notes:

  1. The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, apportioned in any convenient way between the arguments uta and utb. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

                      uta            utb

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. In the case of uta,utb, the date &time method is best matched to the Earth rotation angle algorithm used: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively.
  3. The matrix rc2t transforms from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] = rc2t * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), RC2I is the celestial-to-intermediate matrix, ERA is the Earth rotation angle and RPOM is the polar motion matrix.
  4. A faster, but slightly less accurate, result (about 1 mas), can be obtained by using instead the jauC2t00b function.

  Called:

  - `jauC2i00a(double, double)` celestial-to-intermediate matrix, IAU 2000A
  - `jauEra00(double, double)` Earth rotation angle, IAU 2000
  - `jauSp00(double, double)` the TIO locator s', IERS 2000
  - `jauPom00(double, double, double)` polar motion matrix
  - `jauC2tcio(double[][], double, double[][])` form CIO-based celestial-to-terrestrial matrix

  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauC2t00b

public static double[][] jauC2t00b(double tta, double ttb, double uta, double utb, double xp, double yp)
Form the celestial to terrestrial matrix given the date, the UT1 and the polar motion, using the IAU 2000B precession-nutation model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `tta` - double TT as a 2-part Julian Date (Note 1)
  `ttb` - double TT as a 2-part Julian Date (Note 1)
  `uta` - double UT1 as a 2-part Julian Date (Note 1)
  `utb` - double UT1 as a 2-part Julian Date (Note 1)
  `xp` - double coordinates of the pole (radians, Note 2)
  `yp` - double coordinates of the pole (radians, Note 2)
Returns:
  rc2t double[3][3] returned celestial-to-terrestrial matrix (Note 3)

  Notes:

  1. The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, apportioned in any convenient way between the arguments uta and utb. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

                      uta            utb

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. In the case of uta,utb, the date &time method is best matched to the Earth rotation angle algorithm used: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively.
  3. The matrix rc2t transforms from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] = rc2t * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), RC2I is the celestial-to-intermediate matrix, ERA is the Earth rotation angle and RPOM is the polar motion matrix.
  4. The present function is faster, but slightly less accurate (about 1 mas), than the jauC2t00a function.

  Called:

  - `jauC2i00b(double, double)` celestial-to-intermediate matrix, IAU 2000B
  - `jauEra00(double, double)` Earth rotation angle, IAU 2000
  - `jauPom00(double, double, double)` polar motion matrix
  - `jauC2tcio(double[][], double, double[][])` form CIO-based celestial-to-terrestrial matrix

  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauC2t06a

public static double[][] jauC2t06a(double tta, double ttb, double uta, double utb, double xp, double yp)
Form the celestial to terrestrial matrix given the date, the UT1 and the polar motion, using the IAU 2006/2000A precession-nutation nutation model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `tta` - double TT as a 2-part Julian Date (Note 1)
  `ttb` - double TT as a 2-part Julian Date (Note 1)
  `uta` - double UT1 as a 2-part Julian Date (Note 1)
  `utb` - double UT1 as a 2-part Julian Date (Note 1)
  `xp` - double coordinates of the pole (radians, Note 2)
  `yp` - double coordinates of the pole (radians, Note 2)
Returns:
  rc2t double[3][3] returned celestial-to-terrestrial matrix (Note 3)

  Notes:

  1. The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, apportioned in any convenient way between the arguments. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

                      uta            utb

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. In the case of uta,utb, the date &time method is best matched to the Earth rotation angle algorithm used: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively.
  3. The matrix rc2t transforms from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] = rc2t * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), RC2I is the celestial-to-intermediate matrix, ERA is the Earth rotation angle and RPOM is the polar motion matrix.

  Called:

  - `jauC2i06a(double, double)` celestial-to-intermediate matrix, IAU 2006/2000A
  - `jauEra00(double, double)` Earth rotation angle, IAU 2000
  - `jauSp00(double, double)` the TIO locator s', IERS 2000
  - `jauPom00(double, double, double)` polar motion matrix
  - `jauC2tcio(double[][], double, double[][])` form CIO-based celestial-to-terrestrial matrix

  Reference:

  McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

Since:
  Release 20101201

### jauC2tcio

public static double[][] jauC2tcio(double[][] rc2i, double era, double[][] rpom)
Assemble the celestial to terrestrial matrix from CIO-based components (the celestial-to-intermediate matrix, the Earth Rotation Angle and the polar motion matrix).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rc2i` - double[3][3] celestial-to-intermediate matrix
  `era` - double Earth rotation angle (radians)
  `rpom` - double[3][3] polar-motion matrix
Returns:
  rc2t double[3][3] returned celestial-to-terrestrial matrix

  Notes:

  1. This function constructs the rotation matrix that transforms vectors in the celestial system into vectors in the terrestrial system. It does so starting from precomputed components, namely the matrix which rotates from celestial coordinates to the intermediate frame, the Earth rotation angle and the polar motion matrix. One use of the present function is when generating a series of celestial-to-terrestrial matrices where only the Earth Rotation Angle changes, avoiding the considerable overhead of recomputing the precession-nutation more often than necessary to achieve given accuracy objectives.
  2. The relationship between the arguments is as follows: [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] = rc2t * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003).

  Called:

  - `jauCr(double[][], double[][])` copy r-matrix
  - `jauRz(double, double[][])` rotate around Z-axis
  - `jauRxr(double[][], double[][])` product of two r-matrices

  Reference:

  McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

Since:
  Release 20101201

### jauC2teqx

public static double[][] jauC2teqx(double[][] rbpn, double gst, double[][] rpom)
Assemble the celestial to terrestrial matrix from equinox-based components (the celestial-to-true matrix, the Greenwich Apparent Sidereal Time and the polar motion matrix).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rbpn` - double[3][3] celestial-to-true matrix
  `gst` - double Greenwich (apparent) Sidereal Time (radians)
  `rpom` - double[3][3] polar-motion matrix
Returns:
  rc2t double[3][3] returned celestial-to-terrestrial matrix (Note 2)

  Notes:

  1. This function constructs the rotation matrix that transforms vectors in the celestial system into vectors in the terrestrial system. It does so starting from precomputed components, namely the matrix which rotates from celestial coordinates to the true equator and equinox of date, the Greenwich Apparent Sidereal Time and the polar motion matrix. One use of the present function is when generating a series of celestial-to-terrestrial matrices where only the Sidereal Time changes, avoiding the considerable overhead of recomputing the precession-nutation more often than necessary to achieve given accuracy objectives.
  2. The relationship between the arguments is as follows: [TRS] = rpom * R_3(gst) * rbpn * [CRS] = rc2t * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003).

  Called:

  - `jauCr(double[][], double[][])` copy r-matrix
  - `jauRz(double, double[][])` rotate around Z-axis
  - `jauRxr(double[][], double[][])` product of two r-matrices

  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauC2tpe

public static double[][] jauC2tpe(double tta, double ttb, double uta, double utb, double dpsi, double deps, double xp, double yp)
Form the celestial to terrestrial matrix given the date, the UT1, the nutation and the polar motion. IAU 2000.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `tta` - double TT as a 2-part Julian Date (Note 1)
  `ttb` - double TT as a 2-part Julian Date (Note 1)
  `uta` - double UT1 as a 2-part Julian Date (Note 1)
  `utb` - double UT1 as a 2-part Julian Date (Note 1)
  `dpsi` - double nutation (Note 2)
  `deps` - double nutation (Note 2)
  `xp` - double coordinates of the pole (radians, Note 3)
  `yp` - double coordinates of the pole (radians, Note 3)
Returns:
  rc2t double[3][3] returned celestial-to-terrestrial matrix (Note 4)

  Notes:

  1. The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, apportioned in any convenient way between the arguments uta and utb. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

                      uta            utb

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. In the case of uta,utb, the date &time method is best matched to the Earth rotation angle algorithm used: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. The caller is responsible for providing the nutation components; they are in longitude and obliquity, in radians and are with respect to the equinox and ecliptic of date. For high-accuracy applications, free core nutation should be included as well as any other relevant corrections to the position of the CIP.
  3. The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively.
  4. The matrix rc2t transforms from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(GST) * RBPN * [CRS] = rc2t * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), RBPN is the bias-precession-nutation matrix, GST is the Greenwich (apparent) Sidereal Time and RPOM is the polar motion matrix.
  5. Although its name does not include "00", This function is in fact specific to the IAU 2000 models.

  Called:

  - `jauPn00(double, double, double, double)` bias/precession/nutation results, IAU 2000
  - `jauGmst00(double, double, double, double)` Greenwich mean sidereal time, IAU 2000
  - `jauSp00(double, double)` the TIO locator s', IERS 2000
  - `jauEe00(double, double, double, double)` equation of the equinoxes, IAU 2000
  - `jauPom00(double, double, double)` polar motion matrix
  - `jauC2teqx(double[][], double, double[][])` form equinox-based celestial-to-terrestrial matrix

  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauC2txy

public static double[][] jauC2txy(double tta, double ttb, double uta, double utb, double x, double y, double xp, double yp)
Form the celestial to terrestrial matrix given the date, the UT1, the CIP coordinates and the polar motion. IAU 2000.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `tta` - double TT as a 2-part Julian Date (Note 1)
  `ttb` - double TT as a 2-part Julian Date (Note 1)
  `uta` - double UT1 as a 2-part Julian Date (Note 1)
  `utb` - double UT1 as a 2-part Julian Date (Note 1)
  `x` - double Celestial Intermediate Pole (Note 2)
  `y` - double Celestial Intermediate Pole (Note 2)
  `xp` - double coordinates of the pole (radians, Note 3)
  `yp` - double coordinates of the pole (radians, Note 3)
Returns:
  rc2t double[3][3] returned celestial-to-terrestrial matrix (Note 4)

  Notes:

  1. The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, apportioned in any convenient way between the arguments uta and utb. For example, JD(UT1)=2450123.7 could be expressed in any o these ways, among others:

                      uta            utb

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date &time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. In the case of uta,utb, the date &time method is best matched to the Earth rotation angle algorithm used: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.
  3. The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively.
  4. The matrix rc2t transforms from celestial to terrestrial coordinates: [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] = rc2t * [CRS] where [CRS] is a vector in the Geocentric Celestial Reference System and [TRS] is a vector in the International Terrestrial Reference System (see IERS Conventions 2003), ERA is the Earth Rotation Angle and RPOM is the polar motion matrix.
  5. Although its name does not include "00", This function is in fact specific to the IAU 2000 models.

  Called:

  - `jauC2ixy(double, double, double, double)` celestial-to-intermediate matrix, given X,Y
  - `jauEra00(double, double)` Earth rotation angle, IAU 2000
  - `jauSp00(double, double)` the TIO locator s', IERS 2000
  - `jauPom00(double, double, double)` polar motion matrix
  - `jauC2tcio(double[][], double, double[][])` form CIO-based celestial-to-terrestrial matrix
  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauCal2jd

public static JSOFA.JulianDate jauCal2jd(int iy, int im, int id) throws JSOFAIllegalParameter
Gregorian Calendar to Julian Date.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `iy` - int year in Gregorian calendar (Note 1)
  `im` - int month in Gregorian calendar (Note 1)
  `id` - int day in Gregorian calendar (Note 1)
Returns:
  d MJD zero-point: always 2400000.5 returned Modified Julian Date for 0 hrs
Throws:
  `JSOFAIllegalParameter` - status: 0 = OK -1 = bad year (Note 3: JD not computed) -2 = bad month (JD not computed) -3 = bad day (JD computed)

  Notes:

  1. The algorithm used is valid from -4800 March 1, but this implementation rejects dates before -4799 January 1.
  2. The Julian Date is returned in two pieces, in the usual JSOFA manner, which is designed to preserve time resolution. The Julian Date is available as a single number by adding djm0 and djm.
  3. In early eras the conversion is from the "Proleptic Gregorian Calendar"; no account is taken of the date(s) of adoption of the Gregorian Calendar, nor is the AD/BC numbering convention observed.

  Reference:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 12.92 (p604).

Since:
  Release 20101201

### jauCp

public static double[] jauCp(double[] p, double[] c)
Copy a p-vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `p` - double[3] p-vector to be copied
  `c` - double[3] given and returned copy
Returns:
  double[3] given and returned copy
Since:
  Release 20101201

### jauCpv

public static double[][] jauCpv(double[][] pv, double[][] c)
Copy a position/velocity vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `pv` - double[2][3] position/velocity vector to be copied
  `c` - double[2][3] returned copy
Returns:
  double[2][3] returned c copy

  Called:

  - `jauCp(double[], double[])` copy p-vector
Since:
  Release 20101201

### jauCr

public static void jauCr(double[][] r, double[][] c)
Copy an r-matrix.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `r` - double[3][3] r-matrix to be copied.
  `c` - double[3][3] given and returned the elements of r are copied into this.

  Called:

  - `jauCp(double[], double[])` copy p-vector
Since:
  Release 20101201

### jauD2tf

public static char jauD2tf(int ndp, double days, int[] ihmsf)
Decompose days to hours, minutes, seconds, fraction.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `ndp` - int resolution (Note 1)
  `days` - double interval in days
  `ihmsf` - int[4] returned hours, minutes, seconds, fraction
Returns:
  sign char returned '+' or '-'

  Notes:

  1. The argument ndp is interpreted as follows: ndp resolution : ...0000 00 00 -7 1000 00 00 -6 100 00 00 -5 10 00 00 -4 1 00 00 -3 0 10 00 -2 0 01 00 -1 0 00 10 0 0 00 01 1 0 00 00.1 2 0 00 00.01 3 0 00 00.001 : 0 00 00.000...
  2. The largest positive useful value for ndp is determined by the size of days, the format of double on the target platform, and the risk of overflowing ihmsf[3]. On a typical platform, for days up to 1.0, the available floating-point precision might correspond to ndp=12. However, the practical limit is typically ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is only 16 bits.
  3. The absolute value of days may exceed 1.0. In cases where it does not, it is up to the caller to test for and handle the case where days is very nearly 1.0 and rounds up to 24 hours, by testing for ihms[0]=24 and setting ihmsf[1-3] to zero.
Since:
  Release 20101201

### jauD2dtf

public static JSOFA.CalendarHMS jauD2dtf(String scale, int ndp, double d1, double d2) throws JSOFAIllegalParameter, JSOFAInternalError
Format for output a 2-part Julian Date (or in the case of UTC a quasi-JD form that includes special provision for leap seconds).

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `scale` - char[] time scale ID (Note 1)
  `ndp` - int resolution (Note 2)
  `d1` - double time as a 2-part Julian Date (Notes 3,4)
  `d2` - double time as a 2-part Julian Date (Notes 3,4)
Returns:
  the date as a Gregorian calendar iy,im,id int year, month, day in Gregorian calendar (Note 5) ihmsf int[4] hours, minutes, seconds, fraction (Note 1) Returned (function value): int status: +1 = dubious year (Note 5) 0 = OK -1 = unacceptable date (Note 6)

  Notes:

  1. scale identifies the time scale. Only the value "UTC" (in upper case) is significant, and enables handling of leap seconds (see Note 4).
  2. ndp is the number of decimal places in the seconds field, and can have negative as well as positive values, such as: ndp resolution -4 1 00 00 -3 0 10 00 -2 0 01 00 -1 0 00 10 0 0 00 01 1 0 00 00.1 2 0 00 00.01 3 0 00 00.001 The limits are platform dependent, but a safe range is -5 to +9.
  3. d1+d2 is Julian Date, apportioned in any convenient way between the two arguments, for example where d1 is the Julian Day Number and d2 is the fraction of a day. In the case of UTC, where the use of JD is problematical, special conventions apply: see the next note.
  4. JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The SOFA internal convention is that the quasi-JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds. In the 1960-1972 era there were smaller jumps (in either direction) each time the linear UTC(TAI) expression was changed, and these "mini-leaps" are also included in the SOFA convention.
  5. The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.
  6. For calendar conventions and limitations, see iauCal2jd.
  Called: iauJd2cal JD to Gregorian calendar iauD2tf decompose days to hms iauDat delta(AT) = TAI-UTC
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unacceptable date (notes 5,6)
Since:
  JSOFA release 20131202

### jauDtf2d

public static JSOFA.JulianDate jauDtf2d(String scale, int iy, int im, int id, int ihr, int imn, double sec) throws JSOFAIllegalParameter, JSOFAInternalError
Encode date and time fields into 2-part Julian Date (or in the case of UTC a quasi-JD form that includes special provision for leap seconds).

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `scale` - char time scale ID (Note 1)
  `iy` - int year in Gregorian calendar (Note 2)
  `im` - int month in Gregorian calendar (Note 2)
  `id` - int day in Gregorian calendar (Note 2)
  `ihr` - int hour
  `imn` - int minute
  `sec` - double seconds
Returns:
  2-part Julian Date (Notes 3,4)
Throws:
  `JSOFAIllegalParameter` - bad year
  `JSOFAInternalError` - `status: +3 = both of next two +2 = time is after end of day (Note 5) +1 = dubious year (Note 6) 0 = OK -1 = bad year -2 = bad month -3 = bad day -4 = bad hour -5 = bad minute -6 = bad second (<0)`

  Notes:

  1. scale identifies the time scale. Only the value "UTC" (in upper case) is significant, and enables handling of leap seconds (see Note 4).
  2. For calendar conventions and limitations, see iauCal2jd.
  3. The sum of the results, d1+d2, is Julian Date, where normally d1 is the Julian Day Number and d2 is the fraction of a day. In the case of UTC, where the use of JD is problematical, special conventions apply: see the next note.
  4. JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The SOFA internal convention is that the quasi-JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds. In the 1960-1972 era there were smaller jumps (in either direction) each time the linear UTC(TAI) expression was changed, and these "mini-leaps" are also included in the SOFA convention.
  5. The warning status "time is after end of day" usually means that the sec argument is greater than 60.0. However, in a day ending in a leap second the limit changes to 61.0 (or 59.0 in the case of a negative leap second).
  6. The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.
  7. Only in the case of continuous and regular time scales (TAI, TT, TCG, TCB and TDB) is the result d1+d2 a Julian Date, strictly speaking. In the other cases (UT1 and UTC) the result must be used with circumspection; in particular the difference between two such results cannot be interpreted as a precise time interval.
  Called: iauCal2jd Gregorian calendar to JD iauDat delta(AT) = TAI-UTC iauJd2cal JD to Gregorian calendar
Since:
  JSOFA release 20131202

### lastLeapSecondDate

public static JSOFA.JulianDate lastLeapSecondDate()
the date of the last leap second. Note that this is not a SOFA standard fumction.

Returns:
  the `JSOFA.JulianDate` of the last leap second.

### jauDat

public static double jauDat(int iy, int im, int id, double fd) throws JSOFAIllegalParameter, JSOFAInternalError
For a given UTC date, calculate delta(AT) = TAI-UTC.

         :------------------------------------------:
         :                                          :
         :                 IMPORTANT                :
         :                                          :
         :  A new version of this function must be  :
         :  produced whenever a new leap second is  :
         :  announced.  There are four items to     :
         :  change on each such occasion:           :
         :                                          :
         :  1) A new line must be added to the set  :
         :     of statements that initialize the    :
         :     array "changes".                     :
         :                                          :
         :  2) The parameter IYV must be set to     :
         :     the current year.                    :
         :                                          :
         :  3) The "Latest leap second" comment     :
         :     below must be set to the new leap    :
         :     second date.                         :
         :                                          :
         :  4) The "This revision" comment, later,  :
         :     must be set to the current date.     :
         :                                          :
         :  Change (2) must also be carried out     :
         :  whenever the function is re-issued,     :
         :  even if no leap seconds have been       :
         :  added.                                  :
         :                                          :
         :  Latest leap second:  2017 Jan 01        :
         :                                          :
         :__________________________________________:

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `iy` - int UTC: year (Notes 1 and 2)
  `im` - int month (Note 2)
  `id` - int day (Notes 2 and 3)
  `fd` - double fraction of day (Note 4)
Returns:
  deltat double returned TAI minus UTC, seconds
Throws:
  `JSOFAIllegalParameter` - status (Note 5): 1 = dubious year (Note 1) 0 = OK -1 = bad year -2 = bad month -3 = bad day (Note 3) -4 = bad fraction (Note 4)
  `JSOFAInternalError` -

  Notes:

  1. UTC began at 1960 January 1.0 (JD 2436934.5) and it is improper to call the function with an earlier date. If this is attempted, zero is returned together with a warning status. Because leap seconds cannot, in principle, be predicted in advance, a reliable check for dates beyond the valid range is impossible. To guard against gross errors, a year five or more after the release year of the present function (see parameter IYV) is considered dubious. In this case a warning status is returned but the result is computed in the normal way. For both too-early and too-late years, the warning status is j=+1. This is distinct from the error status j=-1, which signifies a year so early that JD could not be computed.
  2. If the specified date is for a day which ends with a leap second, the TAI-UTC value returned is for the period leading up to the leap second. If the date is for a day which begins as a leap second ends, the TAI-UTC returned is for the period following the leap second.
  3. The day number must be in the normal calendar range, for example 1 through 30 for April. The "almanac" convention of allowing such dates as January 0 and December 32 is not supported in this function, in order to avoid confusion near leap seconds.
  4. The fraction of day is used only for dates before the introduction of leap seconds, the first of which occurred at the end of 1971. It is tested for validity (zero to less than 1 is the valid range) even if not used; if invalid, zero is used and status j=-4 is returned. For many applications, setting fd to zero is acceptable; the resulting error is always less than 3 ms (and occurs only pre-1972).
  5. The status value returned in the case where there are multiple errors refers to the first error detected. For example, if the month and day are 13 and 32 respectively, j=-2 (bad month) will be returned.
  6. In cases where a valid result is not available, zero is returned.

     References:

  7. For dates from 1961 January 1 onwards, the expressions from the file ftp://maia.usno.navy.mil/ser7/tai-utc.dat are used.
  8. The 5ms timestep at 1961 January 1 is taken from 2.58.1 (p87) of the 1992 Explanatory Supplement.

  Called:

  - `jauCal2jd(int, int, int)` Gregorian calendar to Julian Day number

  @version 20160729

Since:
  Release 20101201

### jauDtdb

public static double jauDtdb(double date1, double date2, double ut, double elong, double u, double v)
An approximation to TDB-TT, the difference between barycentric dynamical time and terrestrial time, for an observer on the Earth. The different time scales - proper, coordinate and realized - are related to each other: `TAI <- physically realized : offset <- observed (nominally +32.184s) : TT <- terrestrial time : rate adjustment (L_G) <- definition of TT : TCG <- time scale for GCRS : "periodic" terms <- jauDtdb is an implementation : rate adjustment (L_C) <- function of solar-system ephemeris : TCB <- time scale for BCRS : rate adjustment (-L_B) <- definition of TDB : TDB <- TCB scaled to track TT : "periodic" terms <- -jau_DTDB is an approximation : TT <- terrestrial time` Adopted values for the various constants can be found in the IERS Conventions (McCarthy & Petit 2003).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double date, TDB (Notes 1-3)
  `date2` - double date, TDB (Notes 1-3)
  `ut` - double universal time (UT1, fraction of one day)
  `elong` - double longitude (east positive, radians)
  `u` - double distance from Earth spin axis (km)
  `v` - double distance north of equatorial plane (km)
Returns:
  double TDB-TT (seconds)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. Although the date is, formally, barycentric dynamical time (TDB), the terrestrial dynamical time (TT) can be used with no practical effect on the accuracy of the prediction.
  2. TT can be regarded as a coordinate time that is realized as an offset of 32.184s from International Atomic Time, TAI. TT is a specific linear transformation of geocentric coordinate time TCG, which is the time scale for the Geocentric Celestial Reference System, GCRS.
  3. TDB is a coordinate time, and is a specific linear transformation of barycentric coordinate time TCB, which is the time scale for the Barycentric Celestial Reference System, BCRS.
  4. The difference TCG-TCB depends on the masses and positions of the bodies of the solar system and the velocity of the Earth. It is dominated by a rate difference, the residual being of a periodic character. The latter, which is modeled by the present function, comprises a main (annual) sinusoidal term of amplitude approximately 0.00166 seconds, plus planetary terms up to about 20 microseconds, and lunar and diurnal terms up to 2 microseconds. These effects come from the changing transverse Doppler effect and gravitational red-shift as the observer (on the Earth's surface) experiences variations in speed (with respect to the BCRS) and gravitational potential.
  5. TDB can be regarded as the same as TCB but with a rate adjustment to keep it close to TT, which is convenient for many applications. The history of successive attempts to define TDB is set out in Resolution 3 adopted by the IAU General Assembly in 2006, which defines a fixed TDB(TCB) transformation that is consistent with contemporary solar-system ephemerides. Future ephemerides will imply slightly changed transformations between TCG and TCB, which could introduce a linear drift between TDB and TT; however, any such drift is unlikely to exceed 1 nanosecond per century.
  6. The geocentric TDB-TT model used in the present function is that of Fairhead & Bretagnon (1990), in its full form. It was originally supplied by Fairhead (private communications with P.T.Wallace, 1990) as a Fortran subroutine. The present C function contains an adaptation of the Fairhead code. The numerical results are essentially unaffected by the changes, the differences with respect to the Fairhead & Bretagnon original being at the 1e-20 s level. The topocentric part of the model is from Moyer (1981) and Murray (1983), with fundamental arguments adapted from Simon et al. 1994. It is an approximation to the expression ( v / c ) . ( r / c ), where v is the barycentric velocity of the Earth, r is the geocentric position of the observer and c is the speed of light. By supplying zeroes for u and v, the topocentric part of the model can be nullified, and the function will return the Fairhead & Bretagnon result alone.
  7. During the interval 1950-2050, the absolute accuracy is better than +/- 3 nanoseconds relative to time ephemerides obtained by direct numerical integrations based on the JPL DE405 solar system ephemeris.
  8. It must be stressed that the present function is merely a model, and that numerical integration of solar-system ephemerides is the definitive method for predicting the relationship between TCG and TCB and hence between TT and TDB.

  References:

  Fairhead, L., & Bretagnon, P., Astron.Astrophys., 229, 240-247 (1990).

  IAU 2006 Resolution 3.

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

  Moyer, T.D., Cel.Mech., 23, 33 (1981).

  Murray, C.A., Vectorial Astrometry, Adam Hilger (1983).

  Seidelmann, P.K. et al., Explanatory Supplement to the Astronomical Almanac, Chapter 2, University Science Books (1992).

  Simon, J.L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G. & Laskar, J., Astron.Astrophys., 282, 663-683 (1994).

Since:
  Release 20101201

### jauEe00

public static double jauEe00(double date1, double date2, double epsa, double dpsi)
The equation of the equinoxes, compatible with IAU 2000 resolutions, given the nutation in longitude and the mean obliquity.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
  `epsa` - double mean obliquity (Note 2)
  `dpsi` - double nutation in longitude (Note 3)
Returns:
  double equation of the equinoxes (Note 4)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The obliquity, in radians, is mean of date.
  3. The result, which is in radians, operates in the following sense: Greenwich apparent ST = GMST + equation of the equinoxes
  4. The result is compatible with the IAU 2000 resolutions. For further details, see IERS Conventions 2003 and Capitaine et al. (2002).

  Called:

  - `jauEect00(double, double)` equation of the equinoxes complementary terms

  Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to implement the IAU 2000 definition of UT1", Astronomy & Astrophysics, 406, 1135-1149 (2003)

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauEe00a

public static double jauEe00a(double date1, double date2)
Equation of the equinoxes, compatible with IAU 2000 resolutions.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double equation of the equinoxes (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The result, which is in radians, operates in the following sense: Greenwich apparent ST = GMST + equation of the equinoxes
  3. The result is compatible with the IAU 2000 resolutions. For further details, see IERS Conventions 2003 and Capitaine et al. (2002).

  Called:

  - `jauPr00(double, double)` IAU 2000 precession adjustments
  - `jauObl80(double, double)` mean obliquity, IAU 1980
  - `jauNut00a(double, double)` nutation, IAU 2000A
  - `jauEe00(double, double, double, double)` equation of the equinoxes, IAU 2000

  References:

  Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to implement the IAU 2000 definition of UT1", Astronomy & Astrophysics, 406, 1135-1149 (2003).

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004).

Since:
  Release 20101201

### jauEe00b

public static double jauEe00b(double date1, double date2)
Equation of the equinoxes, compatible with IAU 2000 resolutions but using the truncated nutation model IAU 2000B.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double equation of the equinoxes (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The result, which is in radians, operates in the following sense: Greenwich apparent ST = GMST + equation of the equinoxes
  3. The result is compatible with the IAU 2000 resolutions except that accuracy has been compromised (1 mas) for the sake of speed. For further details, see McCarthy & Luzum (2001), IERS Conventions 2003 and Capitaine et al. (2003).

  Called:

  - `jauPr00(double, double)` IAU 2000 precession adjustments
  - `jauObl80(double, double)` mean obliquity, IAU 1980
  - `jauNut00b(double, double)` nutation, IAU 2000B
  - `jauEe00(double, double, double, double)` equation of the equinoxes, IAU 2000

  Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to implement the IAU 2000 definition of UT1", Astronomy & Astrophysics, 406, 1135-1149 (2003)

  McCarthy, D.D. & Luzum, B.J., "An abridged model of the precession-nutation of the celestial pole", Celestial Mechanics & Dynamical Astronomy, 85, 37-49 (2003)

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauEe06a

public static double jauEe06a(double date1, double date2)
Equation of the equinoxes, compatible with IAU 2000 resolutions and IAU 2006/2000A precession-nutation.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double equation of the equinoxes (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The result, which is in radians, operates in the following sense: Greenwich apparent ST = GMST + equation of the equinoxes

  Called:

  - `jauAnpm(double)` normalize angle into range +/- pi
  - `jauGst06a(double, double, double, double)` Greenwich apparent sidereal time, IAU 2006/2000A
  - `jauGmst06(double, double, double, double)` Greenwich mean sidereal time, IAU 2006

  Reference:

  McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

Since:
  Release 20101201

### jauEect00

public static double jauEect00(double date1, double date2)
Equation of the equinoxes complementary terms, consistent with IAU 2000 resolutions.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double complementary terms (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The "complementary terms" are part of the equation of the equinoxes (EE), classically the difference between apparent and mean Sidereal Time: GAST = GMST + EE with: EE = dpsi * cos(eps) where dpsi is the nutation in longitude and eps is the obliquity of date. However, if the rotation of the Earth were constant in an inertial frame the classical formulation would lead to apparent irregularities in the UT1 timescale traceable to side- effects of precession-nutation. In order to eliminate these effects from UT1, "complementary terms" were introduced in 1994 (IAU, 1994) and took effect from 1997 (Capitaine and Gontier,
  3. : GAST = GMST + CT + EE By convention, the complementary terms are included as part of the equation of the equinoxes rather than as part of the mean Sidereal Time. This slightly compromises the "geometrical" interpretation of mean sidereal time but is otherwise inconsequential. The present function computes CT in the above expression, compatible with IAU 2000 resolutions (Capitaine et al., 2002, and IERS Conventions 2003).

  Called:

  - `jauFal03(double)` mean anomaly of the Moon
  - `jauFalp03(double)` mean anomaly of the Sun
  - `jauFaf03(double)` mean argument of the latitude of the Moon
  - `jauFad03(double)` mean elongation of the Moon from the Sun
  - `jauFaom03(double)` mean longitude of the Moon's ascending node
  - `jauFave03(double)` mean longitude of Venus
  - `jauFae03(double)` mean longitude of Earth
  - `jauFapa03(double)` general accumulated precession in longitude

  References:

  Capitaine, N. & Gontier, A.-M., Astron. Astrophys., 275, 645-650 (1993)

  Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to implement the IAU 2000 definition of UT1", Astronomy & Astrophysics, 406, 1135-1149 (2003)

  IAU Resolution C7, Recommendation 3 (1994)

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauEform

public static JSOFA.ReferenceEllipsoid jauEform(int n) throws JSOFAIllegalParameter
Earth reference ellipsoids.

This function is derived from the International Astronomical Union's JSOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `n` - int ellipsoid identifier (Note 1)
Returns:
  a double returned equatorial radius (meters, Note 2) f double returned flattening (Note 2)
Throws:
  `JSOFAIllegalParameter` - int status: 0 = OK -1 = illegal identifier (Note 3)

  Notes:

  1. The identifier n is a number that specifies the choice of reference ellipsoid. The following are supported: n ellipsoid 1 WGS84 2 GRS80 3 WGS72 The number n has no significance outside the JSOFA software.
  2. The ellipsoid parameters are returned in the form of equatorial radius in meters (a) and flattening (f). The latter is a number around 0.00335, i.e. around 1/298.
  3. For the case where an unsupported n value is supplied, zero a and f are returned, as well as error status.

  References:

  Department of Defense World Geodetic System 1984, National Imagery and Mapping Agency Technical Report 8350.2, Third Edition, p3-2.

  Moritz, H., Bull. Geodesique 66-2, 187 (1992).

  The Department of Defense World Geodetic System 1972, World Geodetic System Committee, May 1974.

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), p220.

Since:
  Release 20101201

### jauEo06a

public static double jauEo06a(double date1, double date2)
Equation of the origins, IAU 2006 precession and IAU 2000A nutation.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double the equation of the origins in radians

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The equation of the origins is the distance between the true equinox and the celestial intermediate origin and, equivalently, the difference between Earth rotation angle and Greenwich apparent sidereal time (ERA-GST). It comprises the precession (since J2000.0) in right ascension plus the equation of the equinoxes (including the small correction terms).

  Called:

  - `jauPnm06a(double, double)` classical NPB matrix, IAU 2006/2000A
  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix
  - `jauS06(double, double, double, double)` the CIO locator s, given X,Y, IAU 2006
  - `jauEors(double[][], double)` equation of the origins, Given NPB matrix and s

  References:

  Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

  Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Since:
  Release 20101201

### jauEors

public static double jauEors(double[][] rnpb, double s)
Equation of the origins, given the classical NPB matrix and the quantity s.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rnpb` - double[3][3] classical nutation x precession x bias matrix
  `s` - double the quantity s (the CIO locator) in radians
Returns:
  double the equation of the origins in radians.

  Notes:

  1. The equation of the origins is the distance between the true equinox and the celestial intermediate origin and, equivalently, the difference between Earth rotation angle and Greenwich apparent sidereal time (ERA-GST). It comprises the precession (since J2000.0) in right ascension plus the equation of the equinoxes (including the small correction terms).
  2. The algorithm is from Wallace & Capitaine (2006).
  References:

  Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

  Wallace, P. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Since:
  Release 20101201

### jauEpb

public static double jauEpb(double dj1, double dj2)
Julian Date to Besselian Epoch.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `dj1` - double Julian Date (see note)
  `dj2` - double Julian Date (see note)
Returns:
  double Besselian Epoch. Note: The Julian Date is supplied in two pieces, in the usual JSOFA manner, which is designed to preserve time resolution. The Julian Date is available as a single number by adding dj1 and dj2. The maximum resolution is achieved if dj1 is 2451545D0 (J2000.0).

  Reference: Lieske,J.H., 1979. Astron.Astrophys.,73,282.

Since:
  Release 20101201

### jauEpb2jd

public static JSOFA.JulianDate jauEpb2jd(double epb)
Besselian Epoch to Julian Date.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `epb` - double Besselian Epoch (e.g. 1957.3D0)
Returns:
  MJD zero-point: always 2400000.5 Modified Julian Date Note: The Julian Date is returned in two pieces, in the usual JSOFA manner, which is designed to preserve time resolution. The Julian Date is available as a single number by adding djm0 and djm.

  Reference:

  Lieske, J.H., 1979, Astron.Astrophys. 73, 282.

Since:
  Release 20101201

### jauEpj

public static double jauEpj(double dj1, double dj2)
Julian Date to Julian Epoch.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `dj1` - double Julian Date (see note)
  `dj2` - double Julian Date (see note)
Returns:
  double Julian Epoch Note: The Julian Date is supplied in two pieces, in the usual JSOFA manner, which is designed to preserve time resolution. The Julian Date is available as a single number by adding dj1 and dj2. The maximum resolution is achieved if dj1 is 2451545D0 (J2000.0).

  Reference:

  Lieske, J.H., 1979, Astron.Astrophys. 73, 282.

Since:
  Release 20101201

### jauEpj2jd

public static JSOFA.JulianDate jauEpj2jd(double epj)
Julian Epoch to Julian Date.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `epj` - double Julian Epoch (e.g. 1996.8D0)
Returns:
  MJD zero-point: always 2400000.5 Modified Julian Date Note: The Julian Date is returned in two pieces, in the usual JSOFA manner, which is designed to preserve time resolution. The Julian Date is available as a single number by adding djm0 and djm.

  Reference:

  Lieske, J.H., 1979, Astron.Astrophys. 73, 282.

Since:
  Release 20101201

### jauEpv00

public static int jauEpv00(double date1, double date2, double[][] pvh, double[][] pvb)
Earth position and velocity, heliocentric and barycentric, with respect to the Barycentric Celestial Reference System.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB date (Note 1)
  `date2` - double TDB date (Note 1)
  `pvh` - double[2][3] returned heliocentric Earth position/velocity (au, au/d)
  `pvb` - double[2][3] returned barycentric Earth position/velocity (au, au/d)
Returns:
  int status: 0 = OK +1 = warning: date outside the range 1900-2100 AD

  Notes:

  1. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. However, the accuracy of the result is more likely to be limited by the algorithm itself than the way the date has been expressed. n.b. TT can be used instead of TDB in most applications.
  2. On return, the arrays pvh and pvb contain the following: pvh[0][0] x } pvh[0][1] y } heliocentric position, au pvh[0][2] z } pvh[1][0] xdot } pvh[1][1] ydot } heliocentric velocity, au/d pvh[1][2] zdot } pvb[0][0] x } pvb[0][1] y } barycentric position, au pvb[0][2] z } pvb[1][0] xdot } pvb[1][1] ydot } barycentric velocity, au/d pvb[1][2] zdot } The vectors are with respect to the Barycentric Celestial Reference System. The time unit is one day in TDB.
  3. The function is a SIMPLIFIED SOLUTION from the planetary theory VSOP2000 (X. Moisson, P. Bretagnon, 2001, Celes. Mechanics & Dyn. Astron., 80, 3/4, 205-213) and is an adaptation of original Fortran code supplied by P. Bretagnon (private comm., 2000).
  4. Comparisons over the time span 1900-2100 with this simplified solution and the JPL DE405 ephemeris give the following results: RMS max Heliocentric: position error 3.7 11.2 km velocity error 1.4 5.0 mm/s Barycentric: position error 4.6 13.4 km velocity error 1.4 4.9 mm/s Comparisons with the JPL DE406 ephemeris show that by 1800 and 2200 the position errors are approximately double their 1900-2100 size. By 1500 and 2500 the deterioration is a factor of 10 and by 1000 and 3000 a factor of 60. The velocity accuracy falls off at about half that rate.
  5. It is permissible to use the same array for pvh and pvb, which will receive the barycentric values.
Since:
  Release 20101201

### jauEqeq94

public static double jauEqeq94(double date1, double date2)
Equation of the equinoxes, IAU 1994 model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TDB date (Note 1)
  `date2` - double TDB date (Note 1)
Returns:
  double equation of the equinoxes (Note 2)

  Notes:

  1. The date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The result, which is in radians, operates in the following sense: Greenwich apparent ST = GMST + equation of the equinoxes

  Called:

  - `jauNut80(double, double)` nutation, IAU 1980
  - `jauObl80(double, double)` mean obliquity, IAU 1980

  References:

  IAU Resolution C7, Recommendation 3 (1994).

  Capitaine, N. & Gontier, A.-M., 1993, Astron. Astrophys., 275, 645-650.

Since:
  Release 20101201

### jauEra00

public static double jauEra00(double dj1, double dj2)
Earth rotation angle (IAU 2000 model).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `dj1` - double UT1 as a 2-part Julian Date (see note)
  `dj2` - double UT1 as a 2-part Julian Date (see note)
Returns:
  double Earth rotation angle (radians), range 0-2pi

  Notes:

  1. The UT1 date dj1+dj2 is a Julian Date, apportioned in any convenient way between the arguments dj1 and dj2. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

                      dj1            dj2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. The date & time method is best matched to the algorithm used: maximum precision is delivered when the dj1 argument is for 0hrs UT1 on the day in question and the dj2 argument lies in the range 0 to 1, or vice versa.
  2. The algorithm is adapted from Expression 22 of Capitaine et al. 2000. The time argument has been expressed in days directly, and, to retain precision, integer contributions have been eliminated. The same formulation is given in IERS Conventions (2003), Chap. 5, Eq. 14.

  Called:

  - `jauAnp(double)` normalize angle into range 0 to 2pi

  References:

  Capitaine N., Guinot B. and McCarthy D.D, 2000, Astron. Astrophys., 355, 398-405.

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauFad03

public static double jauFad03(double t)
Fundamental argument, IERS Conventions (2003): mean elongation of the Moon from the Sun.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double D, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and is from Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

  Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

Since:
  Release 20101201

### jauFae03

public static double jauFae03(double t)
Fundamental argument, IERS Conventions (2003): mean longitude of Earth.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double mean longitude of Earth, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and comes from Souchay et al. (1999) after Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

  Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

  Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, Astron.Astrophys.Supp.Ser. 135, 111

Since:
  Release 20101201

### jauFaf03

public static double jauFaf03(double t)
Fundamental argument, IERS Conventions (2003): mean longitude of the Moon minus mean longitude of the ascending node.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double F, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and is from Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

Since:
  Release 20101201

### jauFaju03

public static double jauFaju03(double t)
Fundamental argument, IERS Conventions (2003): mean longitude of Jupiter.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double mean longitude of Jupiter, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and comes from Souchay et al. (1999) after Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

  Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

  Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, Astron.Astrophys.Supp.Ser. 135, 111

Since:
  Release 20101201

### jauFal03

public static double jauFal03(double t)
Fundamental argument, IERS Conventions (2003): mean anomaly of the Moon.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double l, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and is from Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

Since:
  Release 20101201

### jauFalp03

public static double jauFalp03(double t)
Fundamental argument, IERS Conventions (2003): mean anomaly of the Sun.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double l', radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and is from Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

Since:
  Release 20101201

### jauFama03

public static double jauFama03(double t)
Fundamental argument, IERS Conventions (2003): mean longitude of Mars.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double mean longitude of Mars, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and comes from Souchay et al. (1999) after Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, Astron.Astrophys.Supp.Ser. 135, 111

Since:
  Release 20101201

### jauFame03

public static double jauFame03(double t)
Fundamental argument, IERS Conventions (2003): mean longitude of Mercury.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double mean longitude of Mercury, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and comes from Souchay et al. (1999) after Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, Astron.Astrophys.Supp.Ser. 135, 111

Since:
  Release 20101201

### jauFane03

public static double jauFane03(double t)
Fundamental argument, IERS Conventions (2003): mean longitude of Neptune.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double mean longitude of Neptune, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and is adapted from Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

Since:
  Release 20101201

### jauFaom03

public static double jauFaom03(double t)
Fundamental argument, IERS Conventions (2003): mean longitude of the Moon's ascending node.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double Omega, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and is from Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

Since:
  Release 20101201

### jauFapa03

public static double jauFapa03(double t)
Fundamental argument, IERS Conventions (2003): general accumulated precession in longitude.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double general precession in longitude, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003). It is taken from Kinoshita & Souchay (1990) and comes originally from Lieske et al. (1977).

  References: Kinoshita, H. and Souchay J. 1990, Celest.Mech. and Dyn.Astron. 48, 187

  Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977, Astron.Astrophys. 58, 1-16

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauFasa03

public static double jauFasa03(double t)
Fundamental argument, IERS Conventions (2003): mean longitude of Saturn.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double mean longitude of Saturn, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and comes from Souchay et al. (1999) after Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, Astron.Astrophys.Supp.Ser. 135, 111

Since:
  Release 20101201

### jauFaur03

public static double jauFaur03(double t)
Fundamental argument, IERS Conventions (2003): mean longitude of Uranus.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double mean longitude of Uranus, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and is adapted from Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

Since:
  Release 20101201

### jauFave03

public static double jauFave03(double t)
Fundamental argument, IERS Conventions (2003): mean longitude of Venus.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `t` - double TDB, Julian centuries since J2000.0 (Note 1)
Returns:
  double mean longitude of Venus, radians (Note 2)

  Notes:

  1. Though t is strictly TDB, it is usually more convenient to use TT, which makes no significant difference.
  2. The expression used is as adopted in IERS Conventions (2003) and comes from Souchay et al. (1999) after Simon et al. (1994).

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, Astron.Astrophys.Supp.Ser. 135, 111

Since:
  Release 20101201

### jauFk52h

public static JSOFA.CatalogCoords jauFk52h(double r5, double d5, double dr5, double dd5, double px5, double rv5)
Transform FK5 (J2000.0) star data into the Hipparcos system.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function. Given (all FK5, equinox J2000.0, epoch J2000.0):

Parameters:
  `r5` - double RA (radians)
  `d5` - double Dec (radians)
  `dr5` - double proper motion in RA (dRA/dt, rad/Jyear)
  `dd5` - double proper motion in Dec (dDec/dt, rad/Jyear)
  `px5` - double parallax (arcsec)
  `rv5` - double radial velocity (km/s, positive = receding) Returned (all Hipparcos, epoch J2000.0):
Returns:
  catalogue coordinates

  Notes:

  1. This function transforms FK5 star positions and proper motions into the system of the Hipparcos catalog.
  2. The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt, and are per year rather than per century.
  3. The FK5 to Hipparcos transformation is modeled as a pure rotation and spin; zonal errors in the FK5 catalog are not taken into account.
  4. See also `jauH2fk5(double, double, double, double, double, double)`, `jauFk5hz(double, double, double, double)`, `jauHfk5z(double, double, double, double)`.

  Called:

  - `jauStarpv(double, double, double, double, double, double, double[][])` star catalog data to space motion pv-vector
  - `jauFk5hip(double[][], double[])` FK5 to Hipparcos rotation and spin
  - `jauRxp(double[][], double[])` product of r-matrix and p-vector
  - `jauPxp(double[], double[])` vector product of two p-vectors
  - `jauPpp(double[], double[])` p-vector plus p-vector
  - `jauPvstar(double[][])` space motion pv-vector to star catalog data

  Reference:

  F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000).

Since:
  Release 20101201

### jauFk5hip

public static void jauFk5hip(double[][] r5h, double[] s5h)
FK5 to Hipparcos rotation and spin.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `r5h` - double[3][3] returned r-matrix: FK5 rotation wrt Hipparcos (Note 2)
  `s5h` - double[3] returned r-vector: FK5 spin wrt Hipparcos (Note 3)

  Notes:

  1. This function models the FK5 to Hipparcos transformation as a pure rotation and spin; zonal errors in the FK5 catalogue are not taken into account.
  2. The r-matrix r5h operates in the sense: P_Hipparcos = r5h x P_FK5 where P_FK5 is a p-vector in the FK5 frame, and P_Hipparcos is the equivalent Hipparcos p-vector.
  3. The r-vector s5h represents the time derivative of the FK5 to Hipparcos rotation. The units are radians per year (Julian, TDB).

  Called:

  - `jauRv2m(double[])` r-vector to r-matrix

  Reference:

  F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000).

Since:
  Release 20101201

### jauFk5hz

public static JSOFA.SphericalCoordinate jauFk5hz(double r5, double d5, double date1, double date2)
Transform an FK5 (J2000.0) star position into the system of the Hipparcos catalogue, assuming zero Hipparcos proper motion.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `r5` - double FK5 RA (radians), equinox J2000.0, at date
  `d5` - double FK5 Dec (radians), equinox J2000.0, at date
  `date1` - double TDB date (Notes 1,2)
  `date2` - double TDB date (Notes 1,2)
Returns:
  rh double returned Hipparcos RA (radians) dh double returned Hipparcos Dec (radians)

  Notes:

  1. This function converts a star position from the FK5 system to the Hipparcos system, in such a way that the Hipparcos proper motion is zero. Because such a star has, in general, a non-zero proper motion in the FK5 system, the function requires the date at which the position in the FK5 system was determined.
  2. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  3. The FK5 to Hipparcos transformation is modeled as a pure rotation and spin; zonal errors in the FK5 catalogue are not taken into account.
  4. The position returned by this function is in the Hipparcos reference system but at date date1+date2.
  5. See also jauFk52h, jauH2fk5, jauHfk5z.

  Called:

  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauFk5hip(double[][], double[])` FK5 to Hipparcos rotation and spin
  - `jauSxp(double, double[])` multiply p-vector by scalar
  - `jauRv2m(double[])` r-vector to r-matrix
  - `jauTrxp(double[][], double[])` product of transpose of r-matrix and p-vector
  - `jauPxp(double[], double[])` vector product of two p-vectors
  - `jauC2s(double[])` p-vector to spherical
  - `jauAnp(double)` normalize angle into range 0 to 2pi

  Reference:

  F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739.

Since:
  Release 20101201

### jauFw2m

public static double[][] jauFw2m(double gamb, double phib, double psi, double eps)
Form rotation matrix given the Fukushima-Williams angles.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `gamb` - double F-W angle gamma_bar (radians)
  `phib` - double F-W angle phi_bar (radians)
  `psi` - double F-W angle psi (radians)
  `eps` - double F-W angle epsilon (radians)
Returns:
  r double[3][3] returned rotation matrix

  Notes:

  1. Naming the following points: e = J2000.0 ecliptic pole, p = GCRS pole, E = ecliptic pole of date, and P = CIP, the four Fukushima-Williams angles are as follows: gamb = gamma = epE phib = phi = pE psi = psi = pEP eps = epsilon = EP
  2. The matrix representing the combined effects of frame bias, precession and nutation is: NxPxB = R_1(-eps).R_3(-psi).R_1(phib).R_3(gamb)
  3. Three different matrices can be constructed, depending on which angles are supplied as the arguments gamb, phib, psi and eps: o To obtain the nutation x precession x frame bias matrix, first generate the four precession angles known conventionally as gamma_bar, phi_bar, psi_bar and epsilon_A, then generate the nutation components Dpsi and Depsilon and add them to psi_bar and epsilon_A, and finally call the present function using those four angles as arguments. o To obtain the precession x frame bias matrix, generate the four precession angles and call the present function. o To obtain the frame bias matrix, generate the four precession angles for date J2000.0 and call the present function. The nutation-only and precession-only matrices can if necessary be obtained by combining these three appropriately.

  Called:

  - `jauIr(double[][])` initialize r-matrix to identity
  - `jauRz(double, double[][])` rotate around Z-axis
  - `jauRx(double, double[][])` rotate around X-axis

  References: Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351

Since:
  Release 20101201

### jauFw2xy

public static JSOFA.CelestialIntermediatePole jauFw2xy(double gamb, double phib, double psi, double eps)
CIP X,Y given Fukushima-Williams bias-precession-nutation angles.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `gamb` - double F-W angle gamma_bar (radians)
  `phib` - double F-W angle phi_bar (radians)
  `psi` - double F-W angle psi (radians)
  `eps` - double F-W angle epsilon (radians)
Returns:
  CIP unit vector X,Y

  Notes:

  1. Naming the following points: e = J2000.0 ecliptic pole, p = GCRS pole E = ecliptic pole of date, and P = CIP, the four Fukushima-Williams angles are as follows: gamb = gamma = epE phib = phi = pE psi = psi = pEP eps = epsilon = EP
  2. The matrix representing the combined effects of frame bias, precession and nutation is: NxPxB = R_1(-epsA).R_3(-psi).R_1(phib).R_3(gamb) The returned values x,y are elements [2][0] and [2][1] of the matrix. Near J2000.0, they are essentially angles in radians X,Y are elements (3,1) and (3,2) of the matrix.

  Called:

  - `jauFw2m(double, double, double, double)` F-W angles to r-matrix
  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix

  Reference: Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351

Since:
  Release 20101201

### jauGc2gd

public static JSOFA.GeodeticCoord jauGc2gd(int n, double[] xyz) throws JSOFAIllegalParameter
Transform geocentric coordinates to geodetic using the specified reference ellipsoid.

This function is derived from the International Astronomical Union's JSOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical transformation.

Parameters:
  `n` - int ellipsoid identifier (Note 1)
  `xyz` - double[3] geocentric vector (Note 2)
Returns:
  elong double returned longitude (radians, east +ve) phi double returned latitude (geodetic, radians, Note 3) height double returned height above ellipsoid (geodetic, Notes 2,3)
Throws:
  `JSOFAIllegalParameter` - 0 = OK -1 = illegal identifier (Note 3) -2 = internal error (Note 3)

  Notes:

  1. The identifier n is a number that specifies the choice of reference ellipsoid. The following are supported: n ellipsoid 1 WGS84 2 GRS80 The number n has no significance outside the JSOFA software.
  2. The geocentric vector (xyz, given) and height (height, returned) are in meters.
  3. An error status -1 means that the identifier n is illegal. An error status -2 is theoretically impossible. In all error cases, phi and height are both set to -1e9.
  4. The inverse transformation is performed in the function jauGd2gc.

  Called:

  - `jauEform(int)` Earth reference ellipsoids
  - `jauGc2gde(double, double, double[])` geocentric to geodetic transformation, general
Since:
  Release 20101201

### jauGc2gde

public static JSOFA.GeodeticCoord jauGc2gde(double a, double f, double[] xyz) throws JSOFAIllegalParameter
Transform geocentric coordinates to geodetic for a reference ellipsoid of specified form.

This function is derived from the International Astronomical Union's JSOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `a` - double equatorial radius (Notes 2,4)
  `f` - double flattening (Note 3)
  `xyz` - double[3] geocentric vector (Note 4)
Returns:
  GeodeticCoord logitude (radians, east +ve) latitude (geodetic, radians) height above ellipsoid (geodetic, Note 4)
Throws:
  `JSOFAIllegalParameter` - int status: -1 = illegal a -2 = illegal f

  Notes:

  1. This function is based on the GCONV2H Fortran subroutine by Toshio Fukushima (see reference).
  2. The equatorial radius, a, can be in any units, but meters is the conventional choice.
  3. The flattening, f, is (for the Earth) a value around 0.00335, i.e. around 1/298.
  4. The equatorial radius, a, and the geocentric vector, xyz, must be given in the same units, and determine the units of the returned height, height.
  5. If an error occurs (status < 0), elong, phi and height are unchanged.
  6. The inverse transformation is performed in the function jauGd2gce.
  7. The transformation for a standard ellipsoid (such as WGS84) can more conveniently be performed by calling jauGc2gd, which uses a numerical code (1 for WGS84) to identify the required A and F values.

  Reference: Fukushima, T., "Transformation from Cartesian to geodetic coordinates accelerated by Halley's method", J.Geodesy (2006) 79: 689-693

Since:
  Release 20101201

### jauGd2gc

public static double[] jauGd2gc(int n, double elong, double phi, double height) throws JSOFAIllegalParameter, JSOFAInternalError
Transform geodetic coordinates to geocentric using the specified reference ellipsoid.

This function is derived from the International Astronomical Union's JSOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical transformation.

Parameters:
  `n` - int ellipsoid identifier (Note 1)
  `elong` - double longitude (radians, east +ve)
  `phi` - double latitude (geodetic, radians, Note 3)
  `height` - double height above ellipsoid (geodetic, Notes 2,3)
Returns:
  xyz double[3] returned geocentric vector (Note 2)
Throws:
  `JSOFAIllegalParameter` - -1 = illegal identifier (Note 3) -2 = illegal case (Note 3)

  Notes:

  1. The identifier n is a number that specifies the choice of reference ellipsoid. The following are supported: n ellipsoid 1 WGS84 2 GRS80 The number n has no significance outside the JSOFA software.
  2. The height (height, given) and the geocentric vector (xyz, returned) are in meters.
  3. No validation is performed on the arguments elong, phi and height. An error status -1 means that the identifier n is illegal. An error status -2 protects against cases that would lead to arithmetic exceptions. In all error cases, xyz is set to zeros.
  4. The inverse transformation is performed in the function jauGc2gd.

  Called:

  - `jauEform(int)` Earth reference ellipsoids
  - `jauGd2gce(double, double, double, double, double)` geodetic to geocentric transformation, general
  - `jauZp(double[])` zero p-vector
  `JSOFAInternalError`
Since:
  Release 20101201

### jauGd2gce

public static double[] jauGd2gce(double a, double f, double elong, double phi, double height) throws JSOFAInternalError
Transform geodetic coordinates to geocentric for a reference ellipsoid of specified form.

This function is derived from the International Astronomical Union's JSOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `a` - double equatorial radius (Notes 1,4)
  `f` - double flattening (Notes 2,4)
  `elong` - double longitude (radians, east +ve)
  `phi` - double latitude (geodetic, radians, Note 4)
  `height` - double height above ellipsoid (geodetic, Notes 3,4)
Returns:
  xyz double[3] returned geocentric vector (Note 3)
Throws:
  `JSOFAInternalError` - 0 = OK -1 = illegal case (Note 4)

  Notes:

  1. The equatorial radius, a, can be in any units, but meters is the conventional choice.
  2. The flattening, f, is (for the Earth) a value around 0.00335, i.e. around 1/298.
  3. The equatorial radius, a, and the height, height, must be given in the same units, and determine the units of the returned geocentric vector, xyz.
  4. No validation is performed on individual arguments. The error status -1 protects against (unrealistic) cases that would lead to arithmetic exceptions. If an error occurs, xyz is unchanged.
  5. The inverse transformation is performed in the function jauGc2gde.
  6. The transformation for a standard ellipsoid (such as WGS84) can more conveniently be performed by calling jauGd2gc, which uses a numerical code (1 for WGS84) to identify the required a and f values.

  References:

  Green, R.M., Spherical Astronomy, Cambridge University Press, (1985) Section 4.5, p96.

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 4.22, p202.

Since:
  Release 20101201

### jauGmst00

public static double jauGmst00(double uta, double utb, double tta, double ttb)
Greenwich mean sidereal time (model consistent with IAU 2000 resolutions).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `uta` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `utb` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `tta` - double TT as a 2-part Julian Date (Notes 1,2)
  `ttb` - double TT as a 2-part Julian Date (Notes 1,2)
Returns:
  double Greenwich mean sidereal time (radians)

  Notes:

  1. The UT1 and TT dates uta+utb and tta+ttb respectively, are both Julian Dates, apportioned in any convenient way between the argument pairs. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

                     Part A         Part B

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable (in the case of UT; the TT is not at all critical in this respect). The J2000 and MJD methods are good compromises between resolution and convenience. For UT, the date & time method is best matched to the algorithm that is used by the Earth Rotation Angle function, called internally: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. Both UT1 and TT are required, UT1 to predict the Earth rotation and TT to predict the effects of precession. If UT1 is used for both purposes, errors of order 100 microarcseconds result.
  3. This GMST is compatible with the IAU 2000 resolutions and must be used only in conjunction with other IAU 2000 compatible components such as precession-nutation and equation of the equinoxes.
  4. The result is returned in the range 0 to 2pi.
  5. The algorithm is from Capitaine et al. (2003) and IERS Conventions 2003.

  Called:

  - `jauEra00(double, double)` Earth rotation angle, IAU 2000
  - `jauAnp(double)` normalize angle into range 0 to 2pi

  References:

  Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to implement the IAU 2000 definition of UT1", Astronomy & Astrophysics, 406, 1135-1149 (2003)

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauGmst06

public static double jauGmst06(double uta, double utb, double tta, double ttb)
Greenwich mean sidereal time (consistent with IAU 2006 precession).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `uta` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `utb` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `tta` - double TT as a 2-part Julian Date (Notes 1,2)
  `ttb` - double TT as a 2-part Julian Date (Notes 1,2)
Returns:
  double Greenwich mean sidereal time (radians)

  Notes:

  1. The UT1 and TT dates uta+utb and tta+ttb respectively, are both Julian Dates, apportioned in any convenient way between the argument pairs. For example, JD(UT1)=450123.7 could be expressed in any of these ways, among others:

                     u1a              utb

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable (in the case of UT; the TT is not at all critical in this respect). The J2000 and MJD methods are good compromises between resolution and convenience. For UT, the date & time method is best matched to the algorithm that is used by the Earth rotation angle function, called internally: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. Both UT1 and TT are required, UT1 to predict the Earth rotation and TT to predict the effects of precession. If UT1 is used for both purposes, errors of order 100 microarcseconds result.
  3. This GMST is compatible with the IAU 2006 precession and must not be used with other precession models.
  4. The result is returned in the range 0 to 2pi.

  Called:

  - `jauEra00(double, double)` Earth rotation angle, IAU 2000
  - `jauAnp(double)` normalize angle into range 0 to 2pi

  Reference:

  Capitaine, N., Wallace, P.T. & Chapront, J., 2005, Astron.Astrophys. 432, 355

Since:
  Release 20101201

### jauGmst82

public static double jauGmst82(double dj1, double dj2)
Universal Time to Greenwich mean sidereal time (IAU 1982 model).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `dj1` - double UT1 Julian Date (see note)
  `dj2` - double UT1 Julian Date (see note)
Returns:
  double Greenwich mean sidereal time (radians)

  Notes:

  1. The UT1 date dj1+dj2 is a Julian Date, apportioned in any convenient way between the arguments dj1 and dj2. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

                      dj1            dj2

                  2450123.7D0        0D0        (JD method)
                   2451545D0      -1421.3D0     (J2000 method)
                  2400000.5D0     50123.2D0     (MJD method)
                  2450123.5D0       0.2D0       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. The date & time method is best matched to the algorithm used: maximum accuracy (or, at least, minimum noise) is delivered when the dj1 argument is for 0hrs UT1 on the day in question and the dj2 argument lies in the range 0 to 1, or vice versa.
  2. The algorithm is based on the IAU 1982 expression. This is always described as giving the GMST at 0 hours UT1. In fact, it gives the difference between the GMST and the UT, the steady 4-minutes-per-day drawing-ahead of ST with respect to UT. When whole days are ignored, the expression happens to equal the GMST at 0 hours UT1 each day.
  3. In this function, the entire UT1 (the sum of the two arguments dj1 and dj2) is used directly as the argument for the standard formula, the constant term of which is adjusted by 12 hours to take account of the noon phasing of Julian Date. The UT1 is then added, but omitting whole days to conserve accuracy.

  Called:

  - `jauAnp(double)` normalize angle into range 0 to 2pi

  References:

  Transactions of the International Astronomical Union, XVIII B, 67 (1983).

  Aoki et al., Astron. Astrophys. 105, 359-361 (1982).

Since:
  Release 20101201

### jauGst00a

public static double jauGst00a(double uta, double utb, double tta, double ttb)
Greenwich apparent sidereal time (consistent with IAU 2000 resolutions).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `uta` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `utb` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `tta` - double TT as a 2-part Julian Date (Notes 1,2)
  `ttb` - double TT as a 2-part Julian Date (Notes 1,2)
Returns:
  double Greenwich apparent sidereal time (radians)

  Notes:

  1. The UT1 and TT dates uta+utb and tta+ttb respectively, are both Julian Dates, apportioned in any convenient way between the argument pairs. For example, JD=2450123.7 could be expressed in any of these ways, among others:

                     Part A        Part B

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable (in the case of UT; the TT is not at all critical in this respect). The J2000 and MJD methods are good compromises between resolution and convenience. For UT, the date & time method is best matched to the algorithm that is used by the Earth Rotation Angle function, called internally: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. Both UT1 and TT are required, UT1 to predict the Earth rotation and TT to predict the effects of precession-nutation. If UT1 is used for both purposes, errors of order 100 microarcseconds result.
  3. This GAST is compatible with the IAU 2000 resolutions and must be used only in conjunction with other IAU 2000 compatible components such as precession-nutation.
  4. The result is returned in the range 0 to 2pi.
  5. The algorithm is from Capitaine et al. (2003) and IERS Conventions 2003.

  Called:

  - `jauGmst00(double, double, double, double)` Greenwich mean sidereal time, IAU 2000
  - `jauEe00a(double, double)` equation of the equinoxes, IAU 2000A
  - `jauAnp(double)` normalize angle into range 0 to 2pi

  References:

  Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to implement the IAU 2000 definition of UT1", Astronomy & Astrophysics, 406, 1135-1149 (2003)

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauGst00b

public static double jauGst00b(double uta, double utb)
Greenwich apparent sidereal time (consistent with IAU 2000 resolutions but using the truncated nutation model IAU 2000B).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `uta` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `utb` - double UT1 as a 2-part Julian Date (Notes 1,2)
Returns:
  double Greenwich apparent sidereal time (radians)

  Notes:

  1. The UT1 date uta+utb is a Julian Date, apportioned in any convenient way between the argument pair. For example, JD=2450123.7 could be expressed in any of these ways, among others:

                      uta            utb

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. For UT, the date & time method is best matched to the algorithm that is used by the Earth Rotation Angle function, called internally: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. The result is compatible with the IAU 2000 resolutions, except that accuracy has been compromised for the sake of speed and convenience in two respects: . UT is used instead of TDB (or TT) to compute the precession component of GMST and the equation of the equinoxes. This results in errors of order 0.1 mas at present. . The IAU 2000B abridged nutation model (McCarthy & Luzum, 2003) is used, introducing errors of up to 1 mas.
  3. This GAST is compatible with the IAU 2000 resolutions and must be used only in conjunction with other IAU 2000 compatible components such as precession-nutation.
  4. The result is returned in the range 0 to 2pi.
  5. The algorithm is from Capitaine et al. (2003) and IERS Conventions 2003.

  Called:

  - `jauGmst00(double, double, double, double)` Greenwich mean sidereal time, IAU 2000
  - `jauEe00b(double, double)` equation of the equinoxes, IAU 2000B
  - `jauAnp(double)` normalize angle into range 0 to 2pi

  References:

  Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to implement the IAU 2000 definition of UT1", Astronomy & Astrophysics, 406, 1135-1149 (2003)

  McCarthy, D.D. & Luzum, B.J., "An abridged model of the precession-nutation of the celestial pole", Celestial Mechanics & Dynamical Astronomy, 85, 37-49 (2003)

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauGst06

public static double jauGst06(double uta, double utb, double tta, double ttb, double[][] rnpb)
Greenwich apparent sidereal time, IAU 2006, given the NPB matrix.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `uta` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `utb` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `tta` - double TT as a 2-part Julian Date (Notes 1,2)
  `ttb` - double TT as a 2-part Julian Date (Notes 1,2)
  `rnpb` - double[3][3] nutation x precession x bias matrix
Returns:
  double Greenwich apparent sidereal time (radians)

  Notes:

  1. The UT1 and TT dates uta+utb and tta+ttb respectively, are both Julian Dates, apportioned in any convenient way between the argument pairs. For example, JD=2450123.7 could be expressed in any of these ways, among others:

                     uta              utb

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable (in the case of UT; the TT is not at all critical in this respect). The J2000 and MJD methods are good compromises between resolution and convenience. For UT, the date & time method is best matched to the algorithm that is used by the Earth rotation angle function, called internally: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. Both UT1 and TT are required, UT1 to predict the Earth rotation and TT to predict the effects of precession-nutation. If UT1 is used for both purposes, errors of order 100 microarcseconds result.
  3. Although the function uses the IAU 2006 series for s+XY/2, it is otherwise independent of the precession-nutation model and can in practice be used with any equinox-based NPB matrix.
  4. The result is returned in the range 0 to 2pi.

  Called:

  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix
  - `jauS06(double, double, double, double)` the CIO locator s, given X,Y, IAU 2006
  - `jauAnp(double)` normalize angle into range 0 to 2pi
  - `jauEra00(double, double)` Earth rotation angle, IAU 2000
  - `jauEors(double[][], double)` equation of the origins, given NPB matrix and s

  Reference:

  Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Since:
  Release 20101201

### jauGst06a

public static double jauGst06a(double uta, double utb, double tta, double ttb)
Greenwich apparent sidereal time (consistent with IAU 2000 and 2006 resolutions).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `uta` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `utb` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `tta` - double TT as a 2-part Julian Date (Notes 1,2)
  `ttb` - double TT as a 2-part Julian Date (Notes 1,2)
Returns:
  double Greenwich apparent sidereal time (radians)

  Notes:

  1. The UT1 and TT dates uta+utb and tta+ttb respectively, are both Julian Dates, apportioned in any convenient way between the argument pairs. For example, JD=2450123.7 could be expressed in any of these ways, among others:

                     uta             utb

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable (in the case of UT; the TT is not at all critical in this respect). The J2000 and MJD methods are good compromises between resolution and convenience. For UT, the date & time method is best matched to the algorithm that is used by the Earth rotation angle function, called internally: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. Both UT1 and TT are required, UT1 to predict the Earth rotation and TT to predict the effects of precession-nutation. If UT1 is used for both purposes, errors of order 100 microarcseconds result.
  3. This GAST is compatible with the IAU 2000/2006 resolutions and must be used only in conjunction with IAU 2006 precession and IAU 2000A nutation.
  4. The result is returned in the range 0 to 2pi.

  Called:

  - `jauPnm06a(double, double)` classical NPB matrix, IAU 2006/2000A
  - `jauGst06(double, double, double, double, double[][])` Greenwich apparent ST, IAU 2006, given NPB matrix

  Reference:

  Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Since:
  Release 20101201

### jauGst94

public static double jauGst94(double uta, double utb)
Greenwich apparent sidereal time (consistent with IAU 1982/94 resolutions).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `uta` - double UT1 as a 2-part Julian Date (Notes 1,2)
  `utb` - double UT1 as a 2-part Julian Date (Notes 1,2)
Returns:
  double Greenwich apparent sidereal time (radians)

  Notes:

  1. The UT1 date uta+utb is a Julian Date, apportioned in any convenient way between the argument pair. For example, JD=2450123.7 could be expressed in any of these ways, among others:

                      uta            utb

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. For UT, the date & time method is best matched to the algorithm that is used by the Earth Rotation Angle function, called internally: maximum precision is delivered when the uta argument is for 0hrs UT1 on the day in question and the utb argument lies in the range 0 to 1, or vice versa.
  2. The result is compatible with the IAU 1982 and 1994 resolutions, except that accuracy has been compromised for the sake of convenience in that UT is used instead of TDB (or TT) to compute the equation of the equinoxes.
  3. This GAST must be used only in conjunction with contemporaneous IAU standards such as 1976 precession, 1980 obliquity and 1982 nutation. It is not compatible with the IAU 2000 resolutions.
  4. The result is returned in the range 0 to 2pi.

  Called:

  - `jauGmst82(double, double)` Greenwich mean sidereal time, IAU 1982
  - `jauEqeq94(double, double)` equation of the equinoxes, IAU 1994
  - `jauAnp(double)` normalize angle into range 0 to 2pi

  References:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992) IAU Resolution C7, Recommendation 3 (1994)

Since:
  Release 20101201

### jauH2fk5

public static JSOFA.CatalogCoords jauH2fk5(double rh, double dh, double drh, double ddh, double pxh, double rvh)
Transform Hipparcos star data into the FK5 (J2000.0) system.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function. Given (all Hipparcos, epoch J2000.0):

Parameters:
  `rh` - double RA (radians)
  `dh` - double Dec (radians)
  `drh` - double proper motion in RA (dRA/dt, rad/Jyear)
  `ddh` - double proper motion in Dec (dDec/dt, rad/Jyear)
  `pxh` - double parallax (arcsec)
  `rvh` - double radial velocity (km/s, positive = receding)
Returns:
  cc CatalogCoords all FK5, equinox J2000.0, epoch J2000.0:

  Notes:

  1. This function transforms Hipparcos star positions and proper motions into FK5 J2000.0.
  2. The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt, and are per year rather than per century.
  3. The FK5 to Hipparcos transformation is modeled as a pure rotation and spin; zonal errors in the FK5 catalog are not taken into account.
  4. See also jauFk52h, jauFk5hz, jauHfk5z.

  Called:

  - `jauStarpv(double, double, double, double, double, double, double[][])` star catalog data to space motion pv-vector
  - `jauFk5hip(double[][], double[])` FK5 to Hipparcos rotation and spin
  - `jauRv2m(double[])` r-vector to r-matrix
  - `jauRxp(double[][], double[])` product of r-matrix and p-vector
  - `jauTrxp(double[][], double[])` product of transpose of r-matrix and p-vector
  - `jauPxp(double[], double[])` vector product of two p-vectors
  - `jauPmp(double[], double[])` p-vector minus p-vector
  - `jauPvstar(double[][])` space motion pv-vector to star catalog data

  Reference:

  F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000).

Since:
  Release 20101201

### jauHfk5z

public static JSOFA.CatalogCoords jauHfk5z(double rh, double dh, double date1, double date2)
Transform a Hipparcos star position into FK5 J2000.0, assuming zero Hipparcos proper motion.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rh` - double Hipparcos RA (radians)
  `dh` - double Hipparcos Dec (radians)
  `date1` - double TDB date (Note 1)
  `date2` - double TDB date (Note 1) FIXME original did not return the parallax and radial velocity of the CatalogCoords type.
Returns:
  cc CatalogCoords (all FK5, equinox J2000.0, date date1+date2) RA (radians), Dec (radians), FK5 RA proper motion (rad/year, Note 4), Dec proper motion (rad/year, Note 4)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
  3. The FK5 to Hipparcos transformation is modeled as a pure rotation and spin; zonal errors in the FK5 catalogue are not taken into account.
  4. It was the intention that Hipparcos should be a close approximation to an inertial frame, so that distant objects have zero proper motion; such objects have (in general) non-zero proper motion in FK5, and this function returns those fictitious proper motions.
  5. The position returned by this function is in the FK5 J2000.0 reference system but at date date1+date2.
  6. See also jauFk52h, jauH2fk5, jauFk5hz.

  Called:

  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauFk5hip(double[][], double[])` FK5 to Hipparcos rotation and spin
  - `jauRxp(double[][], double[])` product of r-matrix and p-vector
  - `jauSxp(double, double[])` multiply p-vector by scalar
  - `jauRxr(double[][], double[][])` product of two r-matrices
  - `jauTrxp(double[][], double[])` product of transpose of r-matrix and p-vector
  - `jauPxp(double[], double[])` vector product of two p-vectors
  - `jauPv2s(double[][])` pv-vector to spherical
  - `jauAnp(double)` normalize angle into range 0 to 2pi

  Reference:

  F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739.

Since:
  Release 20101201

### jauIr

public static void jauIr(double[][] r)
Initialize an r-matrix to the identity matrix.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `r` - double[3][3] returned r-matrix

  Called:

  - `jauZr(double[][])` zero r-matrix
Since:
  Release 20101201 TODO - this would be better returning a new array in java....

### jauIr

public static double[][] jauIr()
return a new r-matrix as the identity matrix. This is a convenience method that is an overload of the official SOFA API `jauIr(double[][])` that does not require the vector to be passed in.

Returns:
  r double[3][3]

### jauJd2cal

public static JSOFA.Calendar jauJd2cal(double dj1, double dj2) throws JSOFAIllegalParameter
Julian Date to Gregorian year, month, day, and fraction of a day.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `dj1` - double Julian Date (Notes 1, 2)
  `dj2` - double Julian Date (Notes 1, 2) Returned (arguments): iy int year im int month id int day fd double fraction of day
Returns:
  Calendar the date represented in Java.
Throws:
  `JSOFAIllegalParameter` - unacceptable date (Note 3)

  Notes:

  1. The earliest valid date is -68569.5 (-4900 March 1). The largest value accepted is 10^9.
  2. The Julian Date is apportioned in any convenient way between the arguments dj1 and dj2. For example, JD=2450123.7 could be expressed in any of these ways, among others:

                     dj1             dj2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     Separating integer and fraction uses the "compensated summation" algorithm of Kahan-Neumaier to preserve as much precision as possible irrespective of the jd1+jd2 apportionment.
  3. In early eras the conversion is from the "proleptic Gregorian calendar"; no account is taken of the date(s) of adoption of the Gregorian calendar, nor is the AD/BC numbering convention observed.

  Reference:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 12.92 (p604).

  Klein, A., A Generalized Kahan-Babuska-Summation-Algorithm. Computing 76, 279-293 (2006), Section 3.

Since:
  Release 20101201

### jauJdcalf

public static int jauJdcalf(int ndp, double dj1, double dj2, int[] iymdf)
Julian Date to Gregorian Calendar, expressed in a form convenient for formatting messages: rounded to a specified precision.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ndp` - int number of decimal places of days in fraction
  `dj1` - double dj1+dj2 = Julian Date (Note 1)
  `dj2` - double dj1+dj2 = Julian Date (Note 1)
  `iymdf` - int[4] returned year, month, day, fraction in Gregorian calendar
Returns:
  int status: -1 = date out of range 0 = OK +1 = NDP not 0-9 (interpreted as 0)

  Notes:

  1. The Julian Date is apportioned in any convenient way between the arguments dj1 and dj2. For example, JD=2450123.7 could be expressed in any of these ways, among others:

                      dj1            dj2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

  2. In early eras the conversion is from the "Proleptic Gregorian Calendar"; no account is taken of the date(s) of adoption of the Gregorian Calendar, nor is the AD/BC numbering convention observed.
  3. Refer to the function jauJd2cal.
  4. the number of decimal places (npd) should be 4 or less if internal overflows are to be avoided on machines which use 16-bit integers.

  Called:

  - `jauJd2cal(double, double)` JD to Gregorian calendar

  Reference:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 12.92 (p604).

Since:
  Release 20101201

### jauNum00a

public static double[][] jauNum00a(double date1, double date2)
Form the matrix of nutation for a given date, IAU 2000A model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rmatn double[3][3] returned nutation matrix

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(true) = rmatn * V(mean), where the p-vector V(true) is with respect to the true equatorial triad of date and the p-vector V(mean) is with respect to the mean equatorial triad of date.
  3. A faster, but slightly less accurate, result (about 1 mas), can be obtained by using instead the jauNum00b function.

  Called:

  - `jauPn00a(double, double)` bias/precession/nutation, IAU 2000A

  Reference:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.222-3 (p114).

Since:
  Release 20101201

### jauNum00b

public static double[][] jauNum00b(double date1, double date2)
Form the matrix of nutation for a given date, IAU 2000B model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rmatn double[3][3] returned nutation matrix

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(true) = rmatn * V(mean), where the p-vector V(true) is with respect to the true equatorial triad of date and the p-vector V(mean) is with respect to the mean equatorial triad of date.
  3. The present function is faster, but slightly less accurate (about 1 mas), than the jauNum00a function.

  Called:

  - `jauPn00b(double, double)` bias/precession/nutation, IAU 2000B

  Reference:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.222-3 (p114).

Since:
  Release 20101201

### jauNum06a

public static double[][] jauNum06a(double date1, double date2)
Form the matrix of nutation for a given date, IAU 2006/2000A model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rmatn double[3][3] returned nutation matrix

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(true) = rmatn * V(mean), where the p-vector V(true) is with respect to the true equatorial triad of date and the p-vector V(mean) is with respect to the mean equatorial triad of date.

  Called:

  - `jauObl06(double, double)` mean obliquity, IAU 2006
  - `jauNut06a(double, double)` nutation, IAU 2006/2000A
  - `jauNumat(double, double, double)` form nutation matrix

  Reference:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.222-3 (p114).

Since:
  Release 20101201

### jauNumat

public static double[][] jauNumat(double epsa, double dpsi, double deps)
Form the matrix of nutation.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `epsa` - double mean obliquity of date (Note 1)
  `dpsi` - double nutation (Note 2)
  `deps` - double nutation (Note 2)
Returns:
  rmatn double[3][3] returned nutation matrix (Note 3)

  Notes:

  1. The supplied mean obliquity epsa, must be consistent with the precession-nutation models from which dpsi and deps were obtained.
  2. The caller is responsible for providing the nutation components; they are in longitude and obliquity, in radians and are with respect to the equinox and ecliptic of date.
  3. The matrix operates in the sense V(true) = rmatn * V(mean), where the p-vector V(true) is with respect to the true equatorial triad of date and the p-vector V(mean) is with respect to the mean equatorial triad of date.

  Called:

  - `jauIr(double[][])` initialize r-matrix to identity
  - `jauRx(double, double[][])` rotate around X-axis
  - `jauRz(double, double[][])` rotate around Z-axis

  Reference:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.222-3 (p114).

Since:
  Release 20101201

### jauNut00a

public static JSOFA.NutationTerms jauNut00a(double date1, double date2)
Nutation, IAU 2000A model (MHB2000 luni-solar and planetary nutation with free core nutation omitted).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  returned nutation, luni-solar + planetary (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The nutation components in longitude and obliquity are in radians and with respect to the equinox and ecliptic of date. The obliquity at J2000.0 is assumed to be the Lieske et al. (1977) value of 84381.448 arcsec. Both the luni-solar and planetary nutations are included. The latter are due to direct planetary nutations and the perturbations of the lunar and terrestrial orbits.
  3. The function computes the MHB2000 nutation series with the associated corrections for planetary nutations. It is an implementation of the nutation part of the IAU 2000A precession- nutation model, formally adopted by the IAU General Assembly in 2000, namely MHB2000 (Mathews et al. 2002), but with the free core nutation (FCN - see Note 4) omitted.
  4. The full MHB2000 model also contains contributions to the nutations in longitude and obliquity due to the free-excitation of the free-core-nutation during the period 1979-2000. These FCN terms, which are time-dependent and unpredictable, are NOT included in the present function and, if required, must be independently computed. With the FCN corrections included, the present function delivers a pole which is at current epochs accurate to a few hundred microarcseconds. The omission of FCN introduces further errors of about that size.
  5. The present function provides classical nutation. The MHB2000 algorithm, from which it is adapted, deals also with (i) the offsets between the GCRS and mean poles and (ii) the adjustments in longitude and obliquity due to the changed precession rates. These additional functions, namely frame bias and precession adjustments, are supported by the JSOFA functions jauBi00 and jauPr00.
  6. The MHB2000 algorithm also provides "total" nutations, comprising the arithmetic sum of the frame bias, precession adjustments, luni-solar nutation and planetary nutation. These total nutations can be used in combination with an existing IAU 1976 precession implementation, such as jauPmat76, to deliver GCRS- to-true predictions of sub-mas accuracy at current dates. However, there are three shortcomings in the MHB2000 model that must be taken into account if more accurate or definitive results are required (see Wallace 2002): (i) The MHB2000 total nutations are simply arithmetic sums, yet in reality the various components are successive Euler rotations. This slight lack of rigor leads to cross terms that exceed 1 mas after a century. The rigorous procedure is to form the GCRS-to-true rotation matrix by applying the bias, precession and nutation in that order. (ii) Although the precession adjustments are stated to be with respect to Lieske et al. (1977), the MHB2000 model does not specify which set of Euler angles are to be used and how the adjustments are to be applied. The most literal and straightforward procedure is to adopt the 4-rotation epsilon_0, psi_A, omega_A, xi_A option, and to add DPSIPR to psi_A and DEPSPR to both omega_A and eps_A. (iii) The MHB2000 model predates the determination by Chapront et al. (2002) of a 14.6 mas displacement between the J2000.0 mean equinox and the origin of the ICRS frame. It should, however, be noted that neglecting this displacement when calculating star coordinates does not lead to a 14.6 mas change in right ascension, only a small second- order distortion in the pattern of the precession-nutation effect. For these reasons, the JSOFA functions do not generate the "total nutations" directly, though they can of course easily be generated by calling jauBi00, jauPr00 and the present function and adding the results.
  7. The MHB2000 model contains 41 instances where the same frequency appears multiple times, of which 38 are duplicates and three are triplicates. To keep the present code close to the original MHB algorithm, this small inefficiency has not been corrected.

  Called:

  - `jauFal03(double)` mean anomaly of the Moon
  - `jauFaf03(double)` mean argument of the latitude of the Moon
  - `jauFaom03(double)` mean longitude of the Moon's ascending node
  - `jauFame03(double)` mean longitude of Mercury
  - `jauFave03(double)` mean longitude of Venus
  - `jauFae03(double)` mean longitude of Earth
  - `jauFama03(double)` mean longitude of Mars
  - `jauFaju03(double)` mean longitude of Jupiter
  - `jauFasa03(double)` mean longitude of Saturn
  - `jauFaur03(double)` mean longitude of Uranus
  - `jauFapa03(double)` general accumulated precession in longitude

  References:

  Chapront, J., Chapront-Touze, M. & Francou, G. 2002, Astron.Astrophys. 387, 700

  Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977, Astron.Astrophys. 58, 1-16

  Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res. 107, B4. The MHB_2000 code itself was obtained on 9th September 2002 from ftp//maia.usno.navy.mil/conv2000/chapter5/IAU2000A.

  Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

  Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, Astron.Astrophys.Supp.Ser. 135, 111

  Wallace, P.T., "Software for Implementing the IAU 2000 Resolutions", in IERS Workshop 5.1 (2002)

Since:
  Release 20101201

### jauNut00b

public static JSOFA.NutationTerms jauNut00b(double date1, double date2)
Nutation, IAU 2000B model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  nutation, luni-solar + planetary (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The nutation components in longitude and obliquity are in radians and with respect to the equinox and ecliptic of date. The obliquity at J2000.0 is assumed to be the Lieske et al. (1977) value of 84381.448 arcsec. (The errors that result from using this function with the IAU 2006 value of 84381.406 arcsec can be neglected.) The nutation model consists only of luni-solar terms, but includes also a fixed offset which compensates for certain long- period planetary terms (Note 7).
  3. This function is an implementation of the IAU 2000B abridged nutation model formally adopted by the IAU General Assembly in 2000. The function computes the MHB_2000_SHORT luni-solar nutation series (Luzum 2001), but without the associated corrections for the precession rate adjustments and the offset between the GCRS and J2000.0 mean poles.
  4. The full IAU 2000A (MHB2000) nutation model contains nearly 1400 terms. The IAU 2000B model (McCarthy & Luzum 2003) contains only 77 terms, plus additional simplifications, yet still delivers results of 1 mas accuracy at present epochs. This combination of accuracy and size makes the IAU 2000B abridged nutation model suitable for most practical applications. The function delivers a pole accurate to 1 mas from 1900 to 2100 (usually better than 1 mas, very occasionally just outside 1 mas). The full IAU 2000A model, which is implemented in the function jauNut00a (q.v.), delivers considerably greater accuracy at current dates; however, to realize this improved accuracy, corrections for the essentially unpredictable free-core-nutation (FCN) must also be included.
  5. The present function provides classical nutation. The MHB_2000_SHORT algorithm, from which it is adapted, deals also with (i) the offsets between the GCRS and mean poles and (ii) the adjustments in longitude and obliquity due to the changed precession rates. These additional functions, namely frame bias and precession adjustments, are supported by the JSOFA functions jauBi00 and jauPr00.
  6. The MHB_2000_SHORT algorithm also provides "total" nutations, comprising the arithmetic sum of the frame bias, precession adjustments, and nutation (luni-solar + planetary). These total nutations can be used in combination with an existing IAU 1976 precession implementation, such as jauPmat76, to deliver GCRS- to-true predictions of mas accuracy at current epochs. However, for symmetry with the jauNut00a function (q.v. for the reasons), the JSOFA functions do not generate the "total nutations" directly. Should they be required, they could of course easily be generated by calling jauBi00, jauPr00 and the present function and adding the results.
  7. The IAU 2000B model includes "planetary bias" terms that are fixed in size but compensate for long-period nutations. The amplitudes quoted in McCarthy & Luzum (2003), namely Dpsi = -1.5835 mas and Depsilon = +1.6339 mas, are optimized for the "total nutations" method described in Note 6. The Luzum (2001) values used in this JSOFA implementation, namely -0.135 mas and +0.388 mas, are optimized for the "rigorous" method, where frame bias, precession and nutation are applied separately and in that order. During the interval 1995-2050, the JSOFA implementation delivers a maximum error of 1.001 mas (not including FCN).

  References:

  Lieske, J.H., Lederle, T., Fricke, W., Morando, B., "Expressions for the precession quantities based upon the IAU /1976/ system of astronomical constants", Astron.Astrophys. 58, 1-2, 1-16. (1977)

  Luzum, B., private communication, 2001 (Fortran code MHB_2000_SHORT)

  McCarthy, D.D. & Luzum, B.J., "An abridged model of the precession-nutation of the celestial pole", Cel.Mech.Dyn.Astron. 85, 37-49 (2003)

  Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J., Astron.Astrophys. 282, 663-683 (1994)

Since:
  Release 20101201

### jauNut06a

public static JSOFA.NutationTerms jauNut06a(double date1, double date2)
IAU 2000A nutation with adjustments to match the IAU 2006 precession.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  nutation, luni-solar + planetary (Note 2)

  Status: canonical model.

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The nutation components in longitude and obliquity are in radians and with respect to the mean equinox and ecliptic of date, IAU 2006 precession model (Hilton et al. 2006, Capitaine et al. 2005).
  3. The function first computes the IAU 2000A nutation, then applies adjustments for (i) the consequences of the change in obliquity from the IAU 1980 ecliptic to the IAU 2006 ecliptic and (ii) the secular variation in the Earth's dynamical flattening.
  4. The present function provides classical nutation, complementing the IAU 2000 frame bias and IAU 2006 precession. It delivers a pole which is at current epochs accurate to a few tens of microarcseconds, apart from the free core nutation.

  Called:

  - `jauNut00a(double, double)` nutation, IAU 2000A

  References:

  Chapront, J., Chapront-Touze, M. & Francou, G. 2002, Astron.Astrophys. 387, 700

  Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977, Astron.Astrophys. 58, 1-16

  Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res. 107, B4. The MHB_2000 code itself was obtained on 9th September 2002 from ftp//maia.usno.navy.mil/conv2000/chapter5/IAU2000A.

  Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683

  Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, Astron.Astrophys.Supp.Ser. 135, 111

  Wallace, P.T., "Software for Implementing the IAU 2000 Resolutions", in IERS Workshop 5.1 (2002)

Since:
  Release 20101201

### jauNut80

public static JSOFA.NutationTerms jauNut80(double date1, double date2)
Nutation, IAU 1980 model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  dpsi double returned nutation in longitude (radians) deps double returned nutation in obliquity (radians)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The nutation components are with respect to the ecliptic of date.

  Called:

  - `jauAnpm(double)` normalize angle into range +/- pi

  Reference:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.222 (p111).

Since:
  Release 20101201

### jauNutm80

public static double[][] jauNutm80(double date1, double date2)
Form the matrix of nutation for a given date, IAU 1980 model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB date (Note 1)
  `date2` - double TDB date (Note 1)
Returns:
  double[3][3] nutation matrix

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(true) = rmatn * V(mean), where the p-vector V(true) is with respect to the true equatorial triad of date and the p-vector V(mean) is with respect to the mean equatorial triad of date.

  Called:

  - `jauNut80(double, double)` nutation, IAU 1980
  - `jauObl80(double, double)` mean obliquity, IAU 1980
  - `jauNumat(double, double, double)` form nutation matrix
Since:
  Release 20101201

### jauObl06

public static double jauObl06(double date1, double date2)
Mean obliquity of the ecliptic, IAU 2006 precession model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double obliquity of the ecliptic (radians, Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The result is the angle between the ecliptic and mean equator of date date1+date2.

  Reference: Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351

Since:
  Release 20101201

### jauObl80

public static double jauObl80(double date1, double date2)
Mean obliquity of the ecliptic, IAU 1980 model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double obliquity of the ecliptic (radians, Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The result is the angle between the ecliptic and mean equator of date date1+date2.

  Reference:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Expression 3.222-1 (p114).

Since:
  Release 20101201

### jauP06e

public static JSOFA.PrecessionAngles jauP06e(double date1, double date2)
Precession angles, IAU 2006, equinox based.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical models.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  (see Note 2): eps0 double epsilon_0 psia double psi_A oma double omega_A bpa double P_A bqa double Q_A pia double pi_A bpia double Pi_A epsa double obliquity epsilon_A chia double chi_A za double z_A zetaa double zeta_A thetaa double theta_A pa double p_A gam double F-W angle gamma_J2000 phi double F-W angle phi_J2000 psi double F-W angle psi_J2000

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. This function returns the set of equinox based angles for the Capitaine et al. "P03" precession theory, adopted by the IAU in 2006. The angles are set out in Table 1 of Hilton et al. (2006): eps0 epsilon_0 obliquity at J2000.0 psia psi_A luni-solar precession oma omega_A inclination of equator wrt J2000.0 ecliptic bpa P_A ecliptic pole x, J2000.0 ecliptic triad bqa Q_A ecliptic pole -y, J2000.0 ecliptic triad pia pi_A angle between moving and J2000.0 ecliptics bpia Pi_A longitude of ascending node of the ecliptic epsa epsilon_A obliquity of the ecliptic chia chi_A planetary precession za z_A equatorial precession: -3rd 323 Euler angle zetaa zeta_A equatorial precession: -1st 323 Euler angle thetaa theta_A equatorial precession: 2nd 323 Euler angle pa p_A general precession (see note below) gam gamma_J2000 J2000.0 RA difference of ecliptic poles phi phi_J2000 J2000.0 codeclination of ecliptic pole psi psi_J2000 longitude difference of equator poles, J2000.0 The returned values are all radians.
  3. Note that the t^5 coefficient in the series for p_A from Capitaine et al. (2003) is incorrectly signed in Hilton et al. (2006).
  4. Hilton et al. (2006) Table 1 also contains angles that depend on models distinct from the P03 precession theory itself, namely the IAU 2000A frame bias and nutation. The quoted polynomials are used in other JSOFA functions: . jauXy06 contains the polynomial parts of the X and Y series. . jauS06 contains the polynomial part of the s+XY/2 series. . jauPfw06 implements the series for the Fukushima-Williams angles that are with respect to the GCRS pole (i.e. the variants that include frame bias).
  5. The IAU resolution stipulated that the choice of parameterization was left to the user, and so an IAU compliant precession implementation can be constructed using various combinations of the angles returned by the present function.
  6. The parameterization used by JSOFA is the Fukushima-Williams angles referred directly to the GCRS pole. These are the final four arguments returned by the present function, but are more efficiently calculated by calling the function jauPfw06. JSOFA also supports the direct computation of the CIP GCRS X,Y by series, available by calling jauXy06.
  7. The agreement between the different parameterizations is at the 1 microarcsecond level in the present era.
  8. When constructing a precession formulation that refers to the GCRS pole rather than the dynamical pole, it may (depending on the choice of angles) be necessary to introduce the frame bias explicitly.
  9. It is permissible to re-use the same variable in the returned arguments. The quantities are stored in the stated order.

  References:

  1. Capitaine, N., Wallace, P.T. & Chapront, J., 2003, Astron.Astrophys., 412, 567
  2. Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351

  Called:

  - `jauObl06(double, double)` mean obliquity, IAU 2006
Since:
  Release 20101201

### jauP2pv

public static double[][] jauP2pv(double[] p)
Extend a p-vector to a pv-vector by appending a zero velocity.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `p` - double[3] p-vector
Returns:
  pv double[2][3] returned pv-vector

  Called:

  - `jauCp(double[], double[])` copy p-vector
  - `jauZp(double[])` zero p-vector
Since:
  Release 20101201

### jauP2s

public static JSOFA.SphericalPosition jauP2s(double[] p)
P-vector to spherical polar coordinates.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `p` - double[3] p-vector
Returns:
  theta double returned longitude angle (radians) phi double returned latitude angle (radians) r double returned radial distance

  Notes:

  1. If P is null, zero theta, phi and r are returned.
  2. At either pole, zero theta is returned.

  Called:

  - `jauC2s(double[])` p-vector to spherical
  - `jauPm(double[])` modulus of p-vector
Since:
  Release 20101201

### jauPap

public static double jauPap(double[] a, double[] b)
Position-angle from two p-vectors.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[3] direction of reference point
  `b` - double[3] direction of point whose PA is required
Returns:
  double position angle of b with respect to a (radians)

  Notes:

  1. The result is the position angle, in radians, of direction b with respect to direction a. It is in the range -pi to +pi. The sense is such that if b is a small distance "north" of a the position angle is approximately zero, and if b is a small distance "east" of a the position angle is approximately +pi/2.
  2. The vectors a and b need not be of unit length.
  3. Zero is returned if the two directions are the same or if either vector is null.
  4. If vector a is at a pole, the result is ill-defined.

  Called:

  - `jauPn(double[])` decompose p-vector into modulus and direction
  - `jauPm(double[])` modulus of p-vector
  - `jauPxp(double[], double[])` vector product of two p-vectors
  - `jauPmp(double[], double[])` p-vector minus p-vector
  - `jauPdp(double[], double[])` scalar product of two p-vectors
Since:
  Release 20101201

### jauPas

public static double jauPas(double al, double ap, double bl, double bp)
Position-angle from spherical coordinates.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `al` - double longitude of point A (e.g. RA) in radians
  `ap` - double latitude of point A (e.g. Dec) in radians
  `bl` - double longitude of point B
  `bp` - double latitude of point B
Returns:
  double position angle of B with respect to A

  Notes:

  1. The result is the bearing (position angle), in radians, of point B with respect to point A. It is in the range -pi to +pi. The sense is such that if B is a small distance "east" of point A, the bearing is approximately +pi/2.
  2. Zero is returned if the two points are coincident.
Since:
  Release 20101201

### jauPb06

public static JSOFA.EulerAngles jauPb06(double date1, double date2)
This function forms three Euler angles which implement general precession from epoch J2000.0, using the IAU 2006 model. Frame bias (the offset between ICRS and mean J2000.0) is included.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  bzeta 1st rotation: radians cw around z, 3rd rotation: radians cw around z, 2nd rotation: radians ccw around y.

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The traditional accumulated precession angles zeta_A, z_A, theta_A cannot be obtained in the usual way, namely through polynomial expressions, because of the frame bias. The latter means that two of the angles undergo rapid changes near this date. They are instead the results of decomposing the precession-bias matrix obtained by using the Fukushima-Williams method, which does not suffer from the problem. The decomposition returns values which can be used in the conventional formulation and which include frame bias.
  3. The three angles are returned in the conventional order, which is not the same as the order of the corresponding Euler rotations. The precession-bias matrix is R_3(-z) x R_2(+theta) x R_3(-zeta).
  4. Should zeta_A, z_A, theta_A angles be required that do not contain frame bias, they are available by calling the JSOFA function jauP06e.

  Called:

  - `jauPmat06(double, double)` PB matrix, IAU 2006
  - `jauRz(double, double[][])` rotate around Z-axis
Since:
  Release 20101201

### jauPdp

public static double jauPdp(double[] a, double[] b)
p-vector inner (=scalar=dot) product.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[3] first p-vector
  `b` - double[3] second p-vector
Returns:
  double a . b
Since:
  Release 20101201

### jauPfw06

public static JSOFA.FWPrecessionAngles jauPfw06(double date1, double date2)
Precession angles, IAU 2006 (Fukushima-Williams 4-angle formulation).

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  gamb double returned F-W angle gamma_bar (radians) phib double returned F-W angle phi_bar (radians) psib double returned F-W angle psi_bar (radians) epsa double returned F-W angle epsilon_A (radians)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. Naming the following points: e = J2000.0 ecliptic pole, p = GCRS pole, E = mean ecliptic pole of date, and P = mean pole of date, the four Fukushima-Williams angles are as follows: gamb = gamma_bar = epE phib = phi_bar = pE psib = psi_bar = pEP epsa = epsilon_A = EP
  3. The matrix representing the combined effects of frame bias and precession is: PxB = R_1(-epsa).R_3(-psib).R_1(phib).R_3(gamb)
  4. The matrix representing the combined effects of frame bias, precession and nutation is simply: NxPxB = R_1(-epsa-dE).R_3(-psib-dP).R_1(phib).R_3(gamb) where dP and dE are the nutation components with respect to the ecliptic of date.

  Reference: Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351

  Called:

  - `jauObl06(double, double)` mean obliquity, IAU 2006
Since:
  Release 20101201

### jauPlan94

public static double[][] jauPlan94(double date1, double date2, int np) throws JSOFAIllegalParameter
Approximate heliocentric position and velocity of a nominated major planet: Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus or Neptune (but not the Earth itself). n.b. Not IAU-endorsed and without canonical status.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB date part A (Note 1)
  `date2` - double TDB date part B (Note 1)
  `np` - int planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars, 5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune) Returned (argument):
Returns:
  pv double[2][3] (returned) planet p,v (heliocentric, J2000.0, au,au/d)

  Notes:

  1. The date date1+date2 is in the TDB time scale (in practice TT can be used) and is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. The limited accuracy of the present algorithm is such that any of the methods is satisfactory.
  2. If an np value outside the range 1-8 is supplied, an exception is thrown.
  3. For np=3 the result is for the Earth-Moon Barycenter. To obtain the heliocentric position and velocity of the Earth, use instead the JSOFA function jauEpv00.
  4. On successful return, the array pv contains the following:

                 pv[0][0]   x      }
                 pv[0][1]   y      } heliocentric position, au
                 pv[0][2]   z      }

                 pv[1][0]   xdot   }
                 pv[1][1]   ydot   } heliocentric velocity, au/d
                 pv[1][2]   zdot   }

     The reference frame is equatorial and is with respect to the mean equator and equinox of epoch J2000.0.
  5. The algorithm is due to J.L. Simon, P. Bretagnon, J. Chapront, M. Chapront-Touze, G. Francou and J. Laskar (Bureau des Longitudes, Paris, France). From comparisons with JPL ephemeris DE102, they quote the following maximum errors over the interval 1800-2050:

                              L (arcsec)    B (arcsec)      R (km)

                 Mercury          4             1             300
                 Venus            5             1             800
                 EMB              6             1            1000
                 Mars            17             1            7700
                 Jupiter         71             5           76000
                 Saturn          81            13          267000
                 Uranus          86             7          712000
                 Neptune         11             1          253000

     Over the interval 1000-3000, they report that the accuracy is no worse than 1.5 times that over 1800-2050. Outside 1000-3000 the accuracy declines. Comparisons of the present function with the JPL DE200 ephemeris give the following RMS errors over the interval 1960-2025:

                               position (km)     velocity (m/s)

                 Mercury            334               0.437
                 Venus             1060               0.855
                 EMB               2010               0.815
                 Mars              7690               1.98
                 Jupiter          71700               7.70
                 Saturn          199000              19.4
                 Uranus          564000              16.4
                 Neptune         158000              14.4

     Comparisons against DE200 over the interval 1800-2100 gave the following maximum absolute differences. (The results using DE406 were essentially the same.)

                            L (arcsec)   B (arcsec)     R (km)   Rdot (m/s)

                 Mercury        7            1            500       0.7
                 Venus          7            1           1100       0.9
                 EMB            9            1           1300       1.0
                 Mars          26            1           9000       2.5
                 Jupiter       78            6          82000       8.2
                 Saturn        87           14         263000      24.6
                 Uranus        86            7         661000      27.4
                 Neptune       11            2         248000      21.4

  6. The present JSOFA re-implementation of the original Simon et al. Fortran code differs from the original in the following respects:
     - C instead of Fortran.
     - The date is supplied in two parts.
     - The result is returned only in equatorial Cartesian form; the ecliptic longitude, latitude and radius vector are not returned.
     - The result is in the J2000.0 equatorial frame, not ecliptic.
     - More is done in-line: there are fewer calls to subroutines.
     - Different error/warning status values are used.
     - A different Kepler's-equation-solver is used (avoiding use of double precision complex).
     - Polynomials in t are nested to minimize rounding errors.
     - Explicit double constants are used to avoid mixed-mode expressions.
     None of the above changes affects the result significantly.
  7. The returned status indicates the most serious condition encountered during execution of the function. Illegal np is considered the most serious, overriding failure to converge, which in turn takes precedence over the remote date warning.

  Called:

  - `jauAnp(double)` normalize angle into range 0 to 2pi

  Reference: Simon, J.L, Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G., and Laskar, J., Astron. Astrophys. 282, 663 (1994).

Throws:
  `JSOFAIllegalParameter` - for a bad np (planet number)
Since:
  Release 20101201

### jauPm

public static double jauPm(double[] p)
Modulus of p-vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `p` - double[3] p-vector
Returns:
  double modulus
Since:
  Release 20101201

### jauPmat00

public static double[][] jauPmat00(double date1, double date2)
Precession matrix (including frame bias) from GCRS to a specified date, IAU 2000 model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rbp double[3][3] returned bias-precession matrix (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(date) = rbp * V(GCRS), where the p-vector V(GCRS) is with respect to the Geocentric Celestial Reference System (IAU, 2000) and the p-vector V(date) is with respect to the mean equatorial triad of the given date.

  Called:

  - `jauBp00(double, double, double[][], double[][], double[][])` frame bias and precession matrices, IAU 2000

  Reference: IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. (2000)

Since:
  Release 20101201

### jauPmat06

public static double[][] jauPmat06(double date1, double date2)
Precession matrix (including frame bias) from GCRS to a specified date, IAU 2006 model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rbp double[3][3] returned bias-precession matrix (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(date) = rbp * V(GCRS), where the p-vector V(GCRS) is with respect to the Geocentric Celestial Reference System (IAU, 2000) and the p-vector V(date) is with respect to the mean equatorial triad of the given date.

  Called:

  - `jauPfw06(double, double)` bias-precession F-W angles, IAU 2006
  - `jauFw2m(double, double, double, double)` F-W angles to r-matrix

  References:

  Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

  Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

  IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6.(2000)

Since:
  Release 20101201

### jauPmat76

public static double[][] jauPmat76(double date1, double date2)
Precession matrix from J2000.0 to a specified date, IAU 1976 model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double ending date, TT (Note 1)
  `date2` - double ending date, TT (Note 1)
Returns:
  rmatp double[3][3] returned precession matrix, J2000.0 -> date1+date2

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(date) = RMATP * V(J2000), where the p-vector V(J2000) is with respect to the mean equatorial triad of epoch J2000.0 and the p-vector V(date) is with respect to the mean equatorial triad of the given date.
  3. Though the matrix method itself is rigorous, the precession angles are expressed through canonical polynomials which are valid only for a limited time span. In addition, the IAU 1976 precession rate is known to be imperfect. The absolute accuracy of the present formulation is better than 0.1 arcsec from 1960AD to 2040AD, better than 1 arcsec from 1640AD to 2360AD, and remains below 3 arcsec for the whole of the period 500BC to 3000AD. The errors exceed 10 arcsec outside the range 1200BC to 3900AD, exceed 100 arcsec outside 4200BC to 5600AD and exceed 1000 arcsec outside 6800BC to 8200AD.

  Called:

  - `jauPrec76(double, double, double, double)` accumulated precession angles, IAU 1976
  - `jauIr(double[][])` initialize r-matrix to identity
  - `jauRz(double, double[][])` rotate around Z-axis
  - `jauRy(double, double[][])` rotate around Y-axis
  - `jauCr(double[][], double[][])` copy r-matrix

  References:

  Lieske, J.H., 1979, Astron.Astrophys. 73, 282. equations (6) & (7), p283. Kaplan,G.H., 1981. USNO circular no. 163, pA2.

Since:
  Release 20101201

### jauPmp

public static double[] jauPmp(double[] a, double[] b)
P-vector subtraction.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[3] first p-vector
  `b` - double[3] second p-vector
Returns:
  amb double[3] returned a - b Note: It is permissible to re-use the same array for any of the arguments.
Since:
  Release 20101201

### jauPn

public static JSOFA.NormalizedVector jauPn(double[] p)
Convert a p-vector into modulus and unit vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `p` - double[3] p-vector
Returns:
  r double returned modulus u double[3] returned unit vector

  Notes:

  1. If p is null, the result is null. Otherwise the result is a unit vector.
  2. It is permissible to re-use the same array for any of the arguments.

  Called:

  - `jauPm(double[])` modulus of p-vector
  - `jauZp(double[])` zero p-vector
  - `jauSxp(double, double[])` multiply p-vector by scalar
Since:
  Release 20101201

### jauPn00

public static JSOFA.PrecessionNutation jauPn00(double date1, double date2, double dpsi, double deps)
Precession-nutation, IAU 2000 model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
  `dpsi` - double nutation (Note 2)
  `deps` - double nutation (Note 2)
Returns:
  epsa double returned mean obliquity (Note 3), rb double[3][3] returned frame bias matrix (Note 4), rp double[3][3] returned precession matrix (Note 5), rbp double[3][3] returned bias-precession matrix (Note 6), rn double[3][3] returned nutation matrix (Note 7), rbpn double[3][3] returned GCRS-to-true matrix (Note 8)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The caller is responsible for providing the nutation components; they are in longitude and obliquity, in radians and are with respect to the equinox and ecliptic of date. For high-accuracy applications, free core nutation should be included as well as any other relevant corrections to the position of the CIP.
  3. The returned mean obliquity is consistent with the IAU 2000 precession-nutation models.
  4. The matrix rb transforms vectors from GCRS to J2000.0 mean equator and equinox by applying frame bias.
  5. The matrix rp transforms vectors from J2000.0 mean equator and equinox to mean equator and equinox of date by applying precession.
  6. The matrix rbp transforms vectors from GCRS to mean equator and equinox of date by applying frame bias then precession. It is the product rp x rb.
  7. The matrix rn transforms vectors from mean equator and equinox of date to true equator and equinox of date by applying the nutation (luni-solar + planetary).
  8. The matrix rbpn transforms vectors from GCRS to true equator and equinox of date. It is the product rn x rbp, applying frame bias, precession and nutation in that order.
  9. It is permissible to re-use the same array in the returned arguments. The arrays are filled in the stated order.

  Called:

  - `jauPr00(double, double)` IAU 2000 precession adjustments
  - `jauObl80(double, double)` mean obliquity, IAU 1980
  - `jauBp00(double, double, double[][], double[][], double[][])` frame bias and precession matrices, IAU 2000
  - `jauCr(double[][], double[][])` copy r-matrix
  - `jauNumat(double, double, double)` form nutation matrix
  - `jauRxr(double[][], double[][])` product of two r-matrices

  Reference:

  Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003) n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

Since:
  Release 20101201

### jauPn00a

public static JSOFA.PrecessionNutation jauPn00a(double date1, double date2)
Precession-nutation, IAU 2000A model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  dpsi double returned nutation (Note 2) deps double returned nutation (Note 2) epsa double returned mean obliquity (Note 3) rb double[3][3] returned frame bias matrix (Note 4) rp double[3][3] returned precession matrix (Note 5) rbp double[3][3] returned bias-precession matrix (Note 6) rn double[3][3] returned nutation matrix (Note 7) rbpn double[3][3] returned GCRS-to-true matrix (Notes 8,9)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                      date1          date2

                   2450123.7           0.0       (JD method)
                   2451545.0       -1421.3       (J2000 method)
                   2400000.5       50123.2       (MJD method)
                   2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The nutation components (luni-solar + planetary, IAU 2000A) in longitude and obliquity are in radians and with respect to the equinox and ecliptic of date. Free core nutation is omitted; for the utmost accuracy, use the jauPn00 function, where the nutation components are caller-specified. For faster but slightly less accurate results, use the jauPn00b function.
  3. The mean obliquity is consistent with the IAU 2000 precession.
  4. The matrix rb transforms vectors from GCRS to J2000.0 mean equator and equinox by applying frame bias.
  5. The matrix rp transforms vectors from J2000.0 mean equator and equinox to mean equator and equinox of date by applying precession.
  6. The matrix rbp transforms vectors from GCRS to mean equator and equinox of date by applying frame bias then precession. It is the product rp x rb.
  7. The matrix rn transforms vectors from mean equator and equinox of date to true equator and equinox of date by applying the nutation (luni-solar + planetary).
  8. The matrix rbpn transforms vectors from GCRS to true equator and equinox of date. It is the product rn x rbp, applying frame bias, precession and nutation in that order.
  9. The X,Y,Z coordinates of the IAU 2000A Celestial Intermediate Pole are elements (3,1-3) of the GCRS-to-true matrix, i.e. rbpn[2][0-2].
  10. It is permissible to re-use the same array in the returned arguments. The arrays are filled in the order given.

  Called:

  - `jauNut00a(double, double)` nutation, IAU 2000A
  - `jauPn00(double, double, double, double)` bias/precession/nutation results, IAU 2000

  Reference:

  Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003) n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

Since:
  Release 20101201

### jauPn00b

public static JSOFA.PrecessionNutation jauPn00b(double date1, double date2)
Precession-nutation, IAU 2000B model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  dpsi,deps double returned nutation (Note 2) epsa double returned mean obliquity (Note 3) rb double[3][3] returned frame bias matrix (Note 4) rp double[3][3] returned precession matrix (Note 5) rbp double[3][3] returned bias-precession matrix (Note 6) rn double[3][3] returned nutation matrix (Note 7) rbpn double[3][3] returned GCRS-to-true matrix (Notes 8,9)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                      date1          date2

                   2450123.7           0.0       (JD method)
                   2451545.0       -1421.3       (J2000 method)
                   2400000.5       50123.2       (MJD method)
                   2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The nutation components (luni-solar + planetary, IAU 2000B) in longitude and obliquity are in radians and with respect to the equinox and ecliptic of date. For more accurate results, but at the cost of increased computation, use the jauPn00a function. For the utmost accuracy, use the jauPn00 function, where the nutation components are caller-specified.
  3. The mean obliquity is consistent with the IAU 2000 precession.
  4. The matrix rb transforms vectors from GCRS to J2000.0 mean equator and equinox by applying frame bias.
  5. The matrix rp transforms vectors from J2000.0 mean equator and equinox to mean equator and equinox of date by applying precession.
  6. The matrix rbp transforms vectors from GCRS to mean equator and equinox of date by applying frame bias then precession. It is the product rp x rb.
  7. The matrix rn transforms vectors from mean equator and equinox of date to true equator and equinox of date by applying the nutation (luni-solar + planetary).
  8. The matrix rbpn transforms vectors from GCRS to true equator and equinox of date. It is the product rn x rbp, applying frame bias, precession and nutation in that order.
  9. The X,Y,Z coordinates of the IAU 2000B Celestial Intermediate Pole are elements (3,1-3) of the matrix rbpn.
  10. It is permissible to re-use the same array in the returned arguments. The arrays are filled in the stated order.

  Called:

  - `jauNut00b(double, double)` nutation, IAU 2000B
  - `jauPn00(double, double, double, double)` bias/precession/nutation results, IAU 2000

  Reference:

  Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003). n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

Since:
  Release 20101201

### jauPn06

public static JSOFA.PrecessionNutation jauPn06(double date1, double date2, double dpsi, double deps)
Precession-nutation, IAU 2006 model: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
  `dpsi` - double nutation (Note 2)
  `deps` - double nutation (Note 2)
Returns:
  epsa double returned mean obliquity (Note 3) rb double[3][3] returned frame bias matrix (Note 4) rp double[3][3] returned precession matrix (Note 5) rbp double[3][3] returned bias-precession matrix (Note 6) rn double[3][3] returned nutation matrix (Note 7) rbpn double[3][3] returned GCRS-to-true matrix (Note 8,9)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                      date1          date2

                   2450123.7           0.0       (JD method)
                   2451545.0       -1421.3       (J2000 method)
                   2400000.5       50123.2       (MJD method)
                   2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The caller is responsible for providing the nutation components; they are in longitude and obliquity, in radians and are with respect to the equinox and ecliptic of date. For high-accuracy applications, free core nutation should be included as well as any other relevant corrections to the position of the CIP.
  3. The returned mean obliquity is consistent with the IAU 2006 precession.
  4. The matrix rb transforms vectors from GCRS to J2000.0 mean equator and equinox by applying frame bias.
  5. The matrix rp transforms vectors from J2000.0 mean equator and equinox to mean equator and equinox of date by applying precession.
  6. The matrix rbp transforms vectors from GCRS to mean equator and equinox of date by applying frame bias then precession. It is the product rp x rb.
  7. The matrix rn transforms vectors from mean equator and equinox of date to true equator and equinox of date by applying the nutation (luni-solar + planetary).
  8. The matrix rbpn transforms vectors from GCRS to true equator and equinox of date. It is the product rn x rbp, applying frame bias, precession and nutation in that order.
  9. The X,Y,Z coordinates of the IAU 2000B Celestial Intermediate Pole are elements (3,1-3) of the matrix rbpn.
  10. It is permissible to re-use the same array in the returned arguments. The arrays are filled in the stated order.

  Called:

  - `jauPfw06(double, double)` bias-precession F-W angles, IAU 2006
  - `jauFw2m(double, double, double, double)` F-W angles to r-matrix
  - `jauCr(double[][], double[][])` copy r-matrix
  - `jauTr(double[][])` transpose r-matrix
  - `jauRxr(double[][], double[][])` product of two r-matrices

  References:

  Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

  Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Since:
  Release 20101201

### jauPn06a

public static JSOFA.PrecessionNutation jauPn06a(double date1, double date2)
Precession-nutation, IAU 2006/2000A models: a multi-purpose function, supporting classical (equinox-based) use directly and CIO-based use indirectly.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  dpsi,deps double returned nutation (Note 2) epsa double returned mean obliquity (Note 3) rb double[3][3] returned frame bias matrix (Note 4) rp double[3][3] returned precession matrix (Note 5) rbp double[3][3] returned bias-precession matrix (Note 6) rn double[3][3] returned nutation matrix (Note 7) rbpn double[3][3] returned GCRS-to-true matrix (Notes 8,9)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                      date1          date2

                   2450123.7           0.0       (JD method)
                   2451545.0       -1421.3       (J2000 method)
                   2400000.5       50123.2       (MJD method)
                   2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The nutation components (luni-solar + planetary, IAU 2000A) in longitude and obliquity are in radians and with respect to the equinox and ecliptic of date. Free core nutation is omitted; for the utmost accuracy, use the jauPn06 function, where the nutation components are caller-specified.
  3. The mean obliquity is consistent with the IAU 2006 precession.
  4. The matrix rb transforms vectors from GCRS to mean J2000.0 by applying frame bias.
  5. The matrix rp transforms vectors from mean J2000.0 to mean of date by applying precession.
  6. The matrix rbp transforms vectors from GCRS to mean of date by applying frame bias then precession. It is the product rp x rb.
  7. The matrix rn transforms vectors from mean of date to true of date by applying the nutation (luni-solar + planetary).
  8. The matrix rbpn transforms vectors from GCRS to true of date (CIP/equinox). It is the product rn x rbp, applying frame bias, precession and nutation in that order.
  9. The X,Y,Z coordinates of the IAU 2006/2000A Celestial Intermediate Pole are elements (1,1-3) of the matrix rbpn.
  10. It is permissible to re-use the same array in the returned arguments. The arrays are filled in the stated order.

  Called:

  - `jauNut06a(double, double)` nutation, IAU 2006/2000A
  - `jauPn06(double, double, double, double)` bias/precession/nutation results, IAU 2006

  Reference:

  Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

Since:
  Release 20101201

### jauPnm00a

public static double[][] jauPnm00a(double date1, double date2)
Form the matrix of precession-nutation for a given date (including frame bias), equinox-based, IAU 2000A model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rbpn double[3][3] returned bias-precession-nutation matrix (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(date) = rbpn * V(GCRS), where the p-vector V(date) is with respect to the true equatorial triad of date date1+date2 and the p-vector V(GCRS) is with respect to the Geocentric Celestial Reference System (IAU, 2000).
  3. A faster, but slightly less accurate, result (about 1 mas), can be obtained by using instead the jauPnm00b function.

  Called:

  - `jauPn00a(double, double)` bias/precession/nutation, IAU 2000A

  Reference: IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. (2000)

Since:
  Release 20101201

### jauPnm00b

public static double[][] jauPnm00b(double date1, double date2)
Form the matrix of precession-nutation for a given date (including frame bias), equinox-based, IAU 2000B model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rbpn double[3][3] returned bias-precession-nutation matrix (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(date) = rbpn * V(GCRS), where the p-vector V(date) is with respect to the true equatorial triad of date date1+date2 and the p-vector V(GCRS) is with respect to the Geocentric Celestial Reference System (IAU, 2000).
  3. The present function is faster, but slightly less accurate (about 1 mas), than the jauPnm00a function.

  Called:

  - `jauPn00b(double, double)` bias/precession/nutation, IAU 2000B

  Reference: IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. (2000)

Since:
  Release 20101201

### jauPnm06a

public static double[][] jauPnm06a(double date1, double date2)
Form the matrix of precession-nutation for a given date (including frame bias), equinox based, IAU 2006 precession and IAU 2000A nutation models.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  rbpn double[3][3] returned bias-precession-nutation matrix (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(date) = rbpn * V(GCRS), where the p-vector V(date) is with respect to the true equatorial triad of date date1+date2 and the p-vector V(GCRS) is with respect to the Geocentric Celestial Reference System (IAU, 2000).

  Called:

  - `jauPfw06(double, double)` bias-precession F-W angles, IAU 2006
  - `jauNut06a(double, double)` nutation, IAU 2006/2000A
  - `jauFw2m(double, double, double, double)` F-W angles to r-matrix

  Reference:

  Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855.

Since:
  Release 20101201

### jauPnm80

public static double[][] jauPnm80(double date1, double date2)
Form the matrix of precession/nutation for a given date, IAU 1976 precession model, IAU 1980 nutation model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB date (Note 1)
  `date2` - double TDB date (Note 1)
Returns:
  rmatpn double[3][3] returned combined precession/nutation matrix

  Notes:

  1. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix operates in the sense V(date) = rmatpn * V(J2000), where the p-vector V(date) is with respect to the true equatorial triad of date date1+date2 and the p-vector V(J2000) is with respect to the mean equatorial triad of epoch J2000.0.

  Called:

  - `jauPmat76(double, double)` precession matrix, IAU 1976
  - `jauNutm80(double, double)` nutation matrix, IAU 1980
  - `jauRxr(double[][], double[][])` product of two r-matrices

  Reference:

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992), Section 3.3 (p145).

Since:
  Release 20101201

### jauPom00

public static double[][] jauPom00(double xp, double yp, double sp)
Form the matrix of polar motion for a given date, IAU 2000.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `xp` - double coordinates of the pole (radians, Note 1)
  `yp` - double coordinates of the pole (radians, Note 1)
  `sp` - double the TIO locator s' (radians, Note 2)
Returns:
  double[3][3] returned polar-motion matrix (Note 3)

  Notes:

  1. The arguments xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively.
  2. The argument sp is the TIO locator s', in radians, which positions the Terrestrial Intermediate Origin on the equator. It is obtained from polar motion observations by numerical integration, and so is in essence unpredictable. However, it is dominated by a secular drift of about 47 microarcseconds per century, and so can be taken into account by using s' = -47*t, where t is centuries since J2000.0. The function jauSp00 implements this approximation.
  3. The matrix operates in the sense V(TRS) = rpom * V(CIP), meaning that it is the final rotation when computing the pointing direction to a celestial source.

  Called:

  - `jauIr(double[][])` initialize r-matrix to identity
  - `jauRz(double, double[][])` rotate around Z-axis
  - `jauRy(double, double[][])` rotate around Y-axis
  - `jauRx(double, double[][])` rotate around X-axis

  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauPpp

public static double[] jauPpp(double[] a, double[] b)
P-vector addition.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[3] first p-vector
  `b` - double[3] second p-vector
Returns:
  apb double[3] returned a + b Note: It is permissible to re-use the same array for any of the arguments.
Since:
  Release 20101201

### jauPv2p

public static double[] jauPv2p(double[][] pv)
Discard velocity component of a pv-vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `pv` - double[2][3] pv-vector
Returns:
  p double[3] returned p-vector

  Called:

  - `jauCp(double[], double[])` copy p-vector
Since:
  Release 20101201

### jauPv2s

public static JSOFA.SphericalPositionVelocity jauPv2s(double[][] pv)
Convert position/velocity from Cartesian to spherical coordinates.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `pv` - double[2][3] pv-vector
Returns:
  theta double returned longitude angle (radians) phi double returned latitude angle (radians) r double returned radial distance td double returned rate of change of theta pd double returned rate of change of phi rd double returned rate of change of r

  Notes:

  1. If the position part of pv is null, theta, phi, td and pd are indeterminate. This is handled by extrapolating the position through unit time by using the velocity part of pv. This moves the origin without changing the direction of the velocity component. If the position and velocity components of pv are both null, zeroes are returned for all six results.
  2. If the position is a pole, theta, td and pd are indeterminate. In such cases zeroes are returned for all three.
Since:
  Release 20101201

### jauPvdpv

public static double[] jauPvdpv(double[][] a, double[][] b)
Inner (=scalar=dot) product of two pv-vectors.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[2][3] first pv-vector
  `b` - double[2][3] second pv-vector
Returns:
  adb double[2] returned a . b (see note) Note: If the position and velocity components of the two pv-vectors are ( ap, av ) and ( bp, bv ), the result, a . b, is the pair of numbers ( ap . bp , ap . bv + av . bp ). The two numbers are the dot-product of the two p-vectors and its derivative.

  Called:

  - `jauPdp(double[], double[])` scalar product of two p-vectors
Since:
  Release 20101201

### jauPvm

public static JSOFA.PVModulus jauPvm(double[][] pv)
Modulus of pv-vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `pv` - double[2][3] pv-vector
Returns:
  modulus of position component, modulus of velocity component

  Called:

  - `jauPm(double[])` modulus of p-vector
Since:
  Release 20101201

### jauPvmpv

public static double[][] jauPvmpv(double[][] a, double[][] b)
Subtract one pv-vector from another.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[2][3] first pv-vector
  `b` - double[2][3] second pv-vector
Returns:
  double[2][3] returned a - b Note: It is permissible to re-use the same array for any of the arguments.

  Called:

  - `jauPmp(double[], double[])` p-vector minus p-vector
Since:
  Release 20101201

### jauPvppv

public static double[][] jauPvppv(double[][] a, double[][] b)
Add one pv-vector to another.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[2][3] first pv-vector
  `b` - double[2][3] second pv-vector
Returns:
  apb double[2][3] returned a + b Note: It is permissible to re-use the same array for any of the arguments.

  Called:

  - `jauPpp(double[], double[])` p-vector plus p-vector
Since:
  Release 20101201

### jauPvstar

public static JSOFA.CatalogCoords jauPvstar(double[][] pv) throws JSOFAInternalError
Convert star position+velocity vector to catalog coordinates.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function. Given (Note 1):

Parameters:
  `pv` - double[2][3] pv-vector (au, au/day)
Returns:
  catalogue value
Throws:
  `JSOFAInternalError` - superluminal speed (Note 5), or null position vector

  Notes:

  1. The specified pv-vector is the coordinate direction (and its rate of change) for the date at which the light leaving the star reached the solar-system barycenter.
  2. The star data returned by this function are "observables" for an imaginary observer at the solar-system barycenter. Proper motion and radial velocity are, strictly, in terms of barycentric coordinate time, TCB. For most practical applications, it is permissible to neglect the distinction between TCB and ordinary "proper" time on Earth (TT/TAI). The result will, as a rule, be limited by the intrinsic accuracy of the proper-motion and radial-velocity data; moreover, the supplied pv-vector is likely to be merely an intermediate result (for example generated by the function jauStarpv), so that a change of time unit will cancel out overall. In accordance with normal star-catalog conventions, the object's right ascension and declination are freed from the effects of secular aberration. The frame, which is aligned to the catalog equator and equinox, is Lorentzian and centered on the SSB. Summarizing, the specified pv-vector is for most stars almost identical to the result of applying the standard geometrical "space motion" transformation to the catalog data. The differences, which are the subject of the Stumpff paper cited below, are: (i) In stars with significant radial velocity and proper motion, the constantly changing light-time distorts the apparent proper motion. Note that this is a classical, not a relativistic, effect. (ii) The transformation complies with special relativity.
  3. Care is needed with units. The star coordinates are in radians and the proper motions in radians per Julian year, but the parallax is in arcseconds; the radial velocity is in km/s, but the pv-vector result is in au and au/day.
  4. The proper motions are the rate of change of the right ascension and declination at the catalog epoch and are in radians per Julian year. The RA proper motion is in terms of coordinate angle, not true angle, and will thus be numerically larger at high declinations.
  5. Straight-line motion at constant speed in the inertial frame is assumed. If the speed is greater than or equal to the speed of light, the function aborts with an error status.
  6. The inverse transformation is performed by the function jauStarpv.

  Called:

  - `jauPn(double[])` decompose p-vector into modulus and direction
  - `jauPdp(double[], double[])` scalar product of two p-vectors
  - `jauSxp(double, double[])` multiply p-vector by scalar
  - `jauPmp(double[], double[])` p-vector minus p-vector
  - `jauPm(double[])` modulus of p-vector
  - `jauPpp(double[], double[])` p-vector plus p-vector
  - `jauPv2s(double[][])` pv-vector to spherical
  - `jauAnp(double)` normalize angle into range 0 to 2pi

  Reference: Stumpff, P., 1985, Astron.Astrophys. 144, 232-240.

Since:
  Release 20101201

### jauPvu

public static double[][] jauPvu(double dt, double[][] pv)
Update a pv-vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `dt` - double time interval
  `pv` - double[2][3] pv-vector
Returns:
  upv double[2][3] returned p updated, v unchanged

  Notes:

  1. "Update" means "refer the position component of the vector to a new date dt time units from the existing date".
  2. The time units of dt must match those of the velocity.
  3. It is permissible for pv and upv to be the same array.

  Called:

  - `jauPpsp(double[], double, double[])` p-vector plus scaled p-vector
  - `jauCp(double[], double[])` copy p-vector
Since:
  Release 20101201

### jauPvup

public static double[] jauPvup(double dt, double[][] pv)
Update a pv-vector, discarding the velocity component.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `dt` - double time interval
  `pv` - double[2][3] pv-vector
Returns:
  p double[3] returned p-vector

  Notes:

  1. "Update" means "refer the position component of the vector to a new date dt time units from the existing date".
  2. The time units of dt must match those of the velocity.
Since:
  Release 20101201

### jauPvxpv

public static double[][] jauPvxpv(double[][] a, double[][] b)
Outer (=vector=cross) product of two pv-vectors.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[2][3] first pv-vector
  `b` - double[2][3] second pv-vector
Returns:
  axb double[2][3] returned a x b

  Notes:

  1. If the position and velocity components of the two pv-vectors are ( ap, av ) and ( bp, bv ), the result, a x b, is the pair of vectors ( ap x bp, ap x bv + av x bp ). The two vectors are the cross-product of the two p-vectors and its derivative.
  2. It is permissible to re-use the same array for any of the arguments.

  Called:

  - `jauCpv(double[][], double[][])` copy pv-vector
  - `jauPxp(double[], double[])` vector product of two p-vectors
  - `jauPpp(double[], double[])` p-vector plus p-vector
Since:
  Release 20101201

### jauPxp

public static double[] jauPxp(double[] a, double[] b)
p-vector outer (=vector=cross) product.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[3] first p-vector
  `b` - double[3] second p-vector
Returns:
  axb double[3] returned a x b Note: It is permissible to re-use the same array for any of the arguments.
Since:
  Release 20101201

### jauRm2v

public static double[] jauRm2v(double[][] r)
Express an r-matrix as an r-vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `r` - double[3][3] rotation matrix
Returns:
  w double[3] returned rotation vector (Note 1)

  Notes:

  1. A rotation matrix describes a rotation through some angle about some arbitrary axis called the Euler axis. The "rotation vector" returned by this function has the same direction as the Euler axis, and its magnitude is the angle in radians. (The magnitude and direction can be separated by means of the function jauPn.)
  2. If r is null, so is the result. If r is not a rotation matrix the result is undefined; r must be proper (i.e. have a positive determinant) and real orthogonal (inverse = transpose).
  3. The reference frame rotates clockwise as seen looking along the rotation vector from the origin.
Since:
  Release 20101201

### jauRv2m

public static double[][] jauRv2m(double[] w)
Form the r-matrix corresponding to a given r-vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `w` - double[3] rotation vector (Note 1)
Returns:
  r double[3][3] returned rotation matrix

  Notes:

  1. A rotation matrix describes a rotation through some angle about some arbitrary axis called the Euler axis. The "rotation vector" supplied to This function has the same direction as the Euler axis, and its magnitude is the angle in radians.
  2. If w is null, the identity matrix is returned.
  3. The reference frame rotates clockwise as seen looking along the rotation vector from the origin.
Since:
  Release 20101201

### jauRx

public static void jauRx(double phi, double[][] r)
Rotate an r-matrix about the x-axis.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `phi` - double angle (radians) Given and returned:
  `r` - double[3][3] r-matrix given and returned Sign convention: The matrix can be used to rotate the reference frame of a vector. Calling this function with positive phi incorporates in the matrix an additional rotation, about the x-axis, anticlockwise as seen looking towards the origin from positive x.

  Called:

  - `jauIr(double[][])` initialize r-matrix to identity
  - `jauRxr(double[][], double[][])` product of two r-matrices
  - `jauCr(double[][], double[][])` copy r-matrix
Since:
  Release 20101201

### jauRxp

public static double[] jauRxp(double[][] r, double[] p)
Multiply a p-vector by an r-matrix.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `r` - double[3][3] r-matrix
  `p` - double[3] p-vector
Returns:
  rp double[3] returned r * p Note:
  1. The algorithm is for the simple case where the r-matrix r is not a function of time. The case where r is a function of time leads to an additional velocity component equal to the product of the derivative of r and the position vector.
  2. It is permissible for p and rp to be the same array.

  Called:

  - `jauCp(double[], double[])` copy p-vector
Since:
  Release 20101201

### jauRxpv

public static double[][] jauRxpv(double[][] r, double[][] pv)
Multiply a pv-vector by an r-matrix.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `r` - double[3][3] r-matrix
  `pv` - double[2][3] pv-vector
Returns:
  rpv double[2][3] returned r * pv Note: It is permissible for pv and rpv to be the same array.

  Called:

  - `jauRxp(double[][], double[])` product of r-matrix and p-vector
Since:
  Release 20101201

### jauRxr

public static double[][] jauRxr(double[][] a, double[][] b)
Multiply two r-matrices.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[3][3] first r-matrix
  `b` - double[3][3] second r-matrix
Returns:
  atb double[3][3] returned a * b Note: It is permissible to re-use the same array for any of the arguments.

  Called:

  - `jauCr(double[][], double[][])` copy r-matrix
Since:
  Release 20101201

### jauRy

public static void jauRy(double theta, double[][] r)
Rotate an r-matrix about the y-axis.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `theta` - double angle (radians) Given and returned:
  `r` - double[3][3] given & returned r-matrix Sign convention: The matrix can be used to rotate the reference frame of a vector. Calling This function with positive theta incorporates in the matrix an additional rotation, about the y-axis, anticlockwise as seen looking towards the origin from positive y.

  Called:

  - `jauIr(double[][])` initialize r-matrix to identity
  - `jauRxr(double[][], double[][])` product of two r-matrices
  - `jauCr(double[][], double[][])` copy r-matrix
Since:
  Release 20101201

### jauRz

public static void jauRz(double psi, double[][] r)
Rotate an r-matrix about the z-axis.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `psi` - double angle (radians) Given and returned:
  `r` - double[3][3] given & retunedr-matrix, rotated Sign convention: The matrix can be used to rotate the reference frame of a vector. Calling This function with positive psi incorporates in the matrix an additional rotation, about the z-axis, anticlockwise as seen looking towards the origin from positive z.

  Called:

  - `jauIr(double[][])` initialize r-matrix to identity
  - `jauRxr(double[][], double[][])` product of two r-matrices
  - `jauCr(double[][], double[][])` copy r-matrix
Since:
  Release 20101201

### jauS00

public static double jauS00(double date1, double date2, double x, double y)
The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, given the CIP's X,Y coordinates. Compatible with IAU 2000A precession-nutation.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
  `x` - double CIP coordinates (Note 3)
  `y` - double CIP coordinates (Note 3)
Returns:
  double the CIO locator s in radians (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The CIO locator s is the difference between the right ascensions of the same point in two systems: the two systems are the GCRS and the CIP,CIO, and the point is the ascending node of the CIP equator. The quantity s remains below 0.1 arcsecond throughout 1900-2100.
  3. The series used to compute s is in fact for s+XY/2, where X and Y are the x and y components of the CIP unit vector; this series is more compact than a direct series for s would be. This function requires X,Y to be supplied by the caller, who is responsible for providing values that are consistent with the supplied date.
  4. The model is consistent with the IAU 2000A precession-nutation.

  Called:

  - `jauFal03(double)` mean anomaly of the Moon
  - `jauFalp03(double)` mean anomaly of the Sun
  - `jauFaf03(double)` mean argument of the latitude of the Moon
  - `jauFad03(double)` mean elongation of the Moon from the Sun
  - `jauFaom03(double)` mean longitude of the Moon's ascending node
  - `jauFave03(double)` mean longitude of Venus
  - `jauFae03(double)` mean longitude of Earth
  - `jauFapa03(double)` general accumulated precession in longitude

  References:

  Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003) n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauS00a

public static double jauS00a(double date1, double date2)
The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2000A precession-nutation model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double the CIO locator s in radians (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The CIO locator s is the difference between the right ascensions of the same point in two systems. The two systems are the GCRS and the CIP,CIO, and the point is the ascending node of the CIP equator. The CIO locator s remains a small fraction of 1 arcsecond throughout 1900-2100.
  3. The series used to compute s is in fact for s+XY/2, where X and Y are the x and y components of the CIP unit vector; this series is more compact than a direct series for s would be. The present function uses the full IAU 2000A nutation model when predicting the CIP position. Faster results, with no significant loss of accuracy, can be obtained via the function jauS00b, which uses instead the IAU 2000B truncated model.

  Called:

  - `jauPnm00a(double, double)` classical NPB matrix, IAU 2000A
  - `jauBpn2xy(double[][])` extract CIP X,Y from the BPN matrix
  - `jauS00(double, double, double, double)` the CIO locator s, given X,Y, IAU 2000A

  References:

  Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003) n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauS00b

public static double jauS00b(double date1, double date2)
The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2000B precession-nutation model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double the CIO locator s in radians (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The CIO locator s is the difference between the right ascensions of the same point in two systems. The two systems are the GCRS and the CIP,CIO, and the point is the ascending node of the CIP equator. The CIO locator s remains a small fraction of 1 arcsecond throughout 1900-2100.
  3. The series used to compute s is in fact for s+XY/2, where X and Y are the x and y components of the CIP unit vector; this series is more compact than a direct series for s would be. The present function uses the IAU 2000B truncated nutation model when predicting the CIP position. The function jauS00a uses instead the full IAU 2000A model, but with no significant increase in accuracy and at some cost in speed.

  Called:

  - `jauPnm00b(double, double)` classical NPB matrix, IAU 2000B
  - `jauBpn2xy(double[][])` extract CIP X,Y from the BPN matrix
  - `jauS00(double, double, double, double)` the CIO locator s, given X,Y, IAU 2000A

  References:

  Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003) n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauS06

public static double jauS06(double date1, double date2, double x, double y)
The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, given the CIP's X,Y coordinates. Compatible with IAU 2006/2000A precession-nutation.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
  `x` - double CIP coordinates (Note 3)
  `y` - double CIP coordinates (Note 3)
Returns:
  double the CIO locator s in radians (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The CIO locator s is the difference between the right ascensions of the same point in two systems: the two systems are the GCRS and the CIP,CIO, and the point is the ascending node of the CIP equator. The quantity s remains below 0.1 arcsecond throughout 1900-2100.
  3. The series used to compute s is in fact for s+XY/2, where X and Y are the x and y components of the CIP unit vector; this series is more compact than a direct series for s would be. This function requires X,Y to be supplied by the caller, who is responsible for providing values that are consistent with the supplied date.
  4. The model is consistent with the "P03" precession (Capitaine et al. 2003), adopted by IAU 2006 Resolution 1, 2006, and the IAU 2000A nutation (with P03 adjustments).

  Called:

  - `jauFal03(double)` mean anomaly of the Moon
  - `jauFalp03(double)` mean anomaly of the Sun
  - `jauFaf03(double)` mean argument of the latitude of the Moon
  - `jauFad03(double)` mean elongation of the Moon from the Sun
  - `jauFaom03(double)` mean longitude of the Moon's ascending node
  - `jauFave03(double)` mean longitude of Venus
  - `jauFae03(double)` mean longitude of Earth
  - `jauFapa03(double)` general accumulated precession in longitude

  References:

  Capitaine, N., Wallace, P.T. & Chapront, J., 2003, Astron. Astrophys. 432, 355

  McCarthy, D.D., Petit, G. (eds.) 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

Since:
  Release 20101201

### jauS06a

public static double jauS06a(double date1, double date2)
The CIO locator s, positioning the Celestial Intermediate Origin on the equator of the Celestial Intermediate Pole, using the IAU 2006 precession and IAU 2000A nutation models.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double the CIO locator s in radians (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The CIO locator s is the difference between the right ascensions of the same point in two systems. The two systems are the GCRS and the CIP,CIO, and the point is the ascending node of the CIP equator. The CIO locator s remains a small fraction of 1 arcsecond throughout 1900-2100.
  3. The series used to compute s is in fact for s+XY/2, where X and Y are the x and y components of the CIP unit vector; this series is more compact than a direct series for s would be. The present function uses the full IAU 2000A nutation model when predicting the CIP position.

  Called:

  - `jauPnm06a(double, double)` classical NPB matrix, IAU 2006/2000A
  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix
  - `jauS06(double, double, double, double)` the CIO locator s, given X,Y, IAU 2006

  References:

  Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., "Expressions for the Celestial Intermediate Pole and Celestial Ephemeris Origin consistent with the IAU 2000A precession- nutation model", Astron.Astrophys. 400, 1145-1154 (2003) n.b. The celestial ephemeris origin (CEO) was renamed "celestial intermediate origin" (CIO) by IAU 2006 Resolution 2.

  Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

  McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), IERS Technical Note No. 32, BKG

  Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Since:
  Release 20101201

### jauS2c

public static double[] jauS2c(double theta, double phi)
Convert spherical coordinates to Cartesian.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `theta` - double longitude angle (radians)
  `phi` - double latitude angle (radians)
Returns:
  c double[3] returned direction cosines
Since:
  Release 20101201

### jauS2p

public static double[] jauS2p(double theta, double phi, double r)
Convert spherical polar coordinates to p-vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `theta` - double longitude angle (radians)
  `phi` - double latitude angle (radians)
  `r` - double radial distance
Returns:
  p double[3] returned Cartesian coordinates

  Called:

  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauSxp(double, double[])` multiply p-vector by scalar
Since:
  Release 20101201

### jauS2pv

public static double[][] jauS2pv(double theta, double phi, double r, double td, double pd, double rd)
Convert position/velocity from spherical to Cartesian coordinates.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `theta` - double longitude angle (radians)
  `phi` - double latitude angle (radians)
  `r` - double radial distance
  `td` - double rate of change of theta
  `pd` - double rate of change of phi
  `rd` - double rate of change of r
Returns:
  pv double[2][3] returned pv-vector
Since:
  Release 20101201

### jauS2xpv

public static double[][] jauS2xpv(double s1, double s2, double[][] pv)
Multiply a pv-vector by two scalars.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `s1` - double scalar to multiply position component by
  `s2` - double scalar to multiply velocity component by
  `pv` - double[2][3] pv-vector
Returns:
  spv double[2][3] returned pv-vector: p scaled by s1, v scaled by s2 Note: It is permissible for pv and spv to be the same array.

  Called:

  - `jauSxp(double, double[])` multiply p-vector by scalar
Since:
  Release 20101201

### jauSepp

public static double jauSepp(double[] a, double[] b)
Angular separation between two p-vectors.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `a` - double[3] first p-vector (not necessarily unit length)
  `b` - double[3] second p-vector (not necessarily unit length)
Returns:
  double angular separation (radians, always positive)

  Notes:

  1. If either vector is null, a zero result is returned.
  2. The angular separation is most simply formulated in terms of scalar product. However, this gives poor accuracy for angles near zero and pi. The present algorithm uses both cross product and dot product, to deliver full accuracy whatever the size of the angle.

  Called:

  - `jauPxp(double[], double[])` vector product of two p-vectors
  - `jauPm(double[])` modulus of p-vector
  - `jauPdp(double[], double[])` scalar product of two p-vectors
Since:
  Release 20101201

### jauSeps

public static double jauSeps(double al, double ap, double bl, double bp)
Angular separation between two sets of spherical coordinates.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `al` - double first longitude (radians)
  `ap` - double first latitude (radians)
  `bl` - double second longitude (radians)
  `bp` - double second latitude (radians)
Returns:
  double angular separation (radians)

  Called:

  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauSepp(double[], double[])` angular separation between two p-vectors
Since:
  Release 20101201

### jauSp00

public static double jauSp00(double date1, double date2)
The TIO locator s', positioning the Terrestrial Intermediate Origin on the equator of the Celestial Intermediate Pole.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: canonical model.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  double the TIO locator s' in radians (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The TIO locator s' is obtained from polar motion observations by numerical integration, and so is in essence unpredictable. However, it is dominated by a secular drift of about 47 microarcseconds per century, which is the approximation evaluated by the present function.

  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauStarpm

public static JSOFA.CatalogCoords jauStarpm(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b) throws JSOFAInternalError
Star proper motion: update star catalog data for space motion.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ra1` - double right ascension (radians), before
  `dec1` - double declination (radians), before
  `pmr1` - double RA proper motion (radians/year), before
  `pmd1` - double Dec proper motion (radians/year), before
  `px1` - double parallax (arcseconds), before
  `rv1` - double radial velocity (km/s, +ve = receding), before
  `ep1a` - double "before" epoch, part A (Note 1)
  `ep1b` - double "before" epoch, part B (Note 1)
  `ep2a` - double "after" epoch, part A (Note 1)
  `ep2b` - double "after" epoch, part B (Note 1)
Returns:
  ra2 double returned right ascension (radians), after dec2 double returned declination (radians), after pmr2 double returned RA proper motion (radians/year), after pmd2 double returned Dec proper motion (radians/year), after px2 double returned parallax (arcseconds), after rv2 double returned radial velocity (km/s, +ve = receding), after
Throws:
  `JSOFAInternalError`
Since:
  Release 20101201

### jauStarpv

public static int jauStarpv(double ra, double dec, double pmr, double pmd, double px, double rv, double[][] pv)
Convert star catalog coordinates to position+velocity vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function. Given (Note 1):

Parameters:
  `ra` - double right ascension (radians)
  `dec` - double declination (radians)
  `pmr` - double RA proper motion (radians/year)
  `pmd` - double Dec proper motion (radians/year)
  `px` - double parallax (arcseconds)
  `rv` - double radial velocity (km/s, positive = receding) Returned (Note 2):
  `pv` - double[2][3] pv-vector (au, au/day)
Returns:
  int status: 0 = no warnings 1 = distance overridden (Note 6) 2 = excessive speed (Note 7) 4 = solution didn't converge (Note 8) else = binary logical OR of the above

  Notes:

  1. The star data accepted by this function are "observables" for an imaginary observer at the solar-system barycenter. Proper motion and radial velocity are, strictly, in terms of barycentric coordinate time, TCB. For most practical applications, it is permissible to neglect the distinction between TCB and ordinary "proper" time on Earth (TT/TAI). The result will, as a rule, be limited by the intrinsic accuracy of the proper-motion and radial-velocity data; moreover, the pv-vector is likely to be merely an intermediate result, so that a change of time unit would cancel out overall. In accordance with normal star-catalog conventions, the object's right ascension and declination are freed from the effects of secular aberration. The frame, which is aligned to the catalog equator and equinox, is Lorentzian and centered on the SSB.
  2. The resulting position and velocity pv-vector is with respect to the same frame and, like the catalog coordinates, is freed from the effects of secular aberration. Should the "coordinate direction", where the object was located at the catalog epoch, be required, it may be obtained by calculating the magnitude of the position vector pv[0][0-2] dividing by the speed of light in au/day to give the light-time, and then multiplying the space velocity pv[1][0-2] by this light-time and adding the result to pv[0][0-2]. Summarizing, the pv-vector returned is for most stars almost identical to the result of applying the standard geometrical "space motion" transformation. The differences, which are the subject of the Stumpff paper referenced below, are: (i) In stars with significant radial velocity and proper motion, the constantly changing light-time distorts the apparent proper motion. Note that this is a classical, not a relativistic, effect. (ii) The transformation complies with special relativity.
  3. Care is needed with units. The star coordinates are in radians and the proper motions in radians per Julian year, but the parallax is in arcseconds; the radial velocity is in km/s, but the pv-vector result is in au and au/day.
  4. The RA proper motion is in terms of coordinate angle, not true angle. If the catalog uses arcseconds for both RA and Dec proper motions, the RA proper motion will need to be divided by cos(Dec) before use.
  5. Straight-line motion at constant speed, in the inertial frame, is assumed.
  6. An extremely small (or zero or negative) parallax is interpreted to mean that the object is on the "celestial sphere", the radius of which is an arbitrary (large) value (see the constant PXMIN). When the distance is overridden in this way, the status, initially zero, has 1 added to it.
  7. If the space velocity is a significant fraction of c (see the constant VMAX), it is arbitrarily set to zero. When this action occurs, 2 is added to the status.
  8. The relativistic adjustment involves an iterative calculation. If the process fails to converge within a set number (IMAX) of iterations, 4 is added to the status.
  9. The inverse transformation is performed by the function jauPvstar.

  Called:

  - `jauS2pv(double, double, double, double, double, double)` spherical coordinates to pv-vector
  - `jauPm(double[])` modulus of p-vector
  - `jauZp(double[])` zero p-vector
  - `jauPn(double[])` decompose p-vector into modulus and direction
  - `jauPdp(double[], double[])` scalar product of two p-vectors
  - `jauSxp(double, double[])` multiply p-vector by scalar
  - `jauPmp(double[], double[])` p-vector minus p-vector
  - `jauPpp(double[], double[])` p-vector plus p-vector

  Reference: Stumpff, P., 1985, Astron.Astrophys. 144, 232-240.

Since:
  Release 20101201

### jauSxp

public static double[] jauSxp(double s, double[] p)
Multiply a p-vector by a scalar.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `s` - double scalar
  `p` - double[3] p-vector
Returns:
  sp double[3] returned s * p
Since:
  Release 20101201

### jauSxpv

public static double[][] jauSxpv(double s, double[][] pv)
Multiply a pv-vector by a scalar.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `s` - double scalar
  `pv` - double[2][3] pv-vector
Returns:
  spv double[2][3] returned s * pv Note: It is permissible for pv and psv to be the same array

  Called:

  - `jauS2xpv(double, double, double[][])` multiply pv-vector by two scalars
Since:
  Release 20101201

### jauTaitt

public static JSOFA.JulianDate jauTaitt(double tai1, double tai2)
Time scale transformation: International Atomic Time, TAI, to Terrestrial Time, TT.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tai1` - double TAI as a 2-part Julian Date
  `tai2` - double TAI as a 2-part Julian Date
Returns:
  JulianDate TT as a 2-part Julian Date Note: tai1+tai2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tai1 is the Julian Day Number and tai2 is the fraction of a day. The returned tt1,tt2 follow suit.

  References: McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992)

Since:
  SOFA release 2010-12-01

### jauTaiut1

public static JSOFA.JulianDate jauTaiut1(double tai1, double tai2, double dta)
Time scale transformation: International Atomic Time, TAI, to Universal Time, UT1.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tai1` - double TAI as a 2-part Julian Date
  `tai2` - double TAI as a 2-part Julian Date
  `dta` - double UT1-TAI in seconds
Returns:
  UT1 as a 2-part Julian Date

  Notes:

  1. tai1+tai2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tai1 is the Julian Day Number and tai2 is the fraction of a day. The returned UT11,UT12 follow suit.
  2. The argument dta, i.e. UT1-TAI, is an observed quantity, and is available from IERS tabulations.
  Reference: Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992)
Since:
  SOFA release 2010-12-01

### jauTaiutc

public static JSOFA.JulianDate jauTaiutc(double tai1, double tai2) throws JSOFAIllegalParameter, JSOFAInternalError
Time scale transformation: International Atomic Time, TAI, to Coordinated Universal Time, UTC.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tai1` - TAI as a 2-part Julian Date (Note 1)
  `tai2` - TAI as a 2-part Julian Date (Note 1)
Returns:
  UTC as a 2-part quasi Julian Date (Notes 1-3) Returned (function value): int status: +1 = dubious year (Note 4) 0 = OK -1 = unacceptable date

  Notes:

  1. tai1+tai2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tai1 is the Julian Day Number and tai2 is the fraction of a day. The returned utc1 and utc2 form an analogous pair, except that a special convention is used, to deal with the problem of leap seconds - see the next note.
  2. JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.
  3. The function jauD2dtf can be used to transform the UTC quasi-JD into calendar date and clock time, including UTC leap second handling.
  4. The warning status "dubious year" flags UTCs that predate the introduction of the time scale and that are too far in the future to be trusted. See jauDat for further details.
  Called:
  - `jauJd2cal(double, double)` JD to Gregorian calendar
  - `jauDat(int, int, int, double)` delta(AT) = TAI-UTC
  - `jauCal2jd(int, int, int)` Gregorian calendar to JD

  References: McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992)

Throws:
  `JSOFAIllegalParameter`
  `JSOFAInternalError` - an internal error has occured
Since:
  SOFA release 2010-12-01

### jauTcbtdb

public static JSOFA.JulianDate jauTcbtdb(double tcb1, double tcb2)
Time scale transformation: Barycentric Coordinate Time, TCB, to Barycentric Dynamical Time, TDB.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tcb1` - double TCB as a 2-part Julian Date
  `tcb2` - double TCB as a 2-part Julian Date
Returns:
  TDB as a 2-part Julian Date

  Notes:

  1. tcb1+tcb2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tcb1 is the Julian Day Number and tcb2 is the fraction of a day. The returned tdb1,tdb2 follow suit.
  2. The 2006 IAU General Assembly introduced a conventional linear transformation between TDB and TCB. This transformation compensates for the drift between TCB and terrestrial time TT, and keeps TDB approximately centered on TT. Because the relationship between TT and TCB depends on the adopted solar system ephemeris, the degree of alignment between TDB and TT over long intervals will vary according to which ephemeris is used. Former definitions of TDB attempted to avoid this problem by stipulating that TDB and TT should differ only by periodic effects. This is a good description of the nature of the relationship but eluded precise mathematical formulation. The conventional linear relationship adopted in 2006 sidestepped these difficulties whilst delivering a TDB that in practice was consistent with values before that date.
  3. TDB is essentially the same as Teph, the time argument for the JPL solar system ephemerides.
  Reference: IAU 2006 Resolution B3
Since:
  SOFA release 2010-12-01

### jauTcgtt

public static JSOFA.JulianDate jauTcgtt(double tcg1, double tcg2)
Time scale transformation: Geocentric Coordinate Time, TCG, to Terrestrial Time, TT.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tcg1` - double TCG as a 2-part Julian Date
  `tcg2` - double TCG as a 2-part Julian Date
Returns:
  TT as a 2-part Julian Date Note: tcg1+tcg2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tcg1 is the Julian Day Number and tcg22 is the fraction of a day. The returned tt1,tt2 follow suit.

  References: McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),. IERS Technical Note No. 32, BKG (2004) IAU 2000 Resolution B1.9

Since:
  SOFA release 2010-12-01

### jauTdbtcb

public static JSOFA.JulianDate jauTdbtcb(double tdb1, double tdb2)
Time scale transformation: Barycentric Dynamical Time, TDB, to Barycentric Coordinate Time, TCB.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tdb1` - TDB as a 2-part Julian Date
  `tdb2` - TDB as a 2-part Julian Date
Returns:
  TCB as a 2-part Julian Date

  Notes:

  1. tdb1+tdb2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tdb1 is the Julian Day Number and tdb2 is the fraction of a day. The returned tcb1,tcb2 follow suit.
  2. The 2006 IAU General Assembly introduced a conventional linear transformation between TDB and TCB. This transformation compensates for the drift between TCB and terrestrial time TT, and keeps TDB approximately centered on TT. Because the relationship between TT and TCB depends on the adopted solar system ephemeris, the degree of alignment between TDB and TT over long intervals will vary according to which ephemeris is used. Former definitions of TDB attempted to avoid this problem by stipulating that TDB and TT should differ only by periodic effects. This is a good description of the nature of the relationship but eluded precise mathematical formulation. The conventional linear relationship adopted in 2006 sidestepped these difficulties whilst delivering a TDB that in practice was consistent with values before that date.
  3. TDB is essentially the same as Teph, the time argument for the JPL solar system ephemerides.
  Reference: IAU 2006 Resolution B3
Since:
  SOFA release 2010-12-01

### jauTdbtt

public static JSOFA.JulianDate jauTdbtt(double tdb1, double tdb2, double dtr)
Time scale transformation: Barycentric Dynamical Time, TDB, to Terrestrial Time, TT.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tdb1` - double TDB as a 2-part Julian Date
  `tdb2` - double TDB as a 2-part Julian Date
  `dtr` - double TDB-TT in seconds
Returns:
  TT as a 2-part Julian Date

  Notes:

  1. tdb1+tdb2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tdb1 is the Julian Day Number and tdb2 is the fraction of a day. The returned tt1,tt2 follow suit.
  2. The argument dtr represents the quasi-periodic component of the GR transformation between TT and TCB. It is dependent upon the adopted solar-system ephemeris, and can be obtained by numerical integration, by interrogating a precomputed time ephemeris or by evaluating a model such as that implemented in the SOFA function jauDtdb. The quantity is dominated by an annual term of 1.7 ms amplitude.
  3. TDB is essentially the same as Teph, the time argument for the JPL solar system ephemerides.

  References: McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) IAU 2006 Resolution 3

Since:
  SOFA release 2010-12-01

### jauTf2a

public static double jauTf2a(char s, int ihour, int imin, double sec) throws JSOFAIllegalParameter
Convert hours, minutes, seconds to radians.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `s` - char sign: '-' = negative, otherwise positive
  `ihour` - int hours
  `imin` - int minutes
  `sec` - double seconds
Returns:
  double angle in radians
Throws:
  `JSOFAIllegalParameter` - illegal parameter of some form 1 = ihour outside range 0-23 2 = imin outside range 0-59 3 = sec outside range 0-59.999...

  Notes:

  - The result is computed even if any of the range checks fail.
  - Negative ihour, imin and/or sec produce a warning status, but the absolute value is used in the conversion.
Since:
  SOFA release 2010-12-01

### jauTf2d

public static double jauTf2d(char s, int ihour, int imin, double sec) throws JSOFAIllegalParameter
Convert hours, minutes, seconds to days.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `s` - char sign: '-' = negative, otherwise positive
  `ihour` - int hours
  `imin` - int minutes
  `sec` - double seconds
Returns:
  double interval in days Returned (function value): int status: 0 = OK 1 = ihour outside range 0-23 2 = imin outside range 0-59 3 = sec outside range 0-59.999...

  Notes:

  1. The result is computed even if any of the range checks fail.
  2. Negative ihour, imin and/or sec produce a warning status, but the absolute value is used in the conversion.
Throws:
  `JSOFAIllegalParameter` - whne the inputs outside range - hour outside range 0-23, imin outside range 0-59, sec outside range 0-59.999...
Since:
  SOFA release 2010-12-01

### jauTr

public static double[][] jauTr(double[][] r)
Transpose an r-matrix.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `r` - double[3][3] r-matrix
Returns:
  rt double[3][3] returned transpose Note: It is permissible for r and rt to be the same array.

  Called:

  - `jauCr(double[][], double[][])` copy r-matrix
Since:
  Release 20101201

### jauTrxp

public static double[] jauTrxp(double[][] r, double[] p)
Multiply a p-vector by the transpose of an r-matrix.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `r` - double[3][3] r-matrix
  `p` - double[3] p-vector
Returns:
  trp double[3] returned r * p Note: It is permissible for p and trp to be the same array.

  Called:

  - `jauTr(double[][])` transpose r-matrix
  - `jauRxp(double[][], double[])` product of r-matrix and p-vector
Since:
  Release 20101201

### jauTrxpv

public static double[][] jauTrxpv(double[][] r, double[][] pv)
Multiply a pv-vector by the transpose of an r-matrix.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `r` - double[3][3] r-matrix
  `pv` - double[2][3] pv-vector
Returns:
  trpv double[2][3] returned r * pv Note: It is permissible for pv and trpv to be the same array.

  Called:

  - `jauTr(double[][])` transpose r-matrix
  - `jauRxpv(double[][], double[][])` product of r-matrix and pv-vector
Since:
  Release 20101201

### jauTttai

public static JSOFA.JulianDate jauTttai(double tt1, double tt2)
Time scale transformation: Terrestrial Time, TT, to International Atomic Time, TAI.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tt1` - double TT as a 2-part Julian Date
  `tt2` - double TT as a 2-part Julian Date
Returns:
  TAI as a 2-part Julian Date Returned (function value): int status: 0 = OK Note: tt1+tt2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tt1 is the Julian Day Number and tt2 is the fraction of a day. The returned tai1,tai2 follow suit.

  References: McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992)

Since:
  SOFA release 2010-12-01

### jauTttcg

public static JSOFA.JulianDate jauTttcg(double tt1, double tt2)
Time scale transformation: Terrestrial Time, TT, to Geocentric Coordinate Time, TCG.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tt1` - double TT as a 2-part Julian Date
  `tt2` - double TT as a 2-part Julian Date
Returns:
  TCG as a 2-part Julian Date Returned (function value): int status: 0 = OK Note: tt1+tt2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tt1 is the Julian Day Number and tt2 is the fraction of a day. The returned tcg1,tcg2 follow suit.

  References: McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) IAU 2000 Resolution B1.9

Since:
  SOFA release 2010-12-01

### jauTttdb

public static JSOFA.JulianDate jauTttdb(double tt1, double tt2, double dtr)
Time scale transformation: Terrestrial Time, TT, to Barycentric Dynamical Time, TDB.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tt1` - double TT as a 2-part Julian Date
  `tt2` - double TT as a 2-part Julian Date
  `dtr` - double TDB-TT in seconds
Returns:
  TDB as a 2-part Julian Date Returned (function value): int status: 0 = OK

  Notes: 1 tt1+tt2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tt1 is the Julian Day Number and tt2 is the fraction of a day. The returned tdb1,tdb2 follow suit. 2 The argument dtr represents the quasi-periodic component of the GR transformation between TT and TCB. It is dependent upon the adopted solar-system ephemeris, and can be obtained by numerical integration, by interrogating a precomputed time ephemeris or by evaluating a model such as that implemented in the SOFA function jauDtdb. The quantity is dominated by an annual term of 1.7 ms amplitude. 3 TDB is essentially the same as Teph, the time argument for the JPL solar system ephemerides.

  References: McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) IAU 2006 Resolution 3

Since:
  SOFA release 2010-12-01

### jauTtut1

public static JSOFA.JulianDate jauTtut1(double tt1, double tt2, double dt)
Time scale transformation: Terrestrial Time, TT, to Universal Time, UT1.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `tt1` - double TT as a 2-part Julian Date
  `tt2` - double TT as a 2-part Julian Date
  `dt` - double TT-UT1 in seconds
Returns:
  UT1 as a 2-part Julian Date Returned (function value): int status: 0 = OK

  Notes: 1 tt1+tt2 is Julian Date, apportioned in any convenient way between the two arguments, for example where tt1 is the Julian Day Number and tt2 is the fraction of a day. The returned ut11,ut12 follow suit. 2 The argument dt is classical Delta T. Reference: Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992)

Since:
  SOFA release 2010-12-01

### jauUt1tai

public static JSOFA.JulianDate jauUt1tai(double ut11, double ut12, double dta)
Time scale transformation: Universal Time, UT1, to International Atomic Time, TAI.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `ut11` - double UT1 as a 2-part Julian Date
  `ut12` - double UT1 as a 2-part Julian Date
  `dta` - double UT1-TAI in seconds
Returns:
  TAI as a 2-part Julian Date Returned (function value): int status: 0 = OK

  Notes: 1 ut11+ut12 is Julian Date, apportioned in any convenient way between the two arguments, for example where ut11 is the Julian Day Number and ut12 is the fraction of a day. The returned TAI1,TAI2 follow suit. 2 The argument dta, i.e. UT1-TAI, is an observed quantity, and is available from IERS tabulations. Reference: Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992)

Since:
  SOFA release 2010-12-01

### jauUt1tt

public static JSOFA.JulianDate jauUt1tt(double ut11, double ut12, double dt)
Time scale transformation: Universal Time, UT1, to Terrestrial Time, TT.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `ut11` - double UT1 as a 2-part Julian Date
  `ut12` - double UT1 as a 2-part Julian Date
  `dt` - double TT-UT1 in seconds
Returns:
  TAI as a 2-part Julian Date Returned (function value): int status: 0 = OK

  Notes: 1 ut11+ut12 is Julian Date, apportioned in any convenient way between the two arguments, for example where ut11 is the Julian Day Number and ut12 is the fraction of a day. The returned tt1,tt2 follow suit. 2 The argument dt is classical Delta T. Reference: Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992)

Since:
  SOFA release 2010-12-01

### jauUt1utc

public static JSOFA.JulianDate jauUt1utc(double ut11, double ut12, double dut1) throws JSOFAIllegalParameter, JSOFAInternalError
Time scale transformation: Universal Time, UT1, to Coordinated Universal Time, UTC.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `ut11` - double UT1 as a 2-part Julian Date (Note 1)
  `ut12` - double UT1 as a 2-part Julian Date (Note 1)
  `dut1` - double Delta UT1: UT1-UTC in seconds (Note 2)
Returns:
  JulianDate UTC as a 2-part quasi Julian Date (Notes 3,4) Returned (function value): int status: +1 = dubious year (Note 5) 0 = OK -1 = unacceptable date

  Notes:

  1. ut11+ut12 is Julian Date, apportioned in any convenient way between the two arguments, for example where ut11 is the Julian Day Number and ut12 is the fraction of a day. The returned utc1 and utc2 form an analogous pair, except that a special convention is used, to deal with the problem of leap seconds - see Note 3.
  2. Delta UT1 can be obtained from tabulations provided by the International Earth Rotation and Reference Systems Service. The value changes abruptly by 1s at a leap second; however, close to a leap second the algorithm used here is tolerant of the "wrong" choice of value being made.
  3. JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the returned quasi JD day UTC1+UTC2 represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.
  4. The function jauD2dtf can be used to transform the UTC quasi-JD into calendar date and clock time, including UTC leap second handling.
  5. The warning status "dubious year" flags UTCs that predate the introduction of the time scale and that are too far in the future to be trusted. See jauDat for further details.
  Called:
  - `jauJd2cal(double, double)` JD to Gregorian calendar
  - `jauDat(int, int, int, double)` delta(AT) = TAI-UTC
  - `jauCal2jd(int, int, int)` Gregorian calendar to JD

  References:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

  Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992)

Throws:
  `JSOFAIllegalParameter` - unacceptable date
  `JSOFAInternalError` - an internal error has occured
Since:
  SOFA release 2010-12-01

### jauUtctai

public static JSOFA.JulianDate jauUtctai(double utc1, double utc2) throws JSOFAIllegalParameter, JSOFAInternalError
Time scale transformation: Coordinated Universal Time, UTC, to International Atomic Time, TAI.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `utc1` - double UTC as a 2-part quasi Julian Date (Notes 1-4)
  `utc2` - double UTC as a 2-part quasi Julian Date (Notes 1-4)
Returns:
  JulianDate TAI as a 2-part Julian Date (Note 5) Returned (function value): int status: +1 = dubious year (Note 3) 0 = OK -1 = unacceptable date

  Notes:

  1. utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.
  2. JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.
  3. The warning status "dubious year" flags UTCs that predate the introduction of the time scale and that are too far in the future to be trusted. See jauDat for further details.
  4. The function jauDtf2d converts from calendar date and time of day into 2-part Julian Date, and in the case of UTC implements the leap-second-ambiguity convention described above.
  5. The returned TAI1,TAI2 are such that their sum is the TAI Julian Date.
  Called:
  - `jauJd2cal(double, double)` JD to Gregorian calendar
  - `jauDat(int, int, int, double)` delta(AT) = TAI-UTC
  - `jauCal2jd(int, int, int)` Gregorian calendar to JD

  References: McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992)

Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unaccaptable date
Since:
  SOFA release 2010-12-01

### jauUtcut1

public static JSOFA.JulianDate jauUtcut1(double utc1, double utc2, double dut1) throws JSOFAIllegalParameter, JSOFAInternalError
Time scale transformation: Coordinated Universal Time, UTC, to Universal Time, UT1.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: canonical.

Parameters:
  `utc1` - double UTC as a 2-part quasi Julian Date (Notes 1-4)
  `utc2` - double UTC as a 2-part quasi Julian Date (Notes 1-4)
  `dut1` - double Delta UT1 = UT1-UTC in seconds (Note 5)
Returns:
  UT1 as a 2-part Julian Date (Note 6) Returned (function value): int status: +1 = dubious year (Note 7) 0 = OK -1 = unacceptable date

  Notes:

  1. utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.
  2. JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.
  3. The warning status "dubious year" flags UTCs that predate the introduction of the time scale and that are too far in the future to be trusted. See jauDat for further details.
  4. The function jauDtf2d converts from calendar date and time of day into 2-part Julian Date, and in the case of UTC implements the leap-second-ambiguity convention described above.
  5. Delta UT1 can be obtained from tabulations provided by the International Earth Rotation and Reference Systems Service. It It is the caller's responsibility to supply a DUT argument containing the UT1-UTC value that matches the given UTC.
  6. The returned ut11,ut12 are such that their sum is the UT1 Julian Date.
  7. The warning status "dubious year" flags UTCs that predate the introduction of the time scale and that are too far in the future to be trusted. See jauDat for further details.

  References: McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004) Explanatory Supplement to the Astronomical Almanac, P. Kenneth Seidelmann (ed), University Science Books (1992) Called:

  - `jauJd2cal(double, double)` JD to Gregorian calendar
  - `jauDat(int, int, int, double)` delta(AT) = TAI-UTC
  - `jauUtctai(double, double)` UTC to TAI
  - `jauTaiut1(double, double, double)` TAI to UT1
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unaccepatble date
Since:
  SOFA release 2010-12-01

### jauXy06

public static JSOFA.CelestialIntermediatePole jauXy06(double date1, double date2)

### jauXys00a

public static JSOFA.ICRFrame jauXys00a(double date1, double date2)
For a given TT date, compute the X,Y coordinates of the Celestial Intermediate Pole and the CIO locator s, using the IAU 2000A precession-nutation model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  x double returned Celestial Intermediate Pole (Note 2) y double returned Celestial Intermediate Pole (Note 2) s double returned the CIO locator s (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.
  3. The CIO locator s (in radians) positions the Celestial Intermediate Origin on the equator of the CIP.
  4. A faster, but slightly less accurate, result (about 1 mas for X,Y), can be obtained by using instead the jauXys00b function.

  Called:

  - `jauPnm00a(double, double)` classical NPB matrix, IAU 2000A
  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix
  - `jauS00(double, double, double, double)` the CIO locator s, given X,Y, IAU 2000A

  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauXys00b

public static JSOFA.ICRFrame jauXys00b(double date1, double date2)
For a given TT date, compute the X,Y coordinates of the Celestial Intermediate Pole and the CIO locator s, using the IAU 2000B precession-nutation model.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  x double returned Celestial Intermediate Pole (Note 2) y double returned Celestial Intermediate Pole (Note 2) s double returned the CIO locator s (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.
  3. The CIO locator s (in radians) positions the Celestial Intermediate Origin on the equator of the CIP.
  4. The present function is faster, but slightly less accurate (about 1 mas in X,Y), than the jauXys00a function.

  Called:

  - `jauPnm00b(double, double)` classical NPB matrix, IAU 2000B
  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix
  - `jauS00(double, double, double, double)` the CIO locator s, given X,Y, IAU 2000A

  Reference:

  McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)

Since:
  Release 20101201

### jauXys06a

public static JSOFA.ICRFrame jauXys06a(double date1, double date2)
For a given TT date, compute the X,Y coordinates of the Celestial Intermediate Pole and the CIO locator s, using the IAU 2006 precession and IAU 2000A nutation models.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian Date (Note 1)
  `date2` - double TT as a 2-part Julian Date (Note 1)
Returns:
  x double returned Celestial Intermediate Pole (Note 2) y double returned Celestial Intermediate Pole (Note 2) s double returned the CIO locator s (Note 2)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The Celestial Intermediate Pole coordinates are the x,y components of the unit vector in the Geocentric Celestial Reference System.
  3. The CIO locator s (in radians) positions the Celestial Intermediate Origin on the equator of the CIP.
  4. Series-based solutions for generating X and Y are also available: see Capitaine & Wallace (2006) and jauXy06.

  Called:

  - `jauPnm06a(double, double)` classical NPB matrix, IAU 2006/2000A
  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix
  - `jauS06(double, double, double, double)` the CIO locator s, given X,Y, IAU 2006

  References:

  Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855

  Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981

Since:
  Release 20101201

### jauZp

public static void jauZp(double[] p)
Zero a p-vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `p` - double[3] returned p-vector
Since:
  Release 20101201

### jauZp

public static double[] jauZp()
Return Zero p-vector. This is a convenience method that is an overload of the official SOFA API `jauZp(double[])` that does not require the vector to be passed in.

Returns:
  double[3] a zero vector.

### jauZpv

public static void jauZpv(double[][] pv)
Zero a pv-vector.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `pv` - double[2][3] returned pv-vector

  Called:

  - `jauZp(double[])` zero p-vector
Since:
  Release 20101201

### jauZpv

public static double[][] jauZpv()
A Zero pv-vector. This is a convenience method that is an overload of the official SOFA API `jauZpv(double[][])` that does not require the vector to be passed in.

Returns:
  pv double[2][3] pv-vector

### jauZr

public static void jauZr(double[][] r)
Initialize an r-matrix to the null matrix.

This function is derived from the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: vector/matrix support function.

Parameters:
  `r` - double[3][3] returned r-matrix
Since:
  Release 20101201

### jauZr

public static double[][] jauZr()
Initialize an r-matrix to the null matrix. This is a convenience method that is an overload of the official SOFA API `jauZr(double[][])` that does not require the vector to be passed in.

Returns:
  null r matrix.

### jauAb

public static double[] jauAb(double[] pnat, double[] v, double s, double bm1)
Apply aberration to transform natural direction into proper direction.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `pnat` - double[3] natural direction to the source (unit vector)
  `v` - double[3] observer barycentric velocity in units of c
  `s` - double distance between the Sun and the observer (au)
  `bm1` - double sqrt(1-|v|^2): reciprocal of Lorenz factor
Returns:
  ppr double[3] Returned proper direction to source (unit vector)

  Notes:

  1. The algorithm is based on Expr. (7.40) in the Explanatory Supplement (Urban & Seidelmann 2013), but with the following changes:

     o Rigorous rather than approximate normalization is applied.

     o The gravitational potential term from Expr. (7) in Klioner (2003) is added, taking into account only the Sun's contribution. This has a maximum effect of about 0.4 microarcsecond.

  2. In almost all cases, the maximum accuracy will be limited by the supplied velocity. For example, if the SOFA iauEpv00 function is used, errors of up to 5 microarcseconds could occur.

  References:

  - Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013).
  - Klioner, Sergei A., "A practical relativistic model for micro- arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003).
  Called:
  - `jauPdp(double[], double[])` scalar product of two p-vectors
Since:
  JSOFA release 20131202

### jauApcg

public static void jauApcg(double date1, double date2, double[][] ebpv, double[] ehp, JSOFA.Astrom astrom)
For a geocentric observer, prepare star-independent astrometry parameters for transformations between ICRS and GCRS coordinates. The Earth ephemeris is supplied by the caller. The parameters produced by this function are required in the parallax, light deflection and aberration parts of the astrometric transformation chain.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB as a 2-part...
  `date2` - double ...Julian Date (Note 1)
  `ebpv` - double[2][3] Earth barycentric pos/vel (au, au/day)
  `ehp` - double[3] Earth heliocentric position (au)
  `astrom` - jauASTROM Returned star-independent astrometry parameters:

  Notes:

  1. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

                    date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

     TT can be used instead of TDB without any significant impact on accuracy.

  2. All the vectors are with respect to BCRS axes.
  3. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed`.

     The various functions support different classes of observer and portions of the transformation chain:

                   functions         observer        transformation

                iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                iauApci iauApci13    terrestrial     ICRS <-> CIRS
                iauApco iauApco13    terrestrial     ICRS <-> observed
                iauApcs iauApcs13    space           ICRS <-> GCRS
                iauAper iauAper13    terrestrial     update Earth rotation
                iauApio iauApio13    terrestrial     CIRS <-> observed

     Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

     The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  4. The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.
  Called:
  - `jauApcs(double, double, double[][], double[][], double[], JSOFA.Astrom)` astrometry parameters, ICRS-GCRS, space observer
Since:
  JSOFA release 20131202

### jauApcg13

public static void jauApcg13(double date1, double date2, JSOFA.Astrom astrom)
For a geocentric observer, prepare star-independent astrometry parameters for transformations between ICRS and GCRS coordinates. The caller supplies the date, and SOFA models are used to predict the Earth ephemeris. The parameters produced by this function are required in the parallax, light deflection and aberration parts of the astrometric transformation chain.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB as a 2-part...
  `date2` - double ...Julian Date (Note 1)
  `astrom` - Returned star-independent astrometry parameters:

  Notes:

  1. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

     TT can be used instead of TDB without any significant impact on accuracy.

  2. All the vectors are with respect to BCRS axes.
  3. In cases where the caller wishes to supply his own Earth ephemeris, the function iauApcg can be used instead of the present function.
  4. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed`.

     The various functions support different classes of observer and portions of the transformation chain:

                   functions         observer        transformation

                iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                iauApci iauApci13    terrestrial     ICRS <-> CIRS
                iauApco iauApco13    terrestrial     ICRS <-> observed
                iauApcs iauApcs13    space           ICRS <-> GCRS
                iauAper iauAper13    terrestrial     update Earth rotation
                iauApio iauApio13    terrestrial     CIRS <-> observed

     Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

     The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  5. The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.
  Called:
  - `jauEpv00(double, double, double[][], double[][])` Earth position and velocity
  - `jauApcg(double, double, double[][], double[], JSOFA.Astrom)` astrometry parameters, ICRS-GCRS, geocenter
Since:
  JSOFA release 20131202

### jauApci

public static void jauApci(double date1, double date2, double[][] ebpv, double[] ehp, double x, double y, double s, JSOFA.Astrom astrom)
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and geocentric CIRS coordinates. The Earth ephemeris and CIP/CIO are supplied by the caller. The parameters produced by this function are required in the parallax, light deflection, aberration, and bias-precession-nutation parts of the astrometric transformation chain.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB as a 2-part...
  `date2` - double ...Julian Date (Note 1)
  `ebpv` - double[2][3] Earth barycentric position/velocity (au, au/day)
  `ehp` - double[3] Earth heliocentric position (au)
  `x` - double CIP X,Y (components of unit vector)
  `y` - double CIP X,Y (components of unit vector)
  `s` - double the CIO locator s (radians)
  `astrom` - Returned star-independent astrometry parameters:

  Notes:

  1. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

     TT can be used instead of TDB without any significant impact on accuracy.

  2. All the vectors are with respect to BCRS axes.
  3. In cases where the caller does not wish to provide the Earth ephemeris and CIP/CIO, the function iauApci13 can be used instead of the present function. This computes the required quantities using other SOFA functions.
  4. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed.`

     The various functions support different classes of observer and portions of the transformation chain:

                   functions         observer        transformation

                iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                iauApci iauApci13    terrestrial     ICRS <-> CIRS
                iauApco iauApco13    terrestrial     ICRS <-> observed
                iauApcs iauApcs13    space           ICRS <-> GCRS
                iauAper iauAper13    terrestrial     update Earth rotation
                iauApio iauApio13    terrestrial     CIRS <-> observed

     Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

     The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  5. The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.
  Called:
  - `jauApcg(double, double, double[][], double[], JSOFA.Astrom)` astrometry parameters, ICRS-GCRS, geocenter
  - `jauC2ixys(double, double, double)` celestial-to-intermediate matrix, given X,Y and s
Since:
  JSOFA release 20131202

### jauApci13

public static double jauApci13(double date1, double date2, JSOFA.Astrom astrom)
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and geocentric CIRS coordinates. The caller supplies the date, and SOFA models are used to predict the Earth ephemeris and CIP/CIO. The parameters produced by this function are required in the parallax, light deflection, aberration, and bias-precession-nutation parts of the astrometric transformation chain.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB as a 2-part...
  `date2` - double ...Julian Date (Note 1)
  `astrom` - jauASTROM Returned star-independent astrometry parameters: pmt double Returned PM time interval (SSB, Julian years) eb double[3] Returned SSB to observer (vector, au) eh double[3] Returned Sun to observer (unit vector) em double Returned distance from Sun to observer (au) v double[3] Returned barycentric observer velocity (vector, c) bm1 double Returned sqrt(1-|v|^2): reciprocal of Lorenz factor bpn double[3][3] Returned bias-precession-nutation matrix along double Returned unchanged xpl double Returned unchanged ypl double Returned unchanged sphi double Returned unchanged cphi double Returned unchanged diurab double Returned unchanged eral double Returned unchanged refa double Returned unchanged refb double Returned unchanged
Returns:
  double* Returned equation of the origins (ERA-GST)

  Notes:

  1. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

     TT can be used instead of TDB without any significant impact on accuracy.

  2. All the vectors are with respect to BCRS axes.
  3. In cases where the caller wishes to supply his own Earth ephemeris and CIP/CIO, the function iauApci can be used instead of the present function.
  4. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed.`

     The various functions support different classes of observer and portions of the transformation chain:

                   functions         observer        transformation

                iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                iauApci iauApci13    terrestrial     ICRS <-> CIRS
                iauApco iauApco13    terrestrial     ICRS <-> observed
                iauApcs iauApcs13    space           ICRS <-> GCRS
                iauAper iauAper13    terrestrial     update Earth rotation
                iauApio iauApio13    terrestrial     CIRS <-> observed

     Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

     The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  5. The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.
  Called:
  - `jauEpv00(double, double, double[][], double[][])` Earth position and velocity
  - `jauPnm06a(double, double)` classical NPB matrix, IAU 2006/2000A
  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix
  - `jauS06(double, double, double, double)` the CIO locator s, given X,Y, IAU 2006
  - `jauApci(double, double, double[][], double[], double, double, double, JSOFA.Astrom)` astrometry parameters, ICRS-CIRS
  - `jauEors(double[][], double)` equation of the origins, given NPB matrix and s
Since:
  JSOFA release 20131202

### jauApco

public static void jauApco(double date1, double date2, double[][] ebpv, double[] ehp, double x, double y, double s, double theta, double elong, double phi, double hm, double xp, double yp, double sp, double refa, double refb, JSOFA.Astrom astrom) throws JSOFAIllegalParameter, JSOFAInternalError
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and observed coordinates. The caller supplies the Earth ephemeris, the Earth rotation information and the refraction constants as well as the site coordinates.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB as a 2-part...
  `date2` - double ...Julian Date (Note 1)
  `ebpv` - double[2][3] Earth barycentric PV (au, au/day, Note 2)
  `ehp` - double[3] Earth heliocentric P (au, Note 2)
  `x` - double CIP X,Y (components of unit vector)
  `y` - double CIP X,Y (components of unit vector)
  `s` - double the CIO locator s (radians)
  `theta` - double Earth rotation angle (radians)
  `elong` - double longitude (radians, east +ve, Note 3)
  `phi` - double latitude (geodetic, radians, Note 3)
  `hm` - double height above ellipsoid (m, geodetic, Note 3)
  `xp` - double polar motion coordinates (radians, Note 4)
  `yp` - double polar motion coordinates (radians, Note 4)
  `sp` - double the TIO locator s' (radians, Note 4)
  `refa` - double refraction constant A (radians, Note 5)
  `refb` - double refraction constant B (radians, Note 5)
  `astrom` - Returned star-independent astrometry parameters:

  Notes:

  1. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

                     date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

     TT can be used instead of TDB without any significant impact on accuracy.

  2. The vectors eb, eh, and all the astrom vectors, are with respect to BCRS axes.
  3. The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN CONVENTION: the longitude required by the present function is right-handed, i.e. east-positive, in accordance with geographical convention. The adjusted longitude stored in the astrom array takes into account the TIO locator and polar motion.
  4. xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions), measured along the meridians 0 and 90 deg west respectively. sp is the TIO locator s', in radians, which positions the Terrestrial Intermediate Origin on the equator. For many applications, xp, yp and (especially) sp can be set to zero.

     Internally, the polar motion is stored in a form rotated onto the local meridian.

  5. The refraction constants refa and refb are for use in a dZ = A*tan(Z)+B*tan^3(Z) model, where Z is the observed (i.e. refracted) zenith distance and dZ is the amount of refraction.
  6. It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.
  7. In cases where the caller does not wish to provide the Earth Ephemeris, the Earth rotation information and refraction constants, the function iauApco13 can be used instead of the present function. This starts from UTC and weather readings etc. and computes suitable values using other SOFA functions.
  8. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed.`

     The various functions support different classes of observer and portions of the transformation chain:

                   functions         observer        transformation

                iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                iauApci iauApci13    terrestrial     ICRS <-> CIRS
                iauApco iauApco13    terrestrial     ICRS <-> observed
                iauApcs iauApcs13    space           ICRS <-> GCRS
                iauAper iauAper13    terrestrial     update Earth rotation
                iauApio iauApio13    terrestrial     CIRS <-> observed

     Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

     The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  9. The context structure astrom produced by this function is used by iauAtioq, iauAtoiq, iauAtciq* and iauAticq*.
  Called:
  - `jauAper(double, JSOFA.Astrom)` astrometry parameters: update ERA
  - `jauC2ixys(double, double, double)` celestial-to-intermediate matrix, given X,Y and s
  - `jauPvtob(double, double, double, double, double, double, double)` position/velocity of terrestrial station
  - `jauTrxpv(double[][], double[][])` product of transpose of r-matrix and pv-vector
  - `jauApcs(double, double, double[][], double[][], double[], JSOFA.Astrom)` astrometry parameters, ICRS-GCRS, space observer
  - `jauCr(double[][], double[][])` copy r-matrix
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unacceptable date
Since:
  JSOFA release 20131202

### jauApco13

public static double jauApco13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, JSOFA.Astrom astrom) throws JSOFAIllegalParameter, JSOFAInternalError
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between ICRS and observed coordinates. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength, and SOFA models are used to obtain the Earth ephemeris, CIP/CIO and refraction constants. The parameters produced by this function are required in the parallax, light deflection, aberration, and bias-precession-nutation parts of the ICRS/CIRS transformations.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `utc1` - double UTC as a 2-part...
  `utc2` - double ...quasi Julian Date (Notes 1,2)
  `dut1` - double UT1-UTC (seconds, Note 3)
  `elong` - double longitude (radians, east +ve, Note 4)
  `phi` - double latitude (geodetic, radians, Note 4)
  `hm` - double height above ellipsoid (m, geodetic, Notes 4,6)
  `xp` - double polar motion coordinates (radians, Note 5)
  `yp` - double polar motion coordinates (radians, Note 5)
  `phpa` - double pressure at the observer (hPa = mB, Note 6)
  `tc` - double ambient temperature at the observer (deg C)
  `rh` - double relative humidity at the observer (range 0-1)
  `wl` - double wavelength (micrometers, Note 7)
  `astrom` - Returned star-independent astrometry parameters:
Returns:
  double Returned equation of the origins (ERA-GST)
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - int status: Returned +1 = dubious year (Note 2) 0 = Returned OK -1 = Returned unacceptable date

  Notes:

  1. utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

     However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

     Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

  2. The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.
  3. UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.
  4. The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.
  5. The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.

     Internally, the polar motion is stored in a form rotated onto the local meridian.

  6. If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

     hm = -29.3 * tsl * log ( phpa / 1013.25 );

     where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

     phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

     Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

  7. The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).
  8. It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.
  9. In cases where the caller wishes to supply his own Earth ephemeris, Earth rotation information and refraction constants, the function iauApco can be used instead of the present function.
  10. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed.`

      The various functions support different classes of observer and portions of the transformation chain:

                    functions         observer        transformation

                 iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                 iauApci iauApci13    terrestrial     ICRS <-> CIRS
                 iauApco iauApco13    terrestrial     ICRS <-> observed
                 iauApcs iauApcs13    space           ICRS <-> GCRS
                 iauAper iauAper13    terrestrial     update Earth rotation
                 iauApio iauApio13    terrestrial     CIRS <-> observed

      Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

      The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  11. The context structure astrom produced by this function is used by iauAtioq, iauAtoiq, iauAtciq* and iauAticq*.
  Called:
  - `jauUtctai(double, double)` UTC to TAI
  - `jauTaitt(double, double)` TAI to TT
  - `jauUtcut1(double, double, double)` UTC to UT1
  - `jauEpv00(double, double, double[][], double[][])` Earth position and velocity
  - `jauPnm06a(double, double)` classical NPB matrix, IAU 2006/2000A
  - `jauBpn2xy(double[][])` extract CIP X,Y coordinates from NPB matrix
  - `jauS06(double, double, double, double)` the CIO locator s, given X,Y, IAU 2006
  - `jauEra00(double, double)` Earth rotation angle, IAU 2000
  - `jauSp00(double, double)` the TIO locator s', IERS 2000
  - `jauRefco(double, double, double, double)` refraction constants for given ambient conditions
  - `jauApco(double, double, double[][], double[], double, double, double, double, double, double, double, double, double, double, double, double, JSOFA.Astrom)` astrometry parameters, ICRS-observed
  - `jauEors(double[][], double)` equation of the origins, given NPB matrix and s
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unacceptable date.
Since:
  JSOFA release 20131202

### jauApcs

public static void jauApcs(double date1, double date2, double[][] pv, double[][] ebpv, double[] ehp, JSOFA.Astrom astrom)
For an observer whose geocentric position and velocity are known, prepare star-independent astrometry parameters for transformations between ICRS and GCRS. The Earth ephemeris is supplied by the caller. The parameters produced by this function are required in the space motion, parallax, light deflection and aberration parts of the astrometric transformation chain.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB as a 2-part...
  `date2` - double ...Julian Date (Note 1)
  `pv` - double[2][3] observer's geocentric pos/vel (m, m/s)
  `ebpv` - double[2][3] Earth barycentric PV (au, au/day)
  `ehp` - double[3] Earth heliocentric P (au)
  `astrom` - Returned star-independent astrometry parameters:

  Notes:

  1. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

                  date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

     TT can be used instead of TDB without any significant impact on accuracy.

  2. All the vectors are with respect to BCRS axes.
  3. Providing separate arguments for (i) the observer's geocentric position and velocity and (ii) the Earth ephemeris is done for convenience in the geocentric, terrestrial and Earth orbit cases. For deep space applications it maybe more convenient to specify zero geocentric position and velocity and to supply the observer's position and velocity information directly instead of with respect to the Earth. However, note the different units: m and m/s for the geocentric vectors, au and au/day for the heliocentric and barycentric vectors.
  4. In cases where the caller does not wish to provide the Earth ephemeris, the function iauApcs13 can be used instead of the present function. This computes the Earth ephemeris using the SOFA function iauEpv00.
  5. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed.`

     The various functions support different classes of observer and portions of the transformation chain:

                   functions         observer        transformation

                iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                iauApci iauApci13    terrestrial     ICRS <-> CIRS
                iauApco iauApco13    terrestrial     ICRS <-> observed
                iauApcs iauApcs13    space           ICRS <-> GCRS
                iauAper iauAper13    terrestrial     update Earth rotation
                iauApio iauApio13    terrestrial     CIRS <-> observed

     Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

     The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  6. The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.
  Called:
  - `jauCp(double[], double[])` copy p-vector
  - `jauPm(double[])` modulus of p-vector
  - `jauPn(double[])` decompose p-vector into modulus and direction
  - `jauIr(double[][])` initialize r-matrix to identity
Since:
  JSOFA release 20131202

### jauApcs13

public static void jauApcs13(double date1, double date2, double[][] pv, JSOFA.Astrom astrom)
For an observer whose geocentric position and velocity are known, prepare star-independent astrometry parameters for transformations between ICRS and GCRS. The Earth ephemeris is from SOFA models. The parameters produced by this function are required in the space motion, parallax, light deflection and aberration parts of the astrometric transformation chain.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TDB as a 2-part...
  `date2` - double ...Julian Date (Note 1)
  `pv` - double[2][3] observer's geocentric pos/vel (Note 3)
  `astrom` - Returned star-independent astrometry parameters:

  Notes:

  1. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

                    date1          date2

                  2450123.7           0.0       (JD method)
                  2451545.0       -1421.3       (J2000 method)
                  2400000.5       50123.2       (MJD method)
                  2450123.5           0.2       (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

     TT can be used instead of TDB without any significant impact on accuracy.

  2. All the vectors are with respect to BCRS axes.
  3. The observer's position and velocity pv are geocentric but with respect to BCRS axes, and in units of m and m/s. No assumptions are made about proximity to the Earth, and the function can be used for deep space applications as well as Earth orbit and terrestrial.
  4. In cases where the caller wishes to supply his own Earth ephemeris, the function iauApcs can be used instead of the present function.
  5. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed.`

     The various functions support different classes of observer and portions of the transformation chain:

                   functions         observer        transformation

                iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                iauApci iauApci13    terrestrial     ICRS <-> CIRS
                iauApco iauApco13    terrestrial     ICRS <-> observed
                iauApcs iauApcs13    space           ICRS <-> GCRS
                iauAper iauAper13    terrestrial     update Earth rotation
                iauApio iauApio13    terrestrial     CIRS <-> observed

     Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

     The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  6. The context structure astrom produced by this function is used by iauAtciq* and iauAticq*.
  Called:
  - `jauEpv00(double, double, double[][], double[][])` Earth position and velocity
  - `jauApcs(double, double, double[][], double[][], double[], JSOFA.Astrom)` astrometry parameters, ICRS-GCRS, space observer
Since:
  JSOFA release 20131202

### jauAper

public static void jauAper(double theta, JSOFA.Astrom astrom)
In the star-independent astrometry parameters, update only the Earth rotation angle, supplied by the caller explicitly.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `theta` - double Earth rotation angle (radians, Note 2)
  `astrom` - Astrom star-independent astrometry parameters:`pmt double not used eb double[3] not used eh double[3] not used em double not used v double[3] not used bm1 double not used bpn double[3][3] not used along double longitude + s' (radians) xpl double not used ypl double not used sphi double not used cphi double not used diurab double not used eral double not used refa double not used refb double not used` astrom Returned star-independent astrometry parameters:

  Notes:

  1. This function exists to enable sidereal-tracking applications to avoid wasteful recomputation of the bulk of the astrometry parameters: only the Earth rotation is updated.
  2. For targets expressed as equinox based positions, such as classical geocentric apparent (RA,Dec), the supplied theta can be Greenwich apparent sidereal time rather than Earth rotation angle.
  3. The function iauAper13 can be used instead of the present function, and starts from UT1 rather than ERA itself.
  4. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed.`

     The various functions support different classes of observer and portions of the transformation chain:

                   functions         observer        transformation

                iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                iauApci iauApci13    terrestrial     ICRS <-> CIRS
                iauApco iauApco13    terrestrial     ICRS <-> observed
                iauApcs iauApcs13    space           ICRS <-> GCRS
                iauAper iauAper13    terrestrial     update Earth rotation
                iauApio iauApio13    terrestrial     CIRS <-> observed

     Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

     The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

Since:
  JSOFA release 20131202

### jauAper13

public static void jauAper13(double ut11, double ut12, JSOFA.Astrom astrom)
In the star-independent astrometry parameters, update only the Earth rotation angle. The caller provides UT1, (n.b. not UTC).

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ut11` - double UT1 as a 2-part...
  `ut12` - double ...Julian Date (Note 1)
  `astrom` - star-independent astrometry parameters: pmt double not used eb double[3] not used eh double[3] not used em double not used v double[3] not used bm1 double not used bpn double[3][3] not used along double longitude + s' (radians) xpl double not used ypl double not used sphi double not used cphi double not used diurab double not used eral double not used refa double not used refb double not used
  `astrom` - Returned star-independent astrometry parameters:

  Notes:

  1. The UT1 date (n.b. not UTC) ut11+ut12 is a Julian Date, apportioned in any convenient way between the arguments ut11 and ut12. For example, JD(UT1)=2450123.7 could be expressed in any of these ways, among others:

     ut11 ut12 2450123.7 0.0 (JD method) 2451545.0 -1421.3 (J2000 method) 2400000.5 50123.2 (MJD method) 2450123.5 0.2 (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 and MJD methods are good compromises between resolution and convenience. The date & time method is best matched to the algorithm used: maximum precision is delivered when the ut11 argument is for 0hrs UT1 on the day in question and the ut12 argument lies in the range 0 to 1, or vice versa.

  2. If the caller wishes to provide the Earth rotation angle itself, the function iauAper can be used instead. One use of this technique is to substitute Greenwich apparent sidereal time and thereby to support equinox based transformations directly.
  3. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed.`

     The various functions support different classes of observer and portions of the transformation chain:

                   functions         observer        transformation

                <p>iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                iauApci iauApci13    terrestrial     ICRS <-> CIRS
                iauApco iauApco13    terrestrial     ICRS <-> observed
                iauApcs iauApcs13    space           ICRS <-> GCRS
                iauAper iauAper13    terrestrial     update Earth rotation
                iauApio iauApio13    terrestrial     CIRS <-> observed

     Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

     The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  Called:
  - `jauAper(double, JSOFA.Astrom)` astrometry parameters: update ERA
  - `jauEra00(double, double)` Earth rotation angle, IAU 2000
Since:
  JSOFA release 20131202

### jauApio

public static void jauApio(double sp, double theta, double elong, double phi, double hm, double xp, double yp, double refa, double refb, JSOFA.Astrom astrom) throws JSOFAIllegalParameter, JSOFAInternalError
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between CIRS and observed coordinates. The caller supplies the Earth orientation information and the refraction constants as well as the site coordinates.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `sp` - double the TIO locator s' (radians, Note 1)
  `theta` - double Earth rotation angle (radians)
  `elong` - double longitude (radians, east +ve, Note 2)
  `phi` - double geodetic latitude (radians, Note 2)
  `hm` - double height above ellipsoid (m, geodetic Note 2)
  `xp` - double polar motion coordinates (radians, Note 3)
  `yp` - double polar motion coordinates (radians, Note 3)
  `refa` - double refraction constant A (radians, Note 4)
  `refb` - double refraction constant B (radians, Note 4)
  `astrom` - `JSOFA.Astrom` Returned star-independent astrometry parameters:

  Notes:

  1. sp, the TIO locator s', is a tiny quantity needed only by the most precise applications. It can either be set to zero or predicted using the SOFA function iauSp00.
  2. The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.
  3. The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.

     Internally, the polar motion is stored in a form rotated onto the local meridian.

  4. The refraction constants refa and refb are for use in a dZ = A*tan(Z)+B*tan^3(Z) model, where Z is the observed (i.e. refracted) zenith distance and dZ is the amount of refraction.
  5. It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.
  6. In cases where the caller does not wish to provide the Earth rotation information and refraction constants, the function iauApio13 can be used instead of the present function. This starts from UTC and weather readings etc. and computes suitable values using other SOFA functions.
  7. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed.`

     The various functions support different classes of observer and portions of the transformation chain:

                   functions         observer        transformation

                iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                iauApci iauApci13    terrestrial     ICRS <-> CIRS
                iauApco iauApco13    terrestrial     ICRS <-> observed
                iauApcs iauApcs13    space           ICRS <-> GCRS
                iauAper iauAper13    terrestrial     update Earth rotation
                iauApio iauApio13    terrestrial     CIRS <-> observed

     Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

     The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  8. The context structure astrom produced by this function is used by iauAtioq and iauAtoiq.
  Called:
  - `jauPvtob(double, double, double, double, double, double, double)` position/velocity of terrestrial station
  - `jauAper(double, JSOFA.Astrom)` astrometry parameters: update ERA
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unacceptable date.
Since:
  JSOFA release 20131202

### jauApio13

public static void jauApio13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, JSOFA.Astrom astrom) throws JSOFAIllegalParameter, JSOFAInternalError
For a terrestrial observer, prepare star-independent astrometry parameters for transformations between CIRS and observed coordinates. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `utc1` - double UTC as a 2-part...
  `utc2` - double ...quasi Julian Date (Notes 1,2)
  `dut1` - double UT1-UTC (seconds)
  `elong` - double longitude (radians, east +ve, Note 3)
  `phi` - double geodetic latitude (radians, Note 3)
  `hm` - double height above ellipsoid (m, geodetic Notes 4,6)
  `xp` - double polar motion coordinates (radians, Note 5)
  `yp` - double polar motion coordinates (radians, Note 5)
  `phpa` - double pressure at the observer (hPa = mB, Note 6)
  `tc` - double ambient temperature at the observer (deg C)
  `rh` - double relative humidity at the observer (range 0-1)
  `wl` - double wavelength (micrometers, Note 7)
  `astrom` - Returned star-independent astrometry parameters:
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - int status: Returned +1 = dubious year (Note 2) 0 = Returned OK -1 = Returned unacceptable date

  Notes:

  1. utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

     However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

     Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

  2. The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.
  3. UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.
  4. The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.
  5. The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.

     Internally, the polar motion is stored in a form rotated onto the local meridian.

  6. If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

     hm = -29.3 * tsl * log ( phpa / 1013.25 );

     where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

     phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

     Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

  7. The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).
  8. It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.
  9. In cases where the caller wishes to supply his own Earth rotation information and refraction constants, the function iauApc can be used instead of the present function.
  10. This is one of several functions that inserts into the astrom structure star-independent parameters needed for the chain of astrometric transformations `ICRS <-> GCRS <-> CIRS <-> observed.`

      The various functions support different classes of observer and portions of the transformation chain:

                    functions         observer        transformation

                 iauApcg iauApcg13    geocentric      ICRS <-> GCRS
                 iauApci iauApci13    terrestrial     ICRS <-> CIRS
                 iauApco iauApco13    terrestrial     ICRS <-> observed
                 iauApcs iauApcs13    space           ICRS <-> GCRS
                 iauAper iauAper13    terrestrial     update Earth rotation
                 iauApio iauApio13    terrestrial     CIRS <-> observed

      Those with names ending in "13" use contemporary SOFA models to compute the various ephemerides. The others accept ephemerides supplied by the caller.

      The transformation from ICRS to GCRS covers space motion, parallax, light deflection, and aberration. From GCRS to CIRS comprises frame bias and precession-nutation. From CIRS to observed takes account of Earth rotation, polar motion, diurnal aberration and parallax (unless subsumed into the `ICRS <-> GCRS` transformation), and atmospheric refraction.

  11. The context structure astrom produced by this function is used by iauAtioq and iauAtoiq.
  Called:
  - `jauUtctai(double, double)` UTC to TAI
  - `jauTaitt(double, double)` TAI to TT
  - `jauUtcut1(double, double, double)` UTC to UT1
  - `jauSp00(double, double)` the TIO locator s', IERS 2000
  - `jauEra00(double, double)` Earth rotation angle, IAU 2000
  - `jauRefco(double, double, double, double)` refraction constants for given ambient conditions
  - `jauApio(double, double, double, double, double, double, double, double, double, JSOFA.Astrom)` astrometry parameters, CIRS-observed
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unacceptable date.
Since:
  JSOFA release 20131202

### jauAtci13

public static JSOFA.SphericalCoordinateEO jauAtci13(double rc, double dc, double pr, double pd, double px, double rv, double date1, double date2)
Transform ICRS star data, epoch J2000.0, to CIRS.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rc` - double ICRS right ascension at J2000.0 (radians, Note 1)
  `dc` - double ICRS declination at J2000.0 (radians, Note 1)
  `pr` - double RA proper motion (radians/year; Note 2)
  `pd` - double Dec proper motion (radians/year)
  `px` - double parallax (arcsec)
  `rv` - double radial velocity (km/s, +ve if receding)
  `date1` - double TDB as a 2-part...
  `date2` - double ...Julian Date (Note 3)
Returns:
  double* Returned CIRS geocentric RA,Dec (radians) eo double* Returned equation of the origins (ERA-GST, Note 5)

  Notes:

  1. Star data for an epoch other than J2000.0 (for example from the Hipparcos catalog, which has an epoch of J1991.25) will require a preliminary call to iauPmsafe before use.
  2. The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
  3. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.8g could be expressed in any of these ways, among others: date1 date2 2450123.8g 0.0 (JD method) 2451545.0 -1421.3 (J2000 method) 2400000.5 50123.2 (MJD method) 2450123.5 0.2 (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

     TT can be used instead of TDB without any significant impact on accuracy.

  4. The available accuracy is better than 1 milliarcsecond, limited mainly by the precession-nutation model that is used, namely IAU 2000A/2006. Very close to solar system bodies, additional errors of up to several milliarcseconds can occur because of unmodeled light deflection; however, the Sun's contribution is taken into account, to first order. The accuracy limitations of the SOFA function iauEpv00 (used to compute Earth position and velocity) can contribute aberration errors of up to 5 microarcseconds. Light deflection at the Sun's limb is uncertain at the 0.4 mas level.
  5. Should the transformation to (equinox based) apparent place be required rather than (CIO based) intermediate place, subtract the equation of the origins from the returned right ascension: RA = RI - EO. (The iauAnp function can then be applied, as required, to keep the result in the conventional 0-2pi range.)
  Called:
  - `jauApci13(double, double, JSOFA.Astrom)` astrometry parameters, ICRS-CIRS, 2013
  - `jauAtciq(double, double, double, double, double, double, JSOFA.Astrom)` quick ICRS to CIRS
Since:
  JSOFA release 20131202

### jauAtciq

public static JSOFA.SphericalCoordinate jauAtciq(double rc, double dc, double pr, double pd, double px, double rv, JSOFA.Astrom astrom)
Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed star-independent astrometry parameters. Use of this function is appropriate when efficiency is important and where many star positions are to be transformed for one date. The star-independent parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. If the parallax and proper motions are zero the iauAtciqz function can be used instead.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rc` - double ICRS RA,Dec at J2000.0 (radians)
  `dc` - double ICRS RA,Dec at J2000.0 (radians)
  `pr` - double RA proper motion (radians/year; Note 3)
  `pd` - double Dec proper motion (radians/year)
  `px` - double parallax (arcsec)
  `rv` - double radial velocity (km/s, +ve if receding)
  `astrom` - star-independent astrometry parameters:
Returns:
  double Returned CIRS RA,Dec (radians)

  Notes:

  1. All the vectors are with respect to BCRS axes.
  2. Star data for an epoch other than J2000.0 (for example from the Hipparcos catalog, which has an epoch of J1991.25) will require a preliminary call to iauPmsafe before use.
  3. The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
  Called:
  - `jauPmpx(double, double, double, double, double, double, double, double[])` proper motion and parallax
  - `jauLdsun(double[], double[], double)` light deflection by the Sun
  - `jauAb(double[], double[], double, double)` stellar aberration
  - `jauRxp(double[][], double[])` product of r-matrix and pv-vector
  - `jauC2s(double[])` p-vector to spherical
  - `jauAnp(double)` normalize angle into range 0 to 2pi
Since:
  JSOFA release 20131202

### jauAtciqn

public static JSOFA.SphericalCoordinate jauAtciqn(double rc, double dc, double pr, double pd, double px, double rv, JSOFA.Astrom astrom, int n, JSOFA.Ldbody[] b)
Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed star-independent astrometry parameters plus a list of light- deflecting bodies. Use of this function is appropriate when efficiency is important and where many star positions are to be transformed for one date. The star-independent parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. If the only light-deflecting body to be taken into account is the Sun, the iauAtciq function can be used instead. If in addition the parallax and proper motions are zero, the iauAtciqz function can be used.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rc` - double ICRS RA,Dec at J2000.0 (radians)
  `dc` - double ICRS RA,Dec at J2000.0 (radians)
  `pr` - double RA proper motion (radians/year; Note 3)
  `pd` - double Dec proper motion (radians/year)
  `px` - double parallax (arcsec)
  `rv` - double radial velocity (km/s, +ve if receding)
  `astrom` - star-independent astrometry parameters:
  `n` - int number of bodies (Note 3)
  `b` - jauLDBODY[n] data for each of the n bodies (Notes 3,4):
Returns:
  ri,di double Returned CIRS RA,Dec (radians)

  Notes:

  1. Star data for an epoch other than J2000.0 (for example from the Hipparcos catalog, which has an epoch of J1991.25) will require a preliminary call to iauPmsafe before use.
  2. The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
  3. The struct b contains n entries, one for each body to be considered. If n = 0, no gravitational light deflection will be applied, not even for the Sun.
  4. The struct b should include an entry for the Sun as well as for any planet or other body to be taken into account. The entries should be in the order in which the light passes the body.
  5. In the entry in the b struct for body i, the mass parameter b[i].bm can, as required, be adjusted in order to allow for such effects as quadrupole field.
  6. The deflection limiter parameter b[i].dl is phi^2/2, where phi is the angular separation (in radians) between star and body at which limiting is applied. As phi shrinks below the chosen threshold, the deflection is artificially reduced, reaching zero for phi = 0. Example values suitable for a terrestrial observer, together with masses, are as follows:

                 body i     b[i].bm        b[i].dl

                 Sun        1.0            6e-6
                 Jupiter    0.00095435     3e-9
                 Saturn     0.00028574     3e-10

  7. For efficiency, validation of the contents of the b array is omitted. The supplied masses must be greater than zero, the position and velocity vectors must be right, and the deflection limiter greater than zero.
  Called:
  - `jauPmpx(double, double, double, double, double, double, double, double[])` proper motion and parallax
  - `jauLdn(int, JSOFA.Ldbody[], double[], double[])` light deflection by n bodies
  - `jauAb(double[], double[], double, double)` stellar aberration
  - `jauRxp(double[][], double[])` product of r-matrix and pv-vector
  - `jauC2s(double[])` p-vector to spherical
  - `jauAnp(double)` normalize angle into range 0 to 2pi
Since:
  JSOFA release 20131202

### jauAtciqz

public static JSOFA.SphericalCoordinate jauAtciqz(double rc, double dc, JSOFA.Astrom astrom)
Quick ICRS to CIRS transformation, given precomputed star- independent astrometry parameters, and assuming zero parallax and proper motion. Use of this function is appropriate when efficiency is important and where many star positions are to be transformed for one date. The star-independent parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. The corresponding function for the case of non-zero parallax and proper motion is iauAtciq.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rc` - double ICRS astrometric RA,Dec (radians)
  `dc` - double ICRS astrometric RA,Dec (radians)
  `astrom` - star-independent astrometry parameters:
Returns:
  ri,di double Returned CIRS RA,Dec (radians) Note:
Since:
  JSOFA release 20131202

### jauAtco13

public static JSOFA.ObservedPositionEO jauAtco13(double rc, double dc, double pr, double pd, double px, double rv, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl) throws JSOFAIllegalParameter, JSOFAInternalError
ICRS RA,Dec to observed place. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength. SOFA models are used for the Earth ephemeris, bias-precession- nutation, Earth orientation and refraction.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rc` - double ICRS right ascension at J2000.0 (radians, Note 1)
  `dc` - double ICRS right ascension at J2000.0 (radians, Note 1)
  `pr` - double RA proper motion (radians/year; Note 2)
  `pd` - double Dec proper motion (radians/year)
  `px` - double parallax (arcsec)
  `rv` - double radial velocity (km/s, +ve if receding)
  `utc1` - double UTC as a 2-part...
  `utc2` - double ...quasi Julian Date (Notes 3-4)
  `dut1` - double UT1-UTC (seconds, Note 5)
  `elong` - double longitude (radians, east +ve, Note 6)
  `phi` - double latitude (geodetic, radians, Note 6)
  `hm` - double height above ellipsoid (m, geodetic, Notes 6,8)
  `xp` - double polar motion coordinates (radians, Note 7)
  `yp` - double polar motion coordinates (radians, Note 7)
  `phpa` - double pressure at the observer (hPa = mB, Note 8)
  `tc` - double ambient temperature at the observer (deg C)
  `rh` - double relative humidity at the observer (range 0-1)
  `wl` - double wavelength (micrometers, Note 9)
Returns:
  aob double* Returned observed azimuth (radians: N=0,E=90) zob double* Returned observed zenith distance (radians) hob double* Returned observed hour angle (radians) dob double* Returned observed declination (radians) rob double* Returned observed right ascension (CIO-based, radians) eo double* Returned equation of the origins (ERA-GST)
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - int status: Returned +1 = dubious year (Note 4) 0 = Returned OK -1 = Returned unacceptable date

  Notes:

  1. Star data for an epoch other than J2000.0 (for example from the Hipparcos catalog, which has an epoch of J1991.25) will require a preliminary call to iauPmsafe before use.
  2. The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
  3. utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

     However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

     Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

  4. The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.
  5. UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.
  6. The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.
  7. The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.
  8. If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

     hm = -29.3 * tsl * log ( phpa / 1013.25 );

     where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

     phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

     Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

  9. The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).
  10. The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted observed coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.

      Without refraction, the complementary functions iauAtco13 and iauAtoc13 are self-consistent to better than 1 microarcsecond all over the celestial sphere. With refraction included, consistency falls off at high zenith distances, but is still better than 0.05 arcsec at 85 degrees.

  11. "Observed" Az,ZD means the position that would be seen by a perfect geodetically aligned theodolite. (Zenith distance is used rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.) This is related to the observed HA,Dec via the standard rotation, using the geodetic latitude (corrected for polar motion), while the observed HA and RA are related simply through the Earth rotation angle and the site longitude. "Observed" RA,Dec or HA,Dec thus means the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation.
  12. It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.
  Called:
  - `jauApco13(double, double, double, double, double, double, double, double, double, double, double, double, JSOFA.Astrom)` astrometry parameters, ICRS-observed, 2013
  - `jauAtciq(double, double, double, double, double, double, JSOFA.Astrom)` quick ICRS to CIRS
  - `jauAtioq(double, double, JSOFA.Astrom)` quick ICRS to observed
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unacceptable date.
Since:
  JSOFA release 20131202

### jauAtic13

public static JSOFA.SphericalCoordinateEO jauAtic13(double ri, double di, double date1, double date2)
Transform star RA,Dec from geocentric CIRS to ICRS astrometric.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ri` - double CIRS geocentric RA,Dec (radians)
  `di` - double CIRS geocentric RA,Dec (radians)
  `date1` - double TDB as a 2-part...
  `date2` - double ...Julian Date (Note 1)
Returns:
  rc,dc double Returned ICRS astrometric RA,Dec (radians) eo double Returned equation of the origins (ERA-GST, Note 4)

  Notes:

  1. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others: date1 date2 2450123.7 0.0 (JD method) 2451545.0 -1421.3 (J2000 method) 2400000.5 50123.2 (MJD method) 2450123.5 0.2 (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical.

     TT can be used instead of TDB without any significant impact on accuracy.

  2. Iterative techniques are used for the aberration and light deflection corrections so that the functions iauAtic13 (or iauAticq) and iauAtci13 (or iauAtciq) are accurate inverses; even at the edge of the Sun's disk the discrepancy is only about 1 nanoarcsecond.
  3. The available accuracy is better than 1 milliarcsecond, limited mainly by the precession-nutation model that is used, namely IAU 2000A/2006. Very close to solar system bodies, additional errors of up to several milliarcseconds can occur because of unmodeled light deflection; however, the Sun's contribution is taken into account, to first order. The accuracy limitations of the SOFA function iauEpv00 (used to compute Earth position and velocity) can contribute aberration errors of up to 5 microarcseconds. Light deflection at the Sun's limb is uncertain at the 0.4 mas level.
  4. Should the transformation to (equinox based) J2000.0 mean place be required rather than (CIO based) ICRS coordinates, subtract the equation of the origins from the returned right ascension: RA = RI - EO. (The iauAnp function can then be applied, as required, to keep the result in the conventional 0-2pi range.)
  Called:
  - `jauApci13(double, double, JSOFA.Astrom)` astrometry parameters, ICRS-CIRS, 2013
  - `jauAticq(double, double, JSOFA.Astrom)` quick CIRS to ICRS astrometric
Since:
  JSOFA release 20131202

### jauAticq

public static JSOFA.SphericalCoordinate jauAticq(double ri, double di, JSOFA.Astrom astrom)
Quick CIRS RA,Dec to ICRS astrometric place, given the star- independent astrometry parameters. Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one date. The star-independent astrometry parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13].

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ri` - double CIRS RA,Dec (radians)
  `di` - double CIRS RA,Dec (radians)
  `astrom` - star-independent astrometry parameters:
Returns:
  rc,dc double Returned ICRS astrometric RA,Dec (radians)

  Notes:

  1. Only the Sun is taken into account in the light deflection correction.
  2. Iterative techniques are used for the aberration and light deflection corrections so that the functions iauAtic13 (or iauAticq) and iauAtci13 (or iauAtciq) are accurate inverses; even at the edge of the Sun's disk the discrepancy is only about 1 nanoarcsecond.
  Called:
  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauTrxp(double[][], double[])` product of transpose of r-matrix and p-vector
  - `jauZp(double[])` zero p-vector
  - `jauAb(double[], double[], double, double)` stellar aberration
  - `jauLdsun(double[], double[], double)` light deflection by the Sun
  - `jauC2s(double[])` p-vector to spherical
  - `jauAnp(double)` normalize angle into range +/- pi
Since:
  JSOFA release 20131202

### jauAticqn

public static JSOFA.SphericalCoordinate jauAticqn(double ri, double di, JSOFA.Astrom astrom, int n, JSOFA.Ldbody[] b)
Quick CIRS to ICRS astrometric place transformation, given the star- independent astrometry parameters plus a list of light-deflecting bodies. Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one date. The star-independent astrometry parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. If the only light-deflecting body to be taken into account is the Sun, the iauAticq function can be used instead.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ri` - double CIRS RA,Dec (radians)
  `di` - double CIRS RA,Dec (radians)
  `astrom` - star-independent astrometry parameters:
  `n` - number of bodies.
  `b` - [] data for each of the n bodies.
Returns:
  ICRS astrometric RA,Dec (radians)

  Notes:

  1. Iterative techniques are used for the aberration and light deflection corrections so that the functions iauAticqn and iauAtciqn are accurate inverses; even at the edge of the Sun's disk the discrepancy is only about 1 nanoarcsecond.
  2. If the only light-deflecting body to be taken into account is the Sun, the iauAticq function can be used instead.
  3. The struct b contains n entries, one for each body to be considered. If n = 0, no gravitational light deflection will be applied, not even for the Sun.
  4. The struct b should include an entry for the Sun as well as for any planet or other body to be taken into account. The entries should be in the order in which the light passes the body.
  5. In the entry in the b struct for body i, the mass parameter b[i].bm can, as required, be adjusted in order to allow for such effects as quadrupole field.
  6. The deflection limiter parameter b[i].dl is phi^2/2, where phi is the angular separation (in radians) between star and body at which limiting is applied. As phi shrinks below the chosen threshold, the deflection is artificially reduced, reaching zero for phi = 0. Example values suitable for a terrestrial observer, together with masses, are as follows:

     body i b[i].bm b[i].dl

     Sun 1.0 6e-6 Jupiter 0.00095435 3e-9 Saturn 0.00028574 3e-10

  7. For efficiency, validation of the contents of the b array is omitted. The supplied masses must be greater than zero, the position and velocity vectors must be right, and the deflection limiter greater than zero.
  Called:
  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauTrxp(double[][], double[])` product of transpose of r-matrix and p-vector
  - `jauZp(double[])` zero p-vector
  - `jauAb(double[], double[], double, double)` stellar aberration
  - `jauLdn(int, JSOFA.Ldbody[], double[], double[])` light deflection by n bodies
  - `jauC2s(double[])` p-vector to spherical
  - `jauAnp(double)` normalize angle into range +/- pi
Since:
  JSOFA release 20131202

### jauAtio13

public static JSOFA.ObservedPosition jauAtio13(double ri, double di, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl) throws JSOFAIllegalParameter, JSOFAInternalError
CIRS RA,Dec to observed place. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ri` - double CIRS right ascension (CIO-based, radians)
  `di` - double CIRS declination (radians)
  `utc1` - double UTC as a 2-part...
  `utc2` - double ...quasi Julian Date (Notes 1,2)
  `dut1` - double UT1-UTC (seconds, Note 3)
  `elong` - double longitude (radians, east +ve, Note 4)
  `phi` - double geodetic latitude (radians, Note 4)
  `hm` - double height above ellipsoid (m, geodetic Notes 4,6)
  `xp` - double polar motion coordinates (radians, Note 5)
  `yp` - double polar motion coordinates (radians, Note 5)
  `phpa` - double pressure at the observer (hPa = mB, Note 6)
  `tc` - double ambient temperature at the observer (deg C)
  `rh` - double relative humidity at the observer (range 0-1)
  `wl` - double wavelength (micrometers, Note 7)
Returns:
  aob double* Returned observed azimuth (radians: N=0,E=90) zob double* Returned observed zenith distance (radians) hob double* Returned observed hour angle (radians) dob double* Returned observed declination (radians) rob double* Returned observed right ascension (CIO-based, radians)
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - int status: Returned +1 = dubious year (Note 2) 0 = Returned OK -1 = Returned unacceptable date

  Notes:

  1. utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

     However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

     Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

  2. The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.
  3. UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.
  4. The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.
  5. The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.
  6. If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

     hm = -29.3 * tsl * log ( phpa / 1013.25 );

     where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

     phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

     Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

  7. The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).
  8. "Observed" Az,ZD means the position that would be seen by a perfect geodetically aligned theodolite. (Zenith distance is used rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.) This is related to the observed HA,Dec via the standard rotation, using the geodetic latitude (corrected for polar motion), while the observed HA and RA are related simply through the Earth rotation angle and the site longitude. "Observed" RA,Dec or HA,Dec thus means the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation.
  9. The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted astrometric coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.
  10. The complementary functions iauAtio13 and iauAtoi13 are self- consistent to better than 1 microarcsecond all over the celestial sphere.
  11. It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.
  Called:
  - `jauApio13(double, double, double, double, double, double, double, double, double, double, double, double, JSOFA.Astrom)` astrometry parameters, CIRS-observed, 2013
  - `jauAtioq(double, double, JSOFA.Astrom)` quick CIRS to observed
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unacceptable date.
Since:
  JSOFA release 20131202

### jauAtioq

public static JSOFA.ObservedPosition jauAtioq(double ri, double di, JSOFA.Astrom astrom)
Quick CIRS to observed place transformation. Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one date. The star-independent astrometry parameters can be obtained by calling iauApio[13] or iauApco[13].

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ri` - double CIRS right ascension
  `di` - double CIRS declination
  `astrom` - star-independent astrometry parameters:
Returns:
  aob double* Returned observed azimuth (radians: N=0,E=90) zob double* Returned observed zenith distance (radians) hob double* Returned observed hour angle (radians) dob double* Returned observed declination (radians) rob double* Returned observed right ascension (CIO-based, radians)

  Notes:

  1. This function returns zenith distance rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.
  2. The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted observed coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.

     Without refraction, the complementary functions iauAtioq and iauAtoiq are self-consistent to better than 1 microarcsecond all over the celestial sphere. With refraction included, consistency falls off at high zenith distances, but is still better than 0.05 arcsec at 85 degrees.

  3. It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.
  4. The CIRS RA,Dec is obtained from a star catalog mean place by allowing for space motion, parallax, the Sun's gravitational lens effect, annual aberration and precession-nutation. For star positions in the ICRS, these effects can be applied by means of the iauAtci13 (etc.) functions. Starting from classical "mean place" systems, additional transformations will be needed first.
  5. "Observed" Az,El means the position that would be seen by a perfect geodetically aligned theodolite. This is obtained from the CIRS RA,Dec by allowing for Earth orientation and diurnal aberration, rotating from equator to horizon coordinates, and then adjusting for refraction. The HA,Dec is obtained by rotating back into equatorial coordinates, and is the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation. Finally, the RA is obtained by subtracting the HA from the local ERA.
  6. The star-independent CIRS-to-observed-place parameters in ASTROM may be computed with iauApio[13] or iauApco[13]. If nothing has changed significantly except the time, iauAper[13] may be used to perform the requisite adjustment to the astrom structure.
  Called:
  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauC2s(double[])` p-vector to spherical
  - `jauAnp(double)` normalize angle into range 0 to 2pi
Since:
  JSOFA release 20131202

### jauAtoc13

public static JSOFA.SphericalCoordinate jauAtoc13(String type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl) throws JSOFAIllegalParameter, JSOFAInternalError
Observed place at a groundbased site to to ICRS astrometric RA,Dec. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `type` - char[] type of coordinates - "R", "H" or "A" (Notes 1,2)
  `ob1` - double observed Az, HA or RA (radians; Az is N=0,E=90)
  `ob2` - double observed ZD or Dec (radians)
  `utc1` - double UTC as a 2-part...
  `utc2` - double ...quasi Julian Date (Notes 3,4)
  `dut1` - double UT1-UTC (seconds, Note 5)
  `elong` - double longitude (radians, east +ve, Note 6)
  `phi` - double geodetic latitude (radians, Note 6)
  `hm` - double height above ellipsoid (m, geodetic Notes 6,8)
  `xp` - double polar motion coordinates (radians, Note 7)
  `yp` - double polar motion coordinates (radians, Note 7)
  `phpa` - double pressure at the observer (hPa = mB, Note 8)
  `tc` - double ambient temperature at the observer (deg C)
  `rh` - double relative humidity at the observer (range 0-1)
  `wl` - double wavelength (micrometers, Note 9)
Returns:
  rc,dc double Returned ICRS astrometric RA,Dec (radians)
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - int status: Returned +1 = dubious year (Note 4) 0 = Returned OK -1 = Returned unacceptable date

  Notes:

  1. "Observed" Az,ZD means the position that would be seen by a perfect geodetically aligned theodolite. (Zenith distance is used rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.) This is related to the observed HA,Dec via the standard rotation, using the geodetic latitude (corrected for polar motion), while the observed HA and RA are related simply through the Earth rotation angle and the site longitude. "Observed" RA,Dec or HA,Dec thus means the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation.
  2. Only the first character of the type argument is significant. "R" or "r" indicates that ob1 and ob2 are the observed right ascension and declination; "H" or "h" indicates that they are hour angle (west +ve) and declination; anything else ("A" or "a" is recommended) indicates that ob1 and ob2 are azimuth (north zero, east 90 deg) and zenith distance.
  3. utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

     However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

     Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

  4. The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.
  5. UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.
  6. The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.
  7. The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.
  8. If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

     hm = -29.3 * tsl * log ( phpa / 1013.25 );

     where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

     phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

     Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

  9. The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).
  10. The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted astrometric coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.

      Without refraction, the complementary functions iauAtco13 and iauAtoc13 are self-consistent to better than 1 microarcsecond all over the celestial sphere. With refraction included, consistency falls off at high zenith distances, but is still better than 0.05 arcsec at 85 degrees.

  11. It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.
  Called:
  - `jauApco13(double, double, double, double, double, double, double, double, double, double, double, double, JSOFA.Astrom)` astrometry parameters, ICRS-observed
  - `jauAtoiq(String, double, double, JSOFA.Astrom)` quick observed to CIRS
  - `jauAticq(double, double, JSOFA.Astrom)` quick CIRS to ICRS
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unacceptable date.
Since:
  JSOFA release 20131202

### jauAtoi13

public static JSOFA.SphericalCoordinate jauAtoi13(String type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl) throws JSOFAIllegalParameter, JSOFAInternalError
Observed place to CIRS. The caller supplies UTC, site coordinates, ambient air conditions and observing wavelength.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `type` - char[] type of coordinates - "R", "H" or "A" (Notes 1,2)
  `ob1` - double observed Az, HA or RA (radians; Az is N=0,E=90)
  `ob2` - double observed ZD or Dec (radians)
  `utc1` - double UTC as a 2-part...
  `utc2` - double ...quasi Julian Date (Notes 3,4)
  `dut1` - double UT1-UTC (seconds, Note 5)
  `elong` - double longitude (radians, east +ve, Note 6)
  `phi` - double geodetic latitude (radians, Note 6)
  `hm` - double height above the ellipsoid (meters, Notes 6,8)
  `xp` - double polar motion coordinates (radians, Note 7)
  `yp` - double polar motion coordinates (radians, Note 7)
  `phpa` - double pressure at the observer (hPa = mB, Note 8)
  `tc` - double ambient temperature at the observer (deg C)
  `rh` - double relative humidity at the observer (range 0-1)
  `wl` - double wavelength (micrometers, Note 9)
Returns:
  ri double* Returned CIRS right ascension (CIO-based, radians) di double* Returned CIRS declination (radians)
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - int status: Returned +1 = dubious year (Note 2) 0 = Returned OK -1 = Returned unacceptable date

  Notes:

  1. "Observed" Az,ZD means the position that would be seen by a perfect geodetically aligned theodolite. (Zenith distance is used rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.) This is related to the observed HA,Dec via the standard rotation, using the geodetic latitude (corrected for polar motion), while the observed HA and RA are related simply through the Earth rotation angle and the site longitude. "Observed" RA,Dec or HA,Dec thus means the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation.
  2. Only the first character of the type argument is significant. "R" or "r" indicates that ob1 and ob2 are the observed right ascension and declination; "H" or "h" indicates that they are hour angle (west +ve) and declination; anything else ("A" or "a" is recommended) indicates that ob1 and ob2 are azimuth (north zero, east 90 deg) and zenith distance.
  3. utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any convenient way between the two arguments, for example where utc1 is the Julian Day Number and utc2 is the fraction of a day.

     However, JD cannot unambiguously represent UTC during a leap second unless special measures are taken. The convention in the present function is that the JD day represents UTC days whether the length is 86399, 86400 or 86401 SI seconds.

     Applications should use the function iauDtf2d to convert from calendar date and time of day into 2-part quasi Julian Date, as it implements the leap-second-ambiguity convention just described.

  4. The warning status "dubious year" flags UTCs that predate the introduction of the time scale or that are too far in the future to be trusted. See iauDat for further details.
  5. UT1-UTC is tabulated in IERS bulletins. It increases by exactly one second at the end of each positive UTC leap second, introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This practice is under review, and in the future UT1-UTC may grow essentially without limit.
  6. The geographical coordinates are with respect to the WGS84 reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the longitude required by the present function is east-positive (i.e. right-handed), in accordance with geographical convention.
  7. The polar motion xp,yp can be obtained from IERS bulletins. The values are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions 2003), measured along the meridians 0 and 90 deg west respectively. For many applications, xp and yp can be set to zero.
  8. If hm, the height above the ellipsoid of the observing station in meters, is not known but phpa, the pressure in hPa (=mB), is available, an adequate estimate of hm can be obtained from the expression

     hm = -29.3 * tsl * log ( phpa / 1013.25 );

     where tsl is the approximate sea-level air temperature in K (See Astrophysical Quantities, C.W.Allen, 3rd edition, section 52). Similarly, if the pressure phpa is not known, it can be estimated from the height of the observing station, hm, as follows:

     phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) );

     Note, however, that the refraction is nearly proportional to the pressure and that an accurate phpa value is important for precise work.

  9. The argument wl specifies the observing wavelength in micrometers. The transition from optical to radio is assumed to occur at 100 micrometers (about 3000 GHz).
  10. The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted astrometric coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 30 arcmin (radio) at the horizon.

      Without refraction, the complementary functions iauAtio13 and iauAtoi13 are self-consistent to better than 1 microarcsecond all over the celestial sphere. With refraction included, consistency falls off at high zenith distances, but is still better than 0.05 arcsec at 85 degrees.

  11. It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.
  Called:
  - `jauApio13(double, double, double, double, double, double, double, double, double, double, double, double, JSOFA.Astrom)` astrometry parameters, CIRS-observed, 2013
  - `jauAtoiq(String, double, double, JSOFA.Astrom)` quick observed to CIRS
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unacceptable date.
Since:
  JSOFA release 20131202

### jauAtoiq

public static JSOFA.SphericalCoordinate jauAtoiq(String type, double ob1, double ob2, JSOFA.Astrom astrom)
Quick observed place to CIRS, given the star-independent astrometry parameters. Use of this function is appropriate when efficiency is important and where many star positions are all to be transformed for one date. The star-independent astrometry parameters can be obtained by calling iauApio[13] or iauApco[13].

Status: support function.

Parameters:
  `type` - char[] type of coordinates: "R", "H" or "A" (Note 1)
  `ob1` - double observed Az, HA or RA (radians; Az is N=0,E=90)
  `ob2` - double observed ZD or Dec (radians)
  `astrom` - star-independent astrometry parameters:
Returns:
  ri double* Returned CIRS right ascension (CIO-based, radians) di double* Returned CIRS declination (radians)

  Notes:

  1. "Observed" Az,ZD means the position that would be seen by a perfect geodetically aligned theodolite. This is related to the observed HA,Dec via the standard rotation, using the geodetic latitude (corrected for polar motion), while the observed HA and RA are related simply through the Earth rotation angle and the site longitude. "Observed" RA,Dec or HA,Dec thus means the position that would be seen by a perfect equatorial with its polar axis aligned to the Earth's axis of rotation. By removing from the observed place the effects of atmospheric refraction and diurnal aberration, the CIRS RA,Dec is obtained.
  2. Only the first character of the type argument is significant. "R" or "r" indicates that ob1 and ob2 are the observed right ascension and declination; "H" or "h" indicates that they are hour angle (west +ve) and declination; anything else ("A" or "a" is recommended) indicates that ob1 and ob2 are azimuth (north zero, east 90 deg) and zenith distance. (Zenith distance is used rather than altitude in order to reflect the fact that no allowance is made for depression of the horizon.)
  3. The accuracy of the result is limited by the corrections for refraction, which use a simple A*tan(z) + B*tan^3(z) model. Providing the meteorological parameters are known accurately and there are no gross local effects, the predicted intermediate coordinates should be within 0.05 arcsec (optical) or 1 arcsec (radio) for a zenith distance of less than 70 degrees, better than 30 arcsec (optical or radio) at 85 degrees and better than 20 arcmin (optical) or 25 arcmin (radio) at the horizon.

     Without refraction, the complementary functions iauAtioq and iauAtoiq are self-consistent to better than 1 microarcsecond all over the celestial sphere. With refraction included, consistency falls off at high zenith distances, but is still better than 0.05 arcsec at 85 degrees.

  4. It is advisable to take great care with units, as even unlikely values of the input parameters are accepted and processed in accordance with the models used.
  Called:
  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauC2s(double[])` p-vector to spherical
  - `jauAnp(double)` normalize angle into range 0 to 2pi
Since:
  JSOFA release 20131202

### jauLd

public static double[] jauLd(double bm, double[] p, double[] q, double[] e, double em, double dlim)
Apply light deflection by a solar-system body, as part of transforming coordinate direction into natural direction.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `bm` - double mass of the gravitating body (solar masses)
  `p` - double[3] direction from observer to source (unit vector)
  `q` - double[3] direction from body to source (unit vector)
  `e` - double[3] direction from body to observer (unit vector)
  `em` - double distance from body to observer (au)
  `dlim` - double deflection limiter (Note 4)
Returns:
  p1 double[3] Returned observer to deflected source (unit vector)

  Notes:

  1. The algorithm is based on Expr. (70) in Klioner (2003) and Expr. (7.63) in the Explanatory Supplement (Urban & Seidelmann 2013), with some rearrangement to minimize the effects of machine precision.
  2. The mass parameter bm can, as required, be adjusted in order to allow for such effects as quadrupole field.
  3. The barycentric position of the deflecting body should ideally correspond to the time of closest approach of the light ray to the body.
  4. The deflection limiter parameter dlim is phi^2/2, where phi is the angular separation (in radians) between source and body at which limiting is applied. As phi shrinks below the chosen threshold, the deflection is artificially reduced, reaching zero for phi = 0.
  5. The returned vector p1 is not normalized, but the consequential departure from unit magnitude is always negligible.
  6. The arguments p and p1 can be the same array.
  7. To accumulate total light deflection taking into account the contributions from several bodies, call the present function for each body in succession, in decreasing order of distance from the observer.
  8. For efficiency, validation is omitted. The supplied vectors must be of unit magnitude, and the deflection limiter non-zero and positive.

  References:

  - Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013).
  - Klioner, Sergei A., "A practical relativistic model for micro- arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003).
  Called:
  - `jauPdp(double[], double[])` scalar product of two p-vectors
  - `jauPxp(double[], double[])` vector product of two p-vectors
Since:
  JSOFA release 20131202

### jauLdn

public static double[] jauLdn(int n, JSOFA.Ldbody[] b, double[] ob, double[] sc)

### jauLdsun

public static double[] jauLdsun(double[] p, double[] e, double em)
Deflection of starlight by the Sun.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `p` - double[3] direction from observer to star (unit vector)
  `e` - double[3] direction from Sun to observer (unit vector)
  `em` - double distance from Sun to observer (au)
Returns:
  p1 double[3] Returned observer to deflected start (unit vector)

  Notes:

  1. The source is presumed to be sufficiently distant that its directions seen from the Sun and the observer are essentially the same.
  2. The deflection is restrained when the angle between the star and the center of the Sun is less than a threshold value, falling to zero deflection for zero separation. The chosen threshold value is within the solar limb for all solar-system applications, and is about 5 arcminutes for the case of a terrestrial observer.
  3. The arguments p and p1 can be the same array.
  Called:
  - `jauLd(double, double[], double[], double[], double, double)` light deflection by a solar-system body
Since:
  JSOFA release 20131202

### jauPmpx

public static double[] jauPmpx(double rc, double dc, double pr, double pd, double px, double rv, double pmt, double[] pob)
Proper motion and parallax.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `rc` - double ICRS RA,Dec at catalog epoch (radians)
  `dc` - double ICRS RA,Dec at catalog epoch (radians)
  `pr` - double RA proper motion (radians/year; Note 1)
  `pd` - double Dec proper motion (radians/year)
  `px` - double parallax (arcsec)
  `rv` - double radial velocity (km/s, +ve if receding)
  `pmt` - double proper motion time interval (SSB, Julian years)
  `pob` - double[3] SSB to observer vector (au)
Returns:
  pco double[3] Returned coordinate direction (BCRS unit vector)

  Notes:

  1. The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
  2. The proper motion time interval is for when the starlight reaches the solar system barycenter.
  3. To avoid the need for iteration, the Roemer effect (i.e. the small annual modulation of the proper motion coming from the changing light time) is applied approximately, using the direction of the star at the catalog epoch.

  References:

  - 1984 Astronomical Almanac, pp B39-B41.
  - Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013), Section 7.2.
  Called:
  - `jauPdp(double[], double[])` scalar product of two p-vectors
  - `jauPn(double[])` decompose p-vector into modulus and direction
Since:
  JSOFA release 20131202

### jauPmsafe

public static JSOFA.CatalogCoords jauPmsafe(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b) throws JSOFAInternalError
Star proper motion: update star catalog data for space motion, with special handling to handle the zero parallax case.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ra1` - double right ascension (radians), before
  `dec1` - double declination (radians), before
  `pmr1` - double RA proper motion (radians/year), before
  `pmd1` - double Dec proper motion (radians/year), before
  `px1` - double parallax (arcseconds), before
  `rv1` - double radial velocity (km/s, +ve = receding), before
  `ep1a` - double "before" epoch, part A (Note 1)
  `ep1b` - double "before" epoch, part B (Note 1)
  `ep2a` - double "after" epoch, part A (Note 1)
  `ep2b` - double "after" epoch, part B (Note 1)
Returns:
  ra2 double Returned right ascension (radians), after dec2 double Returned declination (radians), after pmr2 double Returned RA proper motion (radians/year), after pmd2 double Returned Dec proper motion (radians/year), after px2 double Returned parallax (arcseconds), after rv2 double Returned radial velocity (km/s, +ve = receding), after
Throws:
  `JSOFAInternalError` - int status: -1 = Returned system error (should not occur) 0 = Returned no warnings or errors 1 = Returned distance overridden (Note 6) 2 = Returned excessive velocity (Note 7) 4 = Returned solution didn't converge (Note 8) else = Returned binary logical OR of the above warnings

  Notes:

  1. The starting and ending TDB epochs ep1a+ep1b and ep2a+ep2b are Julian Dates, apportioned in any convenient way between the two parts (A and B). For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others:

     epNa epNb 2450123.7 0.0 (JD method) 2451545.0 -1421.3 (J2000 method) 2400000.5 50123.2 (MJD method) 2450123.5 0.2 (date & time method)

     The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.

  2. In accordance with normal star-catalog conventions, the object's right ascension and declination are freed from the effects of secular aberration. The frame, which is aligned to the catalog equator and equinox, is Lorentzian and centered on the SSB.

     The proper motions are the rate of change of the right ascension and declination at the catalog epoch and are in radians per TDB Julian year.

     The parallax and radial velocity are in the same frame.

  3. Care is needed with units. The star coordinates are in radians and the proper motions in radians per Julian year, but the parallax is in arcseconds.
  4. The RA proper motion is in terms of coordinate angle, not true angle. If the catalog uses arcseconds for both RA and Dec proper motions, the RA proper motion will need to be divided by cos(Dec) before use.
  5. Straight-line motion at constant speed, in the inertial frame, is assumed.
  6. An extremely small (or zero or negative) parallax is overridden to ensure that the object is at a finite but very large distance, but not so large that the proper motion is equivalent to a large but safe speed (about 0.1c using the chosen constant). A warning status of 1 is added to the status if this action has been taken.
  7. If the space velocity is a significant fraction of c (see the constant VMAX in the function iauStarpv), it is arbitrarily set to zero. When this action occurs, 2 is added to the status.
  8. The relativistic adjustment carried out in the iauStarpv function involves an iterative calculation. If the process fails to converge within a set number of iterations, 4 is added to the status.
  Called:
  - `jauSeps(double, double, double, double)` angle between two points
  - `jauStarpm(double, double, double, double, double, double, double, double, double, double)` update star catalog data for space motion
  `JSOFAInternalError` - an internal error has occured
Since:
  JSOFA release 20131202

### jauPvtob

public static double[][] jauPvtob(double elong, double phi, double hm, double xp, double yp, double sp, double theta) throws JSOFAIllegalParameter, JSOFAInternalError
Position and velocity of a terrestrial observing station.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `elong` - double longitude (radians, east +ve, Note 1)
  `phi` - double latitude (geodetic, radians, Note 1)
  `hm` - double height above ref. ellipsoid (geodetic, m)
  `xp` - double coordinates of the pole (radians, Note 2)
  `yp` - double coordinates of the pole (radians, Note 2)
  `sp` - double the TIO locator s' (radians, Note 2)
  `theta` - double Earth rotation angle (radians, Note 3)
Returns:
  pv double[2][3] Returned position/velocity vector (m, m/s, CIRS)

  Notes:

  1. The terrestrial coordinates are with respect to the WGS84 reference ellipsoid.
  2. xp and yp are the coordinates (in radians) of the Celestial Intermediate Pole with respect to the International Terrestrial Reference System (see IERS Conventions), measured along the meridians 0 and 90 deg west respectively. sp is the TIO locator s', in radians, which positions the Terrestrial Intermediate Origin on the equator. For many applications, xp, yp and (especially) sp can be set to zero.
  3. If theta is Greenwich apparent sidereal time instead of Earth rotation angle, the result is with respect to the true equator and equinox of date, i.e. with the x-axis at the equinox rather than the celestial intermediate origin.
  4. The velocity units are meters per UT1 second, not per SI second. This is unlikely to have any practical consequences in the modern era.
  5. No validation is performed on the arguments. Error cases that could lead to arithmetic exceptions are trapped by the iauGd2gc function, and the result set to zeros.

  References:

  - McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), IERS Technical Note No. 32, BKG (2004)
  - Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to the Astronomical Almanac, 3rd ed., University Science Books (2013), Section 7.4.3.3.
  Called:
  - `jauGd2gc(int, double, double, double)` geodetic to geocentric transformation
  - `jauPom00(double, double, double)` polar motion matrix
  - `jauTrxp(double[][], double[])` product of transpose of r-matrix and p-vector
Throws:
  `JSOFAInternalError` - an internal error has occured
  `JSOFAIllegalParameter` - unacceptable date.
Since:
  JSOFA release 20131202

### jauPvtob

public static double[][] jauPvtob(double[] xyzm, double xp, double yp, double sp, double theta) throws JSOFAIllegalParameter, JSOFAInternalError
Alternative Position and velocity of a terrestrial observing station with observatory position already in cartesian.

Parameters:
  `xyzm` - observatory geocentric position in metres.
  `xp` - double coordinates of the pole (radians, Note 2)
  `yp` - double coordinates of the pole (radians, Note 2)
  `sp` - double the TIO locator s' (radians, Note 2)
  `theta` - double Earth rotation angle (radians, Note 3)
Returns:
  pv double[2][3] Returned position/velocity vector (m, m/s, CIRS)
Throws:
  `JSOFAIllegalParameter` - unacceptable date.
  `JSOFAInternalError` - an internal error has occured
See Also:
  - for more detail.

### jauRefco

public static JSOFA.RefCos jauRefco(double phpa, double tc, double rh, double wl)
Determine the constants A and B in the atmospheric refraction model dZ = A tan Z + B tan^3 Z. Z is the "observed" zenith distance (i.e. affected by refraction) and dZ is what to add to Z to give the "topocentric" (i.e. in vacuo) zenith distance.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `phpa` - double pressure at the observer (hPa = millibar)
  `tc` - double ambient temperature at the observer (deg C)
  `rh` - double relative humidity at the observer (range 0-1)
  `wl` - double wavelength (micrometers)
Returns:
  Returned tan Z coefficient (radians) Returned tan^3 Z coefficient (radians)

  Notes:

  1. The model balances speed and accuracy to give good results in applications where performance at low altitudes is not paramount. Performance is maintained across a range of conditions, and applies to both optical/IR and radio.
  2. The model omits the effects of (i) height above sea level (apart from the reduced pressure itself), (ii) latitude (i.e. the flattening of the Earth), (iii) variations in tropospheric lapse rate and (iv) dispersive effects in the radio.

     The model was tested using the following range of conditions:

     lapse rates 0.0055, 0.0065, 0.0075 deg/meter latitudes 0, 25, 50, 75 degrees heights 0, 2500, 5000 meters ASL pressures mean for height -10% to +5% in steps of 5% temperatures -10 deg to +20 deg with respect to 280 deg at SL relative humidity 0, 0.5, 1 wavelengths 0.4, 0.6, ... 2 micron, + radio zenith distances 15, 45, 75 degrees

     The accuracy with respect to raytracing through a model atmosphere was as follows:

     worst RMS

     optical/IR 62 mas 8 mas radio 319 mas 49 mas

     For this particular set of conditions:

     lapse rate 0.0065 K/meter latitude 50 degrees sea level pressure 1005 mb temperature 280.15 K humidity 80% wavelength 5740 Angstroms

     the results were as follows:

     ZD raytrace iauRefco Saastamoinen 10 10.27 10.27 10.27 20 21.19 21.20 21.19 30 33.61 33.61 33.60 40 48.82 48.83 48.81 45 58.16 58.18 58.16 50 69.28 69.30 69.27 55 82.97 82.99 82.95 60 100.51 100.54 100.50 65 124.23 124.26 124.20 70 158.63 158.68 158.61 72 177.32 177.37 177.31 74 200.35 200.38 200.32 76 229.45 229.43 229.42 78 267.44 267.29 267.41 80 319.13 318.55 319.10

     deg arcsec arcsec arcsec

     The values for Saastamoinen's formula (which includes terms up to tan^5) are taken from Hohenkerk and Sinclair (1985).

  3. A wl value in the range 0-100 selects the optical/IR case and is wavelength in micrometers. Any value outside this range selects the radio case.
  4. Outlandish input parameters are silently limited to mathematically safe values. Zero pressure is permissible, and causes zeroes to be returned.
  5. The algorithm draws on several sources, as follows:

     a) The formula for the saturation vapour pressure of water as a function of temperature and temperature is taken from Equations (A4.5-A4.7) of Gill (1982).

     b) The formula for the water vapour pressure, given the saturation pressure and the relative humidity, is from Crane (1976), Equation (2.5.5).

     c) The refractivity of air is a function of temperature, total pressure, water-vapour pressure and, in the case of optical/IR, wavelength. The formulae for the two cases are developed from Hohenkerk & Sinclair (1985) and Rueger (2002). The IAG (1999) optical refractivity for dry air is used.

     d) The formula for beta, the ratio of the scale height of the atmosphere to the geocentric distance of the observer, is an adaption of Equation (9) from Stone (1996). The adaptations, arrived at empirically, consist of (i) a small adjustment to the coefficient and (ii) a humidity term for the radio case only.

     e) The formulae for the refraction constants as a function of n-1 and beta are from Green (1987), Equation (4.31).

  References:

  - Crane, R.K., Meeks, M.L. (ed), "Refraction Effects in the Neutral Atmosphere", Methods of Experimental Physics: Astrophysics 12B, Academic Press, 1976.
  - Gill, Adrian E., "Atmosphere-Ocean Dynamics", Academic Press, 1982.
  - Green, R.M., "Spherical Astronomy", Cambridge University Press, 1987.
  - Hohenkerk, C.Y., & Sinclair, A.T., NAO Technical Note No. 63, 1985.
  - IAG Resolutions adopted at the XXIIth General Assembly in Birmingham, 1999, Resolution 3.
  - Rueger, J.M., "Refractive Index Formulae for Electronic Distance Measurement with Radio and Millimetre Waves", in Unisurv Report S-68, School of Surveying and Spatial Information Systems, University of New South Wales, Sydney, Australia, 2002.
  - Stone, Ronald C., P.A.S.P. 108, 1051-1058, 1996.
Since:
  JSOFA release 20131202

### jauG2icrs

public static JSOFA.SphericalCoordinate jauG2icrs(double dl, double db)
Transformation from Galactic Coordinates to ICRS. This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support routine.

Parameters:
  `dl` - double galactic longitude (radians)
  `db` - double galactic latitude (radians)
Returns:
  co ICRS right ascension, declination.

  Notes:

  1. The IAU 1958 system of Galactic coordinates was defined with respect to the now obsolete reference system FK4 B1950.0. When interpreting the system in a modern context, several factors have to be taken into account:
     - The inclusion in FK4 positions of the E-terms of aberration.
     - The distortion of the FK4 proper motion system by differential Galactic rotation.
     - The use of the B1950.0 equinox rather than the now-standard J2000.0.
     - The frame bias between ICRS and the J2000.0 mean place system.
     The Hipparcos Catalogue (Perryman & ESA 1997) provides a rotation matrix that transforms directly between ICRS and Galactic coordinates with the above factors taken into account. The matrix is derived from three angles, namely the ICRS coordinates of the Galactic pole and the longitude of the ascending node of the galactic equator on the ICRS equator. They are given in degrees to five decimal places and for canonical purposes are regarded as exact. In the Hipparcos Catalogue the matrix elements are given to 10 decimal places (about 20 microarcsec). In the present SOFA function the matrix elements have been recomputed from the canonical three angles and are given to 30 decimal places.
  2. The inverse transformation is performed by the function jauIcrs2g.
  Reference: Perryman M.A.C. & ESA, 1997, ESA SP-1200, The Hipparcos and Tycho catalogues. Astrometric and photometric star catalogues derived from the ESA Hipparcos Space Astrometry Mission. ESA Publications Division, Noordwijk, Netherlands.
Since:
  JSOFA release 20150209

### jauIcrs2g

public static JSOFA.SphericalCoordinate jauIcrs2g(double dr, double dd)
Transformation from ICRS to Galactic Coordinates. This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support routine.

Parameters:
  `dr` - double ICRS right ascension (radians)
  `dd` - double ICRS declination (radians)
Returns:
  co galactic longitude (radians), galactic latitude (radians)

  Notes:

  1. The IAU 1958 system of Galactic coordinates was defined with respect to the now obsolete reference system FK4 B1950.0. When interpreting the system in a modern context, several factors have to be taken into account:
     - The inclusion in FK4 positions of the E-terms of aberration.
     - The distortion of the FK4 proper motion system by differential Galactic rotation.
     - The use of the B1950.0 equinox rather than the now-standard J2000.0.
     - The frame bias between ICRS and the J2000.0 mean place system.
     The Hipparcos Catalogue (Perryman & ESA 1997) provides a rotation matrix that transforms directly between ICRS and Galactic coordinates with the above factors taken into account. The matrix is derived from three angles, namely the ICRS coordinates of the Galactic pole and the longitude of the ascending node of the galactic equator on the ICRS equator. They are given in degrees to five decimal places and for canonical purposes are regarded as exact. In the Hipparcos Catalogue the matrix elements are given to 10 decimal places (about 20 microarcsec). In the present SOFA function the matrix elements have been recomputed from the canonical three angles and are given to 30 decimal places.
  2. The inverse transformation is performed by the function iauG2icrs.
  Reference: Perryman M.A.C. & ESA, 1997, ESA SP-1200, The Hipparcos and Tycho catalogues. Astrometric and photometric star catalogues derived from the ESA Hipparcos Space Astrometry Mission. ESA Publications Division, Noordwijk, Netherlands.
Since:
  JSOFA release 20150209

### jauEceq06

public static JSOFA.SphericalCoordinate jauEceq06(double date1, double date2, double dl, double db)
Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec, using the IAU 2006 precession model.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian date (Note 1)
  `date2` - double TT as a 2-part Julian date (Note 1)
  `dl` - double ecliptic longitude and latitude (radians)
  `db` - double ecliptic longitude and latitude (radians)
Returns:
  double ICRS right ascension and declination (radians)
  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others: date1 date2 2450123.7 0.0 (JD method) 2451545.0 -1421.3 (J2000 method) 2400000.5 50123.2 (MJD method) 2450123.5 0.2 (date & time method) The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. No assumptions are made about whether the coordinates represent starlight and embody astrometric effects such as parallax or aberration.
  3. The transformation is approximately that from ecliptic longitude and latitude (mean equinox and ecliptic of date) to mean J2000.0 right ascension and declination, with only frame bias (always less than 25 mas) to disturb this classical picture.
  Called:
  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauEcm06(double, double)` J2000.0 to ecliptic rotation matrix, IAU 2006
  - `jauTrxp(double[][], double[])` product of transpose of r-matrix and p-vector
  - `jauC2s(double[])` unit vector to spherical coordinates
  - `jauAnp(double)` normalize angle into range 0 to 2pi
  - `jauAnpm(double)` normalize angle into range +/- pi
Since:
  JSOFA release 20160503

### jauEcm06

public static double[][] jauEcm06(double date1, double date2)
ICRS equatorial to ecliptic rotation matrix, IAU 2006.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian date (Note 1)
  `date2` - double TT as a 2-part Julian date (Note 1)
Returns:
  double[3][3] ICRS to ecliptic rotation matrix

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others: date1 date2 2450123.7 0.0 (JD method) 2451545.0 -1421.3 (J2000 method) 2400000.5 50123.2 (MJD method) 2450123.5 0.2 (date & time method) The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. The matrix is in the sense E_ep = rm x P_ICRS, where P_ICRS is a vector with respect to ICRS right ascension and declination axes and E_ep is the same vector with respect to the (inertial) ecliptic and equinox of date.
  3. P_ICRS is a free vector, merely a direction, typically of unit magnitude, and not bound to any particular spatial origin, such as the Earth, Sun or SSB. No assumptions are made about whether it represents starlight and embodies astrometric effects such as parallax or aberration. The transformation is approximately that between mean J2000.0 right ascension and declination and ecliptic longitude and latitude, with only frame bias (always less than 25 mas) to disturb this classical picture.
  Called:
  - `jauObl06(double, double)` mean obliquity, IAU 2006
  - `jauPmat06(double, double)` PB matrix, IAU 2006
  - `jauIr(double[][])` initialize r-matrix to identity
  - `jauRx(double, double[][])` rotate around X-axis
  - `jauRxr(double[][], double[][])` product of two r-matrices
Since:
  JSOFA release 20160503

### jauEqec06

public static JSOFA.SphericalCoordinate jauEqec06(double date1, double date2, double dr, double dd)
Transformation from ICRS equatorial coordinates to ecliptic coordinates (mean equinox and ecliptic of date) using IAU 2006 precession model.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `date1` - double TT as a 2-part Julian date (Note 1)
  `date2` - double TT as a 2-part Julian date (Note 1)
  `dr` - double ICRS right ascension and declination (radians)
  `dd` - double ICRS right ascension and declination (radians)
Returns:
  double ecliptic longitude and latitude (radians)
  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others: date1 date2 2450123.7 0.0 (JD method) 2451545.0 -1421.3 (J2000 method) 2400000.5 50123.2 (MJD method) 2450123.5 0.2 (date & time method) The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience.
  2. No assumptions are made about whether the coordinates represent starlight and embody astrometric effects such as parallax or aberration.
  3. The transformation is approximately that from mean J2000.0 right ascension and declination to ecliptic longitude and latitude (mean equinox and ecliptic of date), with only frame bias (always less than 25 mas) to disturb this classical picture.
  Called:
  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauEcm06(double, double)` J2000.0 to ecliptic rotation matrix, IAU 2006
  - `jauRxp(double[][], double[])` product of r-matrix and p-vector
  - `jauC2s(double[])` unit vector to spherical coordinates
  - `jauAnp(double)` normalize angle into range 0 to 2pi
  - `jauAnpm(double)` normalize angle into range +/- pi
Since:
  JSOFA release 20160503

### jauLteceq

public static JSOFA.SphericalCoordinate jauLteceq(double epj, double dl, double db)
Transformation from ecliptic coordinates (mean equinox and ecliptic of date) to ICRS RA,Dec, using a long-term precession model.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `epj` - double Julian epoch (TT)
  `dl` - double ecliptic longitude and latitude (radians)
  `db` - double ecliptic longitude and latitude (radians)
Returns:
  double ICRS right ascension and declination (radians)
  1. No assumptions are made about whether the coordinates represent starlight and embody astrometric effects such as parallax or aberration.
  2. The transformation is approximately that from ecliptic longitude and latitude (mean equinox and ecliptic of date) to mean J2000.0 right ascension and declination, with only frame bias (always less than 25 mas) to disturb this classical picture.
  3. The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.
  Called:
  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauLtecm(double)` J2000.0 to ecliptic rotation matrix, long term
  - `jauTrxp(double[][], double[])` product of transpose of r-matrix and p-vector
  - `jauC2s(double[])` unit vector to spherical coordinates
  - `jauAnp(double)` normalize angle into range 0 to 2pi
  - `jauAnpm(double)` normalize angle into range +/- pi
  References:
  - Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession expressions, valid for long time intervals, Astron.Astrophys. 534, A22
  - Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession expressions, valid for long time intervals (Corrigendum), Astron.Astrophys. 541, C1
Since:
  JSOFA release 20160503

### jauLtecm

public static double[][] jauLtecm(double epj)
ICRS equatorial to ecliptic rotation matrix, long-term.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `epj` - double Julian epoch (TT)
Returns:
  double[3][3] ICRS to ecliptic rotation matrix

  Notes:

  1. The matrix is in the sense E_ep = rm x P_ICRS, where P_ICRS is a vector with respect to ICRS right ascension and declination axes and E_ep is the same vector with respect to the (inertial) ecliptic and equinox of epoch epj.
  2. P_ICRS is a free vector, merely a direction, typically of unit magnitude, and not bound to any particular spatial origin, such as the Earth, Sun or SSB. No assumptions are made about whether it represents starlight and embodies astrometric effects such as parallax or aberration. The transformation is approximately that between mean J2000.0 right ascension and declination and ecliptic longitude and latitude, with only frame bias (always less than 25 mas) to disturb this classical picture.
  3. The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.
  Called:
  - `jauLtpequ(double)` equator pole, long term
  - `jauLtpecl(double)` ecliptic pole, long term
  - `jauPxp(double[], double[])` vector product
  - `jauPn(double[])` normalize vector
  References:
  - Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession expressions, valid for long time intervals, Astron.Astrophys. 534, A22
  - Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession expressions, valid for long time intervals (Corrigendum), Astron.Astrophys. 541, C1
Since:
  JSOFA release 20160503

### jauLteqec

public static JSOFA.SphericalCoordinate jauLteqec(double epj, double dr, double dd)
Transformation from ICRS equatorial coordinates to ecliptic coordinates (mean equinox and ecliptic of date) using a long-term precession model.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `epj` - double Julian epoch (TT)
  `dr` - double ICRS right ascension and declination (radians)
  `dd` - double ICRS right ascension and declination (radians)
Returns:
  ecliptic longitude and latitude (radians)
  1. No assumptions are made about whether the coordinates represent starlight and embody astrometric effects such as parallax or aberration.
  2. The transformation is approximately that from mean J2000.0 right ascension and declination to ecliptic longitude and latitude (mean equinox and ecliptic of date), with only frame bias (always less than 25 mas) to disturb this classical picture.
  3. The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.
  Called:
  - `jauS2c(double, double)` spherical coordinates to unit vector
  - `jauLtecm(double)` J2000.0 to ecliptic rotation matrix, long term
  - `jauRxp(double[][], double[])` product of r-matrix and p-vector
  - `jauC2s(double[])` unit vector to spherical coordinates
  - `jauAnp(double)` normalize angle into range 0 to 2pi
  - `jauAnpm(double)` normalize angle into range +/- pi
  References: Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession expressions, valid for long time intervals, Astron.Astrophys. 534, A22 Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession expressions, valid for long time intervals (Corrigendum), Astron.Astrophys. 541, C1
Since:
  JSOFA release 20160503

### jauLtp

public static double[][] jauLtp(double epj)
Long-term precession matrix.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `epj` - double Julian epoch (TT)
Returns:
  double[3][3] precession matrix, J2000.0 to date

  Notes:

  1. The matrix is in the sense P_date = rp x P_J2000, where P_J2000 is a vector with respect to the J2000.0 mean equator and equinox and P_date is the same vector with respect to the equator and equinox of epoch epj.
  2. The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.
  Called:
  - `jauLtpequ(double)` equator pole, long term
  - `jauLtpecl(double)` ecliptic pole, long term
  - `jauPxp(double[], double[])` vector product
  - `jauPn(double[])` normalize vector
  References:

  Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession expressions, valid for long time intervals, Astron.Astrophys. 534, A22

  Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession expressions, valid for long time intervals (Corrigendum), Astron.Astrophys. 541, C1

Since:
  JSOFA release 20160503

### jauLtpb

public static double[][] jauLtpb(double epj)
Long-term precession matrix, including ICRS frame bias.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `epj` - double Julian epoch (TT)
Returns:
  double[3][3] precession-bias matrix, J2000.0 to date

  Notes:

  1. The matrix is in the sense P_date = rpb x P_ICRS, where P_ICRS is a vector in the International Celestial Reference System, and P_date is the vector with respect to the Celestial Intermediate Reference System at that date but with nutation neglected.
  2. A first order frame bias formulation is used, of sub- microarcsecond accuracy compared with a full 3D rotation.
  3. The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.
  References: Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession expressions, valid for long time intervals, Astron.Astrophys. 534, A22 Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession expressions, valid for long time intervals (Corrigendum), Astron.Astrophys. 541, C1
Since:
  JSOFA release 20160503

### jauLtpecl

public static double[] jauLtpecl(double epj)
Long-term precession of the ecliptic.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `epj` - double Julian epoch (TT)
Returns:
  double[3] ecliptic pole unit vector

  Notes:

  1. The returned vector is with respect to the J2000.0 mean equator and equinox.
  2. The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.
  References: Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession expressions, valid for long time intervals, Astron.Astrophys. 534, A22 Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession expressions, valid for long time intervals (Corrigendum), Astron.Astrophys. 541, C1
Since:
  JSOFA release 20160503

### jauLtpequ

public static double[] jauLtpequ(double epj)
Long-term precession of the equator.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `epj` - double Julian epoch (TT)
Returns:
  double[3] equator pole unit vector

  Notes:

  1. The returned vector is with respect to the J2000.0 mean equator and equinox.
  2. The Vondrak et al. (2011, 2012) 400 millennia precession model agrees with the IAU 2006 precession at J2000.0 and stays within 100 microarcseconds during the 20th and 21st centuries. It is accurate to a few arcseconds throughout the historical period, worsening to a few tenths of a degree at the end of the +/- 200,000 year time span.
  References: Vondrak, J., Capitaine, N. and Wallace, P., 2011, New precession expressions, valid for long time intervals, Astron.Astrophys. 534, A22 Vondrak, J., Capitaine, N. and Wallace, P., 2012, New precession expressions, valid for long time intervals (Corrigendum), Astron.Astrophys. 541, C1
Since:
  JSOFA release 20160503

### jauAe2hd

public static JSOFA.EquatorialCoordinate jauAe2hd(double az, double el, double phi)
Horizon to equatorial coordinates: transform azimuth and altitude to hour angle and declination.

Parameters:
  `az` - double azimuth
  `el` - double altitude (informally, elevation)
  `phi` - double site latitude
Returns:
  ha double hour angle (local) dec double declination

  Notes:

  1. All the arguments are angles in radians.
  2. The sign convention for azimuth is north zero, east +pi/2.
  3. HA is returned in the range +/-pi. Declination is returned in the range +/-pi/2.
  4. The latitude phi is pi/2 minus the angle between the Earth's rotation axis and the adopted zenith. In many applications it will be sufficient to use the published geodetic latitude of the site. In very precise (sub-arcsecond) applications, phi can be corrected for polar motion.
  5. The azimuth az must be with respect to the rotational north pole, as opposed to the ITRS pole, and an azimuth with respect to north on a map of the Earth's surface will need to be adjusted for polar motion if sub-arcsecond accuracy is required.
  6. Should the user wish to work with respect to the astronomical zenith rather than the geodetic zenith, phi will need to be adjusted for deflection of the vertical (often tens of arcseconds), and the zero point of ha will also be affected.
  7. The transformation is the same as Ve = Ry(phi-pi/2)*Rz(pi)*Vh, where Ve and Vh are lefthanded unit vectors in the (ha,dec) and (az,el) systems respectively and Rz and Ry are rotations about first the z-axis and then the y-axis. (n.b. Rz(pi) simply reverses the signs of the x and y components.) For efficiency, the algorithm is written out rather than calling other utility functions. For applications that require even greater efficiency, additional savings are possible if constant terms such as functions of latitude are computed once and for all.
  8. Again for efficiency, no range checking of arguments is carried out.
  Last revision: 2017 September 12
Since:
  JSOFA release 20180130

### jauHd2ae

public static JSOFA.HorizonCoordinate jauHd2ae(double ha, double dec, double phi)
Equatorial to horizon coordinates: transform hour angle and declination to azimuth and altitude.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ha` - double hour angle (local)
  `dec` - double declination
  `phi` - double site latitude
Returns:
  az double azimuth el double altitude (informally, elevation)

  Notes:

  1. All the arguments are angles in radians.
  2. Azimuth is returned in the range 0-2pi; north is zero, and east is +pi/2. Altitude is returned in the range +/- pi/2.
  3. The latitude phi is pi/2 minus the angle between the Earth's rotation axis and the adopted zenith. In many applications it will be sufficient to use the published geodetic latitude of the site. In very precise (sub-arcsecond) applications, phi can be corrected for polar motion.
  4. The returned azimuth az is with respect to the rotational north pole, as opposed to the ITRS pole, and for sub-arcsecond accuracy will need to be adjusted for polar motion if it is to be with respect to north on a map of the Earth's surface.
  5. Should the user wish to work with respect to the astronomical zenith rather than the geodetic zenith, phi will need to be adjusted for deflection of the vertical (often tens of arcseconds), and the zero point of the hour angle ha will also be affected.
  6. The transformation is the same as Vh = Rz(pi)*Ry(pi/2-phi)*Ve, where Vh and Ve are lefthanded unit vectors in the (az,el) and (ha,dec) systems respectively and Ry and Rz are rotations about first the y-axis and then the z-axis. (n.b. Rz(pi) simply reverses the signs of the x and y components.) For efficiency, the algorithm is written out rather than calling other utility functions. For applications that require even greater efficiency, additional savings are possible if constant terms such as functions of latitude are computed once and for all.
  7. Again for efficiency, no range checking of arguments is carried out.
  Last revision: 2017 September 12
Since:
  JSOFA release 20180130

### jauHd2pa

public static double jauHd2pa(double ha, double dec, double phi)
Parallactic angle for a given hour angle and declination.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `ha` - double hour angle
  `dec` - double declination
  `phi` - double site latitude
Returns:
  double parallactic angle

  Notes:

  1. All the arguments are angles in radians.
  2. The parallactic angle at a point in the sky is the position angle of the vertical, i.e. the angle between the directions to the north celestial pole and to the zenith respectively.
  3. The result is returned in the range -pi to +pi.
  4. At the pole itself a zero result is returned.
  5. The latitude phi is pi/2 minus the angle between the Earth's rotation axis and the adopted zenith. In many applications it will be sufficient to use the published geodetic latitude of the site. In very precise (sub-arcsecond) applications, phi can be corrected for polar motion.
  6. Should the user wish to work with respect to the astronomical zenith rather than the geodetic zenith, phi will need to be adjusted for deflection of the vertical (often tens of arcseconds), and the zero point of the hour angle ha will also be affected.
  Reference: Smart, W.M., "Spherical Astronomy", Cambridge University Press, 6th edition (Green, 1977), p49. Last revision: 2017 September 12
Since:
  JSOFA release 20180130

### jauTpors

public static JSOFA.TangentPointSolution jauTpors(double xi, double eta, double a, double b)
In the tangent plane projection, given the rectangular coordinates of a star and its spherical coordinates, determine the spherical coordinates of the tangent point.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `xi` - double rectangular coordinates of star image (Note 2)
  `eta` - double rectangular coordinates of star image (Note 2)
  `a` - double star's spherical coordinates (Note 3)
  `b` - double star's spherical coordinates (Note 3)
Returns:
  tangent point's spherical coordinate solutions Returned (function value): int number of solutions: 0 = no solutions returned (Note 5) 1 = only the first solution is useful (Note 6) 2 = both solutions are useful (Note 6)

  Notes:

  1. The tangent plane projection is also called the "gnomonic projection" and the "central projection".
  2. The eta axis points due north in the adopted coordinate system. If the spherical coordinates are observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". If the spherical coordinates are with respect to a right-handed triad, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.
  3. All angular arguments are in radians.
  4. The angles a01 and a02 are returned in the range 0-2pi. The angles b01 and b02 are returned in the range +/-pi, but in the usual, non-pole-crossing, case, the range is +/-pi/2.
  5. Cases where there is no solution can arise only near the poles. For example, it is clearly impossible for a star at the pole itself to have a non-zero xi value, and hence it is meaningless to ask where the tangent point would have to be to bring about this combination of xi and dec.
  6. Also near the poles, cases can arise where there are two useful solutions. The return value indicates whether the second of the two solutions returned is useful; 1 indicates only one useful solution, the usual case.
  7. The basis of the algorithm is to solve the spherical triangle PSC, where P is the north celestial pole, S is the star and C is the tangent point. The spherical coordinates of the tangent point are [a0,b0]; writing rho^2 = (xi^2+eta^2) and r^2 = (1+rho^2), side c is then (pi/2-b), side p is sqrt(xi^2+eta^2) and side s (to be found) is (pi/2-b0). Angle C is given by sin(C) = xi/rho and cos(C) = eta/rho. Angle P (to be found) is the longitude difference between star and tangent point (a-a0).
  8. This function is a member of the following set: `spherical vector solve for iauTpxes iauTpxev xi,eta iauTpsts iauTpstv star > iauTpors < iauTporv origin`
  Called: iauAnp normalize angle into range 0 to 2pi References: Calabretta M.R. & Greisen, E.W., 2002, "Representations of celestial coordinates in FITS", Astron.Astrophys. 395, 1077 Green, R.M., "Spherical Astronomy", Cambridge University Press, 1987, Chapter 13.
Since:
  JSOFA release 20180130

### jauTporv

public static JSOFA.TangentPointDirectionCosines jauTporv(double xi, double eta, double[] v)
In the tangent plane projection, given the rectangular coordinates of a star and its direction cosines, determine the direction cosines of the tangent point.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `xi` - double rectangular coordinates of star image (Note 2)
  `eta` - double rectangular coordinates of star image (Note 2)
  `v` - double[3] star's direction cosines (Note 3)
Returns:
  tangent point's direction cosines, Solutions 1 & 2 int number of solutions: 0 = no solutions returned (Note 4) 1 = only the first solution is useful (Note 5) 2 = both solutions are useful (Note 5)

  Notes:

  1. The tangent plane projection is also called the "gnomonic projection" and the "central projection".
  2. The eta axis points due north in the adopted coordinate system. If the direction cosines represent observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". If the direction cosines are with respect to a right-handed triad, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.
  3. The vector v must be of unit length or the result will be wrong.
  4. Cases where there is no solution can arise only near the poles. For example, it is clearly impossible for a star at the pole itself to have a non-zero xi value, and hence it is meaningless to ask where the tangent point would have to be.
  5. Also near the poles, cases can arise where there are two useful solutions. The return value indicates whether the second of the two solutions returned is useful; 1 indicates only one useful solution, the usual case.
  6. The basis of the algorithm is to solve the spherical triangle PSC, where P is the north celestial pole, S is the star and C is the tangent point. Calling the celestial spherical coordinates of the star and tangent point (a,b) and (a0,b0) respectively, and writing rho^2 = (xi^2+eta^2) and r^2 = (1+rho^2), and transforming the vector v into (a,b) in the normal way, side c is then (pi/2-b), side p is sqrt(xi^2+eta^2) and side s (to be found) is (pi/2-b0), while angle C is given by sin(C) = xi/rho and cos(C) = eta/rho; angle P (to be found) is (a-a0). After solving the spherical triangle, the result (a0,b0) can be expressed in vector form as v0.
  7. This function is a member of the following set: `spherical vector solve for iauTpxes iauTpxev xi,eta iauTpsts iauTpstv star iauTpors > iauTporv < origin`
  References: Calabretta M.R. & Greisen, E.W., 2002, "Representations of celestial coordinates in FITS", Astron.Astrophys. 395, 1077 Green, R.M., "Spherical Astronomy", Cambridge University Press, 1987, Chapter 13.
Since:
  JSOFA release 20180130

### jauTpsts

public static JSOFA.SphericalCoordinate jauTpsts(double xi, double eta, double a0, double b0)
In the tangent plane projection, given the star's rectangular coordinates and the spherical coordinates of the tangent point, solve for the spherical coordinates of the star.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `xi` - double rectangular coordinates of star image (Note 2)
  `eta` - double rectangular coordinates of star image (Note 2)
  `a0` - double tangent point's spherical coordinates
  `b0` - double tangent point's spherical coordinates
Returns:
  star's spherical coordinates
  1. The tangent plane projection is also called the "gnomonic projection" and the "central projection".
  2. The eta axis points due north in the adopted coordinate system. If the spherical coordinates are observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". If the spherical coordinates are with respect to a right-handed triad, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.
  3. All angular arguments are in radians.
  4. This function is a member of the following set: `spherical vector solve for iauTpxes iauTpxev xi,eta > iauTpsts < iauTpstv star iauTpors iauTporv origin`
  Called: iauAnp normalize angle into range 0 to 2pi References: Calabretta M.R. & Greisen, E.W., 2002, "Representations of celestial coordinates in FITS", Astron.Astrophys. 395, 1077 Green, R.M., "Spherical Astronomy", Cambridge University Press, 1987, Chapter 13.
Since:
  JSOFA release 20180130

### jauTpstv

public static double[] jauTpstv(double xi, double eta, double[] v0)
In the tangent plane projection, given the star's rectangular coordinates and the direction cosines of the tangent point, solve for the direction cosines of the star.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `xi` - double rectangular coordinates of star image (Note 2)
  `eta` - double rectangular coordinates of star image (Note 2)
  `v0` - double[3] tangent point's direction cosines
Returns:
  double[3] star's direction cosines
  1. The tangent plane projection is also called the "gnomonic projection" and the "central projection".
  2. The eta axis points due north in the adopted coordinate system. If the direction cosines represent observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". If the direction cosines are with respect to a right-handed triad, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.
  3. The method used is to complete the star vector in the (xi,eta) based triad and normalize it, then rotate the triad to put the tangent point at the pole with the x-axis aligned to zero longitude. Writing (a0,b0) for the celestial spherical coordinates of the tangent point, the sequence of rotations is (b-pi/2) around the x-axis followed by (-a-pi/2) around the z-axis.
  4. If vector v0 is not of unit length, the returned vector v will be wrong.
  5. If vector v0 points at a pole, the returned vector v will be based on the arbitrary assumption that the longitude coordinate of the tangent point is zero.
  6. This function is a member of the following set: `spherical vector solve for iauTpxes iauTpxev xi,eta iauTpsts > iauTpstv < star iauTpors iauTporv origin`
  References: Calabretta M.R. & Greisen, E.W., 2002, "Representations of celestial coordinates in FITS", Astron.Astrophys. 395, 1077 Green, R.M., "Spherical Astronomy", Cambridge University Press, 1987, Chapter 13.
Since:
  JSOFA release 20180130

### jauTpxes

public static JSOFA.TangentPlaneCoordinate jauTpxes(double a, double b, double a0, double b0)
In the tangent plane projection, given celestial spherical coordinates for a star and the tangent point, solve for the star's rectangular coordinates in the tangent plane.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `a` - double star's spherical coordinates
  `b` - double star's spherical coordinates
  `a0` - double tangent point's spherical coordinates
  `b0` - double tangent point's spherical coordinates
Returns:
  rectangular coordinates of star image (Note 2) int status: 0 = OK 1 = star too far from axis 2 = antistar on tangent plane 3 = antistar too far from axis

  Notes:

  1. The tangent plane projection is also called the "gnomonic projection" and the "central projection".
  2. The eta axis points due north in the adopted coordinate system. If the spherical coordinates are observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". For right-handed spherical coordinates, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.
  3. All angular arguments are in radians.
  4. This function is a member of the following set: `spherical vector solve for > iauTpxes < iauTpxev xi,eta iauTpsts iauTpstv star iauTpors iauTporv origin`
  References: Calabretta M.R. & Greisen, E.W., 2002, "Representations of celestial coordinates in FITS", Astron.Astrophys. 395, 1077 Green, R.M., "Spherical Astronomy", Cambridge University Press, 1987, Chapter 13.
Since:
  JSOFA release 20180130

### jauTpxev

public static JSOFA.TangentPlaneCoordinate jauTpxev(double[] v, double[] v0)
In the tangent plane projection, given celestial direction cosines for a star and the tangent point, solve for the star's rectangular coordinates in the tangent plane.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection.

Status: support function.

Parameters:
  `v` - double[3] direction cosines of star (Note 4)
  `v0` - double[3] direction cosines of tangent point (Note 4)
Returns:
  tangent plane coordinates of star int status: 0 = OK 1 = star too far from axis 2 = antistar on tangent plane 3 = antistar too far from axis

  Notes:

  1. The tangent plane projection is also called the "gnomonic projection" and the "central projection".
  2. The eta axis points due north in the adopted coordinate system. If the direction cosines represent observed (RA,Dec), the tangent plane coordinates (xi,eta) are conventionally called the "standard coordinates". If the direction cosines are with respect to a right-handed triad, (xi,eta) are also right-handed. The units of (xi,eta) are, effectively, radians at the tangent point.
  3. The method used is to extend the star vector to the tangent plane and then rotate the triad so that (x,y) becomes (xi,eta). Writing (a,b) for the celestial spherical coordinates of the star, the sequence of rotations is (a+pi/2) around the z-axis followed by (pi/2-b) around the x-axis.
  4. If vector v0 is not of unit length, or if vector v is of zero length, the results will be wrong.
  5. If v0 points at a pole, the returned (xi,eta) will be based on the arbitrary assumption that the longitude coordinate of the tangent point is zero.
  6. This function is a member of the following set: `spherical vector solve for iauTpxes > iauTpxev < xi,eta iauTpsts iauTpstv star iauTpors iauTporv origin`
  References: Calabretta M.R. & Greisen, E.W., 2002, "Representations of celestial coordinates in FITS", Astron.Astrophys. 395, 1077 Green, R.M., "Spherical Astronomy", Cambridge University Press, 1987, Chapter 13.
Since:
  JSOFA release 20180130

### jauFk425

public static JSOFA.CatalogCoords jauFk425(double r1950, double d1950, double dr1950, double dd1950, double p1950, double v1950)
Convert B1950.0 FK4 star catalog data to J2000.0 FK5. This function converts a star's catalog data from the old FK4 (Bessel-Newcomb) system to the later IAU 1976 FK5 (Fricke) system.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection. Status: support function. (all B1950.0, FK4)

Parameters:
  `r1950` - double B1950.0 RA (rad)
  `d1950` - double B1950.0 Dec (rad)
  `dr1950` - double B1950.0 proper motions (rad/trop.yr)
  `dd1950` - double B1950.0 proper motions (rad/trop.yr)
  `p1950` - double parallax (arcsec)
  `v1950` - double radial velocity (km/s, +ve = moving away) Returned:
Returns:
  - catalogue coordinates (all J2000.0, FK5)

  Notes:

  1. The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt, and are per year rather than per century.
  2. The conversion is somewhat complicated, for several reasons: . Change of standard epoch from B1950.0 to J2000.0. . An intermediate transition date of 1984 January 1.0 TT. . A change of precession model. . Change of time unit for proper motion (tropical to Julian). . FK4 positions include the E-terms of aberration, to simplify the hand computation of annual aberration. FK5 positions assume a rigorous aberration computation based on the Earth's barycentric velocity. . The E-terms also affect proper motions, and in particular cause objects at large distances to exhibit fictitious proper motions. The algorithm is based on Smith et al. (1989) and Yallop et al. (1989), which presented a matrix method due to Standish (1982) as developed by Aoki et al. (1983), using Kinoshita's development of Andoyer's post-Newcomb precession. The numerical constants from Seidelmann (1992) are used canonically.
  3. Conversion from B1950.0 FK4 to J2000.0 FK5 only is provided for. Conversions for different epochs and equinoxes would require additional treatment for precession, proper motion and E-terms.
  4. In the FK4 catalog the proper motions of stars within 10 degrees of the poles do not embody differential E-terms effects and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non- polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this SOFA algorithm to include the effects of differential E-terms on the proper motions for all stars, whether polar or not. At epoch J2000.0, and measuring "on the sky" rather than in terms of RA change, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion.
  Called: iauAnp normalize angle into range 0 to 2pi iauPv2s pv-vector to spherical coordinates iauPdp scalar product of two p-vectors iauPvmpv pv-vector minus pv_vector iauPvppv pv-vector plus pv_vector iauS2pv spherical coordinates to pv-vector iauSxp multiply p-vector by scalar

  References:

  - Aoki, S. et al., 1983, "Conversion matrix of epoch B1950.0 FK4-based positions of stars to epoch J2000.0 positions in accordance with the new IAU resolutions". Astron.Astrophys. 128, 263-267.
  - Seidelmann, P.K. (ed), 1992, "Explanatory Supplement to the Astronomical Almanac", ISBN 0-935702-68-7.
  - Smith, C.A. et al., 1989, "The transformation of astrometric catalog systems to the equinox J2000.0". Astron.J. 97, 265.
  - Standish, E.M., 1982, "Conversion of positions and proper motions from B1950.0 to the IAU system at J2000.0". Astron.Astrophys., 115, 1, 20-22.
  - Yallop, B.D. et al., 1989, "Transformation of mean star places from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space". Astron.J. 97, 274.
Since:
  SOFA release 2019-07-22

### jauFk45z

public static JSOFA.SphericalCoordinate jauFk45z(double r1950, double d1950, double bepoch)
Convert a B1950.0 FK4 star position to J2000.0 FK5, assuming zero proper motion in the FK5 system.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection. Status: support function. This function converts a star's catalog data from the old FK4 (Bessel-Newcomb) system to the later IAU 1976 FK5 (Fricke) system, in such a way that the FK5 proper motion is zero. Because such a star has, in general, a non-zero proper motion in the FK4 system, the routine requires the epoch at which the position in the FK4 system was determined.

Parameters:
  `r1950` - double B1950.0 FK4 RA at epoch (rad)
  `d1950` - double B1950.0 FK4 Dec at epoch (rad)
  `bepoch` - double Besselian epoch (e.g. 1979.3)
Returns:
  J2000.0 FK5 RA,Dec (rad)

  Notes:

  1. The epoch bepoch is strictly speaking Besselian, but if a Julian epoch is supplied the result will be affected only to a negligible extent.
  2. The method is from Appendix 2 of Aoki et al. (1983), but using the constants of Seidelmann (1992). See the routine iauFk425 for a general introduction to the FK4 to FK5 conversion.
  3. Conversion from equinox B1950.0 FK4 to equinox J2000.0 FK5 only is provided for. Conversions for different starting and/or ending epochs would require additional treatment for precession, proper motion and E-terms.
  4. In the FK4 catalog the proper motions of stars within 10 degrees of the poles do not embody differential E-terms effects and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non- polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this SOFA algorithm to include the effects of differential E-terms on the proper motions for all stars, whether polar or not. At epoch J2000.0, and measuring "on the sky" rather than in terms of RA change, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion.

  References:

  - Aoki, S. et al., 1983, "Conversion matrix of epoch B1950.0 FK4-based positions of stars to epoch J2000.0 positions in accordance with the new IAU resolutions". Astron.Astrophys. 128, 263-267.
  - Seidelmann, P.K. (ed), 1992, "Explanatory Supplement to the Astronomical Almanac", ISBN 0-935702-68-7.
  Called: iauAnp normalize angle into range 0 to 2pi iauC2s p-vector to spherical iauEpb2jd Besselian epoch to Julian date iauEpj Julian date to Julian epoch iauPdp scalar product of two p-vectors iauPmp p-vector minus p-vector iauPpsp p-vector plus scaled p-vector iauPvu update a pv-vector iauS2c spherical to p-vector
Since:
  SOFA release 2019-07-22

### jauFk524

public static JSOFA.CatalogCoords jauFk524(double r2000, double d2000, double dr2000, double dd2000, double p2000, double v2000)
Convert J2000.0 FK5 star catalog data to B1950.0 FK4.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection. Status: support function.

Parameters:
  `r2000` - double J2000.0 RA (rad)
  `d2000` - double J2000.0 Dec (rad)
  `dr2000` - double J2000.0 proper motions (rad/Jul.yr)
  `dd2000` - double J2000.0 proper motions (rad/Jul.yr)
  `p2000` - double parallax (arcsec)
  `v2000` - double radial velocity (km/s, +ve = moving away)
Returns:
  (all B1950.0, FK4)

  Notes:

  1. The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt, and are per year rather than per century.
  2. The conversion is somewhat complicated, for several reasons: . Change of standard epoch from J2000.0 to B1950.0. . An intermediate transition date of 1984 January 1.0 TT. . A change of precession model. . Change of time unit for proper motion (Julian to tropical). . FK4 positions include the E-terms of aberration, to simplify the hand computation of annual aberration. FK5 positions assume a rigorous aberration computation based on the Earth's barycentric velocity. . The E-terms also affect proper motions, and in particular cause objects at large distances to exhibit fictitious proper motions. The algorithm is based on Smith et al. (1989) and Yallop et al. (1989), which presented a matrix method due to Standish (1982) as developed by Aoki et al. (1983), using Kinoshita's development of Andoyer's post-Newcomb precession. The numerical constants from Seidelmann (1992) are used canonically.
  3. In the FK4 catalog the proper motions of stars within 10 degrees of the poles do not embody differential E-terms effects and should, strictly speaking, be handled in a different manner from stars outside these regions. However, given the general lack of homogeneity of the star data available for routine astrometry, the difficulties of handling positions that may have been determined from astrometric fields spanning the polar and non- polar regions, the likelihood that the differential E-terms effect was not taken into account when allowing for proper motion in past astrometry, and the undesirability of a discontinuity in the algorithm, the decision has been made in this SOFA algorithm to include the effects of differential E-terms on the proper motions for all stars, whether polar or not. At epoch J2000.0, and measuring "on the sky" rather than in terms of RA change, the errors resulting from this simplification are less than 1 milliarcsecond in position and 1 milliarcsecond per century in proper motion.
  Called: iauAnp normalize angle into range 0 to 2pi iauPdp scalar product of two p-vectors iauPm modulus of p-vector iauPmp p-vector minus p-vector iauPpp p-vector pluus p-vector iauPv2s pv-vector to spherical coordinates iauS2pv spherical coordinates to pv-vector iauSxp multiply p-vector by scalar

  References:

  - Aoki, S. et al., 1983, "Conversion matrix of epoch B1950.0 FK4-based positions of stars to epoch J2000.0 positions in accordance with the new IAU resolutions". Astron.Astrophys. 128, 263-267.
  - Seidelmann, P.K. (ed), 1992, "Explanatory Supplement to the Astronomical Almanac", ISBN 0-935702-68-7.
  - Smith, C.A. et al., 1989, "The transformation of astrometric catalog systems to the equinox J2000.0". Astron.J. 97, 265.
  - Standish, E.M., 1982, "Conversion of positions and proper motions from B1950.0 to the IAU system at J2000.0". Astron.Astrophys., 115, 1, 20-22.
  - Yallop, B.D. et al., 1989, "Transformation of mean star places from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space". Astron.J. 97, 274.
Since:
  SOFA release 2019-07-22

### jauFk54z

public static JSOFA.CatalogCoords jauFk54z(double r2000, double d2000, double bepoch)
Convert a J2000.0 FK5 star position to B1950.0 FK4, assuming zero proper motion in FK5 and parallax.

This function is derived from the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection. Status: support function.

Parameters:
  `r2000` - double J2000.0 FK5 RA (rad)
  `d2000` - double J2000.0 FK5 Dec (rad)
  `bepoch` - double Besselian epoch (e.g. 1950.0)
Returns:
  B1950.0 FK4 RA,Dec (rad) at epoch BEPOCH

  Notes:

  1. In contrast to the iauFk524 routine, here the FK5 proper motions, the parallax and the radial velocity are presumed zero.
  2. This function converts a star position from the IAU 1976 FK5 (Fricke) system to the former FK4 (Bessel-Newcomb) system, for cases such as distant radio sources where it is presumed there is zero parallax and no proper motion. Because of the E-terms of aberration, such objects have (in general) non-zero proper motion in FK4, and the present routine returns those fictitious proper motions.
  3. Conversion from J2000.0 FK5 to B1950.0 FK4 only is provided for. Conversions involving other equinoxes would require additional treatment for precession.
  4. The position returned by this routine is in the B1950.0 FK4 reference system but at Besselian epoch BEPOCH. For comparison with catalogs the BEPOCH argument will frequently be 1950.0. (In this context the distinction between Besselian and Julian epoch is insignificant.)
  5. The RA component of the returned (fictitious) proper motion is dRA/dt rather than cos(Dec)*dRA/dt.
  Called: jauAnp normalize angle into range 0 to 2pi jauC2s p-vector to spherical jauFk524 FK4 to FK5 jauS2c spherical to p-vector
Since:
  SOFA release 2019-07-22

### jauMoon98

public static double[][] jauMoon98(double date1, double date2)
Approximate geocentric position and velocity of the Moon. This function is part of the International Astronomical Union's SOFA (Standards Of Fundamental Astronomy) software collection.

Status: support function.

n.b. Not IAU-endorsed and without canonical status.

Parameters:
  `date1` - double TT date part A (Notes 1,4)
  `date2` - double TT date part B (Notes 1,4)
Returns:
  pv double[2][3] Moon p,v, GCRS (AU, AU/d, Note 5)

  Notes:

  1. The TT date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TT)=2450123.7 could be expressed in any of these ways, among others: date1 date2 2450123.7 0.0 (JD method) 2451545.0 -1421.3 (J2000 method) 2400000.5 50123.2 (MJD method) 2450123.5 0.2 (date & time method) The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. The limited accuracy of the present algorithm is such that any of the methods is satisfactory.
  2. This function is a full implementation of the algorithm published by Meeus (see reference) except that the light-time correction to the Moon's mean longitude has been omitted.
  3. Comparisons with ELP/MPP02 over the interval 1950-2100 gave RMS errors of 2.9 arcsec in geocentric direction, 6.1 km in position and 36 mm/s in velocity. The worst case errors were 18.3 arcsec in geocentric direction, 31.7 km in position and 172 mm/s in velocity.
  4. The original algorithm is expressed in terms of "dynamical time", which can either be TDB or TT without any significant change in accuracy. UT cannot be used without incurring significant errors (30 arcsec in the present era) due to the Moon's 0.5 arcsec/sec movement.
  5. The result is with respect to the GCRS (the same as J2000.0 mean equator and equinox to within 23 mas).
  6. Velocity is obtained by a complete analytical differentiation of the Meeus model.
  7. The Meeus algorithm generates position and velocity in mean ecliptic coordinates of date, which the present function then rotates into GCRS. Because the ecliptic system is precessing, there is a coupling between this spin (about 1.4 degrees per century) and the Moon position that produces a small velocity contribution. In the present function this effect is neglected as it corresponds to a maximum difference of less than 3 mm/s and increases the RMS error by only 0.4%.

  References:

  - Meeus, J., Astronomical Algorithms, 2nd edition, Willmann-Bell, 1998, p337.
  - Simon, J.L., Bretagnon, P., Chapront, J., Chapront-Touze, M., Francou, G. & Laskar, J., Astron.Astrophys., 1994, 282, 663
  Defined in sofam.h: DAU astronomical unit (m) DJC days per Julian century DJ00 reference epoch (J2000.0), Julian Date DD2R degrees to radians Called: iauS2pv spherical coordinates to pv-vector iauPfw06 bias-precession F-W angles, IAU 2006 iauIr initialize r-matrix to identity iauRz rotate around Z-axis iauRx rotate around X-axis iauRxpv product of r-matrix and pv-vector
Since:
  SOFA release 2021-05-12

### jauAtcc13

public static JSOFA.SphericalCoordinate jauAtcc13(double rc, double dc, double pr, double pd, double px, double rv, double date1, double date2)
Transform a star's ICRS catalog entry (epoch J2000.0) into ICRS astrometric place. This function is part of the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection. Status: support function.

Parameters:
  `rc` - double ICRS right ascension at J2000.0 (radians, Note 1)
  `dc` - double ICRS declination at J2000.0 (radians, Note 1)
  `pr` - double RA proper motion (radians/year, Note 2)
  `pd` - double Dec proper motion (radians/year)
  `px` - double parallax (arcsec)
  `rv` - double radial velocity (km/s, +ve if receding)
  `date1` - double TDB as a 2-part...
  `date2` - double ...Julian Date (Note 3)
Returns:
  ra,da double* ICRS astrometric RA,Dec (radians)

  Notes:

  1. Star data for an epoch other than J2000.0 (for example from the Hipparcos catalog, which has an epoch of J1991.25) will require a preliminary call to iauPmsafe before use.
  2. The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
  3. The TDB date date1+date2 is a Julian Date, apportioned in any convenient way between the two arguments. For example, JD(TDB)=2450123.7 could be expressed in any of these ways, among others: date1 date2 2450123.7 0.0 (JD method) 2451545.0 -1421.3 (J2000 method) 2400000.5 50123.2 (MJD method) 2450123.5 0.2 (date & time method) The JD method is the most natural and convenient to use in cases where the loss of several decimal digits of resolution is acceptable. The J2000 method is best matched to the way the argument is handled internally and will deliver the optimum resolution. The MJD method and the date & time methods are both good compromises between resolution and convenience. For most applications of this function the choice will not be at all critical. TT can be used instead of TDB without any significant impact on accuracy.
  Called: iauApci13 astrometry parameters, ICRS-CIRS, 2013 iauAtccq quick catalog ICRS to astrometric
Since:
  SOFA release 2021-05-12

### jauAtccq

public static JSOFA.SphericalCoordinate jauAtccq(double rc, double dc, double pr, double pd, double px, double rv, JSOFA.Astrom astrom)
Quick transformation of a star's ICRS catalog entry (epoch J2000.0) into ICRS astrometric place, given precomputed star-independent astrometry parameters. Use of this function is appropriate when efficiency is important and where many star positions are to be transformed for one date. The star-independent parameters can be obtained by calling one of the functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. If the parallax and proper motions are zero the transformation has no effect. This function is part of the International Astronomical Union's SOFA (Standards of Fundamental Astronomy) software collection. Status: support function.

Parameters:
  `rc` - double ICRS RA at J2000.0 (radians)
  `dc` - double ICRS Dec at J2000.0 (radians)
  `pr` - double RA proper motion (radians/year, Note 3)
  `pd` - double Dec proper motion (radians/year)
  `px` - double parallax (arcsec)
  `rv` - double radial velocity (km/s, +ve if receding)
  `astrom` - Astrom star-independent astrometry parameters:
Returns:
  ra,da SphericalCoordinate ICRS astrometric RA,Dec (radians)

  Notes:

  1. All the vectors are with respect to BCRS axes.
  2. Star data for an epoch other than J2000.0 (for example from the Hipparcos catalog, which has an epoch of J1991.25) will require a preliminary call to iauPmsafe before use.
  3. The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
  Called: iauPmpx proper motion and parallax iauC2s p-vector to spherical iauAnp normalize angle into range 0 to 2pi
Since:
  SOFA release 2021-05-12