celes 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,139 @@
1
+ #include "sofam.h"
2
+
3
+ int iauCal2jd(int iy, int im, int id, double *djm0, double *djm)
4
+ /*
5
+ ** - - - - - - - - - -
6
+ ** i a u C a l 2 j d
7
+ ** - - - - - - - - - -
8
+ **
9
+ ** Gregorian Calendar to Julian Date.
10
+ **
11
+ ** Status: support function.
12
+ **
13
+ ** Given:
14
+ ** iy,im,id int year, month, day in Gregorian calendar (Note 1)
15
+ **
16
+ ** Returned:
17
+ ** djm0 double MJD zero-point: always 2400000.5
18
+ ** djm double Modified Julian Date for 0 hrs
19
+ **
20
+ ** Returned (function value):
21
+ ** int status:
22
+ ** 0 = OK
23
+ ** -1 = bad year (Note 3: JD not computed)
24
+ ** -2 = bad month (JD not computed)
25
+ ** -3 = bad day (JD computed)
26
+ **
27
+ ** Notes:
28
+ **
29
+ ** 1) The algorithm used is valid from -4800 March 1, but this
30
+ ** implementation rejects dates before -4799 January 1.
31
+ **
32
+ ** 2) The Julian Date is returned in two pieces, in the usual SOFA
33
+ ** manner, which is designed to preserve time resolution. The
34
+ ** Julian Date is available as a single number by adding djm0 and
35
+ ** djm.
36
+ **
37
+ ** 3) In early eras the conversion is from the "Proleptic Gregorian
38
+ ** Calendar"; no account is taken of the date(s) of adoption of
39
+ ** the Gregorian Calendar, nor is the AD/BC numbering convention
40
+ ** observed.
41
+ **
42
+ ** Reference:
43
+ **
44
+ ** Explanatory Supplement to the Astronomical Almanac,
45
+ ** P. Kenneth Seidelmann (ed), University Science Books (1992),
46
+ ** Section 12.92 (p604).
47
+ **
48
+ ** This revision: 2009 October 19
49
+ **
50
+ ** Original version 2012-03-01
51
+ **
52
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
53
+ */
54
+ {
55
+ int j, ly, my;
56
+ long iypmy;
57
+
58
+ /* Earliest year allowed (4800BC) */
59
+ const int IYMIN = -4799;
60
+
61
+ /* Month lengths in days */
62
+ static const int mtab[]
63
+ = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
64
+
65
+
66
+ /* Preset status. */
67
+ j = 0;
68
+
69
+ /* Validate year and month. */
70
+ if (iy < IYMIN) return -1;
71
+ if (im < 1 || im > 12) return -2;
72
+
73
+ /* If February in a leap year, 1, otherwise 0. */
74
+ ly = ((im == 2) && !(iy%4) && (iy%100 || !(iy%400)));
75
+
76
+ /* Validate day, taking into account leap years. */
77
+ if ( (id < 1) || (id > (mtab[im-1] + ly))) j = -3;
78
+
79
+ /* Return result. */
80
+ my = (im - 14) / 12;
81
+ iypmy = (long) (iy + my);
82
+ *djm0 = 2400000.5;
83
+ *djm = (double)((1461L * (iypmy + 4800L)) / 4L
84
+ + (367L * (long) (im - 2 - 12 * my)) / 12L
85
+ - (3L * ((iypmy + 4900L) / 100L)) / 4L
86
+ + (long) id - 2432076L);
87
+
88
+ /* Return status. */
89
+ return j;
90
+
91
+ /*----------------------------------------------------------------------
92
+ **
93
+ ** Celes is a wrapper of the SOFA Library for Ruby.
94
+ **
95
+ ** This file is redistributed and relicensed in accordance with
96
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
97
+ **
98
+ ** The original library is available from IAU Standards of
99
+ ** Fundamental Astronomy (http://www.iausofa.org/).
100
+ **
101
+ **
102
+ **
103
+ **
104
+ **
105
+ ** Copyright (C) 2013, Naoki Arita
106
+ ** All rights reserved.
107
+ **
108
+ ** Redistribution and use in source and binary forms, with or without
109
+ ** modification, are permitted provided that the following conditions
110
+ ** are met:
111
+ **
112
+ ** 1 Redistributions of source code must retain the above copyright
113
+ ** notice, this list of conditions and the following disclaimer.
114
+ **
115
+ ** 2 Redistributions in binary form must reproduce the above copyright
116
+ ** notice, this list of conditions and the following disclaimer in
117
+ ** the documentation and/or other materials provided with the
118
+ ** distribution.
119
+ **
120
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
121
+ ** the International Astronomical Union nor the names of its
122
+ ** contributors may be used to endorse or promote products derived
123
+ ** from this software without specific prior written permission.
124
+ **
125
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
126
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
127
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
128
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
129
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
130
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
131
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
132
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
133
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
134
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
135
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
136
+ ** POSSIBILITY OF SUCH DAMAGE.
137
+ **
138
+ **--------------------------------------------------------------------*/
139
+ }
@@ -0,0 +1,2522 @@
1
+ #include "sofa.h"
2
+ #include "sofam.h"
3
+ #include "ruby.h"
4
+
5
+ #ifndef DBL2NUM
6
+ # define DBL2NUM(dbl) rb_float_new(dbl)
7
+ #endif
8
+
9
+ VALUE mCeles;
10
+ ID id_status;
11
+
12
+ static VALUE
13
+ celes_s_status(VALUE self){
14
+ return rb_ivar_get(self, id_status);
15
+ }
16
+
17
+ static void
18
+ cvec_cp(VALUE vvector, double vector[3]){
19
+ int i;
20
+
21
+ Check_Type(vvector, T_ARRAY);
22
+ if(RARRAY_LEN(vvector) != 3)
23
+ rb_raise(rb_eArgError, "vector size is not 3");
24
+
25
+ for(i = 0; i < 3; i++)
26
+ vector[i] = NUM2DBL(RARRAY_PTR(vvector)[i]);
27
+ }
28
+
29
+ static void
30
+ cmat_cp23(VALUE vmatrix, double matrix[2][3]){
31
+ int i, j;
32
+
33
+ Check_Type(vmatrix, T_ARRAY);
34
+ if(RARRAY_LEN(vmatrix) != 2)
35
+ rb_raise(rb_eArgError, "matrix size is not 2x3");
36
+
37
+ for(i = 0; i < 2; i++){
38
+ Check_Type(RARRAY_PTR(vmatrix)[i], T_ARRAY);
39
+ if(RARRAY_LEN(RARRAY_PTR(vmatrix)[i]) != 3)
40
+ rb_raise(rb_eArgError, "matrix size is not 2x3");
41
+
42
+ for(j = 0; j < 3; j++)
43
+ matrix[i][j] = NUM2DBL(RARRAY_PTR(RARRAY_PTR(vmatrix)[i])[j]);
44
+ }
45
+ }
46
+
47
+ static void
48
+ cmat_cp33(VALUE vmatrix, double matrix[3][3]){
49
+ int i, j;
50
+
51
+ Check_Type(vmatrix, T_ARRAY);
52
+ if(RARRAY_LEN(vmatrix) != 3)
53
+ rb_raise(rb_eArgError, "matrix size is not 3x3");
54
+
55
+ for(i = 0; i < 3; i++){
56
+ Check_Type(RARRAY_PTR(vmatrix)[i], T_ARRAY);
57
+ if(RARRAY_LEN(RARRAY_PTR(vmatrix)[i]) != 3)
58
+ rb_raise(rb_eArgError, "matrix size is not 3x3");
59
+
60
+ for(j = 0; j < 3; j++)
61
+ matrix[i][j] = NUM2DBL(RARRAY_PTR(RARRAY_PTR(vmatrix)[i])[j]);
62
+ }
63
+ }
64
+
65
+ static VALUE
66
+ vvec_cp(double vector[3], VALUE vvector){
67
+ int i;
68
+
69
+ Check_Type(vvector, T_ARRAY);
70
+ if(RARRAY_LEN(vvector) != 3)
71
+ rb_raise(rb_eArgError, "vector size is not 3");
72
+
73
+ for(i = 0; i < 3; i++)
74
+ RARRAY_PTR(vvector)[i] = DBL2NUM(vector[i]);
75
+
76
+ return vvector;
77
+ }
78
+
79
+ static VALUE
80
+ vmat_cp23(double matrix[2][3], VALUE vmatrix){
81
+ int i, j;
82
+
83
+ Check_Type(vmatrix, T_ARRAY);
84
+ if(RARRAY_LEN(vmatrix) != 2)
85
+ rb_raise(rb_eArgError, "matrix size is not 2x3");
86
+
87
+ for(i = 0; i < 2; i++){
88
+ Check_Type(RARRAY_PTR(vmatrix)[i], T_ARRAY);
89
+ if(RARRAY_LEN(RARRAY_PTR(vmatrix)[i]) != 3)
90
+ rb_raise(rb_eArgError, "matrix size is not 2x3");
91
+
92
+ for(j = 0; j < 3; j++)
93
+ RARRAY_PTR(RARRAY_PTR(vmatrix)[i])[j] = DBL2NUM(matrix[i][j]);
94
+ }
95
+
96
+ return vmatrix;
97
+ }
98
+
99
+ static VALUE
100
+ vmat_cp33(double matrix[3][3], VALUE vmatrix){
101
+ int i, j;
102
+
103
+ Check_Type(vmatrix, T_ARRAY);
104
+ if(RARRAY_LEN(vmatrix) != 3)
105
+ rb_raise(rb_eArgError, "matrix size is not 3x3");
106
+
107
+ for(i = 0; i < 3; i++){
108
+ Check_Type(RARRAY_PTR(vmatrix)[i], T_ARRAY);
109
+ if(RARRAY_LEN(RARRAY_PTR(vmatrix)[i]) != 3)
110
+ rb_raise(rb_eArgError, "matrix size is not 3x3");
111
+
112
+ for(j = 0; j < 3; j++)
113
+ RARRAY_PTR(RARRAY_PTR(vmatrix)[i])[j] = DBL2NUM(matrix[i][j]);
114
+ }
115
+
116
+ return vmatrix;
117
+ }
118
+
119
+ static VALUE
120
+ vvec_new(double vector[3]){
121
+ return rb_ary_new3(3,
122
+ DBL2NUM(vector[0]),
123
+ DBL2NUM(vector[1]),
124
+ DBL2NUM(vector[2]));
125
+ }
126
+
127
+ static VALUE
128
+ vmat_new23(double matrix[2][3]){
129
+ return rb_ary_new3(2,
130
+ rb_ary_new3(3,
131
+ DBL2NUM(matrix[0][0]),
132
+ DBL2NUM(matrix[0][1]),
133
+ DBL2NUM(matrix[0][2])),
134
+ rb_ary_new3(3,
135
+ DBL2NUM(matrix[1][0]),
136
+ DBL2NUM(matrix[1][1]),
137
+ DBL2NUM(matrix[1][2])));
138
+ }
139
+
140
+ static VALUE
141
+ vmat_new33(double matrix[3][3]){
142
+ return rb_ary_new3(3,
143
+ rb_ary_new3(3,
144
+ DBL2NUM(matrix[0][0]),
145
+ DBL2NUM(matrix[0][1]),
146
+ DBL2NUM(matrix[0][2])),
147
+ rb_ary_new3(3,
148
+ DBL2NUM(matrix[1][0]),
149
+ DBL2NUM(matrix[1][1]),
150
+ DBL2NUM(matrix[1][2])),
151
+ rb_ary_new3(3,
152
+ DBL2NUM(matrix[2][0]),
153
+ DBL2NUM(matrix[2][1]),
154
+ DBL2NUM(matrix[2][2])));
155
+ }
156
+
157
+
158
+
159
+ static VALUE
160
+ celes_s_zp_b(VALUE self, VALUE vp){
161
+ double p[3];
162
+
163
+ cvec_cp(vp, p);
164
+ iauZp(p);
165
+ rb_ivar_set(self, id_status, INT2FIX(0));
166
+
167
+ return vvec_cp(p, vp);
168
+ }
169
+
170
+ static VALUE
171
+ celes_s_zp(VALUE self){
172
+ double p[3];
173
+
174
+ iauZp(p);
175
+ rb_ivar_set(self, id_status, INT2FIX(0));
176
+
177
+ return vvec_new(p);
178
+ }
179
+
180
+ static VALUE
181
+ celes_s_zr_b(VALUE self, VALUE vr){
182
+ double r[3][3];
183
+
184
+ cmat_cp33(vr, r);
185
+ iauZr(r);
186
+ rb_ivar_set(self, id_status, INT2FIX(0));
187
+
188
+ return vmat_cp33(r, vr);
189
+ }
190
+
191
+ static VALUE
192
+ celes_s_zr(VALUE self){
193
+ double r[3][3];
194
+
195
+ iauZr(r);
196
+ rb_ivar_set(self, id_status, INT2FIX(0));
197
+
198
+ return vmat_new33(r);
199
+ }
200
+
201
+ static VALUE
202
+ celes_s_ir_b(VALUE self, VALUE vr){
203
+ double r[3][3];
204
+
205
+ cmat_cp33(vr, r);
206
+ iauIr(r);
207
+ rb_ivar_set(self, id_status, INT2FIX(0));
208
+
209
+ return vmat_cp33(r, vr);
210
+ }
211
+
212
+ static VALUE
213
+ celes_s_ir(VALUE self){
214
+ double r[3][3];
215
+
216
+ iauIr(r);
217
+ rb_ivar_set(self, id_status, INT2FIX(0));
218
+
219
+ return vmat_new33(r);
220
+ }
221
+
222
+ static VALUE
223
+ celes_s_cp(VALUE self, VALUE vp){
224
+ double p[3], c[3];
225
+
226
+ cvec_cp(vp, p);
227
+ iauCp(p, c);
228
+ rb_ivar_set(self, id_status, INT2FIX(0));
229
+
230
+ return vvec_new(c);
231
+ }
232
+
233
+ static VALUE
234
+ celes_s_cr(VALUE self, VALUE vr){
235
+ double r[3][3], c[3][3];
236
+
237
+ cmat_cp33(vr, r);
238
+ iauCr(r, c);
239
+ rb_ivar_set(self, id_status, INT2FIX(0));
240
+
241
+ return vmat_new33(c);
242
+ }
243
+
244
+ static VALUE
245
+ celes_s_rx_b(VALUE self, VALUE vphi, VALUE vr){
246
+ double r[3][3];
247
+
248
+ cmat_cp33(vr, r);
249
+ iauRx(NUM2DBL(vphi), r);
250
+ rb_ivar_set(self, id_status, INT2FIX(0));
251
+
252
+ return vmat_cp33(r, vr);
253
+ }
254
+
255
+ static VALUE
256
+ celes_s_rx(VALUE self, VALUE vphi, VALUE vr){
257
+ double r[3][3];
258
+
259
+ cmat_cp33(vr, r);
260
+ iauRx(NUM2DBL(vphi), r);
261
+ rb_ivar_set(self, id_status, INT2FIX(0));
262
+
263
+ return vmat_new33(r);
264
+ }
265
+
266
+ static VALUE
267
+ celes_s_ry_b(VALUE self, VALUE vphi, VALUE vr){
268
+ double r[3][3];
269
+
270
+ cmat_cp33(vr, r);
271
+ iauRy(NUM2DBL(vphi), r);
272
+ rb_ivar_set(self, id_status, INT2FIX(0));
273
+
274
+ return vmat_cp33(r, vr);
275
+ }
276
+
277
+ static VALUE
278
+ celes_s_ry(VALUE self, VALUE vphi, VALUE vr){
279
+ double r[3][3];
280
+
281
+ cmat_cp33(vr, r);
282
+ iauRy(NUM2DBL(vphi), r);
283
+ rb_ivar_set(self, id_status, INT2FIX(0));
284
+
285
+ return vmat_new33(r);
286
+ }
287
+
288
+ static VALUE
289
+ celes_s_rz_b(VALUE self, VALUE vphi, VALUE vr){
290
+ double r[3][3];
291
+
292
+ cmat_cp33(vr, r);
293
+ iauRz(NUM2DBL(vphi), r);
294
+ rb_ivar_set(self, id_status, INT2FIX(0));
295
+
296
+ return vmat_cp33(r, vr);
297
+ }
298
+
299
+ static VALUE
300
+ celes_s_rz(VALUE self, VALUE vphi, VALUE vr){
301
+ double r[3][3];
302
+
303
+ cmat_cp33(vr, r);
304
+ iauRz(NUM2DBL(vphi), r);
305
+ rb_ivar_set(self, id_status, INT2FIX(0));
306
+
307
+ return vmat_new33(r);
308
+ }
309
+
310
+ static VALUE
311
+ celes_s_s2c(VALUE self, VALUE vtheta, VALUE vphi){
312
+ double c[3];
313
+
314
+ iauS2c(NUM2DBL(vtheta), NUM2DBL(vphi), c);
315
+ rb_ivar_set(self, id_status, INT2FIX(0));
316
+
317
+ return vvec_new(c);
318
+ }
319
+
320
+ static VALUE
321
+ celes_s_c2s(VALUE self, VALUE vp){
322
+ double p[3], theta, phi;
323
+
324
+ cvec_cp(vp, p);
325
+ iauC2s(p, &theta, &phi);
326
+ rb_ivar_set(self, id_status, INT2FIX(0));
327
+
328
+ return rb_ary_new3(2, DBL2NUM(theta), DBL2NUM(phi));
329
+ }
330
+
331
+ static VALUE
332
+ celes_s_s2p(VALUE self, VALUE vtheta, VALUE vphi, VALUE vr){
333
+ double p[3];
334
+
335
+ iauS2p(NUM2DBL(vtheta), NUM2DBL(vphi), NUM2DBL(vr), p);
336
+ rb_ivar_set(self, id_status, INT2FIX(0));
337
+
338
+ return vvec_new(p);
339
+ }
340
+
341
+ static VALUE
342
+ celes_s_p2s(VALUE self, VALUE vp){
343
+ double p[3], theta, phi, r;
344
+
345
+ cvec_cp(vp, p);
346
+ iauP2s(p, &theta, &phi, &r);
347
+ rb_ivar_set(self, id_status, INT2FIX(0));
348
+
349
+ return rb_ary_new3(3, DBL2NUM(theta), DBL2NUM(phi), DBL2NUM(r));
350
+ }
351
+
352
+ static VALUE
353
+ celes_s_ppp(VALUE self, VALUE va, VALUE vb){
354
+ double a[3], b[3], apb[3];
355
+
356
+ cvec_cp(va, a);
357
+ cvec_cp(vb, b);
358
+ iauPpp(a, b, apb);
359
+ rb_ivar_set(self, id_status, INT2FIX(0));
360
+
361
+ return vvec_new(apb);
362
+ }
363
+
364
+ static VALUE
365
+ celes_s_pmp(VALUE self, VALUE va, VALUE vb){
366
+ double a[3], b[3], amb[3];
367
+
368
+ cvec_cp(va, a);
369
+ cvec_cp(vb, b);
370
+ iauPmp(a, b, amb);
371
+ rb_ivar_set(self, id_status, INT2FIX(0));
372
+
373
+ return vvec_new(amb);
374
+ }
375
+
376
+ static VALUE
377
+ celes_s_ppsp(VALUE self, VALUE va, VALUE vs, VALUE vb){
378
+ double a[3], b[3], apsb[3];
379
+
380
+ cvec_cp(va, a);
381
+ cvec_cp(vb, b);
382
+ iauPpsp(a, NUM2DBL(vs), b, apsb);
383
+ rb_ivar_set(self, id_status, INT2FIX(0));
384
+
385
+ return vvec_new(apsb);
386
+ }
387
+
388
+ static VALUE
389
+ celes_s_pdp(VALUE self, VALUE va, VALUE vb){
390
+ double a[3], b[3];
391
+
392
+ cvec_cp(va, a);
393
+ cvec_cp(vb, b);
394
+ rb_ivar_set(self, id_status, INT2FIX(0));
395
+
396
+ return DBL2NUM(iauPdp(a, b));
397
+ }
398
+
399
+ static VALUE
400
+ celes_s_pxp(VALUE self, VALUE va, VALUE vb){
401
+ double a[3], b[3], axb[3];
402
+
403
+ cvec_cp(va, a);
404
+ cvec_cp(vb, b);
405
+ iauPxp(a, b, axb);
406
+ rb_ivar_set(self, id_status, INT2FIX(0));
407
+
408
+ return vvec_new(axb);
409
+ }
410
+
411
+ static VALUE
412
+ celes_s_pm(VALUE self, VALUE vp){
413
+ double p[3];
414
+
415
+ cvec_cp(vp, p);
416
+ rb_ivar_set(self, id_status, INT2FIX(0));
417
+
418
+ return DBL2NUM(iauPm(p));
419
+ }
420
+
421
+ static VALUE
422
+ celes_s_pn(VALUE self, VALUE vp){
423
+ double p[3], r, u[3];
424
+
425
+ cvec_cp(vp, p);
426
+ iauPn(p, &r, u);
427
+ rb_ivar_set(self, id_status, INT2FIX(0));
428
+
429
+ return rb_ary_new3(2, DBL2NUM(r), vvec_new(u));
430
+ }
431
+
432
+ static VALUE
433
+ celes_s_sxp(VALUE self, VALUE vs, VALUE vp){
434
+ double p[3], sp[3];
435
+
436
+ cvec_cp(vp, p);
437
+ iauSxp(NUM2DBL(vs), p, sp);
438
+ rb_ivar_set(self, id_status, INT2FIX(0));
439
+
440
+ return vvec_new(sp);
441
+ }
442
+
443
+
444
+ static VALUE
445
+ celes_s_rxr(VALUE self, VALUE va, VALUE vb){
446
+ double a[3][3], b[3][3], atb[3][3];
447
+
448
+ cmat_cp33(va, a);
449
+ cmat_cp33(vb, b);
450
+ iauRxr(a, b, atb);
451
+ rb_ivar_set(self, id_status, INT2FIX(0));
452
+
453
+ return vmat_new33(atb);
454
+ }
455
+
456
+ static VALUE
457
+ celes_s_tr(VALUE self, VALUE vr){
458
+ double r[3][3], rt[3][3];
459
+
460
+ cmat_cp33(vr, r);
461
+ iauTr(r, rt);
462
+ rb_ivar_set(self, id_status, INT2FIX(0));
463
+
464
+ return vmat_new33(rt);
465
+ }
466
+
467
+ static VALUE
468
+ celes_s_rxp(VALUE self, VALUE vr, VALUE vp){
469
+ double r[3][3], p[3], rp[3];
470
+
471
+ cmat_cp33(vr, r);
472
+ cvec_cp(vp, p);
473
+ iauRxp(r, p, rp);
474
+ rb_ivar_set(self, id_status, INT2FIX(0));
475
+
476
+ return vvec_new(rp);
477
+ }
478
+
479
+ static VALUE
480
+ celes_s_trxp(VALUE self, VALUE vr, VALUE vp){
481
+ double r[3][3], p[3], trp[3];
482
+
483
+ cmat_cp33(vr, r);
484
+ cvec_cp(vp, p);
485
+ iauTrxp(r, p, trp);
486
+ rb_ivar_set(self, id_status, INT2FIX(0));
487
+
488
+ return vvec_new(trp);
489
+ }
490
+
491
+ static VALUE
492
+ celes_s_sepp(VALUE self, VALUE va, VALUE vb){
493
+ double a[3], b[3];
494
+
495
+ cvec_cp(va, a);
496
+ cvec_cp(vb, b);
497
+ rb_ivar_set(self, id_status, INT2FIX(0));
498
+
499
+ return DBL2NUM(iauSepp(a, b));
500
+ }
501
+
502
+ static VALUE
503
+ celes_s_seps(VALUE self, VALUE val, VALUE vap, VALUE vbl, VALUE vbp){
504
+ rb_ivar_set(self, id_status, INT2FIX(0));
505
+
506
+ return DBL2NUM(iauSeps(NUM2DBL(val), NUM2DBL(vap),
507
+ NUM2DBL(vbl), NUM2DBL(vbp)));
508
+ }
509
+
510
+ static VALUE
511
+ celes_s_pap(VALUE self, VALUE va, VALUE vb){
512
+ double a[3], b[3];
513
+
514
+ cvec_cp(va, a);
515
+ cvec_cp(vb, b);
516
+ rb_ivar_set(self, id_status, INT2FIX(0));
517
+
518
+ return DBL2NUM(iauPap(a, b));
519
+ }
520
+
521
+ static VALUE
522
+ celes_s_pas(VALUE self, VALUE val, VALUE vap, VALUE vbl, VALUE vbp){
523
+ rb_ivar_set(self, id_status, INT2FIX(0));
524
+
525
+ return DBL2NUM(iauPas(NUM2DBL(val), NUM2DBL(vap),
526
+ NUM2DBL(vbl), NUM2DBL(vbp)));
527
+ }
528
+
529
+ static VALUE
530
+ celes_s_rv2m(VALUE self, VALUE vw){
531
+ double w[3], r[3][3];
532
+
533
+ cvec_cp(vw, w);
534
+ iauRv2m(w, r);
535
+ rb_ivar_set(self, id_status, INT2FIX(0));
536
+
537
+ return vmat_new33(r);
538
+ }
539
+
540
+ static VALUE
541
+ celes_s_rm2v(VALUE self, VALUE vr){
542
+ double r[3][3], w[3];
543
+
544
+ cmat_cp33(vr, r);
545
+ iauRm2v(r, w);
546
+ rb_ivar_set(self, id_status, INT2FIX(0));
547
+
548
+ return vvec_new(w);
549
+ }
550
+
551
+ static VALUE
552
+ celes_s_zpv_b(VALUE self, VALUE vpv){
553
+ double pv[2][3];
554
+
555
+ cmat_cp23(vpv, pv);
556
+ iauZpv(pv);
557
+ rb_ivar_set(self, id_status, INT2FIX(0));
558
+
559
+ return vmat_cp23(pv, vpv);
560
+ }
561
+
562
+ static VALUE
563
+ celes_s_zpv(VALUE self){
564
+ double pv[2][3];
565
+
566
+ iauZpv(pv);
567
+ rb_ivar_set(self, id_status, INT2FIX(0));
568
+
569
+ return vmat_new23(pv);
570
+ }
571
+
572
+ static VALUE
573
+ celes_s_cpv(VALUE self, VALUE vpv){
574
+ double pv[2][3], c[2][3];
575
+
576
+ cmat_cp23(vpv, pv);
577
+ iauCpv(pv, c);
578
+ rb_ivar_set(self, id_status, INT2FIX(0));
579
+
580
+ return vmat_new23(c);
581
+ }
582
+
583
+ static VALUE
584
+ celes_s_p2pv(VALUE self, VALUE vp){
585
+ double p[3], pv[2][3];
586
+
587
+ cvec_cp(vp, p);
588
+ iauP2pv(p, pv);
589
+ rb_ivar_set(self, id_status, INT2FIX(0));
590
+
591
+ return vmat_new23(pv);
592
+ }
593
+
594
+ static VALUE
595
+ celes_s_pv2p(VALUE self, VALUE vpv){
596
+ double pv[2][3], p[3];
597
+
598
+ cmat_cp23(vpv, pv);
599
+ iauPv2p(pv, p);
600
+ rb_ivar_set(self, id_status, INT2FIX(0));
601
+
602
+ return vvec_new(p);
603
+ }
604
+
605
+ static VALUE
606
+ celes_s_s2pv(VALUE self, VALUE vtheta, VALUE vphi, VALUE vr,
607
+ VALUE vtd, VALUE vpd, VALUE vrd){
608
+ double pv[2][3];
609
+
610
+ iauS2pv(NUM2DBL(vtheta), NUM2DBL(vphi), NUM2DBL(vr),
611
+ NUM2DBL(vtd), NUM2DBL(vpd), NUM2DBL(vrd), pv);
612
+ rb_ivar_set(self, id_status, INT2FIX(0));
613
+
614
+ return vmat_new23(pv);
615
+ }
616
+
617
+ static VALUE
618
+ celes_s_pv2s(VALUE self, VALUE vpv){
619
+ double pv[2][3], theta, phi, r, td, pd, rd;
620
+
621
+ cmat_cp23(vpv, pv);
622
+ iauPv2s(pv, &theta, &phi, &r, &td, &pd, &rd);
623
+ rb_ivar_set(self, id_status, INT2FIX(0));
624
+
625
+ return rb_ary_new3(6, DBL2NUM(theta), DBL2NUM(phi),
626
+ DBL2NUM(r), DBL2NUM(td), DBL2NUM(pd), DBL2NUM(rd));
627
+ }
628
+
629
+ static VALUE
630
+ celes_s_pvppv(VALUE self, VALUE va, VALUE vb){
631
+ double a[2][3], b[2][3], apb[2][3];
632
+
633
+ cmat_cp23(va, a);
634
+ cmat_cp23(vb, b);
635
+ iauPvppv(a, b, apb);
636
+ rb_ivar_set(self, id_status, INT2FIX(0));
637
+
638
+ return vmat_new23(apb);
639
+ }
640
+
641
+ static VALUE
642
+ celes_s_pvmpv(VALUE self, VALUE va, VALUE vb){
643
+ double a[2][3], b[2][3], amb[2][3];
644
+
645
+ cmat_cp23(va, a);
646
+ cmat_cp23(vb, b);
647
+ iauPvmpv(a, b, amb);
648
+ rb_ivar_set(self, id_status, INT2FIX(0));
649
+
650
+ return vmat_new23(amb);
651
+ }
652
+
653
+ static VALUE
654
+ celes_s_pvdpv(VALUE self, VALUE va, VALUE vb){
655
+ double a[2][3], b[2][3], adb[2];
656
+
657
+ cmat_cp23(va, a);
658
+ cmat_cp23(vb, b);
659
+ iauPvdpv(a, b, adb);
660
+ rb_ivar_set(self, id_status, INT2FIX(0));
661
+
662
+ return rb_ary_new3(2, DBL2NUM(adb[0]), DBL2NUM(adb[1]));
663
+ }
664
+
665
+ static VALUE
666
+ celes_s_pvxpv(VALUE self, VALUE va, VALUE vb){
667
+ double a[2][3], b[2][3], axb[2][3];
668
+
669
+ cmat_cp23(va, a);
670
+ cmat_cp23(vb, b);
671
+ iauPvxpv(a, b, axb);
672
+ rb_ivar_set(self, id_status, INT2FIX(0));
673
+
674
+ return vmat_new23(axb);
675
+ }
676
+
677
+ static VALUE
678
+ celes_s_pvm(VALUE self, VALUE vpv){
679
+ double pv[2][3], r, s;
680
+
681
+ cmat_cp23(vpv, pv);
682
+ iauPvm(pv, &r, &s);
683
+ rb_ivar_set(self, id_status, INT2FIX(0));
684
+
685
+ return rb_ary_new3(2, DBL2NUM(r), DBL2NUM(s));
686
+ }
687
+
688
+ static VALUE
689
+ celes_s_sxpv(VALUE self, VALUE vs, VALUE vpv){
690
+ double pv[2][3], spv[2][3];
691
+
692
+ cmat_cp23(vpv, pv);
693
+ iauSxpv(NUM2DBL(vs), pv, spv);
694
+ rb_ivar_set(self, id_status, INT2FIX(0));
695
+
696
+ return vmat_new23(spv);
697
+ }
698
+
699
+ static VALUE
700
+ celes_s_s2xpv(VALUE self, VALUE vs1, VALUE vs2, VALUE vpv){
701
+ double pv[2][3], spv[2][3];
702
+
703
+ cmat_cp23(vpv, pv);
704
+ iauS2xpv(NUM2DBL(vs1), NUM2DBL(vs2), pv, spv);
705
+ rb_ivar_set(self, id_status, INT2FIX(0));
706
+
707
+ return vmat_new23(spv);
708
+ }
709
+
710
+ static VALUE
711
+ celes_s_pvu(VALUE self, VALUE vdt, VALUE vpv){
712
+ double pv[2][3], upv[2][3];
713
+
714
+ cmat_cp23(vpv, pv);
715
+ iauPvu(NUM2DBL(vdt), pv, upv);
716
+ rb_ivar_set(self, id_status, INT2FIX(0));
717
+
718
+ return vmat_new23(upv);
719
+ }
720
+
721
+ static VALUE
722
+ celes_s_pvup(VALUE self, VALUE vdt, VALUE vpv){
723
+ double pv[2][3], p[3];
724
+
725
+ cmat_cp23(vpv, pv);
726
+ iauPvup(NUM2DBL(vdt), pv, p);
727
+ rb_ivar_set(self, id_status, INT2FIX(0));
728
+
729
+ return vvec_new(p);
730
+ }
731
+
732
+ static VALUE
733
+ celes_s_rxpv(VALUE self, VALUE vr, VALUE vpv){
734
+ double r[3][3], pv[2][3], rpv[2][3];
735
+
736
+ cmat_cp33(vr, r);
737
+ cmat_cp23(vpv, pv);
738
+ iauRxpv(r, pv, rpv);
739
+ rb_ivar_set(self, id_status, INT2FIX(0));
740
+
741
+ return vmat_new23(rpv);
742
+ }
743
+
744
+ static VALUE
745
+ celes_s_trxpv(VALUE self, VALUE vr, VALUE vpv){
746
+ double r[3][3], pv[2][3], trpv[2][3];
747
+
748
+ cmat_cp33(vr, r);
749
+ cmat_cp23(vpv, pv);
750
+ iauTrxpv(r, pv, trpv);
751
+ rb_ivar_set(self, id_status, INT2FIX(0));
752
+
753
+ return vmat_new23(trpv);
754
+ }
755
+
756
+ static VALUE
757
+ celes_s_anp(VALUE self, VALUE va){
758
+ rb_ivar_set(self, id_status, INT2FIX(0));
759
+
760
+ return DBL2NUM(iauAnp(NUM2DBL(va)));
761
+ }
762
+
763
+ static VALUE
764
+ celes_s_anpm(VALUE self, VALUE va){
765
+ rb_ivar_set(self, id_status, INT2FIX(0));
766
+
767
+ return DBL2NUM(iauAnpm(NUM2DBL(va)));
768
+ }
769
+
770
+ static VALUE
771
+ celes_s_a2tf(VALUE self, VALUE vndp, VALUE vangle){
772
+ char sign;
773
+ int ihmsf[4];
774
+
775
+ iauA2tf(NUM2INT(vndp), NUM2DBL(vangle), &sign, ihmsf);
776
+ rb_ivar_set(self, id_status, INT2FIX(0));
777
+
778
+ return rb_ary_new3(2, rb_str_new(&sign, 1),
779
+ rb_ary_new3(4, INT2NUM(ihmsf[0]), INT2NUM(ihmsf[1]),
780
+ INT2NUM(ihmsf[2]), INT2NUM(ihmsf[3])));
781
+ }
782
+
783
+ static VALUE
784
+ celes_s_a2af(VALUE self, VALUE vndp, VALUE vangle){
785
+ char sign;
786
+ int idmsf[4];
787
+
788
+ iauA2af(NUM2INT(vndp), NUM2DBL(vangle), &sign, idmsf);
789
+ rb_ivar_set(self, id_status, INT2FIX(0));
790
+
791
+ return rb_ary_new3(2, rb_str_new(&sign, 1),
792
+ rb_ary_new3(4, INT2NUM(idmsf[0]), INT2NUM(idmsf[1]),
793
+ INT2NUM(idmsf[2]), INT2NUM(idmsf[3])));
794
+ }
795
+
796
+ static VALUE
797
+ celes_s_af2a(VALUE self, VALUE vs, VALUE vdeg, VALUE vamin, VALUE vasec){
798
+ int ret;
799
+ double rad;
800
+
801
+ Check_Type(vs, T_STRING);
802
+
803
+ ret = iauAf2a(RSTRING_PTR(vs)[0], NUM2DBL(vdeg),
804
+ NUM2DBL(vamin), NUM2DBL(vasec), &rad);
805
+ rb_ivar_set(self, id_status, INT2FIX(ret));
806
+
807
+ return DBL2NUM(rad);
808
+ }
809
+
810
+ static VALUE
811
+ celes_s_d2tf(VALUE self, VALUE vndp, VALUE vdays){
812
+ char sign;
813
+ int ihmsf[4];
814
+
815
+ iauD2tf(NUM2INT(vndp), NUM2DBL(vdays), &sign, ihmsf);
816
+ rb_ivar_set(self, id_status, INT2FIX(0));
817
+
818
+ return rb_ary_new3(2, rb_str_new(&sign, 1),
819
+ rb_ary_new3(4, INT2NUM(ihmsf[0]), INT2NUM(ihmsf[1]),
820
+ INT2NUM(ihmsf[2]), INT2NUM(ihmsf[3])));
821
+ }
822
+
823
+ static VALUE
824
+ celes_s_tf2a(VALUE self, VALUE vs, VALUE vhour, VALUE vmin, VALUE vsec){
825
+ int ret;
826
+ double rad;
827
+
828
+ Check_Type(vs, T_STRING);
829
+
830
+ ret = iauTf2a(RSTRING_PTR(vs)[0], NUM2DBL(vhour),
831
+ NUM2DBL(vmin), NUM2DBL(vsec), &rad);
832
+ rb_ivar_set(self, id_status, INT2FIX(ret));
833
+
834
+ return DBL2NUM(rad);
835
+ }
836
+
837
+ static VALUE
838
+ celes_s_tf2d(VALUE self, VALUE vs, VALUE vhour, VALUE vmin, VALUE vsec){
839
+ int ret;
840
+ double days;
841
+
842
+ Check_Type(vs, T_STRING);
843
+
844
+ ret = iauTf2d(RSTRING_PTR(vs)[0], NUM2DBL(vhour),
845
+ NUM2DBL(vmin), NUM2DBL(vsec), &days);
846
+ rb_ivar_set(self, id_status, INT2FIX(ret));
847
+
848
+ return DBL2NUM(days);
849
+ }
850
+
851
+ static VALUE
852
+ celes_s_cal2jd(VALUE self, VALUE vy, VALUE vm, VALUE vd){
853
+ int ret;
854
+ double djm0, djm;
855
+
856
+ ret = iauCal2jd(NUM2INT(vy), NUM2INT(vm), NUM2INT(vd), &djm0, &djm);
857
+ rb_ivar_set(self, id_status, INT2FIX(ret));
858
+
859
+ if(ret == -1)
860
+ rb_raise(rb_eArgError, "bad year");
861
+ else if(ret == -2)
862
+ rb_raise(rb_eArgError, "bad month");
863
+
864
+ return rb_ary_new3(2, DBL2NUM(djm0), DBL2NUM(djm));
865
+ }
866
+
867
+ static VALUE
868
+ celes_s_epb(VALUE self, VALUE vdj1, VALUE vdj2){
869
+ rb_ivar_set(self, id_status, INT2FIX(0));
870
+
871
+ return DBL2NUM(iauEpb(NUM2DBL(vdj1), NUM2DBL(vdj2)));
872
+ }
873
+
874
+ static VALUE
875
+ celes_s_epb2jd(VALUE self, VALUE vepb){
876
+ double djm0, djm;
877
+
878
+ iauEpb2jd(NUM2DBL(vepb), &djm0, &djm);
879
+ rb_ivar_set(self, id_status, INT2FIX(0));
880
+
881
+ return rb_ary_new3(2, DBL2NUM(djm0), DBL2NUM(djm));
882
+ }
883
+
884
+ static VALUE
885
+ celes_s_epj(VALUE self, VALUE vdj1, VALUE vdj2){
886
+ rb_ivar_set(self, id_status, INT2FIX(0));
887
+
888
+ return DBL2NUM(iauEpj(NUM2DBL(vdj1), NUM2DBL(vdj2)));
889
+ }
890
+
891
+ static VALUE
892
+ celes_s_epj2jd(VALUE self, VALUE vepj){
893
+ double djm0, djm;
894
+
895
+ iauEpj2jd(NUM2DBL(vepj), &djm0, &djm);
896
+ rb_ivar_set(self, id_status, INT2FIX(0));
897
+
898
+ return rb_ary_new3(2, DBL2NUM(djm0), DBL2NUM(djm));
899
+ }
900
+
901
+
902
+ static VALUE
903
+ celes_s_jd2cal(VALUE self, VALUE vdj1, VALUE vdj2){
904
+ int ret, iy, im, id;
905
+ double fd;
906
+
907
+ ret = iauJd2cal(NUM2DBL(vdj1), NUM2DBL(vdj2), &iy, &im, &id, &fd);
908
+ rb_ivar_set(self, id_status, INT2FIX(ret));
909
+
910
+ if(ret == -1)
911
+ rb_raise(rb_eArgError, "unacceptable date");
912
+
913
+ return rb_ary_new3(4, INT2FIX(iy), INT2FIX(im),
914
+ INT2FIX(id), DBL2NUM(fd));
915
+ }
916
+
917
+ static VALUE
918
+ celes_s_jdcalf(VALUE self, VALUE vndp, VALUE vdj1, VALUE vdj2){
919
+ int ret, iymdf[4];
920
+
921
+ ret = iauJdcalf(NUM2INT(vndp), NUM2DBL(vdj1), NUM2DBL(vdj2), iymdf);
922
+ rb_ivar_set(self, id_status, INT2FIX(ret));
923
+
924
+ if(ret == -1)
925
+ rb_raise(rb_eArgError, "date out of range");
926
+
927
+ return rb_ary_new3(4, INT2FIX(iymdf[0]), INT2FIX(iymdf[1]),
928
+ INT2FIX(iymdf[2]), INT2NUM(iymdf[3]));
929
+ }
930
+
931
+ static VALUE
932
+ celes_s_d2dtf(VALUE self, VALUE vscale, VALUE vndp, VALUE vd1, VALUE vd2){
933
+ int ret;
934
+ int iy, im, id, ihmsf[4];
935
+
936
+ if(NIL_P(vscale)) vscale = rb_str_new2("");
937
+ ret = iauD2dtf(RSTRING_PTR(vscale), NUM2INT(vndp),
938
+ NUM2DBL(vd1), NUM2DBL(vd2), &iy, &im, &id, ihmsf);
939
+ rb_ivar_set(self, id_status, INT2FIX(ret));
940
+
941
+ if(ret == -1)
942
+ rb_raise(rb_eArgError, "unacceptable date");
943
+
944
+ return rb_ary_new3(4, INT2FIX(iy), INT2FIX(im), INT2FIX(id),
945
+ rb_ary_new3(4, INT2FIX(ihmsf[0]), INT2FIX(ihmsf[1]),
946
+ INT2FIX(ihmsf[2]), INT2NUM(ihmsf[3])));
947
+ }
948
+
949
+ static VALUE
950
+ celes_s_dat(VALUE self, VALUE vy, VALUE vm, VALUE vd, VALUE vfd){
951
+ int ret;
952
+ double deltat;
953
+
954
+ ret = iauDat(NUM2INT(vy), NUM2INT(vm),
955
+ NUM2INT(vd), NUM2DBL(vfd), &deltat);
956
+ rb_ivar_set(self, id_status, INT2FIX(ret));
957
+
958
+ if(ret == -1)
959
+ rb_raise(rb_eArgError, "bad year");
960
+ else if(ret == -2)
961
+ rb_raise(rb_eArgError, "bad month");
962
+ else if(ret == -3)
963
+ rb_raise(rb_eArgError, "bad day");
964
+ else if(ret == -4)
965
+ rb_raise(rb_eArgError, "bad fraction");
966
+
967
+ return DBL2NUM(deltat);
968
+ }
969
+
970
+ static VALUE
971
+ celes_s_dtdb(VALUE self, VALUE vdate1, VALUE vdate2,
972
+ VALUE vut, VALUE velong, VALUE vu, VALUE vv){
973
+ rb_ivar_set(self, id_status, INT2FIX(0));
974
+
975
+ return DBL2NUM(iauDtdb(NUM2DBL(vdate1), NUM2DBL(vdate2),
976
+ NUM2DBL(vut), NUM2DBL(velong), NUM2DBL(vu), NUM2DBL(vv)));
977
+ }
978
+
979
+ static VALUE
980
+ celes_s_dtf2d(VALUE self, VALUE vscale, VALUE vy, VALUE vm, VALUE vd,
981
+ VALUE vhr, VALUE vmn, VALUE vsec){
982
+ int ret;
983
+ double d1, d2;
984
+
985
+ if(NIL_P(vscale)) vscale = rb_str_new2("");
986
+ ret = iauDtf2d(RSTRING_PTR(vscale), NUM2INT(vy), NUM2INT(vm),
987
+ NUM2INT(vd), NUM2INT(vhr), NUM2INT(vmn), NUM2DBL(vsec),
988
+ &d1, &d2);
989
+ rb_ivar_set(self, id_status, INT2FIX(ret));
990
+
991
+ if(ret == -1)
992
+ rb_raise(rb_eArgError, "bad year");
993
+ else if(ret == -2)
994
+ rb_raise(rb_eArgError, "bad month");
995
+ else if(ret == -3)
996
+ rb_raise(rb_eArgError, "bad day");
997
+
998
+ return rb_ary_new3(2, DBL2NUM(d1), DBL2NUM(d2));
999
+ }
1000
+
1001
+ static VALUE
1002
+ celes_s_taitt(VALUE self, VALUE vtai1, VALUE vtai2){
1003
+ double tt1, tt2;
1004
+
1005
+ iauTaitt(NUM2DBL(vtai1), NUM2DBL(vtai2), &tt1, &tt2);
1006
+ rb_ivar_set(self, id_status, INT2FIX(0));
1007
+
1008
+ return rb_ary_new3(2, DBL2NUM(tt1), DBL2NUM(tt2));
1009
+ }
1010
+
1011
+ static VALUE
1012
+ celes_s_taiut1(VALUE self, VALUE vtai1, VALUE vtai2, VALUE vdta){
1013
+ double ut11, ut12;
1014
+
1015
+ iauTaiut1(NUM2DBL(vtai1), NUM2DBL(vtai2), NUM2DBL(vdta), &ut11, &ut12);
1016
+ rb_ivar_set(self, id_status, INT2FIX(0));
1017
+
1018
+ return rb_ary_new3(2, DBL2NUM(ut11), DBL2NUM(ut12));
1019
+ }
1020
+
1021
+ static VALUE
1022
+ celes_s_taiutc(VALUE self, VALUE vtai1, VALUE vtai2){
1023
+ int ret;
1024
+ double utc1, utc2;
1025
+
1026
+ ret = iauTaiutc(NUM2DBL(vtai1), NUM2DBL(vtai2), &utc1, &utc2);
1027
+ rb_ivar_set(self, id_status, INT2FIX(ret));
1028
+
1029
+ if(ret == -1)
1030
+ rb_raise(rb_eArgError, "unacceptable date");
1031
+
1032
+ return rb_ary_new3(2, DBL2NUM(utc1), DBL2NUM(utc2));
1033
+ }
1034
+
1035
+ static VALUE
1036
+ celes_s_tcbtdb(VALUE self, VALUE vtcb1, VALUE vtcb2){
1037
+ double tdb1, tdb2;
1038
+
1039
+ iauTcbtdb(NUM2DBL(vtcb1), NUM2DBL(vtcb2), &tdb1, &tdb2);
1040
+ rb_ivar_set(self, id_status, INT2FIX(0));
1041
+
1042
+ return rb_ary_new3(2, DBL2NUM(tdb1), DBL2NUM(tdb2));
1043
+ }
1044
+
1045
+ static VALUE
1046
+ celes_s_tcgtt(VALUE self, VALUE vtcg1, VALUE vtcg2){
1047
+ double tt1, tt2;
1048
+
1049
+ iauTcgtt(NUM2DBL(vtcg1), NUM2DBL(vtcg2), &tt1, &tt2);
1050
+ rb_ivar_set(self, id_status, INT2FIX(0));
1051
+
1052
+ return rb_ary_new3(2, DBL2NUM(tt1), DBL2NUM(tt2));
1053
+ }
1054
+
1055
+ static VALUE
1056
+ celes_s_tdbtcb(VALUE self, VALUE vtdb1, VALUE vtdb2){
1057
+ double tcb1, tcb2;
1058
+
1059
+ iauTdbtcb(NUM2DBL(vtdb1), NUM2DBL(vtdb2), &tcb1, &tcb2);
1060
+ rb_ivar_set(self, id_status, INT2FIX(0));
1061
+
1062
+ return rb_ary_new3(2, DBL2NUM(tcb1), DBL2NUM(tcb2));
1063
+ }
1064
+
1065
+ static VALUE
1066
+ celes_s_tdbtt(VALUE self, VALUE vtdb1, VALUE vtdb2, VALUE vdtr){
1067
+ double tt1, tt2;
1068
+
1069
+ iauTdbtt(NUM2DBL(vtdb1), NUM2DBL(vtdb2), NUM2DBL(vdtr), &tt1, &tt2);
1070
+ rb_ivar_set(self, id_status, INT2FIX(0));
1071
+
1072
+ return rb_ary_new3(2, DBL2NUM(tt1), DBL2NUM(tt2));
1073
+ }
1074
+
1075
+ static VALUE
1076
+ celes_s_tttai(VALUE self, VALUE vtt1, VALUE vtt2){
1077
+ double tai1, tai2;
1078
+
1079
+ iauTttai(NUM2DBL(vtt1), NUM2DBL(vtt2), &tai1, &tai2);
1080
+ rb_ivar_set(self, id_status, INT2FIX(0));
1081
+
1082
+ return rb_ary_new3(2, DBL2NUM(tai1), DBL2NUM(tai2));
1083
+ }
1084
+
1085
+ static VALUE
1086
+ celes_s_tttcg(VALUE self, VALUE vtt1, VALUE vtt2){
1087
+ double tcg1, tcg2;
1088
+
1089
+ iauTttcg(NUM2DBL(vtt1), NUM2DBL(vtt2), &tcg1, &tcg2);
1090
+ rb_ivar_set(self, id_status, INT2FIX(0));
1091
+
1092
+ return rb_ary_new3(2, DBL2NUM(tcg1), DBL2NUM(tcg2));
1093
+ }
1094
+
1095
+ static VALUE
1096
+ celes_s_tttdb(VALUE self, VALUE vtt1, VALUE vtt2, VALUE vdtr){
1097
+ double tdb1, tdb2;
1098
+
1099
+ iauTttdb(NUM2DBL(vtt1), NUM2DBL(vtt2), NUM2DBL(vdtr), &tdb1, &tdb2);
1100
+ rb_ivar_set(self, id_status, INT2FIX(0));
1101
+
1102
+ return rb_ary_new3(2, DBL2NUM(tdb1), DBL2NUM(tdb2));
1103
+ }
1104
+
1105
+ static VALUE
1106
+ celes_s_ttut1(VALUE self, VALUE vtt1, VALUE vtt2, VALUE vdt){
1107
+ double ut11, ut12;
1108
+
1109
+ iauTtut1(NUM2DBL(vtt1), NUM2DBL(vtt2), NUM2DBL(vdt), &ut11, &ut12);
1110
+ rb_ivar_set(self, id_status, INT2FIX(0));
1111
+
1112
+ return rb_ary_new3(2, DBL2NUM(ut11), DBL2NUM(ut12));
1113
+ }
1114
+
1115
+ static VALUE
1116
+ celes_s_ut1tai(VALUE self, VALUE vut11, VALUE vut12, VALUE vdta){
1117
+ double tai1, tai2;
1118
+
1119
+ iauUt1tai(NUM2DBL(vut11), NUM2DBL(vut12), NUM2DBL(vdta), &tai1, &tai2);
1120
+ rb_ivar_set(self, id_status, INT2FIX(0));
1121
+
1122
+ return rb_ary_new3(2, DBL2NUM(tai1), DBL2NUM(tai2));
1123
+ }
1124
+
1125
+ static VALUE
1126
+ celes_s_ut1tt(VALUE self, VALUE vut11, VALUE vut12, VALUE vdt){
1127
+ double tt1, tt2;
1128
+
1129
+ iauUt1tt(NUM2DBL(vut11), NUM2DBL(vut12), NUM2DBL(vdt), &tt1, &tt2);
1130
+ rb_ivar_set(self, id_status, INT2FIX(0));
1131
+
1132
+ return rb_ary_new3(2, DBL2NUM(tt1), DBL2NUM(tt2));
1133
+ }
1134
+
1135
+ static VALUE
1136
+ celes_s_ut1utc(VALUE self, VALUE vut11, VALUE vut12, VALUE vdut1){
1137
+ int ret;
1138
+ double utc1, utc2;
1139
+
1140
+ ret = iauUt1utc(NUM2DBL(vut11), NUM2DBL(vut12),
1141
+ NUM2DBL(vdut1), &utc1, &utc2);
1142
+ rb_ivar_set(self, id_status, INT2FIX(ret));
1143
+
1144
+ if(ret == -1)
1145
+ rb_raise(rb_eArgError, "unacceptable date");
1146
+
1147
+ return rb_ary_new3(2, DBL2NUM(utc1), DBL2NUM(utc2));
1148
+ }
1149
+
1150
+ static VALUE
1151
+ celes_s_utctai(VALUE self, VALUE vutc1, VALUE vutc2){
1152
+ int ret;
1153
+ double tai1, tai2;
1154
+
1155
+ ret = iauUtctai(NUM2DBL(vutc1), NUM2DBL(vutc2), &tai1, &tai2);
1156
+ rb_ivar_set(self, id_status, INT2FIX(ret));
1157
+
1158
+ if(ret == -1)
1159
+ rb_raise(rb_eArgError, "unacceptable date");
1160
+
1161
+ return rb_ary_new3(2, DBL2NUM(tai1), DBL2NUM(tai2));
1162
+ }
1163
+
1164
+ static VALUE
1165
+ celes_s_utcut1(VALUE self, VALUE vutc1, VALUE vutc2, VALUE vdut1){
1166
+ int ret;
1167
+ double ut11, ut12;
1168
+
1169
+ ret = iauUtcut1(NUM2DBL(vutc1), NUM2DBL(vutc2),
1170
+ NUM2DBL(vdut1), &ut11, &ut12);
1171
+ rb_ivar_set(self, id_status, INT2FIX(ret));
1172
+
1173
+ if(ret == -1)
1174
+ rb_raise(rb_eArgError, "unacceptable date");
1175
+
1176
+ return rb_ary_new3(2, DBL2NUM(ut11), DBL2NUM(ut12));
1177
+ }
1178
+
1179
+ static VALUE
1180
+ celes_s_ee00(VALUE self, VALUE vdate1, VALUE vdate2,
1181
+ VALUE vepsa, VALUE vdpsi){
1182
+ rb_ivar_set(self, id_status, INT2FIX(0));
1183
+
1184
+ return DBL2NUM(iauEe00(NUM2DBL(vdate1), NUM2DBL(vdate2),
1185
+ NUM2DBL(vepsa), NUM2DBL(vdpsi)));
1186
+ }
1187
+
1188
+ static VALUE
1189
+ celes_s_ee00a(VALUE self, VALUE vdate1, VALUE vdate2){
1190
+ rb_ivar_set(self, id_status, INT2FIX(0));
1191
+
1192
+ return DBL2NUM(iauEe00a(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1193
+ }
1194
+
1195
+ static VALUE
1196
+ celes_s_ee00b(VALUE self, VALUE vdate1, VALUE vdate2){
1197
+ rb_ivar_set(self, id_status, INT2FIX(0));
1198
+
1199
+ return DBL2NUM(iauEe00b(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1200
+ }
1201
+
1202
+ static VALUE
1203
+ celes_s_ee06a(VALUE self, VALUE vdate1, VALUE vdate2){
1204
+ rb_ivar_set(self, id_status, INT2FIX(0));
1205
+
1206
+ return DBL2NUM(iauEe06a(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1207
+ }
1208
+
1209
+ static VALUE
1210
+ celes_s_eect00(VALUE self, VALUE vdate1, VALUE vdate2){
1211
+ rb_ivar_set(self, id_status, INT2FIX(0));
1212
+
1213
+ return DBL2NUM(iauEect00(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1214
+ }
1215
+
1216
+ static VALUE
1217
+ celes_s_eqeq94(VALUE self, VALUE vdate1, VALUE vdate2){
1218
+ rb_ivar_set(self, id_status, INT2FIX(0));
1219
+
1220
+ return DBL2NUM(iauEqeq94(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1221
+ }
1222
+
1223
+ static VALUE
1224
+ celes_s_era00(VALUE self, VALUE vdj1, VALUE vdj2){
1225
+ rb_ivar_set(self, id_status, INT2FIX(0));
1226
+
1227
+ return DBL2NUM(iauEra00(NUM2DBL(vdj1), NUM2DBL(vdj2)));
1228
+ }
1229
+
1230
+ static VALUE
1231
+ celes_s_gmst00(VALUE self, VALUE vuta, VALUE vutb, VALUE vtta, VALUE vttb){
1232
+ rb_ivar_set(self, id_status, INT2FIX(0));
1233
+
1234
+ return DBL2NUM(iauGmst00(NUM2DBL(vuta), NUM2DBL(vutb),
1235
+ NUM2DBL(vtta), NUM2DBL(vttb)));
1236
+ }
1237
+
1238
+ static VALUE
1239
+ celes_s_gmst06(VALUE self, VALUE vuta, VALUE vutb, VALUE vtta, VALUE vttb){
1240
+ rb_ivar_set(self, id_status, INT2FIX(0));
1241
+
1242
+ return DBL2NUM(iauGmst06(NUM2DBL(vuta), NUM2DBL(vutb),
1243
+ NUM2DBL(vtta), NUM2DBL(vttb)));
1244
+ }
1245
+
1246
+ static VALUE
1247
+ celes_s_gmst82(VALUE self, VALUE vdj1, VALUE vdj2){
1248
+ rb_ivar_set(self, id_status, INT2FIX(0));
1249
+
1250
+ return DBL2NUM(iauGmst82(NUM2DBL(vdj1), NUM2DBL(vdj2)));
1251
+ }
1252
+
1253
+ static VALUE
1254
+ celes_s_gst00a(VALUE self, VALUE vuta, VALUE vutb, VALUE vtta, VALUE vttb){
1255
+ rb_ivar_set(self, id_status, INT2FIX(0));
1256
+
1257
+ return DBL2NUM(iauGst00a(NUM2DBL(vuta), NUM2DBL(vutb),
1258
+ NUM2DBL(vtta), NUM2DBL(vttb)));
1259
+ }
1260
+
1261
+ static VALUE
1262
+ celes_s_gst00b(VALUE self, VALUE vuta, VALUE vutb){
1263
+ rb_ivar_set(self, id_status, INT2FIX(0));
1264
+
1265
+ return DBL2NUM(iauGst00b(NUM2DBL(vuta), NUM2DBL(vutb)));
1266
+ }
1267
+
1268
+ static VALUE
1269
+ celes_s_gst06(VALUE self, VALUE vuta, VALUE vutb,
1270
+ VALUE vtta, VALUE vttb, VALUE vrnpb){
1271
+ double rnpb[3][3];
1272
+
1273
+ rb_ivar_set(self, id_status, INT2FIX(0));
1274
+
1275
+ cmat_cp33(vrnpb, rnpb);
1276
+
1277
+ return DBL2NUM(iauGst06(NUM2DBL(vuta), NUM2DBL(vutb),
1278
+ NUM2DBL(vtta), NUM2DBL(vttb), rnpb));
1279
+ }
1280
+
1281
+ static VALUE
1282
+ celes_s_gst06a(VALUE self, VALUE vuta, VALUE vutb, VALUE vtta, VALUE vttb){
1283
+ rb_ivar_set(self, id_status, INT2FIX(0));
1284
+
1285
+ return DBL2NUM(iauGst06a(NUM2DBL(vuta), NUM2DBL(vutb),
1286
+ NUM2DBL(vtta), NUM2DBL(vttb)));
1287
+ }
1288
+
1289
+ static VALUE
1290
+ celes_s_gst94(VALUE self, VALUE vuta, VALUE vutb){
1291
+ rb_ivar_set(self, id_status, INT2FIX(0));
1292
+
1293
+ return DBL2NUM(iauGst94(NUM2DBL(vuta), NUM2DBL(vutb)));
1294
+ }
1295
+
1296
+ static VALUE
1297
+ celes_s_epv00(VALUE self, VALUE vdate1, VALUE vdate2){
1298
+ int ret;
1299
+ double pvh[2][3], pvb[2][3];
1300
+
1301
+ ret = iauEpv00(NUM2DBL(vdate1), NUM2DBL(vdate2), pvh, pvb);
1302
+ rb_ivar_set(self, id_status, INT2FIX(ret));
1303
+
1304
+ return rb_ary_new3(2, vmat_new23(pvh), vmat_new23(pvb));
1305
+ }
1306
+
1307
+ static VALUE
1308
+ celes_s_plan94(VALUE self, VALUE vdate1, VALUE vdate2, VALUE vnp){
1309
+ int ret;
1310
+ double pv[2][3];
1311
+
1312
+ ret = iauPlan94(NUM2DBL(vdate1), NUM2DBL(vdate2), NUM2INT(vnp), pv);
1313
+ rb_ivar_set(self, id_status, INT2FIX(ret));
1314
+
1315
+ if(ret == -1)
1316
+ rb_raise(rb_eArgError, "illegal NP (outside 1-8)");
1317
+
1318
+ return vmat_new23(pv);
1319
+ }
1320
+ static VALUE
1321
+ celes_s_bi00(VALUE self){
1322
+ double dpsibi, depsbi, dra;
1323
+
1324
+ iauBi00(&dpsibi, &depsbi, &dra);
1325
+ rb_ivar_set(self, id_status, INT2FIX(0));
1326
+
1327
+ return rb_ary_new3(3, DBL2NUM(dpsibi), DBL2NUM(depsbi), DBL2NUM(dra));
1328
+ }
1329
+
1330
+ static VALUE
1331
+ celes_s_bp00(VALUE self, VALUE vdate1, VALUE vdate2){
1332
+ double rb[3][3], rp[3][3], rbp[3][3];
1333
+
1334
+ iauBp00(NUM2DBL(vdate1), NUM2DBL(vdate2), rb, rp, rbp);
1335
+ rb_ivar_set(self, id_status, INT2FIX(0));
1336
+
1337
+ return rb_ary_new3(3, vmat_new33(rb), vmat_new33(rp), vmat_new33(rbp));
1338
+ }
1339
+
1340
+ static VALUE
1341
+ celes_s_bp06(VALUE self, VALUE vdate1, VALUE vdate2){
1342
+ double rb[3][3], rp[3][3], rbp[3][3];
1343
+
1344
+ iauBp06(NUM2DBL(vdate1), NUM2DBL(vdate2), rb, rp, rbp);
1345
+ rb_ivar_set(self, id_status, INT2FIX(0));
1346
+
1347
+ return rb_ary_new3(3, vmat_new33(rb), vmat_new33(rp), vmat_new33(rbp));
1348
+ }
1349
+
1350
+ static VALUE
1351
+ celes_s_bpn2xy(VALUE self, VALUE vrbpn){
1352
+ double rbpn[3][3], x, y;
1353
+
1354
+ cmat_cp33(vrbpn, rbpn);
1355
+ iauBpn2xy(rbpn, &x, &y);
1356
+ rb_ivar_set(self, id_status, INT2FIX(0));
1357
+
1358
+ return rb_ary_new3(2, DBL2NUM(x), DBL2NUM(y));
1359
+ }
1360
+
1361
+ static VALUE
1362
+ celes_s_c2i00a(VALUE self, VALUE vdate1, VALUE vdate2){
1363
+ double rc2i[3][3];
1364
+
1365
+ iauC2i00a(NUM2DBL(vdate1), NUM2DBL(vdate2), rc2i);
1366
+ rb_ivar_set(self, id_status, INT2FIX(0));
1367
+
1368
+ return vmat_new33(rc2i);
1369
+ }
1370
+
1371
+ static VALUE
1372
+ celes_s_c2i00b(VALUE self, VALUE vdate1, VALUE vdate2){
1373
+ double rc2i[3][3];
1374
+
1375
+ iauC2i00b(NUM2DBL(vdate1), NUM2DBL(vdate2), rc2i);
1376
+ rb_ivar_set(self, id_status, INT2FIX(0));
1377
+
1378
+ return vmat_new33(rc2i);
1379
+ }
1380
+
1381
+ static VALUE
1382
+ celes_s_c2i06a(VALUE self, VALUE vdate1, VALUE vdate2){
1383
+ double rc2i[3][3];
1384
+
1385
+ iauC2i06a(NUM2DBL(vdate1), NUM2DBL(vdate2), rc2i);
1386
+ rb_ivar_set(self, id_status, INT2FIX(0));
1387
+
1388
+ return vmat_new33(rc2i);
1389
+ }
1390
+
1391
+ static VALUE
1392
+ celes_s_c2ibpn(VALUE self, VALUE vdate1, VALUE vdate2, VALUE vrbpn){
1393
+ double rbpn[3][3], rc2i[3][3];
1394
+
1395
+ cmat_cp33(vrbpn, rbpn);
1396
+ iauC2ibpn(NUM2DBL(vdate1), NUM2DBL(vdate2), rbpn, rc2i);
1397
+ rb_ivar_set(self, id_status, INT2FIX(0));
1398
+
1399
+ return vmat_new33(rc2i);
1400
+ }
1401
+
1402
+ static VALUE
1403
+ celes_s_c2ixy(VALUE self, VALUE vdate1, VALUE vdate2, VALUE vx, VALUE vy){
1404
+ double rc2i[3][3];
1405
+
1406
+ iauC2ixy(NUM2DBL(vdate1), NUM2DBL(vdate2),
1407
+ NUM2DBL(vx), NUM2DBL(vy), rc2i);
1408
+ rb_ivar_set(self, id_status, INT2FIX(0));
1409
+
1410
+ return vmat_new33(rc2i);
1411
+ }
1412
+
1413
+ static VALUE
1414
+ celes_s_c2ixys(VALUE self, VALUE vx, VALUE vy, VALUE vs){
1415
+ double rc2i[3][3];
1416
+
1417
+ iauC2ixys(NUM2DBL(vx), NUM2DBL(vy), NUM2DBL(vs), rc2i);
1418
+ rb_ivar_set(self, id_status, INT2FIX(0));
1419
+
1420
+ return vmat_new33(rc2i);
1421
+ }
1422
+
1423
+ static VALUE
1424
+ celes_s_c2t00a(VALUE self, VALUE vtta, VALUE vttb,
1425
+ VALUE vuta, VALUE vutb, VALUE vxp, VALUE vyp){
1426
+ double rc2t[3][3];
1427
+
1428
+ iauC2t00a(NUM2DBL(vtta), NUM2DBL(vttb), NUM2DBL(vuta), NUM2DBL(vutb),
1429
+ NUM2DBL(vxp), NUM2DBL(vyp), rc2t);
1430
+ rb_ivar_set(self, id_status, INT2FIX(0));
1431
+
1432
+ return vmat_new33(rc2t);
1433
+ }
1434
+
1435
+ static VALUE
1436
+ celes_s_c2t00b(VALUE self, VALUE vtta, VALUE vttb,
1437
+ VALUE vuta, VALUE vutb, VALUE vxp, VALUE vyp){
1438
+ double rc2t[3][3];
1439
+
1440
+ iauC2t00b(NUM2DBL(vtta), NUM2DBL(vttb), NUM2DBL(vuta), NUM2DBL(vutb),
1441
+ NUM2DBL(vxp), NUM2DBL(vyp), rc2t);
1442
+ rb_ivar_set(self, id_status, INT2FIX(0));
1443
+
1444
+ return vmat_new33(rc2t);
1445
+ }
1446
+
1447
+ static VALUE
1448
+ celes_s_c2t06a(VALUE self, VALUE vtta, VALUE vttb,
1449
+ VALUE vuta, VALUE vutb, VALUE vxp, VALUE vyp){
1450
+ double rc2t[3][3];
1451
+
1452
+ iauC2t06a(NUM2DBL(vtta), NUM2DBL(vttb), NUM2DBL(vuta), NUM2DBL(vutb),
1453
+ NUM2DBL(vxp), NUM2DBL(vyp), rc2t);
1454
+ rb_ivar_set(self, id_status, INT2FIX(0));
1455
+
1456
+ return vmat_new33(rc2t);
1457
+ }
1458
+
1459
+ static VALUE
1460
+ celes_s_c2tcio(VALUE self, VALUE vrc2i, VALUE vera, VALUE vrpom){
1461
+ double rc2i[3][3], rpom[3][3], rc2t[3][3];
1462
+
1463
+ cmat_cp33(vrc2i, rc2i);
1464
+ cmat_cp33(vrpom, rpom);
1465
+ iauC2tcio(rc2i, NUM2DBL(vera), rpom, rc2t);
1466
+ rb_ivar_set(self, id_status, INT2FIX(0));
1467
+
1468
+ return vmat_new33(rc2t);
1469
+ }
1470
+
1471
+ static VALUE
1472
+ celes_s_c2teqx(VALUE self, VALUE vrbpn, VALUE vgst, VALUE vrpom){
1473
+ double rbpn[3][3], rpom[3][3], rc2t[3][3];
1474
+
1475
+ cmat_cp33(vrbpn, rbpn);
1476
+ cmat_cp33(vrpom, rpom);
1477
+ iauC2teqx(rbpn, NUM2DBL(vgst), rpom, rc2t);
1478
+ rb_ivar_set(self, id_status, INT2FIX(0));
1479
+
1480
+ return vmat_new33(rc2t);
1481
+ }
1482
+
1483
+ static VALUE
1484
+ celes_s_c2tpe(VALUE self, VALUE vtta, VALUE vttb, VALUE vuta, VALUE vutb,
1485
+ VALUE vdpsi, VALUE vdeps, VALUE vxp, VALUE vyp){
1486
+ double rc2t[3][3];
1487
+
1488
+ iauC2tpe(NUM2DBL(vtta), NUM2DBL(vttb), NUM2DBL(vuta), NUM2DBL(vutb),
1489
+ NUM2DBL(vdpsi), NUM2DBL(vdeps), NUM2DBL(vxp), NUM2DBL(vyp),
1490
+ rc2t);
1491
+ rb_ivar_set(self, id_status, INT2FIX(0));
1492
+
1493
+ return vmat_new33(rc2t);
1494
+ }
1495
+
1496
+ static VALUE
1497
+ celes_s_c2txy(VALUE self, VALUE vtta, VALUE vttb, VALUE vuta, VALUE vutb,
1498
+ VALUE vx, VALUE vy, VALUE vxp, VALUE vyp){
1499
+ double rc2t[3][3];
1500
+
1501
+ iauC2txy(NUM2DBL(vtta), NUM2DBL(vttb), NUM2DBL(vuta), NUM2DBL(vutb),
1502
+ NUM2DBL(vx), NUM2DBL(vy), NUM2DBL(vxp), NUM2DBL(vyp), rc2t);
1503
+ rb_ivar_set(self, id_status, INT2FIX(0));
1504
+
1505
+ return vmat_new33(rc2t);
1506
+ }
1507
+
1508
+ static VALUE
1509
+ celes_s_eo06a(VALUE self, VALUE vdate1, VALUE vdate2){
1510
+ rb_ivar_set(self, id_status, INT2FIX(0));
1511
+
1512
+ return DBL2NUM(iauEo06a(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1513
+ }
1514
+
1515
+ static VALUE
1516
+ celes_s_eors(VALUE self, VALUE vrnpb, VALUE vs){
1517
+ double rnpb[3][3];
1518
+
1519
+ cmat_cp33(vrnpb, rnpb);
1520
+ rb_ivar_set(self, id_status, INT2FIX(0));
1521
+
1522
+ return DBL2NUM(iauEors(rnpb, NUM2DBL(vs)));
1523
+ }
1524
+
1525
+ static VALUE
1526
+ celes_s_fw2m(VALUE self, VALUE vgamb, VALUE vphib, VALUE vpsi, VALUE veps){
1527
+ double r[3][3];
1528
+
1529
+ iauFw2m(NUM2DBL(vgamb), NUM2DBL(vphib),
1530
+ NUM2DBL(vpsi), NUM2DBL(veps), r);
1531
+ rb_ivar_set(self, id_status, INT2FIX(0));
1532
+
1533
+ return vmat_new33(r);
1534
+ }
1535
+
1536
+ static VALUE
1537
+ celes_s_fw2xy(VALUE self, VALUE vgamb,
1538
+ VALUE vphib, VALUE vpsi, VALUE veps){
1539
+ double x, y;
1540
+
1541
+ iauFw2xy(NUM2DBL(vgamb), NUM2DBL(vphib),
1542
+ NUM2DBL(vpsi), NUM2DBL(veps), &x, &y);
1543
+ rb_ivar_set(self, id_status, INT2FIX(0));
1544
+
1545
+ return rb_ary_new3(2, DBL2NUM(x), DBL2NUM(y));
1546
+ }
1547
+
1548
+ static VALUE
1549
+ celes_s_num00a(VALUE self, VALUE vdate1, VALUE vdate2){
1550
+ double rmatn[3][3];
1551
+
1552
+ iauNum00a(NUM2DBL(vdate1), NUM2DBL(vdate2), rmatn);
1553
+ rb_ivar_set(self, id_status, INT2FIX(0));
1554
+
1555
+ return vmat_new33(rmatn);
1556
+ }
1557
+
1558
+ static VALUE
1559
+ celes_s_num00b(VALUE self, VALUE vdate1, VALUE vdate2){
1560
+ double rmatn[3][3];
1561
+
1562
+ iauNum00b(NUM2DBL(vdate1), NUM2DBL(vdate2), rmatn);
1563
+ rb_ivar_set(self, id_status, INT2FIX(0));
1564
+
1565
+ return vmat_new33(rmatn);
1566
+ }
1567
+
1568
+ static VALUE
1569
+ celes_s_num06a(VALUE self, VALUE vdate1, VALUE vdate2){
1570
+ double rmatn[3][3];
1571
+
1572
+ iauNum06a(NUM2DBL(vdate1), NUM2DBL(vdate2), rmatn);
1573
+ rb_ivar_set(self, id_status, INT2FIX(0));
1574
+
1575
+ return vmat_new33(rmatn);
1576
+ }
1577
+
1578
+ static VALUE
1579
+ celes_s_numat(VALUE self, VALUE vepsa, VALUE vdpsi, VALUE vdeps){
1580
+ double rmatn[3][3];
1581
+
1582
+ iauNumat(NUM2DBL(vepsa), NUM2DBL(vdpsi), NUM2DBL(vdeps), rmatn);
1583
+ rb_ivar_set(self, id_status, INT2FIX(0));
1584
+
1585
+ return vmat_new33(rmatn);
1586
+ }
1587
+
1588
+ static VALUE
1589
+ celes_s_nut00a(VALUE self, VALUE vdate1, VALUE vdate2){
1590
+ double dpsi, deps;
1591
+
1592
+ iauNut00a(NUM2DBL(vdate1), NUM2DBL(vdate2), &dpsi, &deps);
1593
+ rb_ivar_set(self, id_status, INT2FIX(0));
1594
+
1595
+ return rb_ary_new3(2, DBL2NUM(dpsi), DBL2NUM(deps));
1596
+ }
1597
+
1598
+ static VALUE
1599
+ celes_s_nut00b(VALUE self, VALUE vdate1, VALUE vdate2){
1600
+ double dpsi, deps;
1601
+
1602
+ iauNut00b(NUM2DBL(vdate1), NUM2DBL(vdate2), &dpsi, &deps);
1603
+ rb_ivar_set(self, id_status, INT2FIX(0));
1604
+
1605
+ return rb_ary_new3(2, DBL2NUM(dpsi), DBL2NUM(deps));
1606
+ }
1607
+
1608
+ static VALUE
1609
+ celes_s_nut06a(VALUE self, VALUE vdate1, VALUE vdate2){
1610
+ double dpsi, deps;
1611
+
1612
+ iauNut06a(NUM2DBL(vdate1), NUM2DBL(vdate2), &dpsi, &deps);
1613
+ rb_ivar_set(self, id_status, INT2FIX(0));
1614
+
1615
+ return rb_ary_new3(2, DBL2NUM(dpsi), DBL2NUM(deps));
1616
+ }
1617
+
1618
+ static VALUE
1619
+ celes_s_nut80(VALUE self, VALUE vdate1, VALUE vdate2){
1620
+ double dpsi, deps;
1621
+
1622
+ iauNut80(NUM2DBL(vdate1), NUM2DBL(vdate2), &dpsi, &deps);
1623
+ rb_ivar_set(self, id_status, INT2FIX(0));
1624
+
1625
+ return rb_ary_new3(2, DBL2NUM(dpsi), DBL2NUM(deps));
1626
+ }
1627
+
1628
+ static VALUE
1629
+ celes_s_nutm80(VALUE self, VALUE vdate1, VALUE vdate2){
1630
+ double rmatn[3][3];
1631
+
1632
+ iauNutm80(NUM2DBL(vdate1), NUM2DBL(vdate2), rmatn);
1633
+ rb_ivar_set(self, id_status, INT2FIX(0));
1634
+
1635
+ return vmat_new33(rmatn);
1636
+ }
1637
+
1638
+ static VALUE
1639
+ celes_s_obl06(VALUE self, VALUE vdate1, VALUE vdate2){
1640
+ rb_ivar_set(self, id_status, INT2FIX(0));
1641
+
1642
+ return DBL2NUM(iauObl06(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1643
+ }
1644
+
1645
+ static VALUE
1646
+ celes_s_obl80(VALUE self, VALUE vdate1, VALUE vdate2){
1647
+ rb_ivar_set(self, id_status, INT2FIX(0));
1648
+
1649
+ return DBL2NUM(iauObl80(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1650
+ }
1651
+
1652
+ static VALUE
1653
+ celes_s_pb06(VALUE self, VALUE vdate1, VALUE vdate2){
1654
+ double bzeta, bz, btheta;
1655
+
1656
+ iauPb06(NUM2DBL(vdate1), NUM2DBL(vdate2), &bzeta, &bz, &btheta);
1657
+ rb_ivar_set(self, id_status, INT2FIX(0));
1658
+
1659
+ return rb_ary_new3(3, DBL2NUM(bzeta), DBL2NUM(bz), DBL2NUM(btheta));
1660
+ }
1661
+
1662
+ static VALUE
1663
+ celes_s_pfw06(VALUE self, VALUE vdate1, VALUE vdate2){
1664
+ double gamb, phib, psib, epsa;
1665
+
1666
+ iauPfw06(NUM2DBL(vdate1), NUM2DBL(vdate2), &gamb, &phib, &psib, &epsa);
1667
+ rb_ivar_set(self, id_status, INT2FIX(0));
1668
+
1669
+ return rb_ary_new3(4, DBL2NUM(gamb),
1670
+ DBL2NUM(phib), DBL2NUM(psib), DBL2NUM(epsa));
1671
+ }
1672
+
1673
+ static VALUE
1674
+ celes_s_pmat00(VALUE self, VALUE vdate1, VALUE vdate2){
1675
+ double rbp[3][3];
1676
+
1677
+ iauPmat00(NUM2DBL(vdate1), NUM2DBL(vdate2), rbp);
1678
+ rb_ivar_set(self, id_status, INT2FIX(0));
1679
+
1680
+ return vmat_new33(rbp);
1681
+ }
1682
+
1683
+ static VALUE
1684
+ celes_s_pmat06(VALUE self, VALUE vdate1, VALUE vdate2){
1685
+ double rbp[3][3];
1686
+
1687
+ iauPmat06(NUM2DBL(vdate1), NUM2DBL(vdate2), rbp);
1688
+ rb_ivar_set(self, id_status, INT2FIX(0));
1689
+
1690
+ return vmat_new33(rbp);
1691
+ }
1692
+
1693
+ static VALUE
1694
+ celes_s_pmat76(VALUE self, VALUE vdate1, VALUE vdate2){
1695
+ double rmatp[3][3];
1696
+
1697
+ iauPmat76(NUM2DBL(vdate1), NUM2DBL(vdate2), rmatp);
1698
+ rb_ivar_set(self, id_status, INT2FIX(0));
1699
+
1700
+ return vmat_new33(rmatp);
1701
+ }
1702
+
1703
+ static VALUE
1704
+ celes_s_pn00(VALUE self, VALUE vdate1, VALUE vdate2,
1705
+ VALUE vdpsi, VALUE vdeps){
1706
+ double epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3];
1707
+
1708
+ iauPn00(NUM2DBL(vdate1), NUM2DBL(vdate2),
1709
+ NUM2DBL(vdpsi), NUM2DBL(vdeps), &epsa,
1710
+ rb, rp, rbp, rn, rbpn);
1711
+ rb_ivar_set(self, id_status, INT2FIX(0));
1712
+
1713
+ return rb_ary_new3(6, DBL2NUM(epsa), vmat_new33(rb),
1714
+ vmat_new33(rp), vmat_new33(rbp), vmat_new33(rn), vmat_new33(rbpn));
1715
+ }
1716
+
1717
+ static VALUE
1718
+ celes_s_pn00a(VALUE self, VALUE vdate1, VALUE vdate2){
1719
+ double dpsi, deps, epsa, rb[3][3],
1720
+ rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3];
1721
+
1722
+ iauPn00a(NUM2DBL(vdate1), NUM2DBL(vdate2), &dpsi, &deps, &epsa,
1723
+ rb, rp, rbp, rn, rbpn);
1724
+ rb_ivar_set(self, id_status, INT2FIX(0));
1725
+
1726
+ return rb_ary_new3(8, DBL2NUM(dpsi), DBL2NUM(deps), DBL2NUM(epsa),
1727
+ vmat_new33(rb), vmat_new33(rp), vmat_new33(rbp),
1728
+ vmat_new33(rn), vmat_new33(rbpn));
1729
+ }
1730
+
1731
+ static VALUE
1732
+ celes_s_pn00b(VALUE self, VALUE vdate1, VALUE vdate2){
1733
+ double dpsi, deps, epsa, rb[3][3],
1734
+ rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3];
1735
+
1736
+ iauPn00b(NUM2DBL(vdate1), NUM2DBL(vdate2), &dpsi, &deps, &epsa,
1737
+ rb, rp, rbp, rn, rbpn);
1738
+ rb_ivar_set(self, id_status, INT2FIX(0));
1739
+
1740
+ return rb_ary_new3(8, DBL2NUM(dpsi), DBL2NUM(deps), DBL2NUM(epsa),
1741
+ vmat_new33(rb), vmat_new33(rp), vmat_new33(rbp),
1742
+ vmat_new33(rn), vmat_new33(rbpn));
1743
+ }
1744
+
1745
+ static VALUE
1746
+ celes_s_pn06(VALUE self, VALUE vdate1, VALUE vdate2,
1747
+ VALUE vdpsi, VALUE vdeps){
1748
+ double epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3];
1749
+
1750
+ iauPn06(NUM2DBL(vdate1), NUM2DBL(vdate2),
1751
+ NUM2DBL(vdpsi), NUM2DBL(vdeps), &epsa,
1752
+ rb, rp, rbp, rn, rbpn);
1753
+ rb_ivar_set(self, id_status, INT2FIX(0));
1754
+
1755
+ return rb_ary_new3(6, DBL2NUM(epsa), vmat_new33(rb),
1756
+ vmat_new33(rp), vmat_new33(rbp), vmat_new33(rn), vmat_new33(rbpn));
1757
+ }
1758
+
1759
+ static VALUE
1760
+ celes_s_pn06a(VALUE self, VALUE vdate1, VALUE vdate2){
1761
+ double dpsi, deps, epsa, rb[3][3],
1762
+ rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3];
1763
+
1764
+ iauPn06a(NUM2DBL(vdate1), NUM2DBL(vdate2), &dpsi, &deps, &epsa,
1765
+ rb, rp, rbp, rn, rbpn);
1766
+ rb_ivar_set(self, id_status, INT2FIX(0));
1767
+
1768
+ return rb_ary_new3(8, DBL2NUM(dpsi), DBL2NUM(deps), DBL2NUM(epsa),
1769
+ vmat_new33(rb), vmat_new33(rp), vmat_new33(rbp),
1770
+ vmat_new33(rn), vmat_new33(rbpn));
1771
+ }
1772
+
1773
+ static VALUE
1774
+ celes_s_pnm00a(VALUE self, VALUE vdate1, VALUE vdate2){
1775
+ double rbpn[3][3];
1776
+
1777
+ iauPnm00a(NUM2DBL(vdate1), NUM2DBL(vdate2), rbpn);
1778
+ rb_ivar_set(self, id_status, INT2FIX(0));
1779
+
1780
+ return vmat_new33(rbpn);
1781
+ }
1782
+
1783
+ static VALUE
1784
+ celes_s_pnm00b(VALUE self, VALUE vdate1, VALUE vdate2){
1785
+ double rbpn[3][3];
1786
+
1787
+ iauPnm00b(NUM2DBL(vdate1), NUM2DBL(vdate2), rbpn);
1788
+ rb_ivar_set(self, id_status, INT2FIX(0));
1789
+
1790
+ return vmat_new33(rbpn);
1791
+ }
1792
+
1793
+ static VALUE
1794
+ celes_s_pnm06a(VALUE self, VALUE vdate1, VALUE vdate2){
1795
+ double rnpb[3][3];
1796
+
1797
+ iauPnm06a(NUM2DBL(vdate1), NUM2DBL(vdate2), rnpb);
1798
+ rb_ivar_set(self, id_status, INT2FIX(0));
1799
+
1800
+ return vmat_new33(rnpb);
1801
+ }
1802
+
1803
+ static VALUE
1804
+ celes_s_pnm80(VALUE self, VALUE vdate1, VALUE vdate2){
1805
+ double rmatpn[3][3];
1806
+
1807
+ iauPnm80(NUM2DBL(vdate1), NUM2DBL(vdate2), rmatpn);
1808
+ rb_ivar_set(self, id_status, INT2FIX(0));
1809
+
1810
+ return vmat_new33(rmatpn);
1811
+ }
1812
+
1813
+ static VALUE
1814
+ celes_s_p06e(VALUE self, VALUE vdate1, VALUE vdate2){
1815
+ double eps0, psia, oma, bpa, bqa, pia, bpia,
1816
+ epsa, chia, za, zetaa, thetaa, pa, gam, phi, psi;
1817
+
1818
+ iauP06e(NUM2DBL(vdate1), NUM2DBL(vdate2), &eps0, &psia,
1819
+ &oma, &bpa, &bqa, &pia, &bpia, &epsa, &chia, &za,
1820
+ &zetaa, &thetaa, &pa, &gam, &phi, &psi);
1821
+ rb_ivar_set(self, id_status, INT2FIX(0));
1822
+
1823
+ return rb_ary_new3(16, DBL2NUM(eps0), DBL2NUM(psia),
1824
+ DBL2NUM(oma), DBL2NUM(bpa), DBL2NUM(bqa), DBL2NUM(pia),
1825
+ DBL2NUM(bpia), DBL2NUM(epsa), DBL2NUM(chia), DBL2NUM(za),
1826
+ DBL2NUM(zetaa), DBL2NUM(thetaa), DBL2NUM(pa), DBL2NUM(gam),
1827
+ DBL2NUM(phi), DBL2NUM(psi));
1828
+ }
1829
+
1830
+ static VALUE
1831
+ celes_s_pom00(VALUE self, VALUE vxp, VALUE vyp, VALUE vsp){
1832
+ double rpom[3][3];
1833
+
1834
+ iauPom00(NUM2DBL(vxp), NUM2DBL(vyp), NUM2DBL(vsp), rpom);
1835
+ rb_ivar_set(self, id_status, INT2FIX(0));
1836
+
1837
+ return vmat_new33(rpom);
1838
+ }
1839
+
1840
+ static VALUE
1841
+ celes_s_pr00(VALUE self, VALUE vdate1, VALUE vdate2){
1842
+ double dpsipr, depspr;
1843
+
1844
+ iauPr00(NUM2DBL(vdate1), NUM2DBL(vdate2), &dpsipr, &depspr);
1845
+ rb_ivar_set(self, id_status, INT2FIX(0));
1846
+
1847
+ return rb_ary_new3(2, DBL2NUM(dpsipr), DBL2NUM(depspr));
1848
+ }
1849
+
1850
+ static VALUE
1851
+ celes_s_prec76(VALUE self, VALUE vep01, VALUE vep02,
1852
+ VALUE vep11, VALUE vep12){
1853
+ double zeta, z, theta;
1854
+
1855
+ iauPrec76(NUM2DBL(vep01), NUM2DBL(vep02),
1856
+ NUM2DBL(vep11), NUM2DBL(vep12), &zeta, &z, &theta);
1857
+ rb_ivar_set(self, id_status, INT2FIX(0));
1858
+
1859
+ return rb_ary_new3(3, DBL2NUM(zeta), DBL2NUM(z), DBL2NUM(theta));
1860
+ }
1861
+
1862
+ static VALUE
1863
+ celes_s_s00(VALUE self, VALUE vdate1, VALUE vdate2, VALUE vx, VALUE vy){
1864
+ rb_ivar_set(self, id_status, INT2FIX(0));
1865
+
1866
+ return DBL2NUM(iauS00(NUM2DBL(vdate1), NUM2DBL(vdate2),
1867
+ NUM2DBL(vx), NUM2DBL(vy)));
1868
+ }
1869
+
1870
+ static VALUE
1871
+ celes_s_s00a(VALUE self, VALUE vdate1, VALUE vdate2){
1872
+ rb_ivar_set(self, id_status, INT2FIX(0));
1873
+
1874
+ return DBL2NUM(iauS00a(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1875
+ }
1876
+
1877
+ static VALUE
1878
+ celes_s_s00b(VALUE self, VALUE vdate1, VALUE vdate2){
1879
+ rb_ivar_set(self, id_status, INT2FIX(0));
1880
+
1881
+ return DBL2NUM(iauS00b(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1882
+ }
1883
+
1884
+ static VALUE
1885
+ celes_s_s06(VALUE self, VALUE vdate1, VALUE vdate2, VALUE vx, VALUE vy){
1886
+ rb_ivar_set(self, id_status, INT2FIX(0));
1887
+
1888
+ return DBL2NUM(iauS06(NUM2DBL(vdate1), NUM2DBL(vdate2),
1889
+ NUM2DBL(vx), NUM2DBL(vy)));
1890
+ }
1891
+
1892
+ static VALUE
1893
+ celes_s_s06a(VALUE self, VALUE vdate1, VALUE vdate2){
1894
+ rb_ivar_set(self, id_status, INT2FIX(0));
1895
+
1896
+ return DBL2NUM(iauS06a(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1897
+ }
1898
+
1899
+ static VALUE
1900
+ celes_s_sp00(VALUE self, VALUE vdate1, VALUE vdate2){
1901
+ rb_ivar_set(self, id_status, INT2FIX(0));
1902
+
1903
+ return DBL2NUM(iauSp00(NUM2DBL(vdate1), NUM2DBL(vdate2)));
1904
+ }
1905
+
1906
+ static VALUE
1907
+ celes_s_xy06(VALUE self, VALUE vdate1, VALUE vdate2){
1908
+ double x, y;
1909
+
1910
+ iauXy06(NUM2DBL(vdate1), NUM2DBL(vdate2), &x, &y);
1911
+ rb_ivar_set(self, id_status, INT2FIX(0));
1912
+
1913
+ return rb_ary_new3(2, DBL2NUM(x), DBL2NUM(y));
1914
+ }
1915
+
1916
+ static VALUE
1917
+ celes_s_xys00a(VALUE self, VALUE vdate1, VALUE vdate2){
1918
+ double x, y, s;
1919
+
1920
+ iauXys00a(NUM2DBL(vdate1), NUM2DBL(vdate2), &x, &y, &s);
1921
+ rb_ivar_set(self, id_status, INT2FIX(0));
1922
+
1923
+ return rb_ary_new3(3, DBL2NUM(x), DBL2NUM(y), DBL2NUM(s));
1924
+ }
1925
+
1926
+ static VALUE
1927
+ celes_s_xys00b(VALUE self, VALUE vdate1, VALUE vdate2){
1928
+ double x, y, s;
1929
+
1930
+ iauXys00b(NUM2DBL(vdate1), NUM2DBL(vdate2), &x, &y, &s);
1931
+ rb_ivar_set(self, id_status, INT2FIX(0));
1932
+
1933
+ return rb_ary_new3(3, DBL2NUM(x), DBL2NUM(y), DBL2NUM(s));
1934
+ }
1935
+
1936
+ static VALUE
1937
+ celes_s_xys06a(VALUE self, VALUE vdate1, VALUE vdate2){
1938
+ double x, y, s;
1939
+
1940
+ iauXys06a(NUM2DBL(vdate1), NUM2DBL(vdate2), &x, &y, &s);
1941
+ rb_ivar_set(self, id_status, INT2FIX(0));
1942
+
1943
+ return rb_ary_new3(3, DBL2NUM(x), DBL2NUM(y), DBL2NUM(s));
1944
+ }
1945
+
1946
+ static VALUE
1947
+ celes_s_fad03(VALUE self, VALUE vt){
1948
+ rb_ivar_set(self, id_status, INT2FIX(0));
1949
+
1950
+ return DBL2NUM(iauFad03(NUM2DBL(vt)));
1951
+ }
1952
+
1953
+ static VALUE
1954
+ celes_s_fae03(VALUE self, VALUE vt){
1955
+ rb_ivar_set(self, id_status, INT2FIX(0));
1956
+
1957
+ return DBL2NUM(iauFae03(NUM2DBL(vt)));
1958
+ }
1959
+
1960
+ static VALUE
1961
+ celes_s_faf03(VALUE self, VALUE vt){
1962
+ rb_ivar_set(self, id_status, INT2FIX(0));
1963
+
1964
+ return DBL2NUM(iauFaf03(NUM2DBL(vt)));
1965
+ }
1966
+
1967
+ static VALUE
1968
+ celes_s_faju03(VALUE self, VALUE vt){
1969
+ rb_ivar_set(self, id_status, INT2FIX(0));
1970
+
1971
+ return DBL2NUM(iauFaju03(NUM2DBL(vt)));
1972
+ }
1973
+
1974
+ static VALUE
1975
+ celes_s_fal03(VALUE self, VALUE vt){
1976
+ rb_ivar_set(self, id_status, INT2FIX(0));
1977
+
1978
+ return DBL2NUM(iauFal03(NUM2DBL(vt)));
1979
+ }
1980
+
1981
+ static VALUE
1982
+ celes_s_falp03(VALUE self, VALUE vt){
1983
+ rb_ivar_set(self, id_status, INT2FIX(0));
1984
+
1985
+ return DBL2NUM(iauFalp03(NUM2DBL(vt)));
1986
+ }
1987
+
1988
+ static VALUE
1989
+ celes_s_fama03(VALUE self, VALUE vt){
1990
+ rb_ivar_set(self, id_status, INT2FIX(0));
1991
+
1992
+ return DBL2NUM(iauFama03(NUM2DBL(vt)));
1993
+ }
1994
+
1995
+ static VALUE
1996
+ celes_s_fame03(VALUE self, VALUE vt){
1997
+ rb_ivar_set(self, id_status, INT2FIX(0));
1998
+
1999
+ return DBL2NUM(iauFame03(NUM2DBL(vt)));
2000
+ }
2001
+
2002
+ static VALUE
2003
+ celes_s_fane03(VALUE self, VALUE vt){
2004
+ rb_ivar_set(self, id_status, INT2FIX(0));
2005
+
2006
+ return DBL2NUM(iauFane03(NUM2DBL(vt)));
2007
+ }
2008
+
2009
+ static VALUE
2010
+ celes_s_faom03(VALUE self, VALUE vt){
2011
+ rb_ivar_set(self, id_status, INT2FIX(0));
2012
+
2013
+ return DBL2NUM(iauFaom03(NUM2DBL(vt)));
2014
+ }
2015
+
2016
+ static VALUE
2017
+ celes_s_fapa03(VALUE self, VALUE vt){
2018
+ rb_ivar_set(self, id_status, INT2FIX(0));
2019
+
2020
+ return DBL2NUM(iauFapa03(NUM2DBL(vt)));
2021
+ }
2022
+
2023
+ static VALUE
2024
+ celes_s_fasa03(VALUE self, VALUE vt){
2025
+ rb_ivar_set(self, id_status, INT2FIX(0));
2026
+
2027
+ return DBL2NUM(iauFasa03(NUM2DBL(vt)));
2028
+ }
2029
+
2030
+ static VALUE
2031
+ celes_s_faur03(VALUE self, VALUE vt){
2032
+ rb_ivar_set(self, id_status, INT2FIX(0));
2033
+
2034
+ return DBL2NUM(iauFaur03(NUM2DBL(vt)));
2035
+ }
2036
+
2037
+ static VALUE
2038
+ celes_s_fave03(VALUE self, VALUE vt){
2039
+ rb_ivar_set(self, id_status, INT2FIX(0));
2040
+
2041
+ return DBL2NUM(iauFave03(NUM2DBL(vt)));
2042
+ }
2043
+ static VALUE
2044
+ celes_s_pvstar(VALUE self, VALUE vpv){
2045
+ int ret;
2046
+ double pv[2][3], ra, dec, pmr, pmd, px, rv;
2047
+
2048
+ cmat_cp23(vpv, pv);
2049
+ ret = iauPvstar(pv, &ra, &dec, &pmr, &pmd, &px, &rv);
2050
+ rb_ivar_set(self, id_status, INT2FIX(ret));
2051
+
2052
+ if(ret == -1)
2053
+ rb_raise(rb_eArgError, "superluminal speed");
2054
+ else if(ret == -2)
2055
+ rb_raise(rb_eArgError, "null position vector");
2056
+
2057
+ return rb_ary_new3(6, DBL2NUM(ra), DBL2NUM(dec),
2058
+ DBL2NUM(pmr), DBL2NUM(pmd), DBL2NUM(px), DBL2NUM(rv));
2059
+ }
2060
+
2061
+ static VALUE
2062
+ celes_s_starpv(VALUE self, VALUE vra, VALUE vdec,
2063
+ VALUE vpmr, VALUE vpmd, VALUE vpx, VALUE vrv){
2064
+ int ret;
2065
+ double pv[2][3];
2066
+
2067
+ ret = iauStarpv(NUM2DBL(vra), NUM2DBL(vdec), NUM2DBL(vpmr),
2068
+ NUM2DBL(vpmd), NUM2DBL(vpx), NUM2DBL(vrv), pv);
2069
+ rb_ivar_set(self, id_status, INT2FIX(ret));
2070
+
2071
+ return vmat_new23(pv);
2072
+ }
2073
+ static VALUE
2074
+ celes_s_fk52h(VALUE self, VALUE vr5, VALUE vd5,
2075
+ VALUE vdr5, VALUE vdd5, VALUE vpx5, VALUE vrv5){
2076
+ double rh, dh, drh, ddh, pxh, rvh;
2077
+
2078
+ iauFk52h(NUM2DBL(vr5), NUM2DBL(vd5), NUM2DBL(vdr5),
2079
+ NUM2DBL(vdd5), NUM2DBL(vpx5), NUM2DBL(vrv5),
2080
+ &rh, &dh, &drh, &ddh, &pxh, &rvh);
2081
+ rb_ivar_set(self, id_status, INT2FIX(0));
2082
+
2083
+ return rb_ary_new3(6, DBL2NUM(rh), DBL2NUM(dh),
2084
+ DBL2NUM(drh), DBL2NUM(ddh), DBL2NUM(pxh), DBL2NUM(rvh));
2085
+ }
2086
+
2087
+ static VALUE
2088
+ celes_s_fk5hip(VALUE self){
2089
+ double r5h[3][3], s5h[3];
2090
+
2091
+ iauFk5hip(r5h, s5h);
2092
+ rb_ivar_set(self, id_status, INT2FIX(0));
2093
+
2094
+ return rb_ary_new3(2, vmat_new33(r5h), vvec_new(s5h));
2095
+ }
2096
+
2097
+ static VALUE
2098
+ celes_s_fk5hz(VALUE self, VALUE vr5, VALUE vd5,
2099
+ VALUE vdate1, VALUE vdate2){
2100
+ double rh, dh;
2101
+
2102
+ iauFk5hz(NUM2DBL(vr5), NUM2DBL(vd5),
2103
+ NUM2DBL(vdate1), NUM2DBL(vdate2), &rh, &dh);
2104
+ rb_ivar_set(self, id_status, INT2FIX(0));
2105
+
2106
+ return rb_ary_new3(2, DBL2NUM(rh), DBL2NUM(dh));
2107
+ }
2108
+
2109
+ static VALUE
2110
+ celes_s_h2fk5(VALUE self, VALUE vrh, VALUE vdh,
2111
+ VALUE vdrh, VALUE vddh, VALUE vpxh, VALUE vrvh){
2112
+ double r5, d5, dr5, dd5, px5, rv5;
2113
+
2114
+ iauH2fk5(NUM2DBL(vrh), NUM2DBL(vdh), NUM2DBL(vdrh),
2115
+ NUM2DBL(vddh), NUM2DBL(vpxh), NUM2DBL(vrvh),
2116
+ &r5, &d5, &dr5, &dd5, &px5, &rv5);
2117
+ rb_ivar_set(self, id_status, INT2FIX(0));
2118
+
2119
+ return rb_ary_new3(6, DBL2NUM(r5), DBL2NUM(d5),
2120
+ DBL2NUM(dr5), DBL2NUM(dd5), DBL2NUM(px5), DBL2NUM(rv5));
2121
+ }
2122
+
2123
+ static VALUE
2124
+ celes_s_hfk5z(VALUE self, VALUE vrh, VALUE vdh,
2125
+ VALUE vdate1, VALUE vdate2){
2126
+ double r5, d5, dr5, dd5;
2127
+
2128
+ iauHfk5z(NUM2DBL(vrh), NUM2DBL(vdh), NUM2DBL(vdate1), NUM2DBL(vdate2),
2129
+ &r5, &d5, &dr5, &dd5);
2130
+ rb_ivar_set(self, id_status, INT2FIX(0));
2131
+
2132
+ return rb_ary_new3(4, DBL2NUM(r5), DBL2NUM(d5),
2133
+ DBL2NUM(dr5), DBL2NUM(dd5));
2134
+ }
2135
+
2136
+ static VALUE
2137
+ celes_s_starpm(VALUE self, VALUE vra1, VALUE vdec1,
2138
+ VALUE vpmr1, VALUE vpmd1, VALUE vpx1, VALUE vrv1,
2139
+ VALUE vep1a, VALUE vep1b, VALUE vep2a, VALUE vep2b){
2140
+ int ret;
2141
+ double ra2, dec2, pmr2, pmd2, px2, rv2;
2142
+
2143
+ ret = iauStarpm(NUM2DBL(vra1), NUM2DBL(vdec1),
2144
+ NUM2DBL(vpmr1), NUM2DBL(vpmd1), NUM2DBL(vpx1), NUM2DBL(vrv1),
2145
+ NUM2DBL(vep1a), NUM2DBL(vep1b), NUM2DBL(vep2a), NUM2DBL(vep2b),
2146
+ &ra2, &dec2, &pmr2, &pmd2, &px2, &rv2);
2147
+ rb_ivar_set(self, id_status, INT2FIX(ret));
2148
+
2149
+ if(ret == -1)
2150
+ rb_raise(rb_eArgError, "system error");
2151
+
2152
+ return rb_ary_new3(6,
2153
+ DBL2NUM(ra2), DBL2NUM(dec2), DBL2NUM(pmr2),
2154
+ DBL2NUM(pmd2), DBL2NUM(px2), DBL2NUM(rv2));
2155
+ }
2156
+ static VALUE
2157
+ celes_s_eform(VALUE self, VALUE vn){
2158
+ int ret;
2159
+ double a, f;
2160
+
2161
+ ret = iauEform(NUM2INT(vn), &a, &f);
2162
+ rb_ivar_set(self, id_status, INT2FIX(ret));
2163
+
2164
+ if(ret == -1)
2165
+ rb_raise(rb_eArgError, "illegal identifier");
2166
+
2167
+ return rb_ary_new3(2, DBL2NUM(a), DBL2NUM(f));
2168
+ }
2169
+
2170
+ static VALUE
2171
+ celes_s_gc2gd(VALUE self, VALUE vn, VALUE vxyz){
2172
+ int ret;
2173
+ double xyz[3], elong, phi, height;
2174
+
2175
+ cvec_cp(vxyz, xyz);
2176
+ ret = iauGc2gd(NUM2INT(vn), xyz, &elong, &phi, &height);
2177
+ rb_ivar_set(self, id_status, INT2FIX(ret));
2178
+
2179
+ if(ret == -1)
2180
+ rb_raise(rb_eArgError, "illegal identifier");
2181
+ else if(ret == -2)
2182
+ rb_raise(rb_eArgError, "internal error");
2183
+
2184
+ return rb_ary_new3(3, DBL2NUM(elong), DBL2NUM(phi), DBL2NUM(height));
2185
+ }
2186
+
2187
+ static VALUE
2188
+ celes_s_gc2gde(VALUE self, VALUE va, VALUE vf, VALUE vxyz){
2189
+ int ret;
2190
+ double xyz[3], elong, phi, height;
2191
+
2192
+ cvec_cp(vxyz, xyz);
2193
+ ret = iauGc2gde(NUM2DBL(va), NUM2DBL(vf), xyz, &elong, &phi, &height);
2194
+ rb_ivar_set(self, id_status, INT2FIX(ret));
2195
+
2196
+ if(ret == -1)
2197
+ rb_raise(rb_eArgError, "illegal f");
2198
+ else if(ret == -2)
2199
+ rb_raise(rb_eArgError, "illegal a");
2200
+
2201
+ return rb_ary_new3(3, DBL2NUM(elong), DBL2NUM(phi), DBL2NUM(height));
2202
+ }
2203
+
2204
+ static VALUE
2205
+ celes_s_gd2gc(VALUE self, VALUE vn,
2206
+ VALUE velong, VALUE vphi, VALUE vheight){
2207
+ int ret;
2208
+ double xyz[3];
2209
+
2210
+ ret = iauGd2gc(NUM2INT(vn), NUM2DBL(velong),
2211
+ NUM2DBL(vphi), NUM2DBL(vheight), xyz);
2212
+ rb_ivar_set(self, id_status, INT2FIX(ret));
2213
+
2214
+ if(ret == -1)
2215
+ rb_raise(rb_eArgError, "illegal identifier");
2216
+ else if(ret == -2)
2217
+ rb_raise(rb_eArgError, "illegal case");
2218
+
2219
+ return vvec_new(xyz);
2220
+ }
2221
+
2222
+ static VALUE
2223
+ celes_s_gd2gce(VALUE self, VALUE va, VALUE vf,
2224
+ VALUE velong, VALUE vphi, VALUE vheight){
2225
+ int ret;
2226
+ double xyz[3];
2227
+
2228
+ ret = iauGd2gce(NUM2DBL(va), NUM2DBL(vf),
2229
+ NUM2DBL(velong), NUM2DBL(vphi), NUM2DBL(vheight), xyz);
2230
+ rb_ivar_set(self, id_status, INT2FIX(ret));
2231
+
2232
+ if(ret == -1)
2233
+ rb_raise(rb_eArgError, "illegal case");
2234
+
2235
+ return vvec_new(xyz);
2236
+ }
2237
+
2238
+
2239
+ void
2240
+ Init_celes_core(void){
2241
+ mCeles = rb_define_module("Celes");
2242
+ id_status = rb_intern("@status");
2243
+
2244
+ rb_define_module_function(mCeles, "status", celes_s_status, 0);
2245
+
2246
+ rb_define_module_function(mCeles, "zp!", celes_s_zp_b, 1);
2247
+ rb_define_module_function(mCeles, "zp", celes_s_zp, 0);
2248
+ rb_define_module_function(mCeles, "zr!", celes_s_zr_b, 1);
2249
+ rb_define_module_function(mCeles, "zr", celes_s_zr, 0);
2250
+ rb_define_module_function(mCeles, "ir!", celes_s_ir_b, 1);
2251
+ rb_define_module_function(mCeles, "ir", celes_s_ir, 0);
2252
+ rb_define_module_function(mCeles, "cp", celes_s_cp, 1);
2253
+ rb_define_module_function(mCeles, "cr", celes_s_cr, 1);
2254
+ rb_define_module_function(mCeles, "rx!", celes_s_rx_b, 2);
2255
+ rb_define_module_function(mCeles, "rx", celes_s_rx, 2);
2256
+ rb_define_module_function(mCeles, "ry!", celes_s_ry_b, 2);
2257
+ rb_define_module_function(mCeles, "ry", celes_s_ry, 2);
2258
+ rb_define_module_function(mCeles, "rz!", celes_s_rz_b, 2);
2259
+ rb_define_module_function(mCeles, "rz", celes_s_rz, 2);
2260
+ rb_define_module_function(mCeles, "s2c", celes_s_s2c, 2);
2261
+ rb_define_module_function(mCeles, "c2s", celes_s_c2s, 1);
2262
+ rb_define_module_function(mCeles, "s2p", celes_s_s2p, 3);
2263
+ rb_define_module_function(mCeles, "p2s", celes_s_p2s, 1);
2264
+ rb_define_module_function(mCeles, "ppp", celes_s_ppp, 2);
2265
+ rb_define_module_function(mCeles, "pmp", celes_s_pmp, 2);
2266
+ rb_define_module_function(mCeles, "ppsp", celes_s_ppsp, 3);
2267
+ rb_define_module_function(mCeles, "pdp", celes_s_pdp, 2);
2268
+ rb_define_module_function(mCeles, "pxp", celes_s_pxp, 2);
2269
+ rb_define_module_function(mCeles, "pm", celes_s_pm, 1);
2270
+ rb_define_module_function(mCeles, "pn", celes_s_pn, 1);
2271
+ rb_define_module_function(mCeles, "sxp", celes_s_sxp, 2);
2272
+ rb_define_module_function(mCeles, "rxr", celes_s_rxr, 2);
2273
+ rb_define_module_function(mCeles, "tr", celes_s_tr, 1);
2274
+ rb_define_module_function(mCeles, "rxp", celes_s_rxp, 2);
2275
+ rb_define_module_function(mCeles, "trxp", celes_s_trxp, 2);
2276
+ rb_define_module_function(mCeles, "sepp", celes_s_sepp, 2);
2277
+ rb_define_module_function(mCeles, "seps", celes_s_seps, 4);
2278
+ rb_define_module_function(mCeles, "pap", celes_s_pap, 2);
2279
+ rb_define_module_function(mCeles, "pas", celes_s_pas, 4);
2280
+ rb_define_module_function(mCeles, "rv2m", celes_s_rv2m, 1);
2281
+ rb_define_module_function(mCeles, "rm2v", celes_s_rm2v, 1);
2282
+ rb_define_module_function(mCeles, "zpv!", celes_s_zpv_b, 1);
2283
+ rb_define_module_function(mCeles, "zpv", celes_s_zpv, 0);
2284
+ rb_define_module_function(mCeles, "cpv", celes_s_cpv, 1);
2285
+ rb_define_module_function(mCeles, "p2pv", celes_s_p2pv, 1);
2286
+ rb_define_module_function(mCeles, "pv2p", celes_s_pv2p, 1);
2287
+ rb_define_module_function(mCeles, "s2pv", celes_s_s2pv, 6);
2288
+ rb_define_module_function(mCeles, "pv2s", celes_s_pv2s, 1);
2289
+ rb_define_module_function(mCeles, "pvppv", celes_s_pvppv, 2);
2290
+ rb_define_module_function(mCeles, "pvmpv", celes_s_pvmpv, 2);
2291
+ rb_define_module_function(mCeles, "pvdpv", celes_s_pvdpv, 2);
2292
+ rb_define_module_function(mCeles, "pvxpv", celes_s_pvxpv, 2);
2293
+ rb_define_module_function(mCeles, "pvm", celes_s_pvm, 1);
2294
+ rb_define_module_function(mCeles, "sxpv", celes_s_sxpv, 2);
2295
+ rb_define_module_function(mCeles, "s2xpv", celes_s_s2xpv, 3);
2296
+ rb_define_module_function(mCeles, "pvu", celes_s_pvu, 2);
2297
+ rb_define_module_function(mCeles, "pvup", celes_s_pvup, 2);
2298
+ rb_define_module_function(mCeles, "rxpv", celes_s_rxpv, 2);
2299
+ rb_define_module_function(mCeles, "trxpv", celes_s_trxpv, 2);
2300
+
2301
+ rb_define_module_function(mCeles, "anp", celes_s_anp, 1);
2302
+ rb_define_module_function(mCeles, "anpm", celes_s_anpm, 1);
2303
+ rb_define_module_function(mCeles, "a2tf", celes_s_a2tf, 2);
2304
+ rb_define_module_function(mCeles, "a2af", celes_s_a2af, 2);
2305
+ rb_define_module_function(mCeles, "af2a", celes_s_af2a, 4);
2306
+ rb_define_module_function(mCeles, "d2tf", celes_s_d2tf, 2);
2307
+ rb_define_module_function(mCeles, "tf2a", celes_s_tf2a, 4);
2308
+ rb_define_module_function(mCeles, "tf2d", celes_s_tf2d, 4);
2309
+
2310
+ rb_define_module_function(mCeles, "cal2jd", celes_s_cal2jd, 3);
2311
+ rb_define_module_function(mCeles, "epb", celes_s_epb, 2);
2312
+ rb_define_module_function(mCeles, "epb2jd", celes_s_epb2jd, 1);
2313
+ rb_define_module_function(mCeles, "epj", celes_s_epj, 2);
2314
+ rb_define_module_function(mCeles, "epj2jd", celes_s_epj2jd, 1);
2315
+ rb_define_module_function(mCeles, "jd2cal", celes_s_jd2cal, 2);
2316
+ rb_define_module_function(mCeles, "jdcalf", celes_s_jdcalf, 3);
2317
+
2318
+ rb_define_module_function(mCeles, "d2dtf", celes_s_d2dtf, 4);
2319
+ rb_define_module_function(mCeles, "dat", celes_s_dat, 4);
2320
+ rb_define_module_function(mCeles, "dtdb", celes_s_dtdb, 6);
2321
+ rb_define_module_function(mCeles, "dtf2d", celes_s_dtf2d, 7);
2322
+ rb_define_module_function(mCeles, "taitt", celes_s_taitt, 2);
2323
+ rb_define_module_function(mCeles, "taiut1", celes_s_taiut1, 3);
2324
+ rb_define_module_function(mCeles, "taiutc", celes_s_taiutc, 2);
2325
+ rb_define_module_function(mCeles, "tcbtdb", celes_s_tcbtdb, 2);
2326
+ rb_define_module_function(mCeles, "tcgtt" , celes_s_tcgtt, 2);
2327
+ rb_define_module_function(mCeles, "tdbtcb", celes_s_tdbtcb, 2);
2328
+ rb_define_module_function(mCeles, "tdbtt" , celes_s_tdbtt, 3);
2329
+ rb_define_module_function(mCeles, "tttai" , celes_s_tttai, 2);
2330
+ rb_define_module_function(mCeles, "tttcg" , celes_s_tttcg, 2);
2331
+ rb_define_module_function(mCeles, "tttdb" , celes_s_tttdb, 3);
2332
+ rb_define_module_function(mCeles, "ttut1" , celes_s_ttut1, 3);
2333
+ rb_define_module_function(mCeles, "ut1tai", celes_s_ut1tai, 3);
2334
+ rb_define_module_function(mCeles, "ut1tt", celes_s_ut1tt, 3);
2335
+ rb_define_module_function(mCeles, "ut1utc", celes_s_ut1utc, 3);
2336
+ rb_define_module_function(mCeles, "utctai", celes_s_utctai, 2);
2337
+ rb_define_module_function(mCeles, "utcut1", celes_s_utcut1, 3);
2338
+
2339
+ rb_define_module_function(mCeles, "ee00", celes_s_ee00, 4);
2340
+ rb_define_module_function(mCeles, "ee00a", celes_s_ee00a, 2);
2341
+ rb_define_module_function(mCeles, "ee00b", celes_s_ee00b, 2);
2342
+ rb_define_module_function(mCeles, "ee06a", celes_s_ee06a, 2);
2343
+ rb_define_module_function(mCeles, "eect00", celes_s_eect00, 2);
2344
+ rb_define_module_function(mCeles, "eqeq94", celes_s_eqeq94, 2);
2345
+ rb_define_module_function(mCeles, "era00", celes_s_era00, 2);
2346
+ rb_define_module_function(mCeles, "gmst00", celes_s_gmst00, 4);
2347
+ rb_define_module_function(mCeles, "gmst06", celes_s_gmst06, 4);
2348
+ rb_define_module_function(mCeles, "gmst82", celes_s_gmst82, 2);
2349
+ rb_define_module_function(mCeles, "gst00a", celes_s_gst00a, 4);
2350
+ rb_define_module_function(mCeles, "gst00b", celes_s_gst00b, 2);
2351
+ rb_define_module_function(mCeles, "gst06", celes_s_gst06, 5);
2352
+ rb_define_module_function(mCeles, "gst06a", celes_s_gst06a, 4);
2353
+ rb_define_module_function(mCeles, "gst94", celes_s_gst94, 2);
2354
+
2355
+ rb_define_module_function(mCeles, "epv00", celes_s_epv00, 2);
2356
+ rb_define_module_function(mCeles, "plan94", celes_s_plan94, 3);
2357
+
2358
+ rb_define_module_function(mCeles, "bi00", celes_s_bi00, 0);
2359
+ rb_define_module_function(mCeles, "bp00", celes_s_bp00, 2);
2360
+ rb_define_module_function(mCeles, "bp06", celes_s_bp06, 2);
2361
+ rb_define_module_function(mCeles, "bpn2xy", celes_s_bpn2xy, 1);
2362
+ rb_define_module_function(mCeles, "c2i00a", celes_s_c2i00a, 2);
2363
+ rb_define_module_function(mCeles, "c2i00b", celes_s_c2i00b, 2);
2364
+ rb_define_module_function(mCeles, "c2i06a", celes_s_c2i06a, 2);
2365
+ rb_define_module_function(mCeles, "c2ibpn", celes_s_c2ibpn, 3);
2366
+ rb_define_module_function(mCeles, "c2ixy", celes_s_c2ixy, 4);
2367
+ rb_define_module_function(mCeles, "c2ixys", celes_s_c2ixys, 3);
2368
+ rb_define_module_function(mCeles, "c2t00a", celes_s_c2t00a, 6);
2369
+ rb_define_module_function(mCeles, "c2t00b", celes_s_c2t00b, 6);
2370
+ rb_define_module_function(mCeles, "c2t06a", celes_s_c2t06a, 6);
2371
+ rb_define_module_function(mCeles, "c2tcio", celes_s_c2tcio, 3);
2372
+ rb_define_module_function(mCeles, "c2teqx", celes_s_c2teqx, 3);
2373
+ rb_define_module_function(mCeles, "c2tpe", celes_s_c2tpe, 8);
2374
+ rb_define_module_function(mCeles, "c2txy", celes_s_c2txy, 8);
2375
+ rb_define_module_function(mCeles, "eo06a", celes_s_eo06a, 2);
2376
+ rb_define_module_function(mCeles, "eors", celes_s_eors, 2);
2377
+ rb_define_module_function(mCeles, "fw2m", celes_s_fw2m, 4);
2378
+ rb_define_module_function(mCeles, "fw2xy", celes_s_fw2xy, 4);
2379
+ rb_define_module_function(mCeles, "num00a", celes_s_num00a, 2);
2380
+ rb_define_module_function(mCeles, "num00b", celes_s_num00b, 2);
2381
+ rb_define_module_function(mCeles, "num06a", celes_s_num06a, 2);
2382
+ rb_define_module_function(mCeles, "numat", celes_s_numat, 3);
2383
+ rb_define_module_function(mCeles, "nut00a", celes_s_nut00a, 2);
2384
+ rb_define_module_function(mCeles, "nut00b", celes_s_nut00b, 2);
2385
+ rb_define_module_function(mCeles, "nut06a", celes_s_nut06a, 2);
2386
+ rb_define_module_function(mCeles, "nut80", celes_s_nut80, 2);
2387
+ rb_define_module_function(mCeles, "nutm80", celes_s_nutm80, 2);
2388
+ rb_define_module_function(mCeles, "obl06", celes_s_obl06, 2);
2389
+ rb_define_module_function(mCeles, "obl80", celes_s_obl80, 2);
2390
+ rb_define_module_function(mCeles, "pb06", celes_s_pb06, 2);
2391
+ rb_define_module_function(mCeles, "pfw06", celes_s_pfw06, 2);
2392
+ rb_define_module_function(mCeles, "pmat00", celes_s_pmat00, 2);
2393
+ rb_define_module_function(mCeles, "pmat06", celes_s_pmat06, 2);
2394
+ rb_define_module_function(mCeles, "pmat76", celes_s_pmat76, 2);
2395
+ rb_define_module_function(mCeles, "pn00", celes_s_pn00, 4);
2396
+ rb_define_module_function(mCeles, "pn00a", celes_s_pn00a, 2);
2397
+ rb_define_module_function(mCeles, "pn00b", celes_s_pn00b, 2);
2398
+ rb_define_module_function(mCeles, "pn06", celes_s_pn06, 4);
2399
+ rb_define_module_function(mCeles, "pn06a", celes_s_pn06a, 2);
2400
+ rb_define_module_function(mCeles, "pnm00a", celes_s_pnm00a, 2);
2401
+ rb_define_module_function(mCeles, "pnm00b", celes_s_pnm00b, 2);
2402
+ rb_define_module_function(mCeles, "pnm06a", celes_s_pnm06a, 2);
2403
+ rb_define_module_function(mCeles, "pnm80", celes_s_pnm80, 2);
2404
+ rb_define_module_function(mCeles, "p06e", celes_s_p06e, 2);
2405
+ rb_define_module_function(mCeles, "pom00", celes_s_pom00, 3);
2406
+ rb_define_module_function(mCeles, "pr00", celes_s_pr00, 2);
2407
+ rb_define_module_function(mCeles, "prec76", celes_s_prec76, 4);
2408
+ rb_define_module_function(mCeles, "s00", celes_s_s00, 4);
2409
+ rb_define_module_function(mCeles, "s00a", celes_s_s00a, 2);
2410
+ rb_define_module_function(mCeles, "s00b", celes_s_s00b, 2);
2411
+ rb_define_module_function(mCeles, "s06", celes_s_s06, 4);
2412
+ rb_define_module_function(mCeles, "s06a", celes_s_s06a, 2);
2413
+ rb_define_module_function(mCeles, "sp00", celes_s_sp00, 2);
2414
+ rb_define_module_function(mCeles, "xy06", celes_s_xy06, 2);
2415
+ rb_define_module_function(mCeles, "xys00a", celes_s_xys00a, 2);
2416
+ rb_define_module_function(mCeles, "xys00b", celes_s_xys00b, 2);
2417
+ rb_define_module_function(mCeles, "xys06a", celes_s_xys06a, 2);
2418
+
2419
+ rb_define_module_function(mCeles, "fad03", celes_s_fad03, 1);
2420
+ rb_define_module_function(mCeles, "fae03", celes_s_fae03, 1);
2421
+ rb_define_module_function(mCeles, "faf03", celes_s_faf03, 1);
2422
+ rb_define_module_function(mCeles, "faju03", celes_s_faju03, 1);
2423
+ rb_define_module_function(mCeles, "fal03", celes_s_fal03, 1);
2424
+ rb_define_module_function(mCeles, "falp03", celes_s_falp03, 1);
2425
+ rb_define_module_function(mCeles, "fama03", celes_s_fama03, 1);
2426
+ rb_define_module_function(mCeles, "fame03", celes_s_fame03, 1);
2427
+ rb_define_module_function(mCeles, "fane03", celes_s_fane03, 1);
2428
+ rb_define_module_function(mCeles, "faom03", celes_s_faom03, 1);
2429
+ rb_define_module_function(mCeles, "fapa03", celes_s_fapa03, 1);
2430
+ rb_define_module_function(mCeles, "fasa03", celes_s_fasa03, 1);
2431
+ rb_define_module_function(mCeles, "faur03", celes_s_faur03, 1);
2432
+ rb_define_module_function(mCeles, "fave03", celes_s_fave03, 1);
2433
+
2434
+ rb_define_module_function(mCeles, "pvstar", celes_s_pvstar, 1);
2435
+ rb_define_module_function(mCeles, "starpv", celes_s_starpv, 6);
2436
+
2437
+ rb_define_module_function(mCeles, "fk52h", celes_s_fk52h, 6);
2438
+ rb_define_module_function(mCeles, "fk5hip", celes_s_fk5hip, 0);
2439
+ rb_define_module_function(mCeles, "fk5hz", celes_s_fk5hz, 4);
2440
+ rb_define_module_function(mCeles, "h2fk5", celes_s_h2fk5, 6);
2441
+ rb_define_module_function(mCeles, "hfk5z", celes_s_hfk5z, 4);
2442
+ rb_define_module_function(mCeles, "starpm", celes_s_starpm, 10);
2443
+
2444
+ rb_define_module_function(mCeles, "eform", celes_s_eform, 1);
2445
+ rb_define_module_function(mCeles, "gc2gd", celes_s_gc2gd, 2);
2446
+ rb_define_module_function(mCeles, "gc2gde", celes_s_gc2gde, 3);
2447
+ rb_define_module_function(mCeles, "gd2gc", celes_s_gd2gc, 4);
2448
+ rb_define_module_function(mCeles, "gd2gce", celes_s_gd2gce, 5);
2449
+
2450
+ rb_define_const(mCeles, "DPI", DBL2NUM(DPI));
2451
+ rb_define_const(mCeles, "D2PI", DBL2NUM(D2PI));
2452
+ rb_define_const(mCeles, "DD2R", DBL2NUM(DD2R));
2453
+ rb_define_const(mCeles, "DR2AS", DBL2NUM(DR2AS));
2454
+ rb_define_const(mCeles, "DAS2R", DBL2NUM(DAS2R));
2455
+ rb_define_const(mCeles, "DS2R", DBL2NUM(DS2R));
2456
+ rb_define_const(mCeles, "TURNAS", DBL2NUM(TURNAS));
2457
+ rb_define_const(mCeles, "DMAS2R", DBL2NUM(DMAS2R));
2458
+ rb_define_const(mCeles, "DTY", DBL2NUM(DTY));
2459
+ rb_define_const(mCeles, "DAYSEC", DBL2NUM(DAYSEC));
2460
+ rb_define_const(mCeles, "DJY", DBL2NUM(DJY));
2461
+ rb_define_const(mCeles, "DJC", DBL2NUM(DJC));
2462
+ rb_define_const(mCeles, "DJM", DBL2NUM(DJM));
2463
+ rb_define_const(mCeles, "DJ00", DBL2NUM(DJ00));
2464
+ rb_define_const(mCeles, "DJM0", DBL2NUM(DJM0));
2465
+ rb_define_const(mCeles, "DJM00", DBL2NUM(DJM00));
2466
+ rb_define_const(mCeles, "DJM77", DBL2NUM(DJM77));
2467
+ rb_define_const(mCeles, "TTMTAI", DBL2NUM(TTMTAI));
2468
+ rb_define_const(mCeles, "DAU", DBL2NUM(DAU));
2469
+ rb_define_const(mCeles, "DC", DBL2NUM(DC));
2470
+ rb_define_const(mCeles, "ELG", DBL2NUM(ELG));
2471
+ rb_define_const(mCeles, "ELB", DBL2NUM(ELB));
2472
+ rb_define_const(mCeles, "TDB0", DBL2NUM(TDB0));
2473
+ rb_define_const(mCeles, "WGS84", INT2NUM(WGS84));
2474
+ rb_define_const(mCeles, "GRS80", INT2NUM(GRS80));
2475
+ rb_define_const(mCeles, "WGS72", INT2NUM(WGS72));
2476
+ }
2477
+
2478
+
2479
+
2480
+
2481
+ /*----------------------------------------------------------------------
2482
+ **
2483
+ ** Celes is a wrapper of the SOFA Library for Ruby.
2484
+ **
2485
+ **
2486
+ **
2487
+ **
2488
+ **
2489
+ ** Copyright (C) 2013, Naoki Arita
2490
+ ** All rights reserved.
2491
+ **
2492
+ ** Redistribution and use in source and binary forms, with or without
2493
+ ** modification, are permitted provided that the following conditions
2494
+ ** are met:
2495
+ **
2496
+ ** 1 Redistributions of source code must retain the above copyright
2497
+ ** notice, this list of conditions and the following disclaimer.
2498
+ **
2499
+ ** 2 Redistributions in binary form must reproduce the above copyright
2500
+ ** notice, this list of conditions and the following disclaimer in
2501
+ ** the documentation and/or other materials provided with the
2502
+ ** distribution.
2503
+ **
2504
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
2505
+ ** the International Astronomical Union nor the names of its
2506
+ ** contributors may be used to endorse or promote products derived
2507
+ ** from this software without specific prior written permission.
2508
+ **
2509
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2510
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2511
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
2512
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
2513
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
2514
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
2515
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2516
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
2517
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2518
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
2519
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2520
+ ** POSSIBILITY OF SUCH DAMAGE.
2521
+ **
2522
+ **--------------------------------------------------------------------*/