File Coverage

erfasrc/src/prec76.c
Criterion Covered Total %
statement 0 10 0.0
branch n/a
condition n/a
subroutine n/a
pod n/a
total 0 10 0.0


line stmt bran cond sub pod time code
1             #include "erfa.h"
2              
3 0           void eraPrec76(double date01, double date02, double date11, double date12,
4             double *zeta, double *z, double *theta)
5             /*
6             ** - - - - - - - - - -
7             ** e r a P r e c 7 6
8             ** - - - - - - - - - -
9             **
10             ** IAU 1976 precession model.
11             **
12             ** This function forms the three Euler angles which implement general
13             ** precession between two dates, using the IAU 1976 model (as for the
14             ** FK5 catalog).
15             **
16             ** Given:
17             ** date01,date02 double TDB starting date (Note 1)
18             ** date11,date12 double TDB ending date (Note 1)
19             **
20             ** Returned:
21             ** zeta double 1st rotation: radians cw around z
22             ** z double 3rd rotation: radians cw around z
23             ** theta double 2nd rotation: radians ccw around y
24             **
25             ** Notes:
26             **
27             ** 1) The dates date01+date02 and date11+date12 are Julian Dates,
28             ** apportioned in any convenient way between the arguments daten1
29             ** and daten2. For example, JD(TDB)=2450123.7 could be expressed in
30             ** any of these ways, among others:
31             **
32             ** daten1 daten2
33             **
34             ** 2450123.7 0.0 (JD method)
35             ** 2451545.0 -1421.3 (J2000 method)
36             ** 2400000.5 50123.2 (MJD method)
37             ** 2450123.5 0.2 (date & time method)
38             **
39             ** The JD method is the most natural and convenient to use in cases
40             ** where the loss of several decimal digits of resolution is
41             ** acceptable. The J2000 method is best matched to the way the
42             ** argument is handled internally and will deliver the optimum
43             ** optimum resolution. The MJD method and the date & time methods
44             ** are both good compromises between resolution and convenience.
45             ** The two dates may be expressed using different methods, but at
46             ** the risk of losing some resolution.
47             **
48             ** 2) The accumulated precession angles zeta, z, theta are expressed
49             ** through canonical polynomials which are valid only for a limited
50             ** time span. In addition, the IAU 1976 precession rate is known to
51             ** be imperfect. The absolute accuracy of the present formulation
52             ** is better than 0.1 arcsec from 1960AD to 2040AD, better than
53             ** 1 arcsec from 1640AD to 2360AD, and remains below 3 arcsec for
54             ** the whole of the period 500BC to 3000AD. The errors exceed
55             ** 10 arcsec outside the range 1200BC to 3900AD, exceed 100 arcsec
56             ** outside 4200BC to 5600AD and exceed 1000 arcsec outside 6800BC to
57             ** 8200AD.
58             **
59             ** 3) The three angles are returned in the conventional order, which
60             ** is not the same as the order of the corresponding Euler
61             ** rotations. The precession matrix is
62             ** R_3(-z) x R_2(+theta) x R_3(-zeta).
63             **
64             ** Reference:
65             **
66             ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282, equations
67             ** (6) & (7), p283.
68             **
69             ** Copyright (C) 2013-2020, NumFOCUS Foundation.
70             ** Derived, with permission, from the SOFA library. See notes at end of file.
71             */
72             {
73             double t0, t, tas2r, w;
74              
75              
76             /* Interval between fundamental epoch J2000.0 and start date (JC). */
77 0           t0 = ((date01 - ERFA_DJ00) + date02) / ERFA_DJC;
78              
79             /* Interval over which precession required (JC). */
80 0           t = ((date11 - date01) + (date12 - date02)) / ERFA_DJC;
81              
82             /* Euler angles. */
83 0           tas2r = t * ERFA_DAS2R;
84 0           w = 2306.2181 + (1.39656 - 0.000139 * t0) * t0;
85              
86 0           *zeta = (w + ((0.30188 - 0.000344 * t0) + 0.017998 * t) * t) * tas2r;
87              
88 0           *z = (w + ((1.09468 + 0.000066 * t0) + 0.018203 * t) * t) * tas2r;
89              
90 0           *theta = ((2004.3109 + (-0.85330 - 0.000217 * t0) * t0)
91 0           + ((-0.42665 - 0.000217 * t0) - 0.041833 * t) * t) * tas2r;
92              
93 0           return;
94              
95             }
96             /*----------------------------------------------------------------------
97             **
98             **
99             ** Copyright (C) 2013-2020, NumFOCUS Foundation.
100             ** All rights reserved.
101             **
102             ** This library is derived, with permission, from the International
103             ** Astronomical Union's "Standards of Fundamental Astronomy" library,
104             ** available from http://www.iausofa.org.
105             **
106             ** The ERFA version is intended to retain identical functionality to
107             ** the SOFA library, but made distinct through different function and
108             ** file names, as set out in the SOFA license conditions. The SOFA
109             ** original has a role as a reference standard for the IAU and IERS,
110             ** and consequently redistribution is permitted only in its unaltered
111             ** state. The ERFA version is not subject to this restriction and
112             ** therefore can be included in distributions which do not support the
113             ** concept of "read only" software.
114             **
115             ** Although the intent is to replicate the SOFA API (other than
116             ** replacement of prefix names) and results (with the exception of
117             ** bugs; any that are discovered will be fixed), SOFA is not
118             ** responsible for any errors found in this version of the library.
119             **
120             ** If you wish to acknowledge the SOFA heritage, please acknowledge
121             ** that you are using a library derived from SOFA, rather than SOFA
122             ** itself.
123             **
124             **
125             ** TERMS AND CONDITIONS
126             **
127             ** Redistribution and use in source and binary forms, with or without
128             ** modification, are permitted provided that the following conditions
129             ** are met:
130             **
131             ** 1 Redistributions of source code must retain the above copyright
132             ** notice, this list of conditions and the following disclaimer.
133             **
134             ** 2 Redistributions in binary form must reproduce the above copyright
135             ** notice, this list of conditions and the following disclaimer in
136             ** the documentation and/or other materials provided with the
137             ** distribution.
138             **
139             ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
140             ** the International Astronomical Union nor the names of its
141             ** contributors may be used to endorse or promote products derived
142             ** from this software without specific prior written permission.
143             **
144             ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
145             ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
146             ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
147             ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
148             ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
149             ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
150             ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
151             ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
152             ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
153             ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
154             ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
155             ** POSSIBILITY OF SUCH DAMAGE.
156             **
157             */