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,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in celes.gemspec
4
+ gemspec
@@ -0,0 +1,32 @@
1
+ Copyright (C) 2013, Naoki Arita
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions
6
+ are met:
7
+
8
+ 1 Redistributions of source code must retain the above copyright
9
+ notice, this list of conditions and the following disclaimer.
10
+
11
+ 2 Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in
13
+ the documentation and/or other materials provided with the
14
+ distribution.
15
+
16
+ 3 Neither the name of the Standards Of Fundamental Astronomy Board,
17
+ the International Astronomical Union nor the names of its
18
+ contributors may be used to endorse or promote products derived
19
+ from this software without specific prior written permission.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
+ COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
+ POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,179 @@
1
+ # Celes
2
+
3
+ Celes is a wrapper of the SOFA Library for Ruby.
4
+
5
+ The SOFA Library has many functions for astronomical computing. The original library is available in Fortran 77 and ANSI C. Please see for more information about the SOFA Library: http://www.iausofa.org/.
6
+
7
+ Celes is a derived work of the SOFA Library and includes original files in accordance with [the SOFA Software License](http://www.iausofa.org/tandc.html).
8
+
9
+ ## Dependencies
10
+
11
+ Ruby 1.8.7 or later
12
+
13
+ ## Licenses
14
+
15
+ The 3-clause BSD License, the names of organizations of Article 3 have the IAU and the SOFA.
16
+
17
+ ## Installation
18
+
19
+ ### from RubyGems
20
+
21
+ ```sh
22
+ $ sudo gem install celes
23
+ ```
24
+
25
+ ### from source
26
+
27
+ ```sh
28
+ $ # download Celes
29
+ $ git clone https://github.com/tohka/celes.git
30
+ $ cd celes
31
+ $
32
+ $ # build gem
33
+ $ rake build
34
+ $
35
+ $ # install with built gem file
36
+ $ sudo gem install pkg/celes-0.0.1.gem
37
+ ```
38
+
39
+ ### from source without gem file
40
+
41
+ ```sh
42
+ $ # download Celes
43
+ $ git clone https://github.com/tohka/celes.git
44
+ $ cd celes
45
+ $
46
+ $ cd ext/celes
47
+ $
48
+ $ # create Makefile and do make
49
+ $ ruby ./extconf.rb
50
+ $ make
51
+ $
52
+ $ ls *.so
53
+ celes_core.so
54
+ ```
55
+
56
+ ## Usage
57
+
58
+ ```ruby
59
+ require 'celes'
60
+
61
+ # UTC to TAI
62
+ p Celes::utctai(2400000.5, 45678.9)
63
+ #=> [2400000.5, 45678.90025462963]
64
+ ```
65
+
66
+ ## Documentation
67
+
68
+ Celes's documentation is unprepared, but Celes is based on the original SOFA Library.
69
+
70
+ For example, to convert Gregorian Calendar date into Julian Date.
71
+
72
+ ```c
73
+ // in C, using the SOFA Library
74
+ #include <stdio.h>
75
+ #include "sofa.h"
76
+ #include "sofam.h"
77
+
78
+ int status;
79
+ double djm0, djm;
80
+
81
+ status = iauCal2jd(2000, 12, 23, &djm0, &djm);
82
+
83
+ if(status){
84
+ printf("error or warning\n");
85
+ } else{
86
+ printf("Julian Day is %f\n", djm0 + djm);
87
+ }
88
+ //=> Julian Day is 2451901.5
89
+ ```
90
+
91
+ ```ruby
92
+ # in Ruby, using Celes
93
+ require 'celes'
94
+
95
+ begin
96
+ djm0, djm = Celes::cal2jd(2000, 12, 23)
97
+ rescue
98
+ puts "error"
99
+ else
100
+ if Celes::status.nonzero?
101
+ puts "warning"
102
+ else
103
+ puts "Julian Day is #{djm0 + djm}"
104
+ end
105
+ end
106
+ #=> Julian Day is 2451901.5
107
+ ```
108
+
109
+ ### Rules
110
+
111
+ * basically, according to the original SOFA Library
112
+ * functions' name are lower-case
113
+ * a prefix <var>iau</var> or <var>iau_</var> is removed
114
+ * some functions are bang functions, their arguments value are replaced and name are with '!'
115
+ * <var>zp!</var>, <var>zr!</var>, <var>ir!</var>, <var>zpv!</var>, <var>rx!</var>, <var>ry!</var> and <var>rz!</var>
116
+ * Celes has also non-bang functions, <var>zp</var>, <var>zr</var>, ...
117
+ * arguments for output are removed
118
+ * when they have multi returned values, return as array object
119
+ * functions do not return status code
120
+ * <var>Celes::status</var> returns a last status code
121
+ * raise exception if status code implies error
122
+
123
+ ### Bang and non-bang functions
124
+
125
+ Methods for clearing a vector or a matrix, <var>zp!</var>, <var>zr!</var>, <var>ir!</var> and <var>zpv!</var>.
126
+
127
+ ```ruby
128
+ # in Ruby
129
+
130
+ # vector
131
+ p1 = [1.0, 2.0, 3.0]
132
+
133
+ Celes::zp!(p1)
134
+ p p1 #=> [0.0, 0.0, 0.0]
135
+
136
+ # non-bang version, has no arguments
137
+ p2 = Celes::zp
138
+ p p2 #=> [0.0, 0.0, 0.0]
139
+ ```
140
+
141
+ ----
142
+
143
+ Methods for rotating a matrix about an axis, <var>rx!</var>, <var>ry!</var> and <var>rz!</var>.
144
+
145
+ ```ruby
146
+ # in Ruby
147
+ format = "[%9.6f, %9.6f, %9.6f]"
148
+
149
+ # matrix
150
+ r1 = Celes::ir
151
+ puts format % r1[0] #=> [ 1.000000, 0.000000, 0.000000]
152
+ puts format % r1[1] #=> [ 0.000000, 1.000000, 0.000000]
153
+ puts format % r1[2] #=> [ 0.000000, 0.000000, 1.000000]
154
+
155
+ # rotate about z-axis
156
+ Celes::rz!(Math::PI/3.0, r1)
157
+ puts format % r1[0] #=> [ 0.500000, 0.866025, 0.000000]
158
+ puts format % r1[1] #=> [-0.866025, 0.500000, 0.000000]
159
+ puts format % r1[2] #=> [ 0.000000, 0.000000, 1.000000]
160
+
161
+ # non-bang version
162
+ r2 = Celes::rz(Math::PI/3.0, r1)
163
+ puts format % r1[0] #=> [ 0.500000, 0.866025, 0.000000]
164
+ puts format % r1[1] #=> [-0.866025, 0.500000, 0.000000]
165
+ puts format % r1[2] #=> [ 0.000000, 0.000000, 1.000000]
166
+
167
+ puts format % r2[0] #=> [-0.500000, 0.866025, 0.000000]
168
+ puts format % r2[1] #=> [-0.866025, -0.500000, 0.000000]
169
+ puts format % r2[2] #=> [ 0.000000, 0.000000, 1.000000]
170
+ ```
171
+
172
+ ### Original documentation
173
+
174
+ A documentation about the SOFA Library.
175
+
176
+ * http://www.iausofa.org/current_F.html#Documents (Fortran 77)
177
+ * http://www.iausofa.org/current_C.html#Documents (ANSI C)
178
+
179
+
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'celes/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "celes"
8
+ gem.version = Celes::VERSION
9
+ gem.authors = ["Naoki Arita"]
10
+ gem.email = ["ToNaokiArita@gmail.com"]
11
+ gem.description = %q{A library for astronomical computing.}
12
+ gem.summary = %q{A wrapper of the SOFA Library for Ruby.}
13
+ gem.license = "3-clause BSD"
14
+ gem.homepage = "https://github.com/tohka/celes"
15
+ gem.extensions << "ext/celes/extconf.rb"
16
+
17
+ gem.files = `git ls-files`.split($/)
18
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
19
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
+ gem.require_paths = ["ext", "lib"]
21
+ gem.required_ruby_version = ">= 1.8.7"
22
+ end
@@ -0,0 +1,120 @@
1
+ #include "sofam.h"
2
+
3
+ void iauA2af(int ndp, double angle, char *sign, int idmsf[4])
4
+ /*
5
+ ** - - - - - - - -
6
+ ** i a u A 2 a f
7
+ ** - - - - - - - -
8
+ **
9
+ ** Decompose radians into degrees, arcminutes, arcseconds, fraction.
10
+ **
11
+ ** Status: vector/matrix support function.
12
+ **
13
+ ** Given:
14
+ ** ndp int resolution (Note 1)
15
+ ** angle double angle in radians
16
+ **
17
+ ** Returned:
18
+ ** sign char '+' or '-'
19
+ ** idmsf int[4] degrees, arcminutes, arcseconds, fraction
20
+ **
21
+ ** Called:
22
+ ** iauD2tf decompose days to hms
23
+ **
24
+ ** Notes:
25
+ **
26
+ ** 1) The argument ndp is interpreted as follows:
27
+ **
28
+ ** ndp resolution
29
+ ** : ...0000 00 00
30
+ ** -7 1000 00 00
31
+ ** -6 100 00 00
32
+ ** -5 10 00 00
33
+ ** -4 1 00 00
34
+ ** -3 0 10 00
35
+ ** -2 0 01 00
36
+ ** -1 0 00 10
37
+ ** 0 0 00 01
38
+ ** 1 0 00 00.1
39
+ ** 2 0 00 00.01
40
+ ** 3 0 00 00.001
41
+ ** : 0 00 00.000...
42
+ **
43
+ ** 2) The largest positive useful value for ndp is determined by the
44
+ ** size of angle, the format of doubles on the target platform, and
45
+ ** the risk of overflowing idmsf[3]. On a typical platform, for
46
+ ** angle up to 2pi, the available floating-point precision might
47
+ ** correspond to ndp=12. However, the practical limit is typically
48
+ ** ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is
49
+ ** only 16 bits.
50
+ **
51
+ ** 3) The absolute value of angle may exceed 2pi. In cases where it
52
+ ** does not, it is up to the caller to test for and handle the
53
+ ** case where angle is very nearly 2pi and rounds up to 360 degrees,
54
+ ** by testing for idmsf[0]=360 and setting idmsf[0-3] to zero.
55
+ **
56
+ ** This revision: 2008 May 27
57
+ **
58
+ ** Original version 2012-03-01
59
+ **
60
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
61
+ */
62
+ {
63
+ /* Hours to degrees * radians to turns */
64
+ const double F = 15.0 / D2PI;
65
+
66
+
67
+ /* Scale then use days to h,m,s function. */
68
+ iauD2tf(ndp, angle*F, sign, idmsf);
69
+
70
+ return;
71
+
72
+ /*----------------------------------------------------------------------
73
+ **
74
+ ** Celes is a wrapper of the SOFA Library for Ruby.
75
+ **
76
+ ** This file is redistributed and relicensed in accordance with
77
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
78
+ **
79
+ ** The original library is available from IAU Standards of
80
+ ** Fundamental Astronomy (http://www.iausofa.org/).
81
+ **
82
+ **
83
+ **
84
+ **
85
+ **
86
+ ** Copyright (C) 2013, Naoki Arita
87
+ ** All rights reserved.
88
+ **
89
+ ** Redistribution and use in source and binary forms, with or without
90
+ ** modification, are permitted provided that the following conditions
91
+ ** are met:
92
+ **
93
+ ** 1 Redistributions of source code must retain the above copyright
94
+ ** notice, this list of conditions and the following disclaimer.
95
+ **
96
+ ** 2 Redistributions in binary form must reproduce the above copyright
97
+ ** notice, this list of conditions and the following disclaimer in
98
+ ** the documentation and/or other materials provided with the
99
+ ** distribution.
100
+ **
101
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
102
+ ** the International Astronomical Union nor the names of its
103
+ ** contributors may be used to endorse or promote products derived
104
+ ** from this software without specific prior written permission.
105
+ **
106
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
107
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
108
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
109
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
110
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
111
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
112
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
113
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
114
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
115
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
116
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
117
+ ** POSSIBILITY OF SUCH DAMAGE.
118
+ **
119
+ **--------------------------------------------------------------------*/
120
+ }
@@ -0,0 +1,116 @@
1
+ #include "sofam.h"
2
+
3
+ void iauA2tf(int ndp, double angle, char *sign, int ihmsf[4])
4
+ /*
5
+ ** - - - - - - - -
6
+ ** i a u A 2 t f
7
+ ** - - - - - - - -
8
+ **
9
+ ** Decompose radians into hours, minutes, seconds, fraction.
10
+ **
11
+ ** Status: vector/matrix support function.
12
+ **
13
+ ** Given:
14
+ ** ndp int resolution (Note 1)
15
+ ** angle double angle in radians
16
+ **
17
+ ** Returned:
18
+ ** sign char '+' or '-'
19
+ ** ihmsf int[4] hours, minutes, seconds, fraction
20
+ **
21
+ ** Called:
22
+ ** iauD2tf decompose days to hms
23
+ **
24
+ ** Notes:
25
+ **
26
+ ** 1) The argument ndp is interpreted as follows:
27
+ **
28
+ ** ndp resolution
29
+ ** : ...0000 00 00
30
+ ** -7 1000 00 00
31
+ ** -6 100 00 00
32
+ ** -5 10 00 00
33
+ ** -4 1 00 00
34
+ ** -3 0 10 00
35
+ ** -2 0 01 00
36
+ ** -1 0 00 10
37
+ ** 0 0 00 01
38
+ ** 1 0 00 00.1
39
+ ** 2 0 00 00.01
40
+ ** 3 0 00 00.001
41
+ ** : 0 00 00.000...
42
+ **
43
+ ** 2) The largest positive useful value for ndp is determined by the
44
+ ** size of angle, the format of doubles on the target platform, and
45
+ ** the risk of overflowing ihmsf[3]. On a typical platform, for
46
+ ** angle up to 2pi, the available floating-point precision might
47
+ ** correspond to ndp=12. However, the practical limit is typically
48
+ ** ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is
49
+ ** only 16 bits.
50
+ **
51
+ ** 3) The absolute value of angle may exceed 2pi. In cases where it
52
+ ** does not, it is up to the caller to test for and handle the
53
+ ** case where angle is very nearly 2pi and rounds up to 24 hours,
54
+ ** by testing for ihmsf[0]=24 and setting ihmsf(0-3) to zero.
55
+ **
56
+ ** This revision: 2008 May 11
57
+ **
58
+ ** Original version 2012-03-01
59
+ **
60
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
61
+ */
62
+ {
63
+ /* Scale then use days to h,m,s function. */
64
+ iauD2tf(ndp, angle/D2PI, sign, ihmsf);
65
+
66
+ return;
67
+
68
+ /*----------------------------------------------------------------------
69
+ **
70
+ ** Celes is a wrapper of the SOFA Library for Ruby.
71
+ **
72
+ ** This file is redistributed and relicensed in accordance with
73
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
74
+ **
75
+ ** The original library is available from IAU Standards of
76
+ ** Fundamental Astronomy (http://www.iausofa.org/).
77
+ **
78
+ **
79
+ **
80
+ **
81
+ **
82
+ ** Copyright (C) 2013, Naoki Arita
83
+ ** All rights reserved.
84
+ **
85
+ ** Redistribution and use in source and binary forms, with or without
86
+ ** modification, are permitted provided that the following conditions
87
+ ** are met:
88
+ **
89
+ ** 1 Redistributions of source code must retain the above copyright
90
+ ** notice, this list of conditions and the following disclaimer.
91
+ **
92
+ ** 2 Redistributions in binary form must reproduce the above copyright
93
+ ** notice, this list of conditions and the following disclaimer in
94
+ ** the documentation and/or other materials provided with the
95
+ ** distribution.
96
+ **
97
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
98
+ ** the International Astronomical Union nor the names of its
99
+ ** contributors may be used to endorse or promote products derived
100
+ ** from this software without specific prior written permission.
101
+ **
102
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
103
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
104
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
105
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
106
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
107
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
108
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
109
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
110
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
111
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
112
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
113
+ ** POSSIBILITY OF SUCH DAMAGE.
114
+ **
115
+ **--------------------------------------------------------------------*/
116
+ }