1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
use craterxr;
use ;
/// Bias/precession/nutation results, IAU 2000
///
/// Precession-nutation, IAU 2000 model: a multi-purpose function,
/// supporting classical (equinox-based) use directly and CIO-based
/// use indirectly.
///
/// This function is part of the International Astronomical Union's
/// SOFA (Standards of Fundamental Astronomy) software collection.
///
/// Status: support function.
///
/// Given:
/// date1,date2 double TT as a 2-part Julian Date (Note 1)
/// dpsi,deps double nutation (Note 2)
///
/// Returned (function value):
/// (epsa, rb, rp, rbp, rn, rbpn) (f64, [[f64; 3]; 3], [[f64; 3]; 3], [[f64; 3]; 3], [[f64; 3]; 3], [[f64; 3]; 3])
///
/// epsa mean obliquity (Note 3)
/// rb frame bias matrix (Note 4)
/// rp precession matrix (Note 5)
/// rbp bias-precession matrix (Note 6)
/// rn nutation matrix (Note 7)
/// rbpn 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.
///
/// Called:
/// iauPr00 IAU 2000 precession adjustments
/// iauObl80 mean obliquity, IAU 1980
/// iauBp00 frame bias and precession matrices, IAU 2000
/// iauCr copy r-matrix
/// iauNumat form nutation matrix
/// iauRxr 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.