celes 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +32 -0
  4. data/README.md +179 -0
  5. data/Rakefile +1 -0
  6. data/celes.gemspec +22 -0
  7. data/ext/celes/a2af.c +120 -0
  8. data/ext/celes/a2tf.c +116 -0
  9. data/ext/celes/af2a.c +107 -0
  10. data/ext/celes/anp.c +82 -0
  11. data/ext/celes/anpm.c +82 -0
  12. data/ext/celes/bi00.c +116 -0
  13. data/ext/celes/bp00.c +173 -0
  14. data/ext/celes/bp06.c +136 -0
  15. data/ext/celes/bpn2xy.c +100 -0
  16. data/ext/celes/c2i00a.c +139 -0
  17. data/ext/celes/c2i00b.c +139 -0
  18. data/ext/celes/c2i06a.c +136 -0
  19. data/ext/celes/c2ibpn.c +142 -0
  20. data/ext/celes/c2ixy.c +131 -0
  21. data/ext/celes/c2ixys.c +123 -0
  22. data/ext/celes/c2s.c +96 -0
  23. data/ext/celes/c2t00a.c +154 -0
  24. data/ext/celes/c2t00b.c +150 -0
  25. data/ext/celes/c2t06a.c +152 -0
  26. data/ext/celes/c2tcio.c +122 -0
  27. data/ext/celes/c2teqx.c +122 -0
  28. data/ext/celes/c2tpe.c +167 -0
  29. data/ext/celes/c2txy.c +159 -0
  30. data/ext/celes/cal2jd.c +139 -0
  31. data/ext/celes/celes_core.c +2522 -0
  32. data/ext/celes/cp.c +80 -0
  33. data/ext/celes/cpv.c +82 -0
  34. data/ext/celes/cr.c +83 -0
  35. data/ext/celes/d2dtf.c +206 -0
  36. data/ext/celes/d2tf.c +160 -0
  37. data/ext/celes/dat.c +289 -0
  38. data/ext/celes/depend +25 -0
  39. data/ext/celes/dtdb.c +1213 -0
  40. data/ext/celes/dtf2d.c +196 -0
  41. data/ext/celes/ee00.c +128 -0
  42. data/ext/celes/ee00a.c +135 -0
  43. data/ext/celes/ee00b.c +141 -0
  44. data/ext/celes/ee06a.c +122 -0
  45. data/ext/celes/eect00.c +282 -0
  46. data/ext/celes/eform.c +147 -0
  47. data/ext/celes/eo06a.c +131 -0
  48. data/ext/celes/eors.c +108 -0
  49. data/ext/celes/epb.c +96 -0
  50. data/ext/celes/epb2jd.c +91 -0
  51. data/ext/celes/epj.c +93 -0
  52. data/ext/celes/epj2jd.c +91 -0
  53. data/ext/celes/epv00.c +2589 -0
  54. data/ext/celes/eqeq94.c +131 -0
  55. data/ext/celes/era00.c +136 -0
  56. data/ext/celes/extconf.rb +4 -0
  57. data/ext/celes/fad03.c +103 -0
  58. data/ext/celes/fae03.c +102 -0
  59. data/ext/celes/faf03.c +106 -0
  60. data/ext/celes/faju03.c +102 -0
  61. data/ext/celes/fal03.c +103 -0
  62. data/ext/celes/falp03.c +103 -0
  63. data/ext/celes/fama03.c +102 -0
  64. data/ext/celes/fame03.c +102 -0
  65. data/ext/celes/fane03.c +99 -0
  66. data/ext/celes/faom03.c +104 -0
  67. data/ext/celes/fapa03.c +103 -0
  68. data/ext/celes/fasa03.c +102 -0
  69. data/ext/celes/faur03.c +99 -0
  70. data/ext/celes/fave03.c +102 -0
  71. data/ext/celes/fk52h.c +143 -0
  72. data/ext/celes/fk5hip.c +126 -0
  73. data/ext/celes/fk5hz.c +160 -0
  74. data/ext/celes/fw2m.c +134 -0
  75. data/ext/celes/fw2xy.c +120 -0
  76. data/ext/celes/gc2gd.c +134 -0
  77. data/ext/celes/gc2gde.c +200 -0
  78. data/ext/celes/gd2gc.c +134 -0
  79. data/ext/celes/gd2gce.c +138 -0
  80. data/ext/celes/gmst00.c +145 -0
  81. data/ext/celes/gmst06.c +136 -0
  82. data/ext/celes/gmst82.c +151 -0
  83. data/ext/celes/gst00a.c +138 -0
  84. data/ext/celes/gst00b.c +146 -0
  85. data/ext/celes/gst06.c +140 -0
  86. data/ext/celes/gst06a.c +131 -0
  87. data/ext/celes/gst94.c +131 -0
  88. data/ext/celes/h2fk5.c +148 -0
  89. data/ext/celes/hfk5z.c +175 -0
  90. data/ext/celes/ir.c +83 -0
  91. data/ext/celes/jd2cal.c +155 -0
  92. data/ext/celes/jdcalf.c +161 -0
  93. data/ext/celes/num00a.c +121 -0
  94. data/ext/celes/num00b.c +121 -0
  95. data/ext/celes/num06a.c +125 -0
  96. data/ext/celes/numat.c +109 -0
  97. data/ext/celes/nut00a.c +2047 -0
  98. data/ext/celes/nut00b.c +372 -0
  99. data/ext/celes/nut06a.c +153 -0
  100. data/ext/celes/nut80.c +325 -0
  101. data/ext/celes/nutm80.c +117 -0
  102. data/ext/celes/obl06.c +118 -0
  103. data/ext/celes/obl80.c +118 -0
  104. data/ext/celes/p06e.c +321 -0
  105. data/ext/celes/p2pv.c +83 -0
  106. data/ext/celes/p2s.c +91 -0
  107. data/ext/celes/pap.c +139 -0
  108. data/ext/celes/pas.c +96 -0
  109. data/ext/celes/pb06.c +144 -0
  110. data/ext/celes/pdp.c +84 -0
  111. data/ext/celes/pfw06.c +165 -0
  112. data/ext/celes/plan94.c +514 -0
  113. data/ext/celes/pm.c +83 -0
  114. data/ext/celes/pmat00.c +118 -0
  115. data/ext/celes/pmat06.c +122 -0
  116. data/ext/celes/pmat76.c +141 -0
  117. data/ext/celes/pmp.c +85 -0
  118. data/ext/celes/pn.c +109 -0
  119. data/ext/celes/pn00.c +177 -0
  120. data/ext/celes/pn00a.c +162 -0
  121. data/ext/celes/pn00b.c +162 -0
  122. data/ext/celes/pn06.c +187 -0
  123. data/ext/celes/pn06a.c +152 -0
  124. data/ext/celes/pnm00a.c +121 -0
  125. data/ext/celes/pnm00b.c +121 -0
  126. data/ext/celes/pnm06a.c +124 -0
  127. data/ext/celes/pnm80.c +126 -0
  128. data/ext/celes/pom00.c +115 -0
  129. data/ext/celes/ppp.c +85 -0
  130. data/ext/celes/ppsp.c +94 -0
  131. data/ext/celes/pr00.c +142 -0
  132. data/ext/celes/prec76.c +148 -0
  133. data/ext/celes/pv2p.c +81 -0
  134. data/ext/celes/pv2s.c +144 -0
  135. data/ext/celes/pvdpv.c +102 -0
  136. data/ext/celes/pvm.c +86 -0
  137. data/ext/celes/pvmpv.c +87 -0
  138. data/ext/celes/pvppv.c +87 -0
  139. data/ext/celes/pvstar.c +207 -0
  140. data/ext/celes/pvu.c +93 -0
  141. data/ext/celes/pvup.c +88 -0
  142. data/ext/celes/pvxpv.c +107 -0
  143. data/ext/celes/pxp.c +94 -0
  144. data/ext/celes/rm2v.c +111 -0
  145. data/ext/celes/rv2m.c +118 -0
  146. data/ext/celes/rx.c +110 -0
  147. data/ext/celes/rxp.c +99 -0
  148. data/ext/celes/rxpv.c +86 -0
  149. data/ext/celes/rxr.c +99 -0
  150. data/ext/celes/ry.c +110 -0
  151. data/ext/celes/rz.c +110 -0
  152. data/ext/celes/s00.c +371 -0
  153. data/ext/celes/s00a.c +143 -0
  154. data/ext/celes/s00b.c +143 -0
  155. data/ext/celes/s06.c +368 -0
  156. data/ext/celes/s06a.c +145 -0
  157. data/ext/celes/s2c.c +85 -0
  158. data/ext/celes/s2p.c +88 -0
  159. data/ext/celes/s2pv.c +103 -0
  160. data/ext/celes/s2xpv.c +87 -0
  161. data/ext/celes/sepp.c +105 -0
  162. data/ext/celes/seps.c +93 -0
  163. data/ext/celes/sofa.h +379 -0
  164. data/ext/celes/sofam.h +155 -0
  165. data/ext/celes/sp00.c +118 -0
  166. data/ext/celes/starpm.c +205 -0
  167. data/ext/celes/starpv.c +264 -0
  168. data/ext/celes/sxp.c +84 -0
  169. data/ext/celes/sxpv.c +85 -0
  170. data/ext/celes/taitt.c +110 -0
  171. data/ext/celes/taiut1.c +112 -0
  172. data/ext/celes/taiutc.c +182 -0
  173. data/ext/celes/tcbtdb.c +132 -0
  174. data/ext/celes/tcgtt.c +109 -0
  175. data/ext/celes/tdbtcb.c +137 -0
  176. data/ext/celes/tdbtt.c +122 -0
  177. data/ext/celes/tf2a.c +107 -0
  178. data/ext/celes/tf2d.c +107 -0
  179. data/ext/celes/tr.c +93 -0
  180. data/ext/celes/trxp.c +93 -0
  181. data/ext/celes/trxpv.c +93 -0
  182. data/ext/celes/tttai.c +110 -0
  183. data/ext/celes/tttcg.c +112 -0
  184. data/ext/celes/tttdb.c +121 -0
  185. data/ext/celes/ttut1.c +110 -0
  186. data/ext/celes/ut1tai.c +111 -0
  187. data/ext/celes/ut1tt.c +110 -0
  188. data/ext/celes/ut1utc.c +193 -0
  189. data/ext/celes/utctai.c +163 -0
  190. data/ext/celes/utcut1.c +151 -0
  191. data/ext/celes/xy06.c +2758 -0
  192. data/ext/celes/xys00a.c +133 -0
  193. data/ext/celes/xys00b.c +133 -0
  194. data/ext/celes/xys06a.c +133 -0
  195. data/ext/celes/zp.c +77 -0
  196. data/ext/celes/zpv.c +79 -0
  197. data/ext/celes/zr.c +83 -0
  198. data/lib/celes.rb +6 -0
  199. data/lib/celes/version.rb +3 -0
  200. data/sofa_20120301.diff +31384 -0
  201. data/test/t_sofa.rb +8228 -0
  202. metadata +251 -0
@@ -0,0 +1,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
+ **--------------------------------------------------------------------*/