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.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +32 -0
- data/README.md +179 -0
- data/Rakefile +1 -0
- data/celes.gemspec +22 -0
- data/ext/celes/a2af.c +120 -0
- data/ext/celes/a2tf.c +116 -0
- data/ext/celes/af2a.c +107 -0
- data/ext/celes/anp.c +82 -0
- data/ext/celes/anpm.c +82 -0
- data/ext/celes/bi00.c +116 -0
- data/ext/celes/bp00.c +173 -0
- data/ext/celes/bp06.c +136 -0
- data/ext/celes/bpn2xy.c +100 -0
- data/ext/celes/c2i00a.c +139 -0
- data/ext/celes/c2i00b.c +139 -0
- data/ext/celes/c2i06a.c +136 -0
- data/ext/celes/c2ibpn.c +142 -0
- data/ext/celes/c2ixy.c +131 -0
- data/ext/celes/c2ixys.c +123 -0
- data/ext/celes/c2s.c +96 -0
- data/ext/celes/c2t00a.c +154 -0
- data/ext/celes/c2t00b.c +150 -0
- data/ext/celes/c2t06a.c +152 -0
- data/ext/celes/c2tcio.c +122 -0
- data/ext/celes/c2teqx.c +122 -0
- data/ext/celes/c2tpe.c +167 -0
- data/ext/celes/c2txy.c +159 -0
- data/ext/celes/cal2jd.c +139 -0
- data/ext/celes/celes_core.c +2522 -0
- data/ext/celes/cp.c +80 -0
- data/ext/celes/cpv.c +82 -0
- data/ext/celes/cr.c +83 -0
- data/ext/celes/d2dtf.c +206 -0
- data/ext/celes/d2tf.c +160 -0
- data/ext/celes/dat.c +289 -0
- data/ext/celes/depend +25 -0
- data/ext/celes/dtdb.c +1213 -0
- data/ext/celes/dtf2d.c +196 -0
- data/ext/celes/ee00.c +128 -0
- data/ext/celes/ee00a.c +135 -0
- data/ext/celes/ee00b.c +141 -0
- data/ext/celes/ee06a.c +122 -0
- data/ext/celes/eect00.c +282 -0
- data/ext/celes/eform.c +147 -0
- data/ext/celes/eo06a.c +131 -0
- data/ext/celes/eors.c +108 -0
- data/ext/celes/epb.c +96 -0
- data/ext/celes/epb2jd.c +91 -0
- data/ext/celes/epj.c +93 -0
- data/ext/celes/epj2jd.c +91 -0
- data/ext/celes/epv00.c +2589 -0
- data/ext/celes/eqeq94.c +131 -0
- data/ext/celes/era00.c +136 -0
- data/ext/celes/extconf.rb +4 -0
- data/ext/celes/fad03.c +103 -0
- data/ext/celes/fae03.c +102 -0
- data/ext/celes/faf03.c +106 -0
- data/ext/celes/faju03.c +102 -0
- data/ext/celes/fal03.c +103 -0
- data/ext/celes/falp03.c +103 -0
- data/ext/celes/fama03.c +102 -0
- data/ext/celes/fame03.c +102 -0
- data/ext/celes/fane03.c +99 -0
- data/ext/celes/faom03.c +104 -0
- data/ext/celes/fapa03.c +103 -0
- data/ext/celes/fasa03.c +102 -0
- data/ext/celes/faur03.c +99 -0
- data/ext/celes/fave03.c +102 -0
- data/ext/celes/fk52h.c +143 -0
- data/ext/celes/fk5hip.c +126 -0
- data/ext/celes/fk5hz.c +160 -0
- data/ext/celes/fw2m.c +134 -0
- data/ext/celes/fw2xy.c +120 -0
- data/ext/celes/gc2gd.c +134 -0
- data/ext/celes/gc2gde.c +200 -0
- data/ext/celes/gd2gc.c +134 -0
- data/ext/celes/gd2gce.c +138 -0
- data/ext/celes/gmst00.c +145 -0
- data/ext/celes/gmst06.c +136 -0
- data/ext/celes/gmst82.c +151 -0
- data/ext/celes/gst00a.c +138 -0
- data/ext/celes/gst00b.c +146 -0
- data/ext/celes/gst06.c +140 -0
- data/ext/celes/gst06a.c +131 -0
- data/ext/celes/gst94.c +131 -0
- data/ext/celes/h2fk5.c +148 -0
- data/ext/celes/hfk5z.c +175 -0
- data/ext/celes/ir.c +83 -0
- data/ext/celes/jd2cal.c +155 -0
- data/ext/celes/jdcalf.c +161 -0
- data/ext/celes/num00a.c +121 -0
- data/ext/celes/num00b.c +121 -0
- data/ext/celes/num06a.c +125 -0
- data/ext/celes/numat.c +109 -0
- data/ext/celes/nut00a.c +2047 -0
- data/ext/celes/nut00b.c +372 -0
- data/ext/celes/nut06a.c +153 -0
- data/ext/celes/nut80.c +325 -0
- data/ext/celes/nutm80.c +117 -0
- data/ext/celes/obl06.c +118 -0
- data/ext/celes/obl80.c +118 -0
- data/ext/celes/p06e.c +321 -0
- data/ext/celes/p2pv.c +83 -0
- data/ext/celes/p2s.c +91 -0
- data/ext/celes/pap.c +139 -0
- data/ext/celes/pas.c +96 -0
- data/ext/celes/pb06.c +144 -0
- data/ext/celes/pdp.c +84 -0
- data/ext/celes/pfw06.c +165 -0
- data/ext/celes/plan94.c +514 -0
- data/ext/celes/pm.c +83 -0
- data/ext/celes/pmat00.c +118 -0
- data/ext/celes/pmat06.c +122 -0
- data/ext/celes/pmat76.c +141 -0
- data/ext/celes/pmp.c +85 -0
- data/ext/celes/pn.c +109 -0
- data/ext/celes/pn00.c +177 -0
- data/ext/celes/pn00a.c +162 -0
- data/ext/celes/pn00b.c +162 -0
- data/ext/celes/pn06.c +187 -0
- data/ext/celes/pn06a.c +152 -0
- data/ext/celes/pnm00a.c +121 -0
- data/ext/celes/pnm00b.c +121 -0
- data/ext/celes/pnm06a.c +124 -0
- data/ext/celes/pnm80.c +126 -0
- data/ext/celes/pom00.c +115 -0
- data/ext/celes/ppp.c +85 -0
- data/ext/celes/ppsp.c +94 -0
- data/ext/celes/pr00.c +142 -0
- data/ext/celes/prec76.c +148 -0
- data/ext/celes/pv2p.c +81 -0
- data/ext/celes/pv2s.c +144 -0
- data/ext/celes/pvdpv.c +102 -0
- data/ext/celes/pvm.c +86 -0
- data/ext/celes/pvmpv.c +87 -0
- data/ext/celes/pvppv.c +87 -0
- data/ext/celes/pvstar.c +207 -0
- data/ext/celes/pvu.c +93 -0
- data/ext/celes/pvup.c +88 -0
- data/ext/celes/pvxpv.c +107 -0
- data/ext/celes/pxp.c +94 -0
- data/ext/celes/rm2v.c +111 -0
- data/ext/celes/rv2m.c +118 -0
- data/ext/celes/rx.c +110 -0
- data/ext/celes/rxp.c +99 -0
- data/ext/celes/rxpv.c +86 -0
- data/ext/celes/rxr.c +99 -0
- data/ext/celes/ry.c +110 -0
- data/ext/celes/rz.c +110 -0
- data/ext/celes/s00.c +371 -0
- data/ext/celes/s00a.c +143 -0
- data/ext/celes/s00b.c +143 -0
- data/ext/celes/s06.c +368 -0
- data/ext/celes/s06a.c +145 -0
- data/ext/celes/s2c.c +85 -0
- data/ext/celes/s2p.c +88 -0
- data/ext/celes/s2pv.c +103 -0
- data/ext/celes/s2xpv.c +87 -0
- data/ext/celes/sepp.c +105 -0
- data/ext/celes/seps.c +93 -0
- data/ext/celes/sofa.h +379 -0
- data/ext/celes/sofam.h +155 -0
- data/ext/celes/sp00.c +118 -0
- data/ext/celes/starpm.c +205 -0
- data/ext/celes/starpv.c +264 -0
- data/ext/celes/sxp.c +84 -0
- data/ext/celes/sxpv.c +85 -0
- data/ext/celes/taitt.c +110 -0
- data/ext/celes/taiut1.c +112 -0
- data/ext/celes/taiutc.c +182 -0
- data/ext/celes/tcbtdb.c +132 -0
- data/ext/celes/tcgtt.c +109 -0
- data/ext/celes/tdbtcb.c +137 -0
- data/ext/celes/tdbtt.c +122 -0
- data/ext/celes/tf2a.c +107 -0
- data/ext/celes/tf2d.c +107 -0
- data/ext/celes/tr.c +93 -0
- data/ext/celes/trxp.c +93 -0
- data/ext/celes/trxpv.c +93 -0
- data/ext/celes/tttai.c +110 -0
- data/ext/celes/tttcg.c +112 -0
- data/ext/celes/tttdb.c +121 -0
- data/ext/celes/ttut1.c +110 -0
- data/ext/celes/ut1tai.c +111 -0
- data/ext/celes/ut1tt.c +110 -0
- data/ext/celes/ut1utc.c +193 -0
- data/ext/celes/utctai.c +163 -0
- data/ext/celes/utcut1.c +151 -0
- data/ext/celes/xy06.c +2758 -0
- data/ext/celes/xys00a.c +133 -0
- data/ext/celes/xys00b.c +133 -0
- data/ext/celes/xys06a.c +133 -0
- data/ext/celes/zp.c +77 -0
- data/ext/celes/zpv.c +79 -0
- data/ext/celes/zr.c +83 -0
- data/lib/celes.rb +6 -0
- data/lib/celes/version.rb +3 -0
- data/sofa_20120301.diff +31384 -0
- data/test/t_sofa.rb +8228 -0
- metadata +251 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
|
@@ -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.
|
data/README.md
ADDED
|
@@ -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
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
data/celes.gemspec
ADDED
|
@@ -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
|
data/ext/celes/a2af.c
ADDED
|
@@ -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
|
+
}
|
data/ext/celes/a2tf.c
ADDED
|
@@ -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
|
+
}
|