carray 1.3.6 → 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (315) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +32 -0
  3. data/LICENSE +22 -0
  4. data/NEWS.md +65 -0
  5. data/README.md +23 -26
  6. data/Rakefile +31 -0
  7. data/TODO.md +17 -0
  8. data/carray.gemspec +24 -31
  9. data/{ca_iter_block.c → ext/ca_iter_block.c} +16 -18
  10. data/{ca_iter_dimension.c → ext/ca_iter_dimension.c} +20 -21
  11. data/{ca_iter_window.c → ext/ca_iter_window.c} +12 -14
  12. data/{ca_obj_array.c → ext/ca_obj_array.c} +451 -176
  13. data/{ca_obj_bitarray.c → ext/ca_obj_bitarray.c} +18 -23
  14. data/{ca_obj_bitfield.c → ext/ca_obj_bitfield.c} +12 -16
  15. data/{ca_obj_block.c → ext/ca_obj_block.c} +47 -54
  16. data/{ca_obj_fake.c → ext/ca_obj_fake.c} +10 -12
  17. data/{ca_obj_farray.c → ext/ca_obj_farray.c} +21 -23
  18. data/{ca_obj_field.c → ext/ca_obj_field.c} +30 -32
  19. data/{ca_obj_grid.c → ext/ca_obj_grid.c} +32 -33
  20. data/{ca_obj_mapping.c → ext/ca_obj_mapping.c} +11 -13
  21. data/{ca_obj_object.c → ext/ca_obj_object.c} +40 -42
  22. data/{ca_obj_reduce.c → ext/ca_obj_reduce.c} +3 -5
  23. data/{ca_obj_refer.c → ext/ca_obj_refer.c} +38 -40
  24. data/{ca_obj_repeat.c → ext/ca_obj_repeat.c} +45 -47
  25. data/{ca_obj_select.c → ext/ca_obj_select.c} +4 -6
  26. data/{ca_obj_shift.c → ext/ca_obj_shift.c} +26 -28
  27. data/{ca_obj_transpose.c → ext/ca_obj_transpose.c} +26 -28
  28. data/{ca_obj_unbound_repeat.c → ext/ca_obj_unbound_repeat.c} +106 -160
  29. data/{ca_obj_window.c → ext/ca_obj_window.c} +33 -35
  30. data/{carray.h → ext/carray.h} +90 -59
  31. data/{carray_access.c → ext/carray_access.c} +244 -109
  32. data/{carray_attribute.c → ext/carray_attribute.c} +161 -207
  33. data/{carray_call_cfunc.c → ext/carray_call_cfunc.c} +1 -3
  34. data/{carray_cast.c → ext/carray_cast.c} +350 -149
  35. data/{carray_cast_func.rb → ext/carray_cast_func.rb} +1 -2
  36. data/{carray_class.c → ext/carray_class.c} +28 -36
  37. data/{carray_conversion.c → ext/carray_conversion.c} +58 -70
  38. data/{carray_copy.c → ext/carray_copy.c} +34 -50
  39. data/{carray_core.c → ext/carray_core.c} +75 -62
  40. data/ext/carray_data_type.c +66 -0
  41. data/{carray_element.c → ext/carray_element.c} +34 -53
  42. data/{carray_generate.c → ext/carray_generate.c} +137 -50
  43. data/{carray_iterator.c → ext/carray_iterator.c} +53 -53
  44. data/{carray_loop.c → ext/carray_loop.c} +77 -106
  45. data/{carray_mask.c → ext/carray_mask.c} +95 -114
  46. data/{carray_math.rb → ext/carray_math.rb} +47 -31
  47. data/ext/{mathfunc/carray_mathfunc.c → carray_mathfunc.c} +1 -3
  48. data/{carray_numeric.c → ext/carray_numeric.c} +43 -46
  49. data/{carray_operator.c → ext/carray_operator.c} +72 -36
  50. data/{carray_order.c → ext/carray_order.c} +73 -217
  51. data/{carray_sort_addr.c → ext/carray_sort_addr.c} +14 -21
  52. data/{carray_stat.c → ext/carray_stat.c} +6 -8
  53. data/{carray_stat_proc.rb → ext/carray_stat_proc.rb} +25 -27
  54. data/{carray_test.c → ext/carray_test.c} +59 -51
  55. data/{carray_undef.c → ext/carray_undef.c} +1 -11
  56. data/{carray_utils.c → ext/carray_utils.c} +12 -4
  57. data/{extconf.rb → ext/extconf.rb} +1 -6
  58. data/{mkmath.rb → ext/mkmath.rb} +13 -3
  59. data/{ruby_carray.c → ext/ruby_carray.c} +20 -8
  60. data/{ruby_ccomplex.c → ext/ruby_ccomplex.c} +1 -3
  61. data/{ruby_float_func.c → ext/ruby_float_func.c} +1 -3
  62. data/ext/version.h +16 -0
  63. data/{version.rb → ext/version.rb} +0 -0
  64. data/lib/carray.rb +52 -10
  65. data/lib/carray/{base/autoload.rb → autoload.rb} +48 -8
  66. data/lib/carray/autoload/autoload_base.rb +1 -5
  67. data/lib/carray/autoload/autoload_gem_cairo.rb +9 -0
  68. data/lib/carray/autoload/autoload_gem_ffi.rb +9 -0
  69. data/lib/carray/autoload/autoload_gem_gnuplot.rb +2 -0
  70. data/lib/carray/autoload/autoload_gem_io_csv.rb +14 -0
  71. data/lib/carray/autoload/autoload_gem_io_pg.rb +6 -0
  72. data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +12 -0
  73. data/lib/carray/autoload/autoload_gem_narray.rb +10 -0
  74. data/lib/carray/autoload/autoload_gem_numo_narray.rb +15 -0
  75. data/lib/carray/autoload/autoload_gem_opencv.rb +16 -0
  76. data/lib/carray/autoload/autoload_gem_random.rb +8 -0
  77. data/lib/carray/autoload/autoload_gem_rmagick.rb +23 -0
  78. data/lib/carray/autoload/{autoload_graphics_zimg.rb → autoload_gem_zimg.rb} +0 -0
  79. data/lib/carray/basic.rb +191 -0
  80. data/lib/carray/broadcast.rb +82 -0
  81. data/lib/carray/compose.rb +315 -0
  82. data/lib/carray/construct.rb +460 -0
  83. data/lib/carray/convert.rb +115 -0
  84. data/lib/carray/info.rb +1 -3
  85. data/lib/carray/{base/inspect.rb → inspect.rb} +9 -11
  86. data/lib/carray/io/imagemagick.rb +2 -4
  87. data/lib/carray/{base/iterator.rb → iterator.rb} +6 -6
  88. data/lib/carray/mask.rb +102 -0
  89. data/lib/carray/{base/math.rb → math.rb} +21 -53
  90. data/lib/carray/math/histogram.rb +8 -10
  91. data/lib/carray/math/recurrence.rb +1 -3
  92. data/lib/carray/mkmf.rb +9 -3
  93. data/lib/carray/object/ca_obj_iterator.rb +1 -3
  94. data/lib/carray/object/ca_obj_link.rb +1 -3
  95. data/lib/carray/object/ca_obj_pack.rb +9 -11
  96. data/lib/carray/obsolete.rb +270 -0
  97. data/lib/carray/ordering.rb +181 -0
  98. data/lib/carray/{base/serialize.rb → serialize.rb} +50 -66
  99. data/lib/carray/string.rb +188 -0
  100. data/lib/carray/{base/struct.rb → struct.rb} +19 -21
  101. data/lib/carray/{io/table.rb → table.rb} +1 -9
  102. data/lib/carray/testing.rb +51 -0
  103. data/lib/carray/time.rb +76 -0
  104. data/lib/carray/transform.rb +98 -0
  105. data/misc/Methods.ja.md +182 -0
  106. data/{NOTE → misc/NOTE} +0 -0
  107. data/spec/Classes/CABitfield_spec.rb +58 -0
  108. data/spec/Classes/CABlockIterator_spec.rb +114 -0
  109. data/spec/Classes/CABlock_spec.rb +205 -0
  110. data/spec/Classes/CAField_spec.rb +39 -0
  111. data/spec/Classes/CAGrid_spec.rb +75 -0
  112. data/spec/Classes/CAMap_spec.rb +0 -0
  113. data/{test/test_CAMapping.rb → spec/Classes/CAMapping_spec.rb} +35 -36
  114. data/spec/Classes/CAObject_attribute_spec.rb +33 -0
  115. data/spec/Classes/CAObject_spec.rb +33 -0
  116. data/spec/Classes/CARefer_spec.rb +93 -0
  117. data/spec/Classes/CARepeat_spec.rb +65 -0
  118. data/spec/Classes/CASelect_spec.rb +22 -0
  119. data/spec/Classes/CAShift_spec.rb +16 -0
  120. data/spec/Classes/CAStruct_spec.rb +71 -0
  121. data/{test/test_CATranspose.rb → spec/Classes/CATranspose_spec.rb} +20 -21
  122. data/spec/Classes/CAUnboudRepeat_spec.rb +102 -0
  123. data/spec/Classes/CAWindow_spec.rb +54 -0
  124. data/spec/Classes/CAWrap_spec.rb +8 -0
  125. data/{test/test_CArray.rb → spec/Classes/CArray_spec.rb} +48 -92
  126. data/spec/Classes/CScalar_spec.rb +55 -0
  127. data/spec/Features/feature_130_spec.rb +19 -0
  128. data/spec/Features/feature_attributes_spec.rb +280 -0
  129. data/spec/Features/feature_boolean_spec.rb +98 -0
  130. data/spec/Features/feature_broadcast.rb +116 -0
  131. data/spec/Features/feature_cast_function.rb +19 -0
  132. data/spec/Features/feature_cast_spec.rb +33 -0
  133. data/spec/Features/feature_class_spec.rb +84 -0
  134. data/spec/Features/feature_complex_spec.rb +42 -0
  135. data/{test/test_composite.rb → spec/Features/feature_composite_spec.rb} +17 -18
  136. data/spec/Features/feature_convert_spec.rb +46 -0
  137. data/spec/Features/feature_copy_spec.rb +123 -0
  138. data/spec/Features/feature_creation_spec.rb +84 -0
  139. data/spec/Features/feature_element_spec.rb +144 -0
  140. data/spec/Features/feature_extream_spec.rb +54 -0
  141. data/spec/Features/feature_generate_spec.rb +74 -0
  142. data/spec/Features/feature_index_spec.rb +69 -0
  143. data/spec/Features/feature_mask_spec.rb +580 -0
  144. data/spec/Features/feature_math_spec.rb +97 -0
  145. data/spec/Features/feature_order_spec.rb +146 -0
  146. data/spec/Features/feature_ref_store_spec.rb +209 -0
  147. data/spec/Features/feature_serialization_spec.rb +125 -0
  148. data/spec/Features/feature_stat_spec.rb +397 -0
  149. data/spec/Features/feature_virtual_spec.rb +48 -0
  150. data/spec/Features/method_eq_spec.rb +81 -0
  151. data/spec/Features/method_is_nan_spec.rb +12 -0
  152. data/spec/Features/method_map_spec.rb +54 -0
  153. data/spec/Features/method_max_with.rb +20 -0
  154. data/spec/Features/method_min_with.rb +19 -0
  155. data/spec/Features/method_ne_spec.rb +18 -0
  156. data/spec/Features/method_project_spec.rb +188 -0
  157. data/spec/Features/method_ref_spec.rb +27 -0
  158. data/spec/Features/method_round_spec.rb +11 -0
  159. data/spec/Features/method_s_linspace_spec.rb +48 -0
  160. data/spec/Features/method_s_span_spec.rb +14 -0
  161. data/spec/Features/method_seq_spec.rb +47 -0
  162. data/spec/Features/method_sort_with.rb +43 -0
  163. data/spec/Features/method_sorted_with.rb +29 -0
  164. data/spec/Features/method_span_spec.rb +42 -0
  165. data/spec/Features/method_wrap_readonly_spec.rb +43 -0
  166. data/{test → spec/UnitTest}/test_CAVirtual.rb +0 -0
  167. data/spec/spec_all.rb +0 -1
  168. data/utils/convert_test.rb +73 -0
  169. data/utils/{extract_rdoc.rb → extract_yard.rb} +7 -12
  170. data/{devel → utils}/guess_shape.rb +0 -0
  171. data/utils/{diff_method.rb → monkey_patch_methods.rb} +17 -7
  172. metadata +173 -316
  173. data/COPYING +0 -56
  174. data/GPL +0 -340
  175. data/Gemfile +0 -8
  176. data/Gemfile.lock +0 -33
  177. data/LEGAL +0 -50
  178. data/Makefile +0 -451
  179. data/TODO +0 -5
  180. data/carray_cast_func.c +0 -8670
  181. data/carray_config.h +0 -26
  182. data/carray_math.c +0 -24805
  183. data/carray_random.c +0 -531
  184. data/carray_stat_proc.c +0 -12170
  185. data/ext/calculus/carray_calculus.c +0 -931
  186. data/ext/calculus/carray_interp.c +0 -358
  187. data/ext/calculus/extconf.rb +0 -12
  188. data/ext/calculus/lib/autoload/autoload_math_calculus.rb +0 -2
  189. data/ext/calculus/lib/math/calculus.rb +0 -119
  190. data/ext/calculus/lib/math/interp/adapter_interp1d.rb +0 -31
  191. data/ext/fortio/extconf.rb +0 -3
  192. data/ext/fortio/lib/carray/autoload/autoload_fortran_format.rb +0 -5
  193. data/ext/fortio/lib/carray/io/fortran_format.rb +0 -43
  194. data/ext/fortio/lib/fortio.rb +0 -3
  195. data/ext/fortio/lib/fortio/fortran_format.rb +0 -605
  196. data/ext/fortio/lib/fortio/fortran_format.tab.rb +0 -536
  197. data/ext/fortio/lib/fortio/fortran_format.y +0 -215
  198. data/ext/fortio/lib/fortio/fortran_namelist.rb +0 -151
  199. data/ext/fortio/lib/fortio/fortran_namelist.tab.rb +0 -470
  200. data/ext/fortio/lib/fortio/fortran_namelist.y +0 -213
  201. data/ext/fortio/lib/fortio/fortran_sequential.rb +0 -345
  202. data/ext/fortio/ruby_fortio.c +0 -182
  203. data/ext/fortio/test/test_H.rb +0 -5
  204. data/ext/fortio/test/test_T.rb +0 -7
  205. data/ext/fortio/test/test_fortran_format.rb +0 -86
  206. data/ext/fortio/test/test_namelist.rb +0 -25
  207. data/ext/fortio/test/test_namelist_write.rb +0 -10
  208. data/ext/fortio/test/test_sequential.rb +0 -13
  209. data/ext/fortio/test/test_sequential2.rb +0 -13
  210. data/ext/fortio/work/test.rb +0 -10
  211. data/ext/fortio/work/test_e.rb +0 -19
  212. data/ext/fortio/work/test_ep.rb +0 -10
  213. data/ext/fortio/work/test_parse.rb +0 -12
  214. data/ext/imagemap/carray_imagemap.c +0 -495
  215. data/ext/imagemap/doc/call_graph.dot +0 -28
  216. data/ext/imagemap/draw.c +0 -567
  217. data/ext/imagemap/extconf.rb +0 -13
  218. data/ext/imagemap/lib/autoload/autoload_graphics_imagemap.rb +0 -1
  219. data/ext/imagemap/lib/graphics/imagemap.rb +0 -273
  220. data/ext/imagemap/lib/image_map.rb +0 -4
  221. data/ext/imagemap/test/swath_index.rb +0 -83
  222. data/ext/imagemap/test/swath_warp.rb +0 -99
  223. data/ext/imagemap/test/test.rb +0 -23
  224. data/ext/imagemap/test/test_image.rb +0 -42
  225. data/ext/imagemap/test/test_line.rb +0 -14
  226. data/ext/imagemap/test/test_rotate.rb +0 -17
  227. data/ext/imagemap/test/test_triangle.rb +0 -20
  228. data/ext/imagemap/test/test_warp.rb +0 -26
  229. data/ext/mathfunc/extconf.rb +0 -18
  230. data/ext/mathfunc/lib/autoload/autoload_math_mathfunc.rb +0 -1
  231. data/ext/mathfunc/lib/math/mathfunc.rb +0 -15
  232. data/ext/mathfunc/test/test_hypot.rb +0 -5
  233. data/ext/mathfunc/test/test_j0.rb +0 -22
  234. data/ext/mathfunc/test/test_jn.rb +0 -8
  235. data/ext/mathfunc/test/test_sph.rb +0 -9
  236. data/ext/narray/README +0 -22
  237. data/ext/narray/ca_wrap_narray.c +0 -500
  238. data/ext/narray/carray_narray.c +0 -21
  239. data/ext/narray/extconf.rb +0 -57
  240. data/ext/narray/lib/autoload/autoload_math_narray.rb +0 -1
  241. data/ext/narray/lib/autoload/autoload_math_narray_miss.rb +0 -11
  242. data/ext/narray/lib/math/narray.rb +0 -17
  243. data/ext/narray/lib/math/narray_miss.rb +0 -45
  244. data/lib/carray/autoload/autoload_graphics_gnuplot.rb +0 -2
  245. data/lib/carray/autoload/autoload_io_csv.rb +0 -14
  246. data/lib/carray/autoload/autoload_io_pg.rb +0 -6
  247. data/lib/carray/autoload/autoload_io_sqlite3.rb +0 -12
  248. data/lib/carray/autoload/autoload_io_table.rb +0 -1
  249. data/lib/carray/autoload/autoload_math_interp.rb +0 -4
  250. data/lib/carray/base/basic.rb +0 -1090
  251. data/lib/carray/base/obsolete.rb +0 -131
  252. data/lib/carray/graphics/gnuplot.rb +0 -2131
  253. data/lib/carray/graphics/zimg.rb +0 -296
  254. data/lib/carray/io/csv.rb +0 -572
  255. data/lib/carray/io/pg.rb +0 -101
  256. data/lib/carray/io/sqlite3.rb +0 -215
  257. data/lib/carray/math/interp.rb +0 -57
  258. data/lib/carray/math/interp/adapter_gsl_spline.rb +0 -47
  259. data/mkmf.log +0 -375
  260. data/mt19937ar.c +0 -182
  261. data/mt19937ar.h +0 -86
  262. data/rdoc_ext.rb +0 -1115
  263. data/rdoc_main.rb +0 -27
  264. data/rdoc_math.rb +0 -5
  265. data/rdoc_stat.rb +0 -31
  266. data/spec/CABlockIterator/CABlockIterator_spec.rb +0 -113
  267. data/spec/CArray/bug/store_spec.rb +0 -27
  268. data/spec/CArray/index/repeat_spec.rb +0 -10
  269. data/spec/CArray/method/eq_spec.rb +0 -80
  270. data/spec/CArray/method/is_nan_spec.rb +0 -12
  271. data/spec/CArray/method/ne_spec.rb +0 -18
  272. data/spec/CArray/method/round_spec.rb +0 -11
  273. data/spec/CArray/object/_attribute_spec.rb +0 -32
  274. data/spec/CArray/object/s_new_spec.rb +0 -31
  275. data/spec/CArray/serialize/Serialization_spec.rb +0 -89
  276. data/test/test_130.rb +0 -23
  277. data/test/test_ALL.rb +0 -51
  278. data/test/test_CABitfield.rb +0 -59
  279. data/test/test_CABlock.rb +0 -208
  280. data/test/test_CAField.rb +0 -40
  281. data/test/test_CAGrid.rb +0 -76
  282. data/test/test_CAMmap.rb +0 -11
  283. data/test/test_CARefer.rb +0 -94
  284. data/test/test_CARepeat.rb +0 -66
  285. data/test/test_CASelect.rb +0 -23
  286. data/test/test_CAShift.rb +0 -17
  287. data/test/test_CAWindow.rb +0 -55
  288. data/test/test_CAWrap.rb +0 -9
  289. data/test/test_CComplex.rb +0 -83
  290. data/test/test_CScalar.rb +0 -91
  291. data/test/test_attribute.rb +0 -281
  292. data/test/test_block_iterator.rb +0 -17
  293. data/test/test_boolean.rb +0 -99
  294. data/test/test_cast.rb +0 -33
  295. data/test/test_class.rb +0 -85
  296. data/test/test_complex.rb +0 -43
  297. data/test/test_convert.rb +0 -79
  298. data/test/test_copy.rb +0 -141
  299. data/test/test_creation.rb +0 -85
  300. data/test/test_element.rb +0 -146
  301. data/test/test_extream.rb +0 -55
  302. data/test/test_generate.rb +0 -75
  303. data/test/test_index.rb +0 -71
  304. data/test/test_mask.rb +0 -578
  305. data/test/test_math.rb +0 -98
  306. data/test/test_narray.rb +0 -64
  307. data/test/test_order.rb +0 -147
  308. data/test/test_random.rb +0 -15
  309. data/test/test_ref_store.rb +0 -211
  310. data/test/test_stat.rb +0 -414
  311. data/test/test_struct.rb +0 -72
  312. data/test/test_virtual.rb +0 -49
  313. data/utils/create_rdoc.sh +0 -9
  314. data/utils/make_tgz.sh +0 -3
  315. data/version.h +0 -18
@@ -3,10 +3,8 @@
3
3
  carray_math_call.c
4
4
 
5
5
  This file is part of Ruby/CArray extension library.
6
- You can redistribute it and/or modify it under the terms of
7
- the Ruby Licence.
8
6
 
9
- Copyright (C) 2005 Hiroki Motoyoshi
7
+ Copyright (C) 2005-2020 Hiroki Motoyoshi
10
8
 
11
9
  ---------------------------------------------------------------------------- */
12
10
 
@@ -3,10 +3,8 @@
3
3
  carray_cast.c
4
4
 
5
5
  This file is part of Ruby/CArray extension library.
6
- You can redistribute it and/or modify it under the terms of
7
- the Ruby Licence.
8
6
 
9
- Copyright (C) 2005 Hiroki Motoyoshi
7
+ Copyright (C) 2005-2020 Hiroki Motoyoshi
10
8
 
11
9
  ---------------------------------------------------------------------------- */
12
10
 
@@ -240,7 +238,7 @@ rb_ca_data_class_to_object (VALUE self)
240
238
  obj = rb_cscalar_new(CA_OBJECT, 0, ca->mask);
241
239
  }
242
240
  else {
243
- obj = rb_carray_new(CA_OBJECT, ca->rank, ca->dim, 0, ca->mask);
241
+ obj = rb_carray_new(CA_OBJECT, ca->ndim, ca->dim, 0, ca->mask);
244
242
  }
245
243
 
246
244
  for (i=0; i<ca->elements; i++) {
@@ -264,7 +262,7 @@ rb_ca_object_to_data_class (VALUE self, VALUE rtype, ca_size_t bytes)
264
262
  obj = rb_cscalar_new(CA_FIXLEN, bytes, ca->mask);
265
263
  }
266
264
  else {
267
- obj = rb_carray_new(CA_FIXLEN, ca->rank, ca->dim, bytes, ca->mask);
265
+ obj = rb_carray_new(CA_FIXLEN, ca->ndim, ca->dim, bytes, ca->mask);
268
266
  }
269
267
  rb_ca_data_type_import(obj, rtype);
270
268
 
@@ -281,7 +279,11 @@ rb_ca_object_to_data_class (VALUE self, VALUE rtype, ca_size_t bytes)
281
279
  return obj;
282
280
  }
283
281
 
284
- /* CArray#to_type */
282
+ /* @overload to_type (data_type, bytes: nil)
283
+
284
+ (Conversion) Returns an array of elements that are converted
285
+ to the given data type from the object.
286
+ */
285
287
 
286
288
  static VALUE
287
289
  rb_ca_to_type_internal (int argc, VALUE *argv, VALUE self)
@@ -312,7 +314,7 @@ rb_ca_to_type_internal (int argc, VALUE *argv, VALUE self)
312
314
  obj = rb_cscalar_new(data_type, bytes, ca->mask);
313
315
  }
314
316
  else {
315
- obj = rb_carray_new(data_type, ca->rank, ca->dim, bytes, ca->mask);
317
+ obj = rb_carray_new(data_type, ca->ndim, ca->dim, bytes, ca->mask);
316
318
  }
317
319
 
318
320
  rb_ca_data_type_import(obj, rtype);
@@ -341,15 +343,15 @@ rb_ca_to_type (VALUE self, VALUE rtype, VALUE rbytes)
341
343
  return rb_ca_to_type_internal(2, args, self);
342
344
  }
343
345
 
344
- #define rb_ca_to_type_method(type, code) \
345
- rb_ca_to_## type (VALUE self) \
346
+ #define rb_ca_to_type_method_body(code) \
346
347
  { \
347
348
  VALUE rcode = INT2NUM(code); \
348
349
  return rb_ca_to_type_internal(1, &rcode, self); \
349
350
  }
350
351
 
351
- /*
352
- CArray#fixlen([:bytes=>bytes]])
352
+ /* @overload fixlen (bytes:)
353
+
354
+ (Conversion) Short-Hand of "CArray#to_type(:fixlen, bytes:)"
353
355
  */
354
356
 
355
357
  VALUE
@@ -363,57 +365,149 @@ rb_ca_to_fixlen (int argc, VALUE *argv, VALUE self)
363
365
  return rb_ca_to_type_internal(2, list, self);
364
366
  }
365
367
 
366
- VALUE rb_ca_to_type_method(boolean, CA_BOOLEAN);
367
- VALUE rb_ca_to_type_method(int8, CA_INT8);
368
- VALUE rb_ca_to_type_method(uint8, CA_UINT8);
369
- VALUE rb_ca_to_type_method(int16, CA_INT16);
370
- VALUE rb_ca_to_type_method(uint16, CA_UINT16);
371
- VALUE rb_ca_to_type_method(int32, CA_INT32);
372
- VALUE rb_ca_to_type_method(uint32, CA_UINT32);
373
- VALUE rb_ca_to_type_method(int64, CA_INT64);
374
- VALUE rb_ca_to_type_method(uint64, CA_UINT64);
375
- VALUE rb_ca_to_type_method(float32, CA_FLOAT32);
376
- VALUE rb_ca_to_type_method(float64, CA_FLOAT64);
377
- VALUE rb_ca_to_type_method(float128, CA_FLOAT128);
378
- VALUE rb_ca_to_type_method(cmplx64, CA_CMPLX64);
379
- VALUE rb_ca_to_type_method(cmplx128, CA_CMPLX128);
380
- VALUE rb_ca_to_type_method(cmplx256, CA_CMPLX256);
381
- VALUE rb_ca_to_type_method(VALUE, CA_OBJECT);
382
-
383
- /* rdoc:
384
- class CArray
385
- # call-seq:
386
- # ca.boolean
387
- # ca.int8
388
- # ca.uint8
389
- # ca.int16
390
- # ca.uint16
391
- # ca.int32
392
- # ca.uint32
393
- # ca.int64
394
- # ca.uint64
395
- # ca.float32
396
- # ca.float64
397
- # ca.float128
398
- # ca.cmplx64
399
- # ca.cmplx128
400
- # ca.cmplx256
401
- # ca.object
402
- # ca.fixlen
403
- # ca.byte
404
- # ca.short
405
- # ca.int
406
- # ca.float
407
- # ca.double
408
- # ca.complex
409
- # ca.dcomplex
410
- #
411
- # Convert to given data_type with copying values
412
- def to_type
413
- end
414
- end
368
+ /* @overload fixlen (bytes:)
369
+
370
+ (Conversion) Short-Hand of "CArray#to_type(:boolean)"
371
+ */
372
+ VALUE rb_ca_to_boolean (VALUE self)
373
+ {
374
+ rb_ca_to_type_method_body(CA_BOOLEAN);
375
+ }
376
+
377
+ /* @overload int8
378
+
379
+ (Conversion) Short-Hand of "CArray#to_type(:int8)"
380
+ */
381
+ VALUE rb_ca_to_int8 (VALUE self)
382
+ {
383
+ rb_ca_to_type_method_body(CA_INT8);
384
+ }
385
+
386
+ /* @overload uint8
387
+
388
+ (Conversion) Short-Hand of "CArray#to_type(:uint8)"
389
+ */
390
+ VALUE rb_ca_to_uint8 (VALUE self)
391
+ {
392
+ rb_ca_to_type_method_body(CA_UINT8);
393
+ }
394
+
395
+ /* @overload int16
396
+
397
+ (Conversion) Short-Hand of "CArray#to_type(:int16)"
398
+ */
399
+ VALUE rb_ca_to_int16 (VALUE self)
400
+ {
401
+ rb_ca_to_type_method_body(CA_INT16);
402
+ }
403
+
404
+ /* @overload uint16
405
+
406
+ (Conversion) Short-Hand of "CArray#to_type(:uint16)"
407
+ */
408
+ VALUE rb_ca_to_uint16 (VALUE self)
409
+ {
410
+ rb_ca_to_type_method_body(CA_UINT16);
411
+ }
412
+
413
+ /* @overload int32
414
+
415
+ (Conversion) Short-Hand of "CArray#to_type(:int32)"
416
+ */
417
+ VALUE rb_ca_to_int32 (VALUE self)
418
+ {
419
+ rb_ca_to_type_method_body(CA_INT32);
420
+ }
421
+
422
+ /* @overload uint32
423
+
424
+ (Conversion) Short-Hand of "CArray#to_type(:uint32)"
425
+ */
426
+ VALUE rb_ca_to_uint32 (VALUE self)
427
+ {
428
+ rb_ca_to_type_method_body(CA_UINT32);
429
+ }
430
+
431
+ /* @overload int64
432
+
433
+ (Conversion) Short-Hand of "CArray#to_type(:int64)"
434
+ */
435
+ VALUE rb_ca_to_int64 (VALUE self)
436
+ {
437
+ rb_ca_to_type_method_body(CA_INT64);
438
+ }
439
+
440
+ /* @overload uint64
441
+
442
+ (Conversion) Short-Hand of "CArray#to_type(:uint64)"
443
+ */
444
+ VALUE rb_ca_to_uint64 (VALUE self)
445
+ {
446
+ rb_ca_to_type_method_body(CA_UINT64);
447
+ }
448
+
449
+ /* @overload float32
450
+
451
+ (Conversion) Short-Hand of "CArray#to_type(:float32)"
452
+ */
453
+ VALUE rb_ca_to_float32 (VALUE self)
454
+ {
455
+ rb_ca_to_type_method_body(CA_FLOAT32);
456
+ }
457
+
458
+ /* @overload float64
459
+
460
+ (Conversion) Short-Hand of "CArray#to_type(:float64)"
461
+ */
462
+ VALUE rb_ca_to_float64 (VALUE self)
463
+ {
464
+ rb_ca_to_type_method_body(CA_FLOAT64);
465
+ }
466
+
467
+ /* @overload float128
468
+
469
+ (Conversion) Short-Hand of "CArray#to_type(:float128)"
470
+ */
471
+ VALUE rb_ca_to_float128 (VALUE self)
472
+ {
473
+ rb_ca_to_type_method_body(CA_FLOAT128);
474
+ }
475
+
476
+ /* @overload cmplx64
477
+
478
+ (Conversion) Short-Hand of "CArray#to_type(:cmplx64)"
479
+ */
480
+ VALUE rb_ca_to_cmplx64 (VALUE self)
481
+ {
482
+ rb_ca_to_type_method_body(CA_CMPLX64);
483
+ }
484
+
485
+ /* @overload cmplx128
486
+
487
+ (Conversion) Short-Hand of "CArray#to_type(:cmplx128)"
415
488
  */
489
+ VALUE rb_ca_to_cmplx128 (VALUE self)
490
+ {
491
+ rb_ca_to_type_method_body(CA_CMPLX128);
492
+ }
493
+
494
+ /* @overload cmplx256
495
+
496
+ (Conversion) Short-Hand of "CArray#to_type(:cmplx256)"
497
+ */
498
+ VALUE rb_ca_to_cmplx256 (VALUE self)
499
+ {
500
+ rb_ca_to_type_method_body(CA_CMPLX256);
501
+ }
502
+
503
+ /* @overload object
416
504
 
505
+ (Conversion) Short-Hand of "CArray#to_type(:object)"
506
+ */
507
+ VALUE rb_ca_to_VALUE (VALUE self)
508
+ {
509
+ rb_ca_to_type_method_body(CA_OBJECT);
510
+ }
417
511
 
418
512
  /* ------------------------------------------------------------------------*/
419
513
 
@@ -445,6 +539,11 @@ rb_ca_as_type_internal (int argc, VALUE *argv, VALUE self)
445
539
  return obj;
446
540
  }
447
541
 
542
+ /* @overload as_type (data_type, bytes: nil)
543
+
544
+ (Reference) Creates CAFake object of the given data type refers to the object.
545
+ */
546
+
448
547
  VALUE
449
548
  rb_ca_as_type (VALUE self, VALUE rtype, VALUE rbytes)
450
549
  {
@@ -454,17 +553,16 @@ rb_ca_as_type (VALUE self, VALUE rtype, VALUE rbytes)
454
553
  return rb_ca_as_type_internal(2, args, self);
455
554
  }
456
555
 
457
- #define rb_ca_as_type_method(type, code) \
458
- rb_ca_as_## type (VALUE self) \
556
+ #define rb_ca_as_type_method_body(code) \
459
557
  { \
460
558
  VALUE rcode = INT2NUM(code); \
461
559
  return rb_ca_as_type_internal(1, &rcode, self); \
462
560
  }
463
561
 
464
- /*
465
- CArray#as_fixlen([:bytes=>bytes]])
466
- */
562
+ /* @overload as_fixlen (bytes: nil)
467
563
 
564
+ (Reference) Short-Hand of `CArray#as_type(:fixlen, bytes: nil)`
565
+ */
468
566
  VALUE
469
567
  rb_ca_as_fixlen (int argc, VALUE *argv, VALUE self)
470
568
  {
@@ -476,56 +574,149 @@ rb_ca_as_fixlen (int argc, VALUE *argv, VALUE self)
476
574
  return rb_ca_as_type_internal(2, list, self);
477
575
  }
478
576
 
479
- VALUE rb_ca_as_type_method(boolean, CA_BOOLEAN);
480
- VALUE rb_ca_as_type_method(int8, CA_INT8);
481
- VALUE rb_ca_as_type_method(uint8, CA_UINT8);
482
- VALUE rb_ca_as_type_method(int16, CA_INT16);
483
- VALUE rb_ca_as_type_method(uint16, CA_UINT16);
484
- VALUE rb_ca_as_type_method(int32, CA_INT32);
485
- VALUE rb_ca_as_type_method(uint32, CA_UINT32);
486
- VALUE rb_ca_as_type_method(int64, CA_INT64);
487
- VALUE rb_ca_as_type_method(uint64, CA_UINT64);
488
- VALUE rb_ca_as_type_method(float32, CA_FLOAT32);
489
- VALUE rb_ca_as_type_method(float64, CA_FLOAT64);
490
- VALUE rb_ca_as_type_method(float128, CA_FLOAT128);
491
- VALUE rb_ca_as_type_method(cmplx64, CA_CMPLX64);
492
- VALUE rb_ca_as_type_method(cmplx128, CA_CMPLX128);
493
- VALUE rb_ca_as_type_method(cmplx256, CA_CMPLX256);
494
- VALUE rb_ca_as_type_method(VALUE, CA_OBJECT);
495
-
496
-
497
- /* rdoc:
498
- class CArray
499
- # call-seq:
500
- # ca.as_int8
501
- # ca.as_uint8
502
- # ca.as_int16
503
- # ca.as_uint16
504
- # ca.as_int32
505
- # ca.as_uint32
506
- # ca.as_int64
507
- # ca.as_uint64
508
- # ca.as_float32
509
- # ca.as_float64
510
- # ca.as_float128
511
- # ca.as_cmplx64
512
- # ca.as_cmplx128
513
- # ca.as_cmplx256
514
- # ca.as_object
515
- # ca.as_byte
516
- # ca.as_short
517
- # ca.as_int
518
- # ca.as_float
519
- # ca.as_double
520
- # ca.as_complex
521
- # ca.as_dcomplex
522
- #
523
- # Fakes data_type
524
- def as_type
525
- end
526
- end
577
+ /* @overload as_boolean
578
+
579
+ (Reference) Short-Hand of `CArray#as_type(:boolean)`
580
+ */
581
+ VALUE rb_ca_as_boolean (VALUE self)
582
+ {
583
+ rb_ca_as_type_method_body(CA_BOOLEAN);
584
+ }
585
+
586
+ /* @overload as_int8
587
+
588
+ (Reference) Short-Hand of `CArray#as_type(:int8)`
589
+ */
590
+ VALUE rb_ca_as_int8 (VALUE self)
591
+ {
592
+ rb_ca_as_type_method_body(CA_INT8);
593
+ }
594
+
595
+ /* @overload as_uint8
596
+
597
+ (Reference) Short-Hand of `CArray#as_type(:uint8)`
598
+ */
599
+ VALUE rb_ca_as_uint8 (VALUE self)
600
+ {
601
+ rb_ca_as_type_method_body(CA_UINT8);
602
+ }
603
+
604
+ /* @overload as_int16
605
+
606
+ (Reference) Short-Hand of `CArray#as_type(:int16)`
607
+ */
608
+ VALUE rb_ca_as_int16 (VALUE self)
609
+ {
610
+ rb_ca_as_type_method_body(CA_INT16);
611
+ }
612
+
613
+ /* @overload as_uint16
614
+
615
+ (Reference) Short-Hand of `CArray#as_type(:uint16)`
616
+ */
617
+ VALUE rb_ca_as_uint16 (VALUE self)
618
+ {
619
+ rb_ca_as_type_method_body(CA_UINT16);
620
+ }
621
+
622
+ /* @overload as_int32
623
+
624
+ (Reference) Short-Hand of `CArray#as_type(:int32)`
625
+ */
626
+ VALUE rb_ca_as_int32 (VALUE self)
627
+ {
628
+ rb_ca_as_type_method_body(CA_INT32);
629
+ }
630
+
631
+ /* @overload as_uint32
632
+
633
+ (Reference) Short-Hand of `CArray#as_type(:uint32)`
634
+ */
635
+ VALUE rb_ca_as_uint32 (VALUE self)
636
+ {
637
+ rb_ca_as_type_method_body(CA_UINT32);
638
+ }
639
+
640
+ /* @overload as_int64
641
+
642
+ (Reference) Short-Hand of `CArray#as_type(:int64)`
643
+ */
644
+ VALUE rb_ca_as_int64 (VALUE self)
645
+ {
646
+ rb_ca_as_type_method_body(CA_INT64);
647
+ }
648
+
649
+ /* @overload as_uint64
650
+
651
+ (Reference) Short-Hand of `CArray#as_type(:uint64)`
652
+ */
653
+ VALUE rb_ca_as_uint64 (VALUE self)
654
+ {
655
+ rb_ca_as_type_method_body(CA_UINT64);
656
+ }
657
+
658
+ /* @overload as_float32
659
+
660
+ (Reference) Short-Hand of `CArray#as_type(:float32)`
661
+ */
662
+ VALUE rb_ca_as_float32 (VALUE self)
663
+ {
664
+ rb_ca_as_type_method_body(CA_FLOAT32);
665
+ }
666
+
667
+ /* @overload as_float64
668
+
669
+ (Reference) Short-Hand of `CArray#as_type(:float64)`
670
+ */
671
+ VALUE rb_ca_as_float64 (VALUE self)
672
+ {
673
+ rb_ca_as_type_method_body(CA_FLOAT64);
674
+ }
675
+
676
+ /* @overload as_float128
677
+
678
+ (Reference) Short-Hand of `CArray#as_type(:float128)`
679
+ */
680
+ VALUE rb_ca_as_float128 (VALUE self)
681
+ {
682
+ rb_ca_as_type_method_body(CA_FLOAT128);
683
+ }
684
+
685
+ /* @overload as_cmplx64
686
+
687
+ (Reference) Short-Hand of `CArray#as_type(:cmplx64)`
688
+ */
689
+ VALUE rb_ca_as_cmplx64 (VALUE self)
690
+ {
691
+ rb_ca_as_type_method_body(CA_CMPLX64);
692
+ }
693
+
694
+ /* @overload as_cmplx128
695
+
696
+ (Reference) Short-Hand of `CArray#as_type(:cmplx128)`
697
+ */
698
+ VALUE rb_ca_as_cmplx128 (VALUE self)
699
+ {
700
+ rb_ca_as_type_method_body(CA_CMPLX128);
701
+ }
702
+
703
+ /* @overload as_cmplx256
704
+
705
+ (Reference) Short-Hand of `CArray#as_type(:cmplx256)`
527
706
  */
707
+ VALUE rb_ca_as_cmplx256 (VALUE self)
708
+ {
709
+ rb_ca_as_type_method_body(CA_CMPLX256);
710
+ }
528
711
 
712
+ /* @overload as_object
713
+
714
+ (Reference) Short-Hand of `CArray#as_type(:object)`
715
+ */
716
+ VALUE rb_ca_as_VALUE (VALUE self)
717
+ {
718
+ rb_ca_as_type_method_body(CA_OBJECT);
719
+ }
529
720
 
530
721
  /* ------------------------------------------------------------------------*/
531
722
 
@@ -643,9 +834,9 @@ rb_ca_wrap_writable (VALUE arg, VALUE rtype)
643
834
  return obj;
644
835
  }
645
836
 
646
- /* rdoc:
647
- def CArray.wrap_writable
648
- end
837
+ /* @overload wrap_writable (other, date_type = nil)
838
+
839
+ [TBD]
649
840
  */
650
841
 
651
842
  static VALUE
@@ -708,9 +899,14 @@ rb_ca_wrap_readonly (VALUE arg, VALUE rtype)
708
899
  obj = rb_cscalar_new_with_value(data_type, 0, obj);
709
900
  }
710
901
  else {
711
- rb_raise(rb_eCADataTypeError,
712
- "can't convert string to %s array",
713
- ca_type_name[data_type]);
902
+ volatile VALUE ref = obj;
903
+ if ( ! RB_OBJ_FROZEN(ref) ) {
904
+ ref = rb_obj_dup(ref);
905
+ rb_obj_freeze(ref);
906
+ }
907
+ ca_size_t dim = RSTRING_LEN(ref)/ca_sizeof[data_type];
908
+ obj = rb_ca_wrap_new(data_type, 1, &dim, ca_sizeof[data_type], NULL, RSTRING_PTR(ref));
909
+ rb_ivar_set(obj, rb_intern("referred_object"), ref);
714
910
  }
715
911
  }
716
912
  else if ( NIL_P(obj) ) { /* nil */
@@ -761,9 +957,9 @@ rb_ca_wrap_readonly (VALUE arg, VALUE rtype)
761
957
  return obj;
762
958
  }
763
959
 
764
- /* rdoc:
765
- def CArray.wrap_readonly
766
- end
960
+ /* @overload wrap_readonly (other, date_type = nil)
961
+
962
+ [TBD]
767
963
  */
768
964
 
769
965
  static VALUE
@@ -812,6 +1008,11 @@ rb_ca_cast (volatile VALUE self)
812
1008
  return obj;
813
1009
  }
814
1010
 
1011
+ /* @overload cast (value)
1012
+
1013
+ [TBD]
1014
+ */
1015
+
815
1016
  static VALUE
816
1017
  rb_ca_s_cast (VALUE klass, VALUE val)
817
1018
  {
@@ -852,12 +1053,12 @@ rb_ca_cast_self_or_other (volatile VALUE *self, volatile VALUE *other)
852
1053
  *self = rb_cscalar_new_with_value(CA_BOOLEAN, 0, *self);
853
1054
  break;
854
1055
  default:
855
- #ifdef HAVE_COMPLEX_H
1056
+ #ifdef HAVE_COMPLEX_H
856
1057
  if ( rb_obj_is_kind_of(*self, rb_cCComplex) ) {
857
1058
  *self = rb_cscalar_new_with_value(CA_CMPLX128, 0, *self);
858
1059
  break;
859
1060
  }
860
- #endif
1061
+ #endif
861
1062
  *self = rb_cscalar_new_with_value(CA_OBJECT, 0, *self);
862
1063
  break;
863
1064
  }
@@ -967,9 +1168,9 @@ rb_ca_cast_self_or_other (volatile VALUE *self, volatile VALUE *other)
967
1168
  ca_type_name[cb->data_type]);
968
1169
  }
969
1170
 
970
- /* rdoc
971
- def CArray.cast_self_or_other
972
- end
1171
+ /* @overload cast_self_or_other (other)
1172
+
1173
+ [TBD]
973
1174
  */
974
1175
 
975
1176
  VALUE
@@ -1015,12 +1216,12 @@ rb_ca_cast_other (VALUE *self, volatile VALUE *other)
1015
1216
  *other = rb_cscalar_new_with_value(CA_BOOLEAN, 0, *other);
1016
1217
  break;
1017
1218
  default:
1018
- #ifdef HAVE_COMPLEX_H
1219
+ #ifdef HAVE_COMPLEX_H
1019
1220
  if ( rb_obj_is_kind_of(*other, rb_cCComplex) ) {
1020
1221
  *other = rb_cscalar_new_with_value(CA_CMPLX128, 0, *other);
1021
1222
  break;
1022
1223
  }
1023
- #endif
1224
+ #endif
1024
1225
  *other = rb_cscalar_new_with_value(CA_OBJECT, 0, *other);
1025
1226
  break;
1026
1227
  }
@@ -1059,13 +1260,13 @@ rb_ca_cast_other (VALUE *self, volatile VALUE *other)
1059
1260
  ca_type_name[cb->data_type]);
1060
1261
  }
1061
1262
 
1062
- /* rdoc
1063
- def CArray.cast_other
1064
- end
1263
+ /* @overload cast_with (other)
1264
+
1265
+ [TBD]
1065
1266
  */
1066
1267
 
1067
1268
  VALUE
1068
- rb_ca_s_cast_other (VALUE klass, VALUE self, VALUE other)
1269
+ rb_ca_cast_with (VALUE self, VALUE other)
1069
1270
  {
1070
1271
  if ( rb_obj_is_carray(self) ) {
1071
1272
  rb_ca_cast_self_or_other(&self, &other);
@@ -1101,13 +1302,13 @@ Init_carray_cast ()
1101
1302
  rb_define_method(rb_cCArray, "cmplx256", rb_ca_to_cmplx256, 0);
1102
1303
  rb_define_method(rb_cCArray, "object", rb_ca_to_VALUE, 0);
1103
1304
 
1104
- rb_define_method(rb_cCArray, "byte", rb_ca_to_uint8, 0);
1105
- rb_define_method(rb_cCArray, "short", rb_ca_to_int16, 0);
1106
- rb_define_method(rb_cCArray, "int", rb_ca_to_int32, 0);
1107
- rb_define_method(rb_cCArray, "float", rb_ca_to_float32, 0);
1108
- rb_define_method(rb_cCArray, "double", rb_ca_to_float64, 0);
1109
- rb_define_method(rb_cCArray, "complex", rb_ca_to_cmplx64, 0);
1110
- rb_define_method(rb_cCArray, "dcomplex", rb_ca_to_cmplx128, 0);
1305
+ rb_define_alias(rb_cCArray, "byte", "uint8");
1306
+ rb_define_alias(rb_cCArray, "short", "int16");
1307
+ rb_define_alias(rb_cCArray, "int", "int32");
1308
+ rb_define_alias(rb_cCArray, "float", "float32");
1309
+ rb_define_alias(rb_cCArray, "double", "float64");
1310
+ rb_define_alias(rb_cCArray, "complex", "cmplx64");
1311
+ rb_define_alias(rb_cCArray, "dcomplex", "cmplx128");
1111
1312
 
1112
1313
  rb_define_method(rb_cCArray, "as_type", rb_ca_as_type_internal, -1);
1113
1314
 
@@ -1129,13 +1330,13 @@ Init_carray_cast ()
1129
1330
  rb_define_method(rb_cCArray, "as_cmplx256", rb_ca_as_cmplx256, 0);
1130
1331
  rb_define_method(rb_cCArray, "as_object", rb_ca_as_VALUE, 0);
1131
1332
 
1132
- rb_define_method(rb_cCArray, "as_byte", rb_ca_as_uint8, 0);
1133
- rb_define_method(rb_cCArray, "as_short", rb_ca_as_int16, 0);
1134
- rb_define_method(rb_cCArray, "as_int", rb_ca_as_int32, 0);
1135
- rb_define_method(rb_cCArray, "as_float", rb_ca_as_float32, 0);
1136
- rb_define_method(rb_cCArray, "as_double", rb_ca_as_float64, 0);
1137
- rb_define_method(rb_cCArray, "as_complex", rb_ca_as_cmplx64, 0);
1138
- rb_define_method(rb_cCArray, "as_dcomplex", rb_ca_as_cmplx128, 0);
1333
+ rb_define_alias(rb_cCArray, "as_byte", "as_uint8");
1334
+ rb_define_alias(rb_cCArray, "as_short", "as_int16");
1335
+ rb_define_alias(rb_cCArray, "as_int", "as_int32");
1336
+ rb_define_alias(rb_cCArray, "as_float", "as_float32");
1337
+ rb_define_alias(rb_cCArray, "as_double", "as_float64");
1338
+ rb_define_alias(rb_cCArray, "as_complex", "as_cmplx64");
1339
+ rb_define_alias(rb_cCArray, "as_dcomplex", "as_cmplx128");
1139
1340
 
1140
1341
  rb_define_singleton_method(rb_cCArray,
1141
1342
  "wrap_writable", rb_ca_s_wrap_writable, -1);
@@ -1145,7 +1346,7 @@ Init_carray_cast ()
1145
1346
  "cast", rb_ca_s_cast, 1);
1146
1347
  rb_define_singleton_method(rb_cCArray,
1147
1348
  "cast_self_or_other", rb_ca_s_cast_self_or_other, 2);
1148
- rb_define_singleton_method(rb_cCArray,
1149
- "cast_other", rb_ca_s_cast_other, 2);
1349
+
1350
+ rb_define_method(rb_cCArray, "cast_with", rb_ca_cast_with, 1);
1150
1351
  }
1151
1352