celes 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +32 -0
  4. data/README.md +179 -0
  5. data/Rakefile +1 -0
  6. data/celes.gemspec +22 -0
  7. data/ext/celes/a2af.c +120 -0
  8. data/ext/celes/a2tf.c +116 -0
  9. data/ext/celes/af2a.c +107 -0
  10. data/ext/celes/anp.c +82 -0
  11. data/ext/celes/anpm.c +82 -0
  12. data/ext/celes/bi00.c +116 -0
  13. data/ext/celes/bp00.c +173 -0
  14. data/ext/celes/bp06.c +136 -0
  15. data/ext/celes/bpn2xy.c +100 -0
  16. data/ext/celes/c2i00a.c +139 -0
  17. data/ext/celes/c2i00b.c +139 -0
  18. data/ext/celes/c2i06a.c +136 -0
  19. data/ext/celes/c2ibpn.c +142 -0
  20. data/ext/celes/c2ixy.c +131 -0
  21. data/ext/celes/c2ixys.c +123 -0
  22. data/ext/celes/c2s.c +96 -0
  23. data/ext/celes/c2t00a.c +154 -0
  24. data/ext/celes/c2t00b.c +150 -0
  25. data/ext/celes/c2t06a.c +152 -0
  26. data/ext/celes/c2tcio.c +122 -0
  27. data/ext/celes/c2teqx.c +122 -0
  28. data/ext/celes/c2tpe.c +167 -0
  29. data/ext/celes/c2txy.c +159 -0
  30. data/ext/celes/cal2jd.c +139 -0
  31. data/ext/celes/celes_core.c +2522 -0
  32. data/ext/celes/cp.c +80 -0
  33. data/ext/celes/cpv.c +82 -0
  34. data/ext/celes/cr.c +83 -0
  35. data/ext/celes/d2dtf.c +206 -0
  36. data/ext/celes/d2tf.c +160 -0
  37. data/ext/celes/dat.c +289 -0
  38. data/ext/celes/depend +25 -0
  39. data/ext/celes/dtdb.c +1213 -0
  40. data/ext/celes/dtf2d.c +196 -0
  41. data/ext/celes/ee00.c +128 -0
  42. data/ext/celes/ee00a.c +135 -0
  43. data/ext/celes/ee00b.c +141 -0
  44. data/ext/celes/ee06a.c +122 -0
  45. data/ext/celes/eect00.c +282 -0
  46. data/ext/celes/eform.c +147 -0
  47. data/ext/celes/eo06a.c +131 -0
  48. data/ext/celes/eors.c +108 -0
  49. data/ext/celes/epb.c +96 -0
  50. data/ext/celes/epb2jd.c +91 -0
  51. data/ext/celes/epj.c +93 -0
  52. data/ext/celes/epj2jd.c +91 -0
  53. data/ext/celes/epv00.c +2589 -0
  54. data/ext/celes/eqeq94.c +131 -0
  55. data/ext/celes/era00.c +136 -0
  56. data/ext/celes/extconf.rb +4 -0
  57. data/ext/celes/fad03.c +103 -0
  58. data/ext/celes/fae03.c +102 -0
  59. data/ext/celes/faf03.c +106 -0
  60. data/ext/celes/faju03.c +102 -0
  61. data/ext/celes/fal03.c +103 -0
  62. data/ext/celes/falp03.c +103 -0
  63. data/ext/celes/fama03.c +102 -0
  64. data/ext/celes/fame03.c +102 -0
  65. data/ext/celes/fane03.c +99 -0
  66. data/ext/celes/faom03.c +104 -0
  67. data/ext/celes/fapa03.c +103 -0
  68. data/ext/celes/fasa03.c +102 -0
  69. data/ext/celes/faur03.c +99 -0
  70. data/ext/celes/fave03.c +102 -0
  71. data/ext/celes/fk52h.c +143 -0
  72. data/ext/celes/fk5hip.c +126 -0
  73. data/ext/celes/fk5hz.c +160 -0
  74. data/ext/celes/fw2m.c +134 -0
  75. data/ext/celes/fw2xy.c +120 -0
  76. data/ext/celes/gc2gd.c +134 -0
  77. data/ext/celes/gc2gde.c +200 -0
  78. data/ext/celes/gd2gc.c +134 -0
  79. data/ext/celes/gd2gce.c +138 -0
  80. data/ext/celes/gmst00.c +145 -0
  81. data/ext/celes/gmst06.c +136 -0
  82. data/ext/celes/gmst82.c +151 -0
  83. data/ext/celes/gst00a.c +138 -0
  84. data/ext/celes/gst00b.c +146 -0
  85. data/ext/celes/gst06.c +140 -0
  86. data/ext/celes/gst06a.c +131 -0
  87. data/ext/celes/gst94.c +131 -0
  88. data/ext/celes/h2fk5.c +148 -0
  89. data/ext/celes/hfk5z.c +175 -0
  90. data/ext/celes/ir.c +83 -0
  91. data/ext/celes/jd2cal.c +155 -0
  92. data/ext/celes/jdcalf.c +161 -0
  93. data/ext/celes/num00a.c +121 -0
  94. data/ext/celes/num00b.c +121 -0
  95. data/ext/celes/num06a.c +125 -0
  96. data/ext/celes/numat.c +109 -0
  97. data/ext/celes/nut00a.c +2047 -0
  98. data/ext/celes/nut00b.c +372 -0
  99. data/ext/celes/nut06a.c +153 -0
  100. data/ext/celes/nut80.c +325 -0
  101. data/ext/celes/nutm80.c +117 -0
  102. data/ext/celes/obl06.c +118 -0
  103. data/ext/celes/obl80.c +118 -0
  104. data/ext/celes/p06e.c +321 -0
  105. data/ext/celes/p2pv.c +83 -0
  106. data/ext/celes/p2s.c +91 -0
  107. data/ext/celes/pap.c +139 -0
  108. data/ext/celes/pas.c +96 -0
  109. data/ext/celes/pb06.c +144 -0
  110. data/ext/celes/pdp.c +84 -0
  111. data/ext/celes/pfw06.c +165 -0
  112. data/ext/celes/plan94.c +514 -0
  113. data/ext/celes/pm.c +83 -0
  114. data/ext/celes/pmat00.c +118 -0
  115. data/ext/celes/pmat06.c +122 -0
  116. data/ext/celes/pmat76.c +141 -0
  117. data/ext/celes/pmp.c +85 -0
  118. data/ext/celes/pn.c +109 -0
  119. data/ext/celes/pn00.c +177 -0
  120. data/ext/celes/pn00a.c +162 -0
  121. data/ext/celes/pn00b.c +162 -0
  122. data/ext/celes/pn06.c +187 -0
  123. data/ext/celes/pn06a.c +152 -0
  124. data/ext/celes/pnm00a.c +121 -0
  125. data/ext/celes/pnm00b.c +121 -0
  126. data/ext/celes/pnm06a.c +124 -0
  127. data/ext/celes/pnm80.c +126 -0
  128. data/ext/celes/pom00.c +115 -0
  129. data/ext/celes/ppp.c +85 -0
  130. data/ext/celes/ppsp.c +94 -0
  131. data/ext/celes/pr00.c +142 -0
  132. data/ext/celes/prec76.c +148 -0
  133. data/ext/celes/pv2p.c +81 -0
  134. data/ext/celes/pv2s.c +144 -0
  135. data/ext/celes/pvdpv.c +102 -0
  136. data/ext/celes/pvm.c +86 -0
  137. data/ext/celes/pvmpv.c +87 -0
  138. data/ext/celes/pvppv.c +87 -0
  139. data/ext/celes/pvstar.c +207 -0
  140. data/ext/celes/pvu.c +93 -0
  141. data/ext/celes/pvup.c +88 -0
  142. data/ext/celes/pvxpv.c +107 -0
  143. data/ext/celes/pxp.c +94 -0
  144. data/ext/celes/rm2v.c +111 -0
  145. data/ext/celes/rv2m.c +118 -0
  146. data/ext/celes/rx.c +110 -0
  147. data/ext/celes/rxp.c +99 -0
  148. data/ext/celes/rxpv.c +86 -0
  149. data/ext/celes/rxr.c +99 -0
  150. data/ext/celes/ry.c +110 -0
  151. data/ext/celes/rz.c +110 -0
  152. data/ext/celes/s00.c +371 -0
  153. data/ext/celes/s00a.c +143 -0
  154. data/ext/celes/s00b.c +143 -0
  155. data/ext/celes/s06.c +368 -0
  156. data/ext/celes/s06a.c +145 -0
  157. data/ext/celes/s2c.c +85 -0
  158. data/ext/celes/s2p.c +88 -0
  159. data/ext/celes/s2pv.c +103 -0
  160. data/ext/celes/s2xpv.c +87 -0
  161. data/ext/celes/sepp.c +105 -0
  162. data/ext/celes/seps.c +93 -0
  163. data/ext/celes/sofa.h +379 -0
  164. data/ext/celes/sofam.h +155 -0
  165. data/ext/celes/sp00.c +118 -0
  166. data/ext/celes/starpm.c +205 -0
  167. data/ext/celes/starpv.c +264 -0
  168. data/ext/celes/sxp.c +84 -0
  169. data/ext/celes/sxpv.c +85 -0
  170. data/ext/celes/taitt.c +110 -0
  171. data/ext/celes/taiut1.c +112 -0
  172. data/ext/celes/taiutc.c +182 -0
  173. data/ext/celes/tcbtdb.c +132 -0
  174. data/ext/celes/tcgtt.c +109 -0
  175. data/ext/celes/tdbtcb.c +137 -0
  176. data/ext/celes/tdbtt.c +122 -0
  177. data/ext/celes/tf2a.c +107 -0
  178. data/ext/celes/tf2d.c +107 -0
  179. data/ext/celes/tr.c +93 -0
  180. data/ext/celes/trxp.c +93 -0
  181. data/ext/celes/trxpv.c +93 -0
  182. data/ext/celes/tttai.c +110 -0
  183. data/ext/celes/tttcg.c +112 -0
  184. data/ext/celes/tttdb.c +121 -0
  185. data/ext/celes/ttut1.c +110 -0
  186. data/ext/celes/ut1tai.c +111 -0
  187. data/ext/celes/ut1tt.c +110 -0
  188. data/ext/celes/ut1utc.c +193 -0
  189. data/ext/celes/utctai.c +163 -0
  190. data/ext/celes/utcut1.c +151 -0
  191. data/ext/celes/xy06.c +2758 -0
  192. data/ext/celes/xys00a.c +133 -0
  193. data/ext/celes/xys00b.c +133 -0
  194. data/ext/celes/xys06a.c +133 -0
  195. data/ext/celes/zp.c +77 -0
  196. data/ext/celes/zpv.c +79 -0
  197. data/ext/celes/zr.c +83 -0
  198. data/lib/celes.rb +6 -0
  199. data/lib/celes/version.rb +3 -0
  200. data/sofa_20120301.diff +31384 -0
  201. data/test/t_sofa.rb +8228 -0
  202. metadata +251 -0
@@ -0,0 +1,141 @@
1
+ #include "sofa.h"
2
+
3
+ double iauEe00b(double date1, double date2)
4
+ /*
5
+ ** - - - - - - - - -
6
+ ** i a u E e 0 0 b
7
+ ** - - - - - - - - -
8
+ **
9
+ ** Equation of the equinoxes, compatible with IAU 2000 resolutions but
10
+ ** using the truncated nutation model IAU 2000B.
11
+ **
12
+ ** Status: support function.
13
+ **
14
+ ** Given:
15
+ ** date1,date2 double TT as a 2-part Julian Date (Note 1)
16
+ **
17
+ ** Returned (function value):
18
+ ** double equation of the equinoxes (Note 2)
19
+ **
20
+ ** Notes:
21
+ **
22
+ ** 1) The TT date date1+date2 is a Julian Date, apportioned in any
23
+ ** convenient way between the two arguments. For example,
24
+ ** JD(TT)=2450123.7 could be expressed in any of these ways,
25
+ ** among others:
26
+ **
27
+ ** date1 date2
28
+ **
29
+ ** 2450123.7 0.0 (JD method)
30
+ ** 2451545.0 -1421.3 (J2000 method)
31
+ ** 2400000.5 50123.2 (MJD method)
32
+ ** 2450123.5 0.2 (date & time method)
33
+ **
34
+ ** The JD method is the most natural and convenient to use in
35
+ ** cases where the loss of several decimal digits of resolution
36
+ ** is acceptable. The J2000 method is best matched to the way
37
+ ** the argument is handled internally and will deliver the
38
+ ** optimum resolution. The MJD method and the date & time methods
39
+ ** are both good compromises between resolution and convenience.
40
+ **
41
+ ** 2) The result, which is in radians, operates in the following sense:
42
+ **
43
+ ** Greenwich apparent ST = GMST + equation of the equinoxes
44
+ **
45
+ ** 3) The result is compatible with the IAU 2000 resolutions except
46
+ ** that accuracy has been compromised for the sake of speed. For
47
+ ** further details, see McCarthy & Luzum (2001), IERS Conventions
48
+ ** 2003 and Capitaine et al. (2003).
49
+ **
50
+ ** Called:
51
+ ** iauPr00 IAU 2000 precession adjustments
52
+ ** iauObl80 mean obliquity, IAU 1980
53
+ ** iauNut00b nutation, IAU 2000B
54
+ ** iauEe00 equation of the equinoxes, IAU 2000
55
+ **
56
+ ** References:
57
+ **
58
+ ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to
59
+ ** implement the IAU 2000 definition of UT1", Astronomy &
60
+ ** Astrophysics, 406, 1135-1149 (2003)
61
+ **
62
+ ** McCarthy, D.D. & Luzum, B.J., "An abridged model of the
63
+ ** precession-nutation of the celestial pole", Celestial Mechanics &
64
+ ** Dynamical Astronomy, 85, 37-49 (2003)
65
+ **
66
+ ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
67
+ ** IERS Technical Note No. 32, BKG (2004)
68
+ **
69
+ ** This revision: 2008 May 18
70
+ **
71
+ ** Original version 2012-03-01
72
+ **
73
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
74
+ */
75
+ {
76
+ double dpsipr, depspr, epsa, dpsi, deps, ee;
77
+
78
+
79
+ /* IAU 2000 precession-rate adjustments. */
80
+ iauPr00(date1, date2, &dpsipr, &depspr);
81
+
82
+ /* Mean obliquity, consistent with IAU 2000 precession-nutation. */
83
+ epsa = iauObl80(date1, date2) + depspr;
84
+
85
+ /* Nutation in longitude. */
86
+ iauNut00b(date1, date2, &dpsi, &deps);
87
+
88
+ /* Equation of the equinoxes. */
89
+ ee = iauEe00(date1, date2, epsa, dpsi);
90
+
91
+ return ee;
92
+
93
+ /*----------------------------------------------------------------------
94
+ **
95
+ ** Celes is a wrapper of the SOFA Library for Ruby.
96
+ **
97
+ ** This file is redistributed and relicensed in accordance with
98
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
99
+ **
100
+ ** The original library is available from IAU Standards of
101
+ ** Fundamental Astronomy (http://www.iausofa.org/).
102
+ **
103
+ **
104
+ **
105
+ **
106
+ **
107
+ ** Copyright (C) 2013, Naoki Arita
108
+ ** All rights reserved.
109
+ **
110
+ ** Redistribution and use in source and binary forms, with or without
111
+ ** modification, are permitted provided that the following conditions
112
+ ** are met:
113
+ **
114
+ ** 1 Redistributions of source code must retain the above copyright
115
+ ** notice, this list of conditions and the following disclaimer.
116
+ **
117
+ ** 2 Redistributions in binary form must reproduce the above copyright
118
+ ** notice, this list of conditions and the following disclaimer in
119
+ ** the documentation and/or other materials provided with the
120
+ ** distribution.
121
+ **
122
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
123
+ ** the International Astronomical Union nor the names of its
124
+ ** contributors may be used to endorse or promote products derived
125
+ ** from this software without specific prior written permission.
126
+ **
127
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
128
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
129
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
130
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
131
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
132
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
133
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
134
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
135
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
136
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
137
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
138
+ ** POSSIBILITY OF SUCH DAMAGE.
139
+ **
140
+ **--------------------------------------------------------------------*/
141
+ }
@@ -0,0 +1,122 @@
1
+ #include "sofa.h"
2
+
3
+ double iauEe06a(double date1, double date2)
4
+ /*
5
+ ** - - - - - - - - -
6
+ ** i a u E e 0 6 a
7
+ ** - - - - - - - - -
8
+ **
9
+ ** Equation of the equinoxes, compatible with IAU 2000 resolutions and
10
+ ** IAU 2006/2000A precession-nutation.
11
+ **
12
+ ** Status: support function.
13
+ **
14
+ ** Given:
15
+ ** date1,date2 double TT as a 2-part Julian Date (Note 1)
16
+ **
17
+ ** Returned (function value):
18
+ ** double equation of the equinoxes (Note 2)
19
+ **
20
+ ** Notes:
21
+ **
22
+ ** 1) The TT date date1+date2 is a Julian Date, apportioned in any
23
+ ** convenient way between the two arguments. For example,
24
+ ** JD(TT)=2450123.7 could be expressed in any of these ways,
25
+ ** among others:
26
+ **
27
+ ** date1 date2
28
+ **
29
+ ** 2450123.7 0.0 (JD method)
30
+ ** 2451545.0 -1421.3 (J2000 method)
31
+ ** 2400000.5 50123.2 (MJD method)
32
+ ** 2450123.5 0.2 (date & time method)
33
+ **
34
+ ** The JD method is the most natural and convenient to use in
35
+ ** cases where the loss of several decimal digits of resolution
36
+ ** is acceptable. The J2000 method is best matched to the way
37
+ ** the argument is handled internally and will deliver the
38
+ ** optimum resolution. The MJD method and the date & time methods
39
+ ** are both good compromises between resolution and convenience.
40
+ **
41
+ ** 2) The result, which is in radians, operates in the following sense:
42
+ **
43
+ ** Greenwich apparent ST = GMST + equation of the equinoxes
44
+ **
45
+ ** Called:
46
+ ** iauAnpm normalize angle into range +/- pi
47
+ ** iauGst06a Greenwich apparent sidereal time, IAU 2006/2000A
48
+ ** iauGmst06 Greenwich mean sidereal time, IAU 2006
49
+ **
50
+ ** Reference:
51
+ **
52
+ ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003),
53
+ ** IERS Technical Note No. 32, BKG
54
+ **
55
+ ** This revision: 2008 May 18
56
+ **
57
+ ** Original version 2012-03-01
58
+ **
59
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
60
+ */
61
+ {
62
+ double gst06a, gmst06, ee;
63
+
64
+
65
+ /* Apparent and mean sidereal times. */
66
+ gst06a = iauGst06a(0.0, 0.0, date1, date2);
67
+ gmst06 = iauGmst06(0.0, 0.0, date1, date2);
68
+
69
+ /* Equation of the equinoxes. */
70
+ ee = iauAnpm(gst06a - gmst06);
71
+
72
+ return ee;
73
+
74
+ /*----------------------------------------------------------------------
75
+ **
76
+ ** Celes is a wrapper of the SOFA Library for Ruby.
77
+ **
78
+ ** This file is redistributed and relicensed in accordance with
79
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
80
+ **
81
+ ** The original library is available from IAU Standards of
82
+ ** Fundamental Astronomy (http://www.iausofa.org/).
83
+ **
84
+ **
85
+ **
86
+ **
87
+ **
88
+ ** Copyright (C) 2013, Naoki Arita
89
+ ** All rights reserved.
90
+ **
91
+ ** Redistribution and use in source and binary forms, with or without
92
+ ** modification, are permitted provided that the following conditions
93
+ ** are met:
94
+ **
95
+ ** 1 Redistributions of source code must retain the above copyright
96
+ ** notice, this list of conditions and the following disclaimer.
97
+ **
98
+ ** 2 Redistributions in binary form must reproduce the above copyright
99
+ ** notice, this list of conditions and the following disclaimer in
100
+ ** the documentation and/or other materials provided with the
101
+ ** distribution.
102
+ **
103
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
104
+ ** the International Astronomical Union nor the names of its
105
+ ** contributors may be used to endorse or promote products derived
106
+ ** from this software without specific prior written permission.
107
+ **
108
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
109
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
110
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
111
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
112
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
113
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
114
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
115
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
116
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
117
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
118
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
119
+ ** POSSIBILITY OF SUCH DAMAGE.
120
+ **
121
+ **--------------------------------------------------------------------*/
122
+ }
@@ -0,0 +1,282 @@
1
+ #include "sofam.h"
2
+
3
+ double iauEect00(double date1, double date2)
4
+ /*
5
+ ** - - - - - - - - - -
6
+ ** i a u E e c t 0 0
7
+ ** - - - - - - - - - -
8
+ **
9
+ ** Equation of the equinoxes complementary terms, consistent with
10
+ ** IAU 2000 resolutions.
11
+ **
12
+ ** Status: canonical model.
13
+ **
14
+ ** Given:
15
+ ** date1,date2 double TT as a 2-part Julian Date (Note 1)
16
+ **
17
+ ** Returned (function value):
18
+ ** double complementary terms (Note 2)
19
+ **
20
+ ** Notes:
21
+ **
22
+ ** 1) The TT date date1+date2 is a Julian Date, apportioned in any
23
+ ** convenient way between the two arguments. For example,
24
+ ** JD(TT)=2450123.7 could be expressed in any of these ways,
25
+ ** among others:
26
+ **
27
+ ** date1 date2
28
+ **
29
+ ** 2450123.7 0.0 (JD method)
30
+ ** 2451545.0 -1421.3 (J2000 method)
31
+ ** 2400000.5 50123.2 (MJD method)
32
+ ** 2450123.5 0.2 (date & time method)
33
+ **
34
+ ** The JD method is the most natural and convenient to use in
35
+ ** cases where the loss of several decimal digits of resolution
36
+ ** is acceptable. The J2000 method is best matched to the way
37
+ ** the argument is handled internally and will deliver the
38
+ ** optimum resolution. The MJD method and the date & time methods
39
+ ** are both good compromises between resolution and convenience.
40
+ **
41
+ ** 2) The "complementary terms" are part of the equation of the
42
+ ** equinoxes (EE), classically the difference between apparent and
43
+ ** mean Sidereal Time:
44
+ **
45
+ ** GAST = GMST + EE
46
+ **
47
+ ** with:
48
+ **
49
+ ** EE = dpsi * cos(eps)
50
+ **
51
+ ** where dpsi is the nutation in longitude and eps is the obliquity
52
+ ** of date. However, if the rotation of the Earth were constant in
53
+ ** an inertial frame the classical formulation would lead to
54
+ ** apparent irregularities in the UT1 timescale traceable to side-
55
+ ** effects of precession-nutation. In order to eliminate these
56
+ ** effects from UT1, "complementary terms" were introduced in 1994
57
+ ** (IAU, 1994) and took effect from 1997 (Capitaine and Gontier,
58
+ ** 1993):
59
+ **
60
+ ** GAST = GMST + CT + EE
61
+ **
62
+ ** By convention, the complementary terms are included as part of
63
+ ** the equation of the equinoxes rather than as part of the mean
64
+ ** Sidereal Time. This slightly compromises the "geometrical"
65
+ ** interpretation of mean sidereal time but is otherwise
66
+ ** inconsequential.
67
+ **
68
+ ** The present function computes CT in the above expression,
69
+ ** compatible with IAU 2000 resolutions (Capitaine et al., 2002, and
70
+ ** IERS Conventions 2003).
71
+ **
72
+ ** Called:
73
+ ** iauFal03 mean anomaly of the Moon
74
+ ** iauFalp03 mean anomaly of the Sun
75
+ ** iauFaf03 mean argument of the latitude of the Moon
76
+ ** iauFad03 mean elongation of the Moon from the Sun
77
+ ** iauFaom03 mean longitude of the Moon's ascending node
78
+ ** iauFave03 mean longitude of Venus
79
+ ** iauFae03 mean longitude of Earth
80
+ ** iauFapa03 general accumulated precession in longitude
81
+ **
82
+ ** References:
83
+ **
84
+ ** Capitaine, N. & Gontier, A.-M., Astron. Astrophys., 275,
85
+ ** 645-650 (1993)
86
+ **
87
+ ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to
88
+ ** implement the IAU 2000 definition of UT1", Astronomy &
89
+ ** Astrophysics, 406, 1135-1149 (2003)
90
+ **
91
+ ** IAU Resolution C7, Recommendation 3 (1994)
92
+ **
93
+ ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
94
+ ** IERS Technical Note No. 32, BKG (2004)
95
+ **
96
+ ** This revision: 2009 December 17
97
+ **
98
+ ** Original version 2012-03-01
99
+ **
100
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
101
+ */
102
+ {
103
+ /* Time since J2000.0, in Julian centuries */
104
+ double t;
105
+
106
+ /* Miscellaneous */
107
+ int i, j;
108
+ double a, s0, s1;
109
+
110
+ /* Fundamental arguments */
111
+ double fa[14];
112
+
113
+ /* Returned value. */
114
+ double eect;
115
+
116
+ /* ----------------------------------------- */
117
+ /* The series for the EE complementary terms */
118
+ /* ----------------------------------------- */
119
+
120
+ typedef struct {
121
+ int nfa[8]; /* coefficients of l,l',F,D,Om,LVe,LE,pA */
122
+ double s, c; /* sine and cosine coefficients */
123
+ } TERM;
124
+
125
+ /* Terms of order t^0 */
126
+ static const TERM e0[] = {
127
+
128
+ /* 1-10 */
129
+ {{ 0, 0, 0, 0, 1, 0, 0, 0}, 2640.96e-6, -0.39e-6 },
130
+ {{ 0, 0, 0, 0, 2, 0, 0, 0}, 63.52e-6, -0.02e-6 },
131
+ {{ 0, 0, 2, -2, 3, 0, 0, 0}, 11.75e-6, 0.01e-6 },
132
+ {{ 0, 0, 2, -2, 1, 0, 0, 0}, 11.21e-6, 0.01e-6 },
133
+ {{ 0, 0, 2, -2, 2, 0, 0, 0}, -4.55e-6, 0.00e-6 },
134
+ {{ 0, 0, 2, 0, 3, 0, 0, 0}, 2.02e-6, 0.00e-6 },
135
+ {{ 0, 0, 2, 0, 1, 0, 0, 0}, 1.98e-6, 0.00e-6 },
136
+ {{ 0, 0, 0, 0, 3, 0, 0, 0}, -1.72e-6, 0.00e-6 },
137
+ {{ 0, 1, 0, 0, 1, 0, 0, 0}, -1.41e-6, -0.01e-6 },
138
+ {{ 0, 1, 0, 0, -1, 0, 0, 0}, -1.26e-6, -0.01e-6 },
139
+
140
+ /* 11-20 */
141
+ {{ 1, 0, 0, 0, -1, 0, 0, 0}, -0.63e-6, 0.00e-6 },
142
+ {{ 1, 0, 0, 0, 1, 0, 0, 0}, -0.63e-6, 0.00e-6 },
143
+ {{ 0, 1, 2, -2, 3, 0, 0, 0}, 0.46e-6, 0.00e-6 },
144
+ {{ 0, 1, 2, -2, 1, 0, 0, 0}, 0.45e-6, 0.00e-6 },
145
+ {{ 0, 0, 4, -4, 4, 0, 0, 0}, 0.36e-6, 0.00e-6 },
146
+ {{ 0, 0, 1, -1, 1, -8, 12, 0}, -0.24e-6, -0.12e-6 },
147
+ {{ 0, 0, 2, 0, 0, 0, 0, 0}, 0.32e-6, 0.00e-6 },
148
+ {{ 0, 0, 2, 0, 2, 0, 0, 0}, 0.28e-6, 0.00e-6 },
149
+ {{ 1, 0, 2, 0, 3, 0, 0, 0}, 0.27e-6, 0.00e-6 },
150
+ {{ 1, 0, 2, 0, 1, 0, 0, 0}, 0.26e-6, 0.00e-6 },
151
+
152
+ /* 21-30 */
153
+ {{ 0, 0, 2, -2, 0, 0, 0, 0}, -0.21e-6, 0.00e-6 },
154
+ {{ 0, 1, -2, 2, -3, 0, 0, 0}, 0.19e-6, 0.00e-6 },
155
+ {{ 0, 1, -2, 2, -1, 0, 0, 0}, 0.18e-6, 0.00e-6 },
156
+ {{ 0, 0, 0, 0, 0, 8,-13, -1}, -0.10e-6, 0.05e-6 },
157
+ {{ 0, 0, 0, 2, 0, 0, 0, 0}, 0.15e-6, 0.00e-6 },
158
+ {{ 2, 0, -2, 0, -1, 0, 0, 0}, -0.14e-6, 0.00e-6 },
159
+ {{ 1, 0, 0, -2, 1, 0, 0, 0}, 0.14e-6, 0.00e-6 },
160
+ {{ 0, 1, 2, -2, 2, 0, 0, 0}, -0.14e-6, 0.00e-6 },
161
+ {{ 1, 0, 0, -2, -1, 0, 0, 0}, 0.14e-6, 0.00e-6 },
162
+ {{ 0, 0, 4, -2, 4, 0, 0, 0}, 0.13e-6, 0.00e-6 },
163
+
164
+ /* 31-33 */
165
+ {{ 0, 0, 2, -2, 4, 0, 0, 0}, -0.11e-6, 0.00e-6 },
166
+ {{ 1, 0, -2, 0, -3, 0, 0, 0}, 0.11e-6, 0.00e-6 },
167
+ {{ 1, 0, -2, 0, -1, 0, 0, 0}, 0.11e-6, 0.00e-6 }
168
+ };
169
+
170
+ /* Terms of order t^1 */
171
+ static const TERM e1[] = {
172
+ {{ 0, 0, 0, 0, 1, 0, 0, 0}, -0.87e-6, 0.00e-6 }
173
+ };
174
+
175
+ /* Number of terms in the series */
176
+ const int NE0 = (int) (sizeof e0 / sizeof (TERM));
177
+ const int NE1 = (int) (sizeof e1 / sizeof (TERM));
178
+
179
+ /*--------------------------------------------------------------------*/
180
+
181
+ /* Interval between fundamental epoch J2000.0 and current date (JC). */
182
+ t = ((date1 - DJ00) + date2) / DJC;
183
+
184
+ /* Fundamental Arguments (from IERS Conventions 2003) */
185
+
186
+ /* Mean anomaly of the Moon. */
187
+ fa[0] = iauFal03(t);
188
+
189
+ /* Mean anomaly of the Sun. */
190
+ fa[1] = iauFalp03(t);
191
+
192
+ /* Mean longitude of the Moon minus that of the ascending node. */
193
+ fa[2] = iauFaf03(t);
194
+
195
+ /* Mean elongation of the Moon from the Sun. */
196
+ fa[3] = iauFad03(t);
197
+
198
+ /* Mean longitude of the ascending node of the Moon. */
199
+ fa[4] = iauFaom03(t);
200
+
201
+ /* Mean longitude of Venus. */
202
+ fa[5] = iauFave03(t);
203
+
204
+ /* Mean longitude of Earth. */
205
+ fa[6] = iauFae03(t);
206
+
207
+ /* General precession in longitude. */
208
+ fa[7] = iauFapa03(t);
209
+
210
+ /* Evaluate the EE complementary terms. */
211
+ s0 = 0.0;
212
+ s1 = 0.0;
213
+
214
+ for (i = NE0-1; i >= 0; i--) {
215
+ a = 0.0;
216
+ for (j = 0; j < 8; j++) {
217
+ a += (double)(e0[i].nfa[j]) * fa[j];
218
+ }
219
+ s0 += e0[i].s * sin(a) + e0[i].c * cos(a);
220
+ }
221
+
222
+ for (i = NE1-1; i >= 0; i--) {
223
+ a = 0.0;
224
+ for (j = 0; j < 8; j++) {
225
+ a += (double)(e1[i].nfa[j]) * fa[j];
226
+ }
227
+ s1 += e1[i].s * sin(a) + e1[i].c * cos(a);
228
+ }
229
+
230
+ eect = (s0 + s1 * t ) * DAS2R;
231
+
232
+ return eect;
233
+
234
+ /*----------------------------------------------------------------------
235
+ **
236
+ ** Celes is a wrapper of the SOFA Library for Ruby.
237
+ **
238
+ ** This file is redistributed and relicensed in accordance with
239
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
240
+ **
241
+ ** The original library is available from IAU Standards of
242
+ ** Fundamental Astronomy (http://www.iausofa.org/).
243
+ **
244
+ **
245
+ **
246
+ **
247
+ **
248
+ ** Copyright (C) 2013, Naoki Arita
249
+ ** All rights reserved.
250
+ **
251
+ ** Redistribution and use in source and binary forms, with or without
252
+ ** modification, are permitted provided that the following conditions
253
+ ** are met:
254
+ **
255
+ ** 1 Redistributions of source code must retain the above copyright
256
+ ** notice, this list of conditions and the following disclaimer.
257
+ **
258
+ ** 2 Redistributions in binary form must reproduce the above copyright
259
+ ** notice, this list of conditions and the following disclaimer in
260
+ ** the documentation and/or other materials provided with the
261
+ ** distribution.
262
+ **
263
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
264
+ ** the International Astronomical Union nor the names of its
265
+ ** contributors may be used to endorse or promote products derived
266
+ ** from this software without specific prior written permission.
267
+ **
268
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
269
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
270
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
271
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
272
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
273
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
274
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
275
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
276
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
277
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
278
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
279
+ ** POSSIBILITY OF SUCH DAMAGE.
280
+ **
281
+ **--------------------------------------------------------------------*/
282
+ }