equationoftime 4.0.0 → 4.1.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 (265) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +8 -3
  3. data/Gemfile.lock +48 -0
  4. data/README.md +22 -19
  5. data/Rakefile +14 -7
  6. data/equationoftime.gemspec +9 -6
  7. data/ext/ceot/ceot.c +52 -0
  8. data/ext/ceot/eot.c +79 -0
  9. data/ext/ceot/eot.h +8 -0
  10. data/ext/ceot/extconf.rb +5 -0
  11. data/lib/eot.rb +2 -1
  12. data/lib/eot/angles.rb +44 -43
  13. data/lib/eot/init.rb +13 -6
  14. data/lib/eot/version.rb +1 -1
  15. data/wiki.md +6 -7
  16. metadata +26 -255
  17. data/.settings/org.eclipse.ltk.core.refactoring.prefs +0 -2
  18. data/Makefile +0 -238
  19. data/analemma_data.yml +0 -2925
  20. data/examples/Equation_of_Time.jpg +0 -0
  21. data/examples/analemma_data_generator.rb +0 -53
  22. data/examples/celes_parts/.RUBYARCHDIR.time +0 -0
  23. data/examples/celes_parts/.cproject +0 -56
  24. data/examples/celes_parts/.project +0 -78
  25. data/examples/celes_parts/a2af.c +0 -120
  26. data/examples/celes_parts/a2tf.c +0 -116
  27. data/examples/celes_parts/af2a.c +0 -107
  28. data/examples/celes_parts/anp.c +0 -82
  29. data/examples/celes_parts/anpm.c +0 -82
  30. data/examples/celes_parts/bi00.c +0 -116
  31. data/examples/celes_parts/bp00.c +0 -173
  32. data/examples/celes_parts/bp06.c +0 -136
  33. data/examples/celes_parts/bpn2xy.c +0 -100
  34. data/examples/celes_parts/c2i00a.c +0 -139
  35. data/examples/celes_parts/c2i00b.c +0 -139
  36. data/examples/celes_parts/c2i06a.c +0 -136
  37. data/examples/celes_parts/c2ibpn.c +0 -142
  38. data/examples/celes_parts/c2ixy.c +0 -131
  39. data/examples/celes_parts/c2ixys.c +0 -123
  40. data/examples/celes_parts/c2s.c +0 -96
  41. data/examples/celes_parts/c2t00a.c +0 -154
  42. data/examples/celes_parts/c2t00b.c +0 -150
  43. data/examples/celes_parts/c2t06a.c +0 -152
  44. data/examples/celes_parts/c2tcio.c +0 -122
  45. data/examples/celes_parts/c2teqx.c +0 -122
  46. data/examples/celes_parts/c2tpe.c +0 -167
  47. data/examples/celes_parts/c2txy.c +0 -159
  48. data/examples/celes_parts/cal2jd.c +0 -139
  49. data/examples/celes_parts/celes_core.c +0 -2522
  50. data/examples/celes_parts/cp.c +0 -80
  51. data/examples/celes_parts/cpv.c +0 -82
  52. data/examples/celes_parts/cr.c +0 -83
  53. data/examples/celes_parts/d2dtf.c +0 -206
  54. data/examples/celes_parts/d2tf.c +0 -160
  55. data/examples/celes_parts/dat.c +0 -289
  56. data/examples/celes_parts/depend +0 -25
  57. data/examples/celes_parts/dtdb.c +0 -1213
  58. data/examples/celes_parts/dtf2d.c +0 -196
  59. data/examples/celes_parts/ee00.c +0 -128
  60. data/examples/celes_parts/ee00a.c +0 -135
  61. data/examples/celes_parts/ee00b.c +0 -141
  62. data/examples/celes_parts/ee06a.c +0 -122
  63. data/examples/celes_parts/eect00.c +0 -282
  64. data/examples/celes_parts/eform.c +0 -147
  65. data/examples/celes_parts/eo06a.c +0 -131
  66. data/examples/celes_parts/eors.c +0 -108
  67. data/examples/celes_parts/epb.c +0 -96
  68. data/examples/celes_parts/epb2jd.c +0 -91
  69. data/examples/celes_parts/epj.c +0 -93
  70. data/examples/celes_parts/epj2jd.c +0 -91
  71. data/examples/celes_parts/epv00.c +0 -2589
  72. data/examples/celes_parts/eqeq94.c +0 -131
  73. data/examples/celes_parts/era00.c +0 -136
  74. data/examples/celes_parts/extconf.rb +0 -4
  75. data/examples/celes_parts/fad03.c +0 -103
  76. data/examples/celes_parts/fae03.c +0 -102
  77. data/examples/celes_parts/faf03.c +0 -106
  78. data/examples/celes_parts/faju03.c +0 -102
  79. data/examples/celes_parts/fal03.c +0 -103
  80. data/examples/celes_parts/falp03.c +0 -103
  81. data/examples/celes_parts/fama03.c +0 -102
  82. data/examples/celes_parts/fame03.c +0 -102
  83. data/examples/celes_parts/fane03.c +0 -99
  84. data/examples/celes_parts/faom03.c +0 -104
  85. data/examples/celes_parts/fapa03.c +0 -103
  86. data/examples/celes_parts/fasa03.c +0 -102
  87. data/examples/celes_parts/faur03.c +0 -99
  88. data/examples/celes_parts/fave03.c +0 -102
  89. data/examples/celes_parts/fk52h.c +0 -143
  90. data/examples/celes_parts/fk5hip.c +0 -126
  91. data/examples/celes_parts/fk5hz.c +0 -160
  92. data/examples/celes_parts/fw2m.c +0 -134
  93. data/examples/celes_parts/fw2xy.c +0 -120
  94. data/examples/celes_parts/gc2gd.c +0 -134
  95. data/examples/celes_parts/gc2gde.c +0 -200
  96. data/examples/celes_parts/gd2gc.c +0 -134
  97. data/examples/celes_parts/gd2gce.c +0 -138
  98. data/examples/celes_parts/gmst00.c +0 -145
  99. data/examples/celes_parts/gmst06.c +0 -136
  100. data/examples/celes_parts/gmst82.c +0 -151
  101. data/examples/celes_parts/gst00a.c +0 -138
  102. data/examples/celes_parts/gst00b.c +0 -146
  103. data/examples/celes_parts/gst06.c +0 -140
  104. data/examples/celes_parts/gst06a.c +0 -131
  105. data/examples/celes_parts/gst94.c +0 -131
  106. data/examples/celes_parts/h2fk5.c +0 -148
  107. data/examples/celes_parts/hfk5z.c +0 -175
  108. data/examples/celes_parts/ir.c +0 -83
  109. data/examples/celes_parts/jd2cal.c +0 -155
  110. data/examples/celes_parts/jdcalf.c +0 -161
  111. data/examples/celes_parts/num00a.c +0 -121
  112. data/examples/celes_parts/num00b.c +0 -121
  113. data/examples/celes_parts/num06a.c +0 -125
  114. data/examples/celes_parts/numat.c +0 -109
  115. data/examples/celes_parts/nut00a.c +0 -2047
  116. data/examples/celes_parts/nut00b.c +0 -372
  117. data/examples/celes_parts/nut06a.c +0 -153
  118. data/examples/celes_parts/nut80.c +0 -325
  119. data/examples/celes_parts/nutm80.c +0 -117
  120. data/examples/celes_parts/obl06.c +0 -118
  121. data/examples/celes_parts/obl80.c +0 -118
  122. data/examples/celes_parts/p06e.c +0 -321
  123. data/examples/celes_parts/p2pv.c +0 -83
  124. data/examples/celes_parts/p2s.c +0 -91
  125. data/examples/celes_parts/pap.c +0 -139
  126. data/examples/celes_parts/pas.c +0 -96
  127. data/examples/celes_parts/pb06.c +0 -144
  128. data/examples/celes_parts/pdp.c +0 -84
  129. data/examples/celes_parts/pfw06.c +0 -165
  130. data/examples/celes_parts/plan94.c +0 -514
  131. data/examples/celes_parts/pm.c +0 -83
  132. data/examples/celes_parts/pmat00.c +0 -118
  133. data/examples/celes_parts/pmat06.c +0 -122
  134. data/examples/celes_parts/pmat76.c +0 -141
  135. data/examples/celes_parts/pmp.c +0 -85
  136. data/examples/celes_parts/pn.c +0 -109
  137. data/examples/celes_parts/pn00.c +0 -177
  138. data/examples/celes_parts/pn00a.c +0 -162
  139. data/examples/celes_parts/pn00b.c +0 -162
  140. data/examples/celes_parts/pn06.c +0 -187
  141. data/examples/celes_parts/pn06a.c +0 -152
  142. data/examples/celes_parts/pnm00a.c +0 -121
  143. data/examples/celes_parts/pnm00b.c +0 -121
  144. data/examples/celes_parts/pnm06a.c +0 -124
  145. data/examples/celes_parts/pnm80.c +0 -126
  146. data/examples/celes_parts/pom00.c +0 -115
  147. data/examples/celes_parts/ppp.c +0 -85
  148. data/examples/celes_parts/ppsp.c +0 -94
  149. data/examples/celes_parts/pr00.c +0 -142
  150. data/examples/celes_parts/prec76.c +0 -148
  151. data/examples/celes_parts/pv2p.c +0 -81
  152. data/examples/celes_parts/pv2s.c +0 -144
  153. data/examples/celes_parts/pvdpv.c +0 -102
  154. data/examples/celes_parts/pvm.c +0 -86
  155. data/examples/celes_parts/pvmpv.c +0 -87
  156. data/examples/celes_parts/pvppv.c +0 -87
  157. data/examples/celes_parts/pvstar.c +0 -207
  158. data/examples/celes_parts/pvu.c +0 -93
  159. data/examples/celes_parts/pvup.c +0 -88
  160. data/examples/celes_parts/pvxpv.c +0 -107
  161. data/examples/celes_parts/pxp.c +0 -94
  162. data/examples/celes_parts/rm2v.c +0 -111
  163. data/examples/celes_parts/rv2m.c +0 -118
  164. data/examples/celes_parts/rx.c +0 -110
  165. data/examples/celes_parts/rxp.c +0 -99
  166. data/examples/celes_parts/rxpv.c +0 -86
  167. data/examples/celes_parts/rxr.c +0 -99
  168. data/examples/celes_parts/ry.c +0 -110
  169. data/examples/celes_parts/rz.c +0 -110
  170. data/examples/celes_parts/s00.c +0 -371
  171. data/examples/celes_parts/s00a.c +0 -143
  172. data/examples/celes_parts/s00b.c +0 -143
  173. data/examples/celes_parts/s06.c +0 -368
  174. data/examples/celes_parts/s06a.c +0 -145
  175. data/examples/celes_parts/s2c.c +0 -85
  176. data/examples/celes_parts/s2p.c +0 -88
  177. data/examples/celes_parts/s2pv.c +0 -103
  178. data/examples/celes_parts/s2xpv.c +0 -87
  179. data/examples/celes_parts/sepp.c +0 -105
  180. data/examples/celes_parts/seps.c +0 -93
  181. data/examples/celes_parts/sofa.h +0 -379
  182. data/examples/celes_parts/sofam.h +0 -155
  183. data/examples/celes_parts/sp00.c +0 -118
  184. data/examples/celes_parts/starpm.c +0 -205
  185. data/examples/celes_parts/starpv.c +0 -264
  186. data/examples/celes_parts/sxp.c +0 -84
  187. data/examples/celes_parts/sxpv.c +0 -85
  188. data/examples/celes_parts/taitt.c +0 -110
  189. data/examples/celes_parts/taiut1.c +0 -112
  190. data/examples/celes_parts/taiutc.c +0 -182
  191. data/examples/celes_parts/tcbtdb.c +0 -132
  192. data/examples/celes_parts/tcgtt.c +0 -109
  193. data/examples/celes_parts/tdbtcb.c +0 -137
  194. data/examples/celes_parts/tdbtt.c +0 -122
  195. data/examples/celes_parts/test_celes.rb +0 -48
  196. data/examples/celes_parts/tf2a.c +0 -107
  197. data/examples/celes_parts/tf2d.c +0 -107
  198. data/examples/celes_parts/tr.c +0 -93
  199. data/examples/celes_parts/trxp.c +0 -93
  200. data/examples/celes_parts/trxpv.c +0 -93
  201. data/examples/celes_parts/tttai.c +0 -110
  202. data/examples/celes_parts/tttcg.c +0 -112
  203. data/examples/celes_parts/tttdb.c +0 -121
  204. data/examples/celes_parts/ttut1.c +0 -110
  205. data/examples/celes_parts/ut1tai.c +0 -111
  206. data/examples/celes_parts/ut1tt.c +0 -110
  207. data/examples/celes_parts/ut1utc.c +0 -193
  208. data/examples/celes_parts/utctai.c +0 -163
  209. data/examples/celes_parts/utcut1.c +0 -151
  210. data/examples/celes_parts/xy06.c +0 -2758
  211. data/examples/celes_parts/xys00a.c +0 -133
  212. data/examples/celes_parts/xys00b.c +0 -133
  213. data/examples/celes_parts/xys06a.c +0 -133
  214. data/examples/celes_parts/zp.c +0 -77
  215. data/examples/celes_parts/zpv.c +0 -79
  216. data/examples/celes_parts/zr.c +0 -83
  217. data/examples/check_date_type.rb +0 -55
  218. data/examples/compare_geoc_long_ra.rb +0 -39
  219. data/examples/data_table_for_astro_dog.rb +0 -40
  220. data/examples/earth_rotation.rb +0 -38
  221. data/examples/eot.c +0 -15
  222. data/examples/eot.h +0 -2
  223. data/examples/eot_methods_list.rb +0 -43
  224. data/examples/eot_plot.r +0 -57
  225. data/examples/eot_suntimes.rb +0 -144
  226. data/examples/equation_of_time.py +0 -186
  227. data/examples/extconf.rb +0 -2
  228. data/examples/figure_1.jpg +0 -0
  229. data/examples/file_converter.rb +0 -31
  230. data/examples/from_readme.rb +0 -10
  231. data/examples/geo_locator.rb +0 -12
  232. data/examples/getjd.rb +0 -45
  233. data/examples/gmst_gast_non_sofa.rb +0 -404
  234. data/examples/input_suntimes.rb +0 -21
  235. data/examples/julian_day_formula.rb +0 -29
  236. data/examples/julian_day_formula.txt +0 -12
  237. data/examples/my_time_conversion.rb +0 -21
  238. data/examples/nutation_series.txt +0 -678
  239. data/examples/nutation_series.yaml +0 -14239
  240. data/examples/nutation_table5_3a.txt +0 -682
  241. data/examples/nutation_table5_3a.yaml +0 -9532
  242. data/examples/ptime.rb +0 -162
  243. data/examples/rbeot.c +0 -24
  244. data/examples/suntimes.rb +0 -28
  245. data/examples/suntimes_test.rb +0 -47
  246. data/examples/test_eot.rb +0 -17
  247. data/examples/test_poly_eval.rb +0 -27
  248. data/examples/time_scales.rb +0 -26
  249. data/examples/times_year.rb +0 -50
  250. data/examples/usage_example.rb +0 -23
  251. data/examples/use_angles.rb +0 -219
  252. data/rise_set_data.yml +0 -1461
  253. data/tests/minitest/aliased_angles_spec.rb +0 -241
  254. data/tests/minitest/aliased_displays_spec.rb +0 -108
  255. data/tests/minitest/aliased_utilities_spec.rb +0 -38
  256. data/tests/minitest/angles_spec.rb +0 -266
  257. data/tests/minitest/constants_spec.rb +0 -21
  258. data/tests/minitest/delta_epsilon_spec.rb +0 -32
  259. data/tests/minitest/displays_spec.rb +0 -113
  260. data/tests/minitest/geo_spec.rb +0 -40
  261. data/tests/minitest/init_spec.rb +0 -46
  262. data/tests/minitest/nutation_spec.rb +0 -39
  263. data/tests/minitest/times_spec.rb +0 -139
  264. data/tests/minitest/utilities_spec.rb +0 -37
  265. data/tests/spec_config.rb +0 -3
@@ -1,193 +0,0 @@
1
- #include "sofam.h"
2
-
3
- int iauUt1utc(double ut11, double ut12, double dut1,
4
- double *utc1, double *utc2)
5
- /*
6
- ** - - - - - - - - - -
7
- ** i a u U t 1 u t c
8
- ** - - - - - - - - - -
9
- **
10
- ** Time scale transformation: Universal Time, UT1, to Coordinated
11
- ** Universal Time, UTC.
12
- **
13
- ** Status: canonical.
14
- **
15
- ** Given:
16
- ** ut11,ut12 double UT1 as a 2-part Julian Date (Note 1)
17
- ** dut1 double Delta UT1: UT1-UTC in seconds (Note 2)
18
- **
19
- ** Returned:
20
- ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 3,4)
21
- **
22
- ** Returned (function value):
23
- ** int status: +1 = dubious year (Note 5)
24
- ** 0 = OK
25
- ** -1 = unacceptable date
26
- **
27
- ** Notes:
28
- **
29
- ** 1) ut11+ut12 is Julian Date, apportioned in any convenient way
30
- ** between the two arguments, for example where ut11 is the Julian
31
- ** Day Number and ut12 is the fraction of a day. The returned utc1
32
- ** and utc2 form an analogous pair, except that a special convention
33
- ** is used, to deal with the problem of leap seconds - see Note 3.
34
- **
35
- ** 2) Delta UT1 can be obtained from tabulations provided by the
36
- ** International Earth Rotation and Reference Systems Service. The
37
- ** value changes abruptly by 1s at a leap second; however, close to
38
- ** a leap second the algorithm used here is tolerant of the "wrong"
39
- ** choice of value being made.
40
- **
41
- ** 3) JD cannot unambiguously represent UTC during a leap second unless
42
- ** special measures are taken. The convention in the present
43
- ** function is that the returned quasi JD day UTC1+UTC2 represents
44
- ** UTC days whether the length is 86399, 86400 or 86401 SI seconds.
45
- **
46
- ** 4) The function iauD2dtf can be used to transform the UTC quasi-JD
47
- ** into calendar date and clock time, including UTC leap second
48
- ** handling.
49
- **
50
- ** 5) The warning status "dubious year" flags UTCs that predate the
51
- ** introduction of the time scale and that are too far in the future
52
- ** to be trusted. See iauDat for further details.
53
- **
54
- ** Called:
55
- ** iauJd2cal JD to Gregorian calendar
56
- ** iauDat delta(AT) = TAI-UTC
57
- ** iauCal2jd Gregorian calendar to JD
58
- **
59
- ** References:
60
- **
61
- ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
62
- ** IERS Technical Note No. 32, BKG (2004)
63
- **
64
- ** Explanatory Supplement to the Astronomical Almanac,
65
- ** P. Kenneth Seidelmann (ed), University Science Books (1992)
66
- **
67
- ** This revision: 2011 May 14
68
- **
69
- ** Original version 2012-03-01
70
- **
71
- ** Copyright (C) 2013 Naoki Arita. See notes at end.
72
- */
73
- {
74
- int big1;
75
- int i, iy, im, id, js;
76
- double duts, u1, u2, d1, dats1, d2, fd, dats2, ddats, us1, us2, du;
77
-
78
-
79
- /* UT1-UTC in seconds. */
80
- duts = dut1;
81
-
82
- /* Put the two parts of the UT1 into big-first order. */
83
- big1 = ( ut11 >= ut12 );
84
- if ( big1 ) {
85
- u1 = ut11;
86
- u2 = ut12;
87
- } else {
88
- u1 = ut12;
89
- u2 = ut11;
90
- }
91
-
92
- /* See if the UT1 can possibly be in a leap-second day. */
93
- d1 = u1;
94
- dats1 = 0;
95
- for ( i = -1; i <= 3; i++ ) {
96
- d2 = u2 + (double) i;
97
- if ( iauJd2cal(d1, d2, &iy, &im, &id, &fd) ) return -1;
98
- js = iauDat(iy, im, id, 0.0, &dats2);
99
- if ( js < 0 ) return -1;
100
- if ( i == - 1 ) dats1 = dats2;
101
- ddats = dats2 - dats1;
102
- if ( fabs(ddats) >= 0.5 ) {
103
-
104
- /* Yes, leap second nearby: ensure UT1-UTC is "before" value. */
105
- if ( ddats * duts >= 0 ) duts -= ddats;
106
-
107
- /* UT1 for the start of the UTC day that ends in a leap. */
108
- if ( iauCal2jd(iy, im, id, &d1, &d2) ) return -1;
109
- us1 = d1;
110
- us2 = d2 - 1.0 + duts/DAYSEC;
111
-
112
- /* Is the UT1 after this point? */
113
- du = u1 - us1;
114
- du += u2 - us2;
115
- if ( du > 0 ) {
116
-
117
- /* Yes: fraction of the current UTC day that has elapsed. */
118
- fd = du * DAYSEC / ( DAYSEC + ddats );
119
-
120
- /* Ramp UT1-UTC to bring about SOFA's JD(UTC) convention. */
121
- duts += ddats * ( fd <= 1.0 ? fd : 1.0 );
122
- }
123
-
124
- /* Done. */
125
- break;
126
- }
127
- dats1 = dats2;
128
- }
129
-
130
- /* Subtract the (possibly adjusted) UT1-UTC from UT1 to give UTC. */
131
- u2 -= duts / DAYSEC;
132
-
133
- /* Result, safeguarding precision. */
134
- if ( big1 ) {
135
- *utc1 = u1;
136
- *utc2 = u2;
137
- } else {
138
- *utc1 = u2;
139
- *utc2 = u1;
140
- }
141
-
142
- /* Status. */
143
- return js;
144
-
145
- /*----------------------------------------------------------------------
146
- **
147
- ** Celes is a wrapper of the SOFA Library for Ruby.
148
- **
149
- ** This file is redistributed and relicensed in accordance with
150
- ** the SOFA Software License (http://www.iausofa.org/tandc.html).
151
- **
152
- ** The original library is available from IAU Standards of
153
- ** Fundamental Astronomy (http://www.iausofa.org/).
154
- **
155
- **
156
- **
157
- **
158
- **
159
- ** Copyright (C) 2013, Naoki Arita
160
- ** All rights reserved.
161
- **
162
- ** Redistribution and use in source and binary forms, with or without
163
- ** modification, are permitted provided that the following conditions
164
- ** are met:
165
- **
166
- ** 1 Redistributions of source code must retain the above copyright
167
- ** notice, this list of conditions and the following disclaimer.
168
- **
169
- ** 2 Redistributions in binary form must reproduce the above copyright
170
- ** notice, this list of conditions and the following disclaimer in
171
- ** the documentation and/or other materials provided with the
172
- ** distribution.
173
- **
174
- ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
175
- ** the International Astronomical Union nor the names of its
176
- ** contributors may be used to endorse or promote products derived
177
- ** from this software without specific prior written permission.
178
- **
179
- ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
180
- ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
181
- ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
182
- ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
183
- ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
184
- ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
185
- ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
186
- ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
187
- ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
188
- ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
189
- ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
190
- ** POSSIBILITY OF SUCH DAMAGE.
191
- **
192
- **--------------------------------------------------------------------*/
193
- }
@@ -1,163 +0,0 @@
1
- #include "sofam.h"
2
-
3
- int iauUtctai(double utc1, double utc2, double *tai1, double *tai2)
4
- /*
5
- ** - - - - - - - - - -
6
- ** i a u U t c t a i
7
- ** - - - - - - - - - -
8
- **
9
- ** Time scale transformation: Coordinated Universal Time, UTC, to
10
- ** International Atomic Time, TAI.
11
- **
12
- ** Status: canonical.
13
- **
14
- ** Given:
15
- ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 1-4)
16
- **
17
- ** Returned:
18
- ** tai1,tai2 double TAI as a 2-part Julian Date (Note 5)
19
- **
20
- ** Returned (function value):
21
- ** int status: +1 = dubious year (Note 3)
22
- ** 0 = OK
23
- ** -1 = unacceptable date
24
- **
25
- ** Notes:
26
- **
27
- ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any
28
- ** convenient way between the two arguments, for example where utc1
29
- ** is the Julian Day Number and utc2 is the fraction of a day.
30
- **
31
- ** 2) JD cannot unambiguously represent UTC during a leap second unless
32
- ** special measures are taken. The convention in the present
33
- ** function is that the JD day represents UTC days whether the
34
- ** length is 86399, 86400 or 86401 SI seconds.
35
- **
36
- ** 3) The warning status "dubious year" flags UTCs that predate the
37
- ** introduction of the time scale and that are too far in the future
38
- ** to be trusted. See iauDat for further details.
39
- **
40
- ** 4) The function iauDtf2d converts from calendar date and time of day
41
- ** into 2-part Julian Date, and in the case of UTC implements the
42
- ** leap-second-ambiguity convention described above.
43
- **
44
- ** 5) The returned TAI1,TAI2 are such that their sum is the TAI Julian
45
- ** Date.
46
- **
47
- ** Called:
48
- ** iauJd2cal JD to Gregorian calendar
49
- ** iauDat delta(AT) = TAI-UTC
50
- ** iauCal2jd Gregorian calendar to JD
51
- **
52
- ** References:
53
- **
54
- ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
55
- ** IERS Technical Note No. 32, BKG (2004)
56
- **
57
- ** Explanatory Supplement to the Astronomical Almanac,
58
- ** P. Kenneth Seidelmann (ed), University Science Books (1992)
59
- **
60
- ** This revision: 2010 September 10
61
- **
62
- ** Original version 2012-03-01
63
- **
64
- ** Copyright (C) 2013 Naoki Arita. See notes at end.
65
- **
66
- */
67
- {
68
- int big1;
69
- int iy, im, id, js, iyt, imt, idt;
70
- double u1, u2, fd, dats, fdt, datst, ddat, z1, z2, a2;
71
-
72
-
73
- /* Put the two parts of the UTC into big-first order. */
74
- big1 = ( utc1 >= utc2 );
75
- if ( big1 ) {
76
- u1 = utc1;
77
- u2 = utc2;
78
- } else {
79
- u1 = utc2;
80
- u2 = utc1;
81
- }
82
-
83
- /* Get TAI-UTC now. */
84
- if ( iauJd2cal(u1, u2, &iy, &im, &id, &fd) ) return -1;
85
- js = iauDat(iy, im, id, fd, &dats);
86
- if ( js < 0 ) return -1;
87
-
88
- /* Get TAI-UTC tomorrow. */
89
- if ( iauJd2cal(u1+1.5, u2-fd, &iyt, &imt, &idt, &fdt) ) return -1;
90
- js = iauDat(iyt, imt, idt, fdt, &datst);
91
- if ( js < 0 ) return -1;
92
-
93
- /* If today ends in a leap second, scale the fraction into SI days. */
94
- ddat = datst - dats;
95
- if ( fabs(ddat) > 0.5 ) fd += fd * ddat / DAYSEC;
96
-
97
- /* Today's calendar date to 2-part JD. */
98
- if ( iauCal2jd(iy, im, id, &z1, &z2) ) return -1;
99
-
100
- /* Assemble the TAI result, preserving the UTC split and order. */
101
- a2 = z1 - u1;
102
- a2 += z2;
103
- a2 += fd + dats / DAYSEC;
104
- if ( big1 ) {
105
- *tai1 = u1;
106
- *tai2 = a2;
107
- } else {
108
- *tai1 = a2;
109
- *tai2 = u1;
110
- }
111
-
112
- /* Status. */
113
- return js;
114
-
115
- /*----------------------------------------------------------------------
116
- **
117
- ** Celes is a wrapper of the SOFA Library for Ruby.
118
- **
119
- ** This file is redistributed and relicensed in accordance with
120
- ** the SOFA Software License (http://www.iausofa.org/tandc.html).
121
- **
122
- ** The original library is available from IAU Standards of
123
- ** Fundamental Astronomy (http://www.iausofa.org/).
124
- **
125
- **
126
- **
127
- **
128
- **
129
- ** Copyright (C) 2013, Naoki Arita
130
- ** All rights reserved.
131
- **
132
- ** Redistribution and use in source and binary forms, with or without
133
- ** modification, are permitted provided that the following conditions
134
- ** are met:
135
- **
136
- ** 1 Redistributions of source code must retain the above copyright
137
- ** notice, this list of conditions and the following disclaimer.
138
- **
139
- ** 2 Redistributions in binary form must reproduce the above copyright
140
- ** notice, this list of conditions and the following disclaimer in
141
- ** the documentation and/or other materials provided with the
142
- ** distribution.
143
- **
144
- ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
145
- ** the International Astronomical Union nor the names of its
146
- ** contributors may be used to endorse or promote products derived
147
- ** from this software without specific prior written permission.
148
- **
149
- ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
150
- ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
151
- ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
152
- ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
153
- ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
154
- ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
155
- ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
156
- ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
157
- ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
158
- ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
159
- ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
160
- ** POSSIBILITY OF SUCH DAMAGE.
161
- **
162
- **--------------------------------------------------------------------*/
163
- }
@@ -1,151 +0,0 @@
1
- #include "sofam.h"
2
-
3
- int iauUtcut1(double utc1, double utc2, double dut1,
4
- double *ut11, double *ut12)
5
- /*
6
- ** - - - - - - - - - -
7
- ** i a u U t c u t 1
8
- ** - - - - - - - - - -
9
- **
10
- ** Time scale transformation: Coordinated Universal Time, UTC, to
11
- ** Universal Time, UT1.
12
- **
13
- ** Status: canonical.
14
- **
15
- ** Given:
16
- ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 1-4)
17
- ** dut1 double Delta UT1 = UT1-UTC in seconds (Note 5)
18
- **
19
- ** Returned:
20
- ** ut11,ut12 double UT1 as a 2-part Julian Date (Note 6)
21
- **
22
- ** Returned (function value):
23
- ** int status: +1 = dubious year (Note 7)
24
- ** 0 = OK
25
- ** -1 = unacceptable date
26
- **
27
- ** Notes:
28
- **
29
- ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any
30
- ** convenient way between the two arguments, for example where utc1
31
- ** is the Julian Day Number and utc2 is the fraction of a day.
32
- **
33
- ** 2) JD cannot unambiguously represent UTC during a leap second unless
34
- ** special measures are taken. The convention in the present
35
- ** function is that the JD day represents UTC days whether the
36
- ** length is 86399, 86400 or 86401 SI seconds.
37
- **
38
- ** 3) The warning status "dubious year" flags UTCs that predate the
39
- ** introduction of the time scale and that are too far in the future
40
- ** to be trusted. See iauDat for further details.
41
- **
42
- ** 4) The function iauDtf2d converts from calendar date and time of
43
- ** day into 2-part Julian Date, and in the case of UTC implements
44
- ** the leap-second-ambiguity convention described above.
45
- **
46
- ** 5) Delta UT1 can be obtained from tabulations provided by the
47
- ** International Earth Rotation and Reference Systems Service. It
48
- ** It is the caller's responsibility to supply a DUT argument
49
- ** containing the UT1-UTC value that matches the given UTC.
50
- **
51
- ** 6) The returned ut11,ut12 are such that their sum is the UT1 Julian
52
- ** Date.
53
- **
54
- ** 7) The warning status "dubious year" flags UTCs that predate the
55
- ** introduction of the time scale and that are too far in the future
56
- ** to be trusted. See iauDat for further details.
57
- **
58
- ** References:
59
- **
60
- ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),
61
- ** IERS Technical Note No. 32, BKG (2004)
62
- **
63
- ** Explanatory Supplement to the Astronomical Almanac,
64
- ** P. Kenneth Seidelmann (ed), University Science Books (1992)
65
- **
66
- ** Called:
67
- ** iauJd2cal JD to Gregorian calendar
68
- ** iauDat delta(AT) = TAI-UTC
69
- ** iauUtctai UTC to TAI
70
- ** iauTaiut1 TAI to UT1
71
- **
72
- ** This revision: 2010 May 16
73
- **
74
- ** Original version 2012-03-01
75
- **
76
- ** Copyright (C) 2013 Naoki Arita. See notes at end.
77
- */
78
- {
79
- int iy, im, id, js, jw;
80
- double w, dat, dta, tai1, tai2;
81
-
82
-
83
- /* Look up TAI-UTC. */
84
- if ( iauJd2cal(utc1, utc2, &iy, &im, &id, &w) ) return -1;
85
- js = iauDat ( iy, im, id, 0.0, &dat);
86
- if ( js < 0 ) return -1;
87
-
88
- /* Form UT1-TAI. */
89
- dta = dut1 - dat;
90
-
91
- /* UTC to TAI to UT1. */
92
- jw = iauUtctai(utc1, utc2, &tai1, &tai2);
93
- if ( jw < 0 ) {
94
- return -1;
95
- } else if ( jw > 0 ) {
96
- js = jw;
97
- }
98
- if ( iauTaiut1(tai1, tai2, dta, ut11, ut12) ) return -1;
99
-
100
- /* Status. */
101
- return js;
102
-
103
- /*----------------------------------------------------------------------
104
- **
105
- ** Celes is a wrapper of the SOFA Library for Ruby.
106
- **
107
- ** This file is redistributed and relicensed in accordance with
108
- ** the SOFA Software License (http://www.iausofa.org/tandc.html).
109
- **
110
- ** The original library is available from IAU Standards of
111
- ** Fundamental Astronomy (http://www.iausofa.org/).
112
- **
113
- **
114
- **
115
- **
116
- **
117
- ** Copyright (C) 2013, Naoki Arita
118
- ** All rights reserved.
119
- **
120
- ** Redistribution and use in source and binary forms, with or without
121
- ** modification, are permitted provided that the following conditions
122
- ** are met:
123
- **
124
- ** 1 Redistributions of source code must retain the above copyright
125
- ** notice, this list of conditions and the following disclaimer.
126
- **
127
- ** 2 Redistributions in binary form must reproduce the above copyright
128
- ** notice, this list of conditions and the following disclaimer in
129
- ** the documentation and/or other materials provided with the
130
- ** distribution.
131
- **
132
- ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
133
- ** the International Astronomical Union nor the names of its
134
- ** contributors may be used to endorse or promote products derived
135
- ** from this software without specific prior written permission.
136
- **
137
- ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
138
- ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
139
- ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
140
- ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
141
- ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
142
- ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
143
- ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
144
- ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
145
- ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
146
- ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
147
- ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
148
- ** POSSIBILITY OF SUCH DAMAGE.
149
- **
150
- **--------------------------------------------------------------------*/
151
- }