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,80 @@
1
+ #include "sofam.h"
2
+
3
+ void iauCp(double p[3], double c[3])
4
+ /*
5
+ ** - - - - - -
6
+ ** i a u C p
7
+ ** - - - - - -
8
+ **
9
+ ** Copy a p-vector.
10
+ **
11
+ ** Status: vector/matrix support function.
12
+ **
13
+ ** Given:
14
+ ** p double[3] p-vector to be copied
15
+ **
16
+ ** Returned:
17
+ ** c double[3] copy
18
+ **
19
+ ** This revision: 2008 May 11
20
+ **
21
+ ** Original version 2012-03-01
22
+ **
23
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
24
+ */
25
+ {
26
+ c[0] = p[0];
27
+ c[1] = p[1];
28
+ c[2] = p[2];
29
+
30
+ return;
31
+
32
+ /*----------------------------------------------------------------------
33
+ **
34
+ ** Celes is a wrapper of the SOFA Library for Ruby.
35
+ **
36
+ ** This file is redistributed and relicensed in accordance with
37
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
38
+ **
39
+ ** The original library is available from IAU Standards of
40
+ ** Fundamental Astronomy (http://www.iausofa.org/).
41
+ **
42
+ **
43
+ **
44
+ **
45
+ **
46
+ ** Copyright (C) 2013, Naoki Arita
47
+ ** All rights reserved.
48
+ **
49
+ ** Redistribution and use in source and binary forms, with or without
50
+ ** modification, are permitted provided that the following conditions
51
+ ** are met:
52
+ **
53
+ ** 1 Redistributions of source code must retain the above copyright
54
+ ** notice, this list of conditions and the following disclaimer.
55
+ **
56
+ ** 2 Redistributions in binary form must reproduce the above copyright
57
+ ** notice, this list of conditions and the following disclaimer in
58
+ ** the documentation and/or other materials provided with the
59
+ ** distribution.
60
+ **
61
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
62
+ ** the International Astronomical Union nor the names of its
63
+ ** contributors may be used to endorse or promote products derived
64
+ ** from this software without specific prior written permission.
65
+ **
66
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
67
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
68
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
69
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
70
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
71
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
72
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
73
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
74
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
75
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
76
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
77
+ ** POSSIBILITY OF SUCH DAMAGE.
78
+ **
79
+ **--------------------------------------------------------------------*/
80
+ }
@@ -0,0 +1,82 @@
1
+ #include "sofam.h"
2
+
3
+ void iauCpv(double pv[2][3], double c[2][3])
4
+ /*
5
+ ** - - - - - - -
6
+ ** i a u C p v
7
+ ** - - - - - - -
8
+ **
9
+ ** Copy a position/velocity vector.
10
+ **
11
+ ** Status: vector/matrix support function.
12
+ **
13
+ ** Given:
14
+ ** pv double[2][3] position/velocity vector to be copied
15
+ **
16
+ ** Returned:
17
+ ** c double[2][3] copy
18
+ **
19
+ ** Called:
20
+ ** iauCp copy p-vector
21
+ **
22
+ ** This revision: 2008 May 11
23
+ **
24
+ ** Original version 2012-03-01
25
+ **
26
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
27
+ */
28
+ {
29
+ iauCp(pv[0], c[0]);
30
+ iauCp(pv[1], c[1]);
31
+
32
+ return;
33
+
34
+ /*----------------------------------------------------------------------
35
+ **
36
+ ** Celes is a wrapper of the SOFA Library for Ruby.
37
+ **
38
+ ** This file is redistributed and relicensed in accordance with
39
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
40
+ **
41
+ ** The original library is available from IAU Standards of
42
+ ** Fundamental Astronomy (http://www.iausofa.org/).
43
+ **
44
+ **
45
+ **
46
+ **
47
+ **
48
+ ** Copyright (C) 2013, Naoki Arita
49
+ ** All rights reserved.
50
+ **
51
+ ** Redistribution and use in source and binary forms, with or without
52
+ ** modification, are permitted provided that the following conditions
53
+ ** are met:
54
+ **
55
+ ** 1 Redistributions of source code must retain the above copyright
56
+ ** notice, this list of conditions and the following disclaimer.
57
+ **
58
+ ** 2 Redistributions in binary form must reproduce the above copyright
59
+ ** notice, this list of conditions and the following disclaimer in
60
+ ** the documentation and/or other materials provided with the
61
+ ** distribution.
62
+ **
63
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
64
+ ** the International Astronomical Union nor the names of its
65
+ ** contributors may be used to endorse or promote products derived
66
+ ** from this software without specific prior written permission.
67
+ **
68
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
69
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
70
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
71
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
72
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
73
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
74
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
75
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
76
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
77
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
78
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
79
+ ** POSSIBILITY OF SUCH DAMAGE.
80
+ **
81
+ **--------------------------------------------------------------------*/
82
+ }
@@ -0,0 +1,83 @@
1
+ #include "sofam.h"
2
+
3
+ void iauCr(double r[3][3], double c[3][3])
4
+ /*
5
+ ** - - - - - -
6
+ ** i a u C r
7
+ ** - - - - - -
8
+ **
9
+ ** Copy an r-matrix.
10
+ **
11
+ ** Status: vector/matrix support function.
12
+ **
13
+ ** Given:
14
+ ** r double[3][3] r-matrix to be copied
15
+ **
16
+ ** Returned:
17
+ ** char[] double[3][3] copy
18
+ **
19
+ ** Called:
20
+ ** iauCp copy p-vector
21
+ **
22
+ ** This revision: 2008 May 11
23
+ **
24
+ ** Original version 2012-03-01
25
+ **
26
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
27
+ */
28
+ {
29
+ iauCp(r[0], c[0]);
30
+ iauCp(r[1], c[1]);
31
+ iauCp(r[2], c[2]);
32
+
33
+ return;
34
+
35
+ /*----------------------------------------------------------------------
36
+ **
37
+ ** Celes is a wrapper of the SOFA Library for Ruby.
38
+ **
39
+ ** This file is redistributed and relicensed in accordance with
40
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
41
+ **
42
+ ** The original library is available from IAU Standards of
43
+ ** Fundamental Astronomy (http://www.iausofa.org/).
44
+ **
45
+ **
46
+ **
47
+ **
48
+ **
49
+ ** Copyright (C) 2013, Naoki Arita
50
+ ** All rights reserved.
51
+ **
52
+ ** Redistribution and use in source and binary forms, with or without
53
+ ** modification, are permitted provided that the following conditions
54
+ ** are met:
55
+ **
56
+ ** 1 Redistributions of source code must retain the above copyright
57
+ ** notice, this list of conditions and the following disclaimer.
58
+ **
59
+ ** 2 Redistributions in binary form must reproduce the above copyright
60
+ ** notice, this list of conditions and the following disclaimer in
61
+ ** the documentation and/or other materials provided with the
62
+ ** distribution.
63
+ **
64
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
65
+ ** the International Astronomical Union nor the names of its
66
+ ** contributors may be used to endorse or promote products derived
67
+ ** from this software without specific prior written permission.
68
+ **
69
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
70
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
71
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
72
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
73
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
74
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
75
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
76
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
77
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
78
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
79
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
80
+ ** POSSIBILITY OF SUCH DAMAGE.
81
+ **
82
+ **--------------------------------------------------------------------*/
83
+ }
@@ -0,0 +1,206 @@
1
+ #include "sofam.h"
2
+ #include <string.h>
3
+
4
+ int iauD2dtf(const char *scale, int ndp, double d1, double d2,
5
+ int *iy, int *im, int *id, int ihmsf[4])
6
+ /*
7
+ ** - - - - - - - - -
8
+ ** i a u D 2 d t f
9
+ ** - - - - - - - - -
10
+ **
11
+ ** Format for output a 2-part Julian Date (or in the case of UTC a
12
+ ** quasi-JD form that includes special provision for leap seconds).
13
+ **
14
+ ** Status: support function.
15
+ **
16
+ ** Given:
17
+ ** scale char[] time scale ID (Note 1)
18
+ ** ndp int resolution (Note 2)
19
+ ** d1,d2 double time as a 2-part Julian Date (Notes 3,4)
20
+ **
21
+ ** Returned:
22
+ ** iy,im,id int year, month, day in Gregorian calendar (Note 5)
23
+ ** ihmsf int[4] hours, minutes, seconds, fraction (Note 1)
24
+ **
25
+ ** Returned (function value):
26
+ ** int status: +1 = dubious year (Note 5)
27
+ ** 0 = OK
28
+ ** -1 = unacceptable date (Note 6)
29
+ **
30
+ ** Notes:
31
+ **
32
+ ** 1) scale identifies the time scale. Only the value "UTC" (in upper
33
+ ** case) is significant, and enables handling of leap seconds (see
34
+ ** Note 4).
35
+ **
36
+ ** 2) ndp is the number of decimal places in the seconds field, and can
37
+ ** have negative as well as positive values, such as:
38
+ **
39
+ ** ndp resolution
40
+ ** -4 1 00 00
41
+ ** -3 0 10 00
42
+ ** -2 0 01 00
43
+ ** -1 0 00 10
44
+ ** 0 0 00 01
45
+ ** 1 0 00 00.1
46
+ ** 2 0 00 00.01
47
+ ** 3 0 00 00.001
48
+ **
49
+ ** The limits are platform dependent, but a safe range is -5 to +9.
50
+ **
51
+ ** 3) d1+d2 is Julian Date, apportioned in any convenient way between
52
+ ** the two arguments, for example where d1 is the Julian Day Number
53
+ ** and d2 is the fraction of a day. In the case of UTC, where the
54
+ ** use of JD is problematical, special conventions apply: see the
55
+ ** next note.
56
+ **
57
+ ** 4) JD cannot unambiguously represent UTC during a leap second unless
58
+ ** special measures are taken. The SOFA internal convention is that
59
+ ** the quasi-JD day represents UTC days whether the length is 86399,
60
+ ** 86400 or 86401 SI seconds.
61
+ **
62
+ ** 5) The warning status "dubious year" flags UTCs that predate the
63
+ ** introduction of the time scale and that are too far in the future
64
+ ** to be trusted. See iauDat for further details.
65
+ **
66
+ ** 6) For calendar conventions and limitations, see iauCal2jd.
67
+ **
68
+ ** Called:
69
+ ** iauJd2cal JD to Gregorian calendar
70
+ ** iauD2tf decompose days to hms
71
+ ** iauDat delta(AT) = TAI-UTC
72
+ **
73
+ ** This revision: 2012 February 12
74
+ **
75
+ ** Original version 2012-03-01
76
+ **
77
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
78
+ */
79
+ {
80
+ int leap;
81
+ char s;
82
+ int iy1, im1, id1, js, iy2, im2, id2, ihmsf1[4], i;
83
+ double a1, b1, fd, dat1, w, dat2, ddt;
84
+
85
+
86
+ /* The two-part JD. */
87
+ a1 = d1;
88
+ b1 = d2;
89
+
90
+ /* Provisional calendar date. */
91
+ js = iauJd2cal(a1, b1, &iy1, &im1, &id1, &fd);
92
+ if ( js ) return js < 0 ? -1 : js;
93
+
94
+ /* Is this a leap second day? */
95
+ leap = 0;
96
+ if ( ! strcmp(scale,"UTC") ) {
97
+
98
+ /* TAI-UTC today. */
99
+ js = iauDat(iy1, im1, id1, fd, &dat1);
100
+ if ( js < 0 ) return -1;
101
+
102
+ /* TAI-UTC tomorrow (at noon, to avoid rounding effects). */
103
+ js = iauJd2cal(a1+1.5, b1-fd, &iy2, &im2, &id2, &w);
104
+ js = iauDat(iy2, im2, id2, 0.0, &dat2);
105
+ if ( js < 0 ) return -1;
106
+
107
+ /* The change in TAI-UTC (seconds). */
108
+ ddt = dat2 - dat1;
109
+
110
+ /* If leap second day, scale the fraction of a day into SI. */
111
+ leap = fabs(ddt) > 0.5;
112
+ if (leap) fd += fd * ddt/DAYSEC;
113
+ }
114
+
115
+ /* Provisional time of day. */
116
+ iauD2tf ( ndp, fd, &s, ihmsf1 );
117
+
118
+ /* Is this a leap second day? */
119
+ if ( ! leap ) {
120
+
121
+ /* No. Has the time rounded up to 24h? */
122
+ if ( ihmsf1[0] > 23 ) {
123
+
124
+ /* Yes. We will need tomorrow's calendar date. */
125
+ js = iauJd2cal(a1+1.5, b1-fd, &iy2, &im2, &id2, &w);
126
+
127
+ /* Use 0h tomorrow. */
128
+ iy1 = iy2;
129
+ im1 = im2;
130
+ id1 = id2;
131
+ for ( i = 0; i < 4; i++ ) {
132
+ ihmsf1[i] = 0;
133
+ }
134
+ }
135
+ } else {
136
+
137
+ /* This is a leap second day. Has the time reached or passed 24h? */
138
+ if ( ihmsf1[0] > 23 ) {
139
+
140
+ /* Yes. Use 23 59 60... */
141
+ ihmsf1[0] = 23;
142
+ ihmsf1[1] = 59;
143
+ ihmsf1[2] = 60;
144
+ }
145
+ }
146
+
147
+ /* Results. */
148
+ *iy = iy1;
149
+ *im = im1;
150
+ *id = id1;
151
+ for ( i = 0; i < 4; i++ ) {
152
+ ihmsf[i] = ihmsf1[i];
153
+ }
154
+
155
+ /* Status. */
156
+ return js < 0 ? -1 : js;
157
+
158
+ /*----------------------------------------------------------------------
159
+ **
160
+ ** Celes is a wrapper of the SOFA Library for Ruby.
161
+ **
162
+ ** This file is redistributed and relicensed in accordance with
163
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
164
+ **
165
+ ** The original library is available from IAU Standards of
166
+ ** Fundamental Astronomy (http://www.iausofa.org/).
167
+ **
168
+ **
169
+ **
170
+ **
171
+ **
172
+ ** Copyright (C) 2013, Naoki Arita
173
+ ** All rights reserved.
174
+ **
175
+ ** Redistribution and use in source and binary forms, with or without
176
+ ** modification, are permitted provided that the following conditions
177
+ ** are met:
178
+ **
179
+ ** 1 Redistributions of source code must retain the above copyright
180
+ ** notice, this list of conditions and the following disclaimer.
181
+ **
182
+ ** 2 Redistributions in binary form must reproduce the above copyright
183
+ ** notice, this list of conditions and the following disclaimer in
184
+ ** the documentation and/or other materials provided with the
185
+ ** distribution.
186
+ **
187
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
188
+ ** the International Astronomical Union nor the names of its
189
+ ** contributors may be used to endorse or promote products derived
190
+ ** from this software without specific prior written permission.
191
+ **
192
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
193
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
194
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
195
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
196
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
197
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
198
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
199
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
200
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
201
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
202
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
203
+ ** POSSIBILITY OF SUCH DAMAGE.
204
+ **
205
+ **--------------------------------------------------------------------*/
206
+ }