carray 2.0.0 → 3.0.0

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 (339) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +5 -25
  3. data/CHANGELOG.md +16 -0
  4. data/LICENSE +1 -1
  5. data/NEWS.md +3 -0
  6. data/README.md +128 -44
  7. data/carray.gemspec +22 -24
  8. data/ext/ca_array_pool.c +91 -0
  9. data/ext/ca_axis_descriptor.h +186 -0
  10. data/ext/ca_axis_dispatch.c +924 -0
  11. data/ext/ca_axis_group.c +1208 -0
  12. data/ext/ca_bincmp_dispatch.c +76 -0
  13. data/ext/ca_bincmp_dispatch.h +85 -0
  14. data/ext/ca_binop_dispatch.c +125 -0
  15. data/ext/ca_binop_dispatch.h +159 -0
  16. data/ext/ca_categorical_iterator.c +1375 -0
  17. data/ext/ca_compare.c +94 -0
  18. data/ext/ca_compare.h +26 -0
  19. data/ext/ca_composite_dispatch.c +414 -0
  20. data/ext/ca_composite_dispatch.h +116 -0
  21. data/ext/ca_for_buffer.h +96 -0
  22. data/ext/ca_for_each_element.h +241 -0
  23. data/ext/ca_group_iter.c +304 -0
  24. data/ext/ca_iter_substrate.h +325 -0
  25. data/ext/ca_kernel_iterator.c +4321 -0
  26. data/ext/ca_kernel_iterator.h +2603 -0
  27. data/ext/ca_moncmp_dispatch.c +37 -0
  28. data/ext/ca_moncmp_dispatch.h +62 -0
  29. data/ext/ca_monop_dispatch.c +200 -0
  30. data/ext/ca_monop_dispatch.h +235 -0
  31. data/ext/ca_obj_array.c +355 -359
  32. data/ext/ca_obj_bincmp.c +809 -0
  33. data/ext/ca_obj_binop.c +892 -0
  34. data/ext/ca_obj_bitarray.c +369 -164
  35. data/ext/ca_obj_bitfield.c +294 -234
  36. data/ext/ca_obj_block.c +189 -711
  37. data/ext/ca_obj_byte_swap.c +766 -0
  38. data/ext/ca_obj_const_string.c +965 -0
  39. data/ext/ca_obj_face.c +670 -0
  40. data/ext/ca_obj_face.h +247 -0
  41. data/ext/ca_obj_fake.c +228 -100
  42. data/ext/ca_obj_farray.c +54 -441
  43. data/ext/ca_obj_field.c +82 -529
  44. data/ext/ca_obj_fixlen_string.c +306 -0
  45. data/ext/ca_obj_grid.c +858 -440
  46. data/ext/ca_obj_meld.c +1034 -0
  47. data/ext/ca_obj_moncmp.c +569 -0
  48. data/ext/ca_obj_monop.c +1111 -0
  49. data/ext/ca_obj_object.c +774 -298
  50. data/ext/ca_obj_record.c +468 -0
  51. data/ext/ca_obj_reduce.c +97 -82
  52. data/ext/ca_obj_refer.c +569 -459
  53. data/ext/ca_obj_remap.c +475 -0
  54. data/ext/ca_obj_repeat.c +92 -477
  55. data/ext/ca_obj_roll.c +616 -0
  56. data/ext/ca_obj_select.c +344 -296
  57. data/ext/ca_obj_select_axis.c +1296 -0
  58. data/ext/ca_obj_shift.c +230 -792
  59. data/ext/ca_obj_source.c +78 -0
  60. data/ext/ca_obj_stack.c +1173 -0
  61. data/ext/ca_obj_stride.c +2501 -0
  62. data/ext/ca_obj_string.c +268 -0
  63. data/ext/ca_obj_tile.c +614 -0
  64. data/ext/ca_obj_time.c +546 -0
  65. data/ext/ca_obj_timedelta.c +435 -0
  66. data/ext/ca_obj_transpose.c +62 -516
  67. data/ext/ca_obj_triop.c +746 -0
  68. data/ext/ca_obj_unbound_repeat.c +208 -241
  69. data/ext/ca_obj_window.c +1131 -563
  70. data/ext/ca_op_byte_swap.c +175 -0
  71. data/ext/ca_op_ipower.c +319 -0
  72. data/ext/ca_op_powi.h +88 -0
  73. data/ext/ca_sort_kernels.h +132 -0
  74. data/ext/ca_sweep_engine.c +430 -0
  75. data/ext/ca_sweep_engine.h +157 -0
  76. data/ext/ca_transform_common.c +228 -0
  77. data/ext/ca_triop_dispatch.c +55 -0
  78. data/ext/ca_triop_dispatch.h +62 -0
  79. data/ext/carray.h +795 -402
  80. data/ext/carray_access.c +831 -711
  81. data/ext/carray_attribute.c +98 -330
  82. data/ext/carray_bincount.c +255 -0
  83. data/ext/carray_broadcast.c +283 -0
  84. data/ext/carray_call_cfunc.c +1360 -828
  85. data/ext/carray_call_cfunc.h +160 -0
  86. data/ext/carray_cast.c +1212 -301
  87. data/ext/carray_cast_func.rb +81 -40
  88. data/ext/carray_class.c +53 -63
  89. data/ext/carray_config.h +28 -0
  90. data/ext/carray_conversion.c +350 -346
  91. data/ext/carray_copy.c +156 -268
  92. data/ext/carray_core.c +1342 -199
  93. data/ext/carray_count.c +312 -0
  94. data/ext/carray_data_type.c +43 -19
  95. data/ext/carray_element.c +585 -213
  96. data/ext/carray_factorize.c +2542 -0
  97. data/ext/carray_generate.c +230 -559
  98. data/ext/carray_histogram.c +490 -0
  99. data/ext/carray_hold.c +228 -0
  100. data/ext/carray_index_classifier.c +1035 -0
  101. data/ext/carray_index_classifier.h +27 -0
  102. data/ext/carray_internal.h +120 -0
  103. data/ext/carray_kernels_bincmp.c +4445 -0
  104. data/ext/carray_kernels_binop.c +10979 -0
  105. data/ext/carray_kernels_init.c +36 -0
  106. data/ext/carray_kernels_map.c +3466 -0
  107. data/ext/carray_kernels_moncmp.c +2096 -0
  108. data/ext/carray_kernels_monop.c +18312 -0
  109. data/ext/carray_kernels_reduce_aggregate.c +25836 -0
  110. data/ext/carray_kernels_reduce_boolean.c +329 -0
  111. data/ext/carray_kernels_reduce_cumulative.c +14592 -0
  112. data/ext/carray_kernels_reduce_extreme.c +16947 -0
  113. data/ext/carray_kernels_reduce_variance.c +3909 -0
  114. data/ext/carray_kernels_scan.c +3692 -0
  115. data/ext/carray_kernels_search.c +32137 -0
  116. data/ext/carray_kernels_sort.c +10625 -0
  117. data/ext/carray_kernels_triop.c +1391 -0
  118. data/ext/carray_lazy.c +567 -0
  119. data/ext/carray_loop.c +88 -200
  120. data/ext/carray_mask.c +848 -154
  121. data/ext/carray_math_kernel.h +120 -0
  122. data/ext/carray_mathfunc.c +10 -241
  123. data/ext/carray_median_percentile.c +1257 -0
  124. data/ext/carray_memory_view.c +1625 -0
  125. data/ext/carray_operator.c +1526 -318
  126. data/ext/carray_order.c +664 -1394
  127. data/ext/carray_partition.c +416 -0
  128. data/ext/carray_random.c +518 -0
  129. data/ext/carray_scatter.c +357 -0
  130. data/ext/carray_slab.c +1219 -0
  131. data/ext/carray_slab.h +84 -0
  132. data/ext/carray_sort.c +829 -0
  133. data/ext/carray_sort_kernel.c +620 -0
  134. data/ext/carray_struct.c +695 -0
  135. data/ext/carray_test.c +343 -229
  136. data/ext/carray_undef.c +34 -17
  137. data/ext/carray_utils.c +175 -74
  138. data/ext/extconf.rb +216 -55
  139. data/ext/mk_call_cfunc.rb +480 -0
  140. data/ext/mkkernel.rb +8842 -0
  141. data/ext/ruby_carray.c +202 -101
  142. data/ext/version.h +4 -14
  143. data/ext/version.rb +5 -13
  144. data/lib/carray/arrow_tensor.rb +401 -0
  145. data/lib/carray/attribute.rb +166 -0
  146. data/lib/carray/autoload_carray.rb +220 -0
  147. data/lib/carray/autoload_method_extension.rb +44 -0
  148. data/lib/carray/axis_group.rb +711 -0
  149. data/lib/carray/basics.rb +481 -0
  150. data/lib/carray/bincount_nd.rb +358 -0
  151. data/lib/carray/block_iterator.rb +604 -0
  152. data/lib/carray/boolean_reduce.rb +109 -0
  153. data/lib/carray/categorical.rb +561 -0
  154. data/lib/carray/categorical_iterator.rb +1062 -0
  155. data/lib/carray/complex.rb +150 -0
  156. data/lib/carray/conditional.rb +216 -0
  157. data/lib/carray/const_string.rb +228 -0
  158. data/lib/carray/construct.rb +139 -328
  159. data/lib/carray/core_extensions.rb +240 -0
  160. data/lib/carray/data_type_extension.rb +233 -0
  161. data/lib/carray/fixlen_string.rb +95 -0
  162. data/lib/carray/frame/concat.rb +132 -0
  163. data/lib/carray/frame/convert.rb +95 -0
  164. data/lib/carray/frame/csv_parser.rb +211 -0
  165. data/lib/carray/frame/frame.rb +649 -0
  166. data/lib/carray/frame/group.rb +186 -0
  167. data/lib/carray/frame/io.rb +164 -0
  168. data/lib/carray/frame/join.rb +248 -0
  169. data/lib/carray/frame/records.rb +99 -0
  170. data/lib/carray/frame/sort.rb +113 -0
  171. data/lib/carray/frame/verbs.rb +299 -0
  172. data/lib/carray/frame.rb +16 -0
  173. data/lib/carray/histogram.rb +512 -0
  174. data/lib/carray/inspect.rb +37 -20
  175. data/lib/carray/iterator.rb +57 -349
  176. data/lib/carray/lazy.rb +889 -0
  177. data/lib/carray/mask_gap_fill.rb +200 -0
  178. data/lib/carray/math.rb +78 -342
  179. data/lib/carray/meld_reduce.rb +289 -0
  180. data/lib/carray/methods/align_addr.rb +116 -0
  181. data/lib/carray/methods/bin.rb +128 -0
  182. data/lib/carray/methods/bincount.rb +87 -0
  183. data/lib/carray/methods/bit_string.rb +92 -0
  184. data/lib/carray/methods/broadcast.rb +63 -0
  185. data/lib/carray/methods/choose.rb +39 -0
  186. data/lib/carray/methods/composition.rb +280 -0
  187. data/lib/carray/methods/gather_nd.rb +206 -0
  188. data/lib/carray/methods/index.rb +39 -0
  189. data/lib/carray/methods/insert_block.rb +99 -0
  190. data/lib/carray/methods/is_in.rb +141 -0
  191. data/lib/carray/methods/join.rb +90 -0
  192. data/lib/carray/methods/locate_addr.rb +47 -0
  193. data/lib/carray/methods/mask_duplicates.rb +41 -0
  194. data/lib/carray/methods/meshgrid.rb +91 -0
  195. data/lib/carray/methods/mode.rb +126 -0
  196. data/lib/carray/methods/nunique.rb +46 -0
  197. data/lib/carray/methods/resize.rb +56 -0
  198. data/lib/carray/methods/snap.rb +156 -0
  199. data/lib/carray/methods/string_format.rb +57 -0
  200. data/lib/carray/methods/unique.rb +47 -0
  201. data/lib/carray/methods/value_counts.rb +71 -0
  202. data/lib/carray/mkmf.rb +124 -101
  203. data/lib/carray/runtime.rb +108 -0
  204. data/lib/carray/serialize.rb +478 -167
  205. data/lib/carray/slab_iterator.rb +292 -0
  206. data/lib/carray/stack.rb +291 -0
  207. data/lib/carray/string.rb +56 -180
  208. data/lib/carray/string_operation_extension.rb +289 -0
  209. data/lib/carray/struct.rb +335 -323
  210. data/lib/carray/struct_builder.rb +697 -0
  211. data/lib/carray/table.rb +41 -2
  212. data/lib/carray/time.rb +2255 -38
  213. data/lib/carray/window_iterator.rb +655 -0
  214. data/lib/carray.rb +55 -57
  215. metadata +163 -130
  216. data/Rakefile +0 -51
  217. data/TODO.md +0 -18
  218. data/ext/ca_iter_block.c +0 -257
  219. data/ext/ca_iter_dimension.c +0 -299
  220. data/ext/ca_iter_window.c +0 -214
  221. data/ext/ca_obj_mapping.c +0 -644
  222. data/ext/carray_iterator.c +0 -641
  223. data/ext/carray_math.rb +0 -850
  224. data/ext/carray_numeric.c +0 -259
  225. data/ext/carray_sort_addr.c +0 -254
  226. data/ext/carray_stat.c +0 -2100
  227. data/ext/carray_stat_proc.rb +0 -1999
  228. data/ext/mkmath.rb +0 -741
  229. data/ext/ruby_ccomplex.c +0 -509
  230. data/ext/ruby_float_func.c +0 -86
  231. data/lib/carray/array.rb +0 -8
  232. data/lib/carray/autoload/autoload_base.rb +0 -19
  233. data/lib/carray/autoload/autoload_gem_cairo.rb +0 -9
  234. data/lib/carray/autoload/autoload_gem_ffi.rb +0 -9
  235. data/lib/carray/autoload/autoload_gem_gnuplot.rb +0 -2
  236. data/lib/carray/autoload/autoload_gem_io_csv.rb +0 -14
  237. data/lib/carray/autoload/autoload_gem_io_pg.rb +0 -6
  238. data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +0 -12
  239. data/lib/carray/autoload/autoload_gem_narray.rb +0 -10
  240. data/lib/carray/autoload/autoload_gem_numo_narray.rb +0 -15
  241. data/lib/carray/autoload/autoload_gem_opencv.rb +0 -16
  242. data/lib/carray/autoload/autoload_gem_random.rb +0 -8
  243. data/lib/carray/autoload/autoload_gem_rmagick.rb +0 -23
  244. data/lib/carray/autoload/autoload_gem_zimg.rb +0 -3
  245. data/lib/carray/autoload/autoload_io_imagemagick.rb +0 -6
  246. data/lib/carray/autoload/autoload_math_histogram.rb +0 -5
  247. data/lib/carray/autoload/autoload_math_recurrence.rb +0 -6
  248. data/lib/carray/autoload/autoload_object_iterator.rb +0 -1
  249. data/lib/carray/autoload/autoload_object_link.rb +0 -1
  250. data/lib/carray/autoload/autoload_object_pack.rb +0 -2
  251. data/lib/carray/autoload.rb +0 -141
  252. data/lib/carray/basic.rb +0 -191
  253. data/lib/carray/broadcast.rb +0 -101
  254. data/lib/carray/compose.rb +0 -315
  255. data/lib/carray/convert.rb +0 -115
  256. data/lib/carray/info.rb +0 -110
  257. data/lib/carray/io/imagemagick.rb +0 -235
  258. data/lib/carray/mask.rb +0 -102
  259. data/lib/carray/math/histogram.rb +0 -177
  260. data/lib/carray/math/recurrence.rb +0 -93
  261. data/lib/carray/object/ca_obj_iterator.rb +0 -50
  262. data/lib/carray/object/ca_obj_link.rb +0 -50
  263. data/lib/carray/object/ca_obj_pack.rb +0 -99
  264. data/lib/carray/obsolete.rb +0 -256
  265. data/lib/carray/ordering.rb +0 -181
  266. data/lib/carray/testing.rb +0 -51
  267. data/lib/carray/transform.rb +0 -109
  268. data/misc/Methods.ja.md +0 -182
  269. data/misc/NOTE +0 -51
  270. data/spec/Classes/CABitfield_spec.rb +0 -58
  271. data/spec/Classes/CABlockIterator_spec.rb +0 -114
  272. data/spec/Classes/CABlock_spec.rb +0 -205
  273. data/spec/Classes/CAField_spec.rb +0 -39
  274. data/spec/Classes/CAGrid_spec.rb +0 -75
  275. data/spec/Classes/CAMap_spec.rb +0 -0
  276. data/spec/Classes/CAMapping_spec.rb +0 -105
  277. data/spec/Classes/CAObject_attribute_spec.rb +0 -33
  278. data/spec/Classes/CAObject_spec.rb +0 -33
  279. data/spec/Classes/CARefer_spec.rb +0 -93
  280. data/spec/Classes/CARepeat_spec.rb +0 -65
  281. data/spec/Classes/CASelect_spec.rb +0 -22
  282. data/spec/Classes/CAShift_spec.rb +0 -16
  283. data/spec/Classes/CAStruct_spec.rb +0 -71
  284. data/spec/Classes/CATranspose_spec.rb +0 -60
  285. data/spec/Classes/CAUnboudRepeat_spec.rb +0 -102
  286. data/spec/Classes/CAWindow_spec.rb +0 -54
  287. data/spec/Classes/CAWrap_spec.rb +0 -8
  288. data/spec/Classes/CArray_spec.rb +0 -184
  289. data/spec/Classes/CScalar_spec.rb +0 -55
  290. data/spec/Classes/ex1.rb +0 -46
  291. data/spec/Features/feature_130_spec.rb +0 -19
  292. data/spec/Features/feature_attributes_spec.rb +0 -280
  293. data/spec/Features/feature_boolean_spec.rb +0 -98
  294. data/spec/Features/feature_broadcast.rb +0 -116
  295. data/spec/Features/feature_cast_function.rb +0 -19
  296. data/spec/Features/feature_cast_spec.rb +0 -33
  297. data/spec/Features/feature_class_spec.rb +0 -84
  298. data/spec/Features/feature_complex_spec.rb +0 -42
  299. data/spec/Features/feature_composite_spec.rb +0 -124
  300. data/spec/Features/feature_convert_spec.rb +0 -46
  301. data/spec/Features/feature_copy_spec.rb +0 -123
  302. data/spec/Features/feature_creation_spec.rb +0 -84
  303. data/spec/Features/feature_element_spec.rb +0 -144
  304. data/spec/Features/feature_extream_spec.rb +0 -54
  305. data/spec/Features/feature_generate_spec.rb +0 -74
  306. data/spec/Features/feature_index_spec.rb +0 -69
  307. data/spec/Features/feature_mask_spec.rb +0 -580
  308. data/spec/Features/feature_math_spec.rb +0 -97
  309. data/spec/Features/feature_order_spec.rb +0 -146
  310. data/spec/Features/feature_ref_store_spec.rb +0 -209
  311. data/spec/Features/feature_serialization_spec.rb +0 -125
  312. data/spec/Features/feature_stat_spec.rb +0 -397
  313. data/spec/Features/feature_virtual_spec.rb +0 -48
  314. data/spec/Features/method_eq_spec.rb +0 -81
  315. data/spec/Features/method_is_nan_spec.rb +0 -12
  316. data/spec/Features/method_map_spec.rb +0 -54
  317. data/spec/Features/method_max_with.rb +0 -20
  318. data/spec/Features/method_min_with.rb +0 -19
  319. data/spec/Features/method_ne_spec.rb +0 -18
  320. data/spec/Features/method_project_spec.rb +0 -188
  321. data/spec/Features/method_ref_spec.rb +0 -27
  322. data/spec/Features/method_round_spec.rb +0 -11
  323. data/spec/Features/method_s_linspace_spec.rb +0 -48
  324. data/spec/Features/method_s_span_spec.rb +0 -14
  325. data/spec/Features/method_seq_spec.rb +0 -47
  326. data/spec/Features/method_sort_with.rb +0 -43
  327. data/spec/Features/method_sorted_with.rb +0 -29
  328. data/spec/Features/method_span_spec.rb +0 -42
  329. data/spec/Features/method_wrap_readonly_spec.rb +0 -43
  330. data/spec/UnitTest/test_CAVirtual.rb +0 -214
  331. data/spec/spec_all.rb +0 -10
  332. data/utils/ca_ase.rb +0 -21
  333. data/utils/ca_methods.rb +0 -15
  334. data/utils/cast_checker.rb +0 -30
  335. data/utils/convert_test.rb +0 -73
  336. data/utils/extract_yard.rb +0 -22
  337. data/utils/guess_shape.rb +0 -76
  338. data/utils/monkey_patch_methods.rb +0 -62
  339. data/utils/remove_resource_fork.sh +0 -5
@@ -1,16 +0,0 @@
1
- module OpenCV
2
- class CvMat
3
- autoload_method "ca", "carray-opencv"
4
- autoload_method "to_ca", "carray-opencv"
5
- autoload_method "from_ca", "carray-opencv"
6
- autoload_method "image", "carray-opencv"
7
- end
8
- class IplImage < CvMat
9
- autoload_method "ca", "carray-opencv"
10
- end
11
- end
12
-
13
- class CArray
14
- autoload_method "to_cvmat", "carray-opencv"
15
- autoload_method "to_iplimage", "carray-opencv"
16
- end
@@ -1,8 +0,0 @@
1
- class CArray
2
- class << self
3
- autoload_method :srand, "carray-random"
4
- end
5
- autoload_method :random!, "carray-random"
6
- autoload_method :shuffle, "carray-random"
7
- autoload_method :shuffle!, "carray-random"
8
- end
@@ -1,23 +0,0 @@
1
- module Magick
2
- class Image
3
- autoload_method "export_pixels_to_ca", "carray-rmagick"
4
- autoload_method "import_pixels_from_ca", "carray-rmagick"
5
- end
6
- end
7
-
8
- class CArray
9
- autoload_method "self.load_image", "carray-rmagick"
10
- autoload_method "save_image", "carray-rmagick"
11
- autoload_method "display_image", "carray-rmagick"
12
- autoload_method "to_image", "carray-rmagick"
13
- end
14
-
15
- autoload :CAMagickImage, "carray-rmagick"
16
-
17
- module Magick
18
- class Image
19
- autoload_method "ca", "carray-rmagick"
20
- autoload_method "to_ca", "carray-rmagick"
21
- end
22
- end
23
-
@@ -1,3 +0,0 @@
1
- class CArray
2
- autoload_method "zimg", "carray/graphics/zimg"
3
- end
@@ -1,6 +0,0 @@
1
- autoload_method "CArray.load_by_magick", "carray/io/imagemagick"
2
-
3
- class CArray
4
- autoload_method "save_by_magick", "carray/io/imagemagick"
5
- autoload_method "display_by_magick", "carray/io/imagemagick"
6
- end
@@ -1,5 +0,0 @@
1
- autoload :CAHistogram, "carray/math/histogram"
2
-
3
- class CArray
4
- autoload_method :bin, "carray/math/histogram"
5
- end
@@ -1,6 +0,0 @@
1
- autoload :CARecurrence, 'carray/math/recurrence'
2
-
3
- class CArray
4
- autoload_method "recurrence!", "carray/math/recurrence"
5
- autoload_method "recurrence", "carray/math/recurrence"
6
- end
@@ -1 +0,0 @@
1
- autoload :CAIteratorArray, 'carray/object/ca_obj_iterator'
@@ -1 +0,0 @@
1
- autoload :CALink, 'carray/object/ca_obj_link'
@@ -1,2 +0,0 @@
1
- autoload :CAPack, "carray/object/ca_obj_pack"
2
- autoload_method "CArray.pack", "carray/object/ca_obj_pack"
@@ -1,141 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/autoload.rb
4
- #
5
- # This file is part of Ruby/CArray extension library.
6
- #
7
- # Copyright (C) 2005-2010 Hiroki Motoyoshi
8
- #
9
- # ----------------------------------------------------------------------------
10
-
11
- def autoload_method (method, library)
12
- eval %{
13
- def #{method} (*argv, &block)
14
- begin
15
- require "#{library}"
16
- rescue LoadError
17
- raise "error in autoloading '#{library}' hooked by method '#{method}', check gem installation."
18
- end
19
- #{method}(*argv, &block)
20
- end
21
- }
22
- end
23
-
24
- class Class
25
- def autoload_method (method, library)
26
- class_eval %{
27
- def #{method} (*argv, &block)
28
- begin
29
- require "#{library}"
30
- rescue LoadError
31
- raise "error in autoloading '#{library}' hooked by method '#{method}', check gem installation."
32
- end
33
- #{method}(*argv, &block)
34
- end
35
- }
36
- end
37
- end
38
-
39
- class Module
40
- def autoload_method (method, library)
41
- class_eval %{
42
- def #{method} (*argv, &block)
43
- begin
44
- require "#{library}"
45
- rescue LoadError
46
- raise "error in autoloading '#{library}' hooked by method '#{method}', check gem installation."
47
- end
48
- #{method}(*argv, &block)
49
- end
50
- }
51
- end
52
- end
53
-
54
- class Module
55
- def autoload_module_function (method, library)
56
- class_eval %{
57
- module_function
58
- def #{method} (*argv, &block)
59
- begin
60
- require "#{library}"
61
- rescue LoadError
62
- raise "error in autoloading '#{library}' hooked by method '#{method}', check gem installation."
63
- end
64
- #{method}(*argv, &block)
65
- end
66
- }
67
- end
68
- end
69
-
70
- module CA
71
-
72
- def self.each_load_path (name) # :nodoc:
73
- autoload_dirs = $:.clone
74
- if defined? Gem
75
- autoload_dirs.push File.expand_path(File.join(__FILE__,"..","..",".."))
76
- accounted = {}
77
- Gem::Specification.each do |spec|
78
- if accounted.has_key?(spec.name)
79
- next
80
- end
81
- if spec.name =~ /carray\-/
82
- spec.require_paths.each do |path|
83
- if path !~ /^\//
84
- path = File.join(spec.full_gem_path, path)
85
- end
86
- autoload_dirs.push(path)
87
- end
88
- accounted[spec.name] = true
89
- end
90
- end
91
- end
92
- autoload_dirs.each do |path|
93
- dir = File.join(path, name)
94
- if File.directory?(dir)
95
- Dir.chdir(dir) {
96
- yield
97
- }
98
- end
99
- end
100
- end
101
-
102
- end
103
-
104
- __END__
105
- names = {"carray" => true}
106
- Gem.path.each do |path|
107
- gems = File.join(path, "gems")
108
- if File.directory?(gems)
109
- Dir.chdir(gems) {
110
- Dir["carray-*"].sort.reverse.each do |dir|
111
- name = dir.sub(/\-\d+\.\d+\.\d+\z/, '')
112
- next if names[name]
113
- lib = File.join(dir, "lib")
114
- if File.directory?(lib)
115
- Dir.chdir(lib) {
116
- Dir["carray/autoload/autoload_*"].each do |loader|
117
- begin
118
- load File.expand_path(File.join(gems, dir, lib, loader.sub(/\.rb\z/, "")))
119
- rescue LoadError
120
- end
121
- end
122
- }
123
- end
124
- names[name] = true
125
- end
126
- }
127
- end
128
- end
129
-
130
- __END__
131
- CA.each_load_path("carray/autoload") {
132
- Dir["autoload_*.rb"].each do |basename|
133
- if basename =~ /\A(autoload_.+)\.rb\Z/
134
- begin
135
- require "carray/autoload/" + $1
136
- rescue LoadError
137
- end
138
- end
139
- end
140
- }
141
-
data/lib/carray/basic.rb DELETED
@@ -1,191 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/basic.rb
4
- #
5
- # This file is part of Ruby/CArray extension library.
6
- #
7
- # Copyright (C) 2005-2020 Hiroki Motoyoshi
8
- #
9
- # ----------------------------------------------------------------------------
10
-
11
- module CAMath
12
- include Math
13
- end
14
-
15
- #
16
- # monkey patch
17
- #
18
-
19
- def nan
20
- 0.0/0.0
21
- end
22
-
23
- class Array # :nodoc:
24
- def +@
25
- return CA_SIZE(self)
26
- end
27
- def to_ca
28
- return CA_OBJECT(self)
29
- end
30
- end
31
-
32
- class Range # :nodoc:
33
- def +@
34
- return CA_SIZE(self)
35
- end
36
- def to_ca
37
- return CA_OBJECT(self)
38
- end
39
- end
40
-
41
- class Numeric
42
-
43
- def eq (other)
44
- case other
45
- when CArray
46
- return other.eq(self)
47
- else
48
- return send(:eq, *other.coerce(self))
49
- end
50
- end
51
-
52
- def ne (other)
53
- case other
54
- when CArray
55
- return other.ne(self)
56
- else
57
- return send(:ne, *other.coerce(self))
58
- end
59
- end
60
-
61
- end
62
-
63
- class CArray
64
-
65
- def has_attribute?
66
- if ( not @attribute ) or @attribute.empty?
67
- return false
68
- else
69
- return true
70
- end
71
- end
72
-
73
- def attribute= (obj)
74
- unless obj.is_a?(Hash)
75
- raise "attribute should be a hash object"
76
- end
77
- @attribute = obj
78
- end
79
-
80
- def attribute
81
- @attribute ||= {}
82
- return @attribute
83
- end
84
-
85
- def first
86
- ( self.elements == 0 ) ? nil : self[0]
87
- end
88
-
89
- def last
90
- ( self.elements == 0 ) ? nil :self[-1]
91
- end
92
-
93
- # matchup
94
-
95
- def matchup (ref)
96
- ri = ref.sort_addr
97
- rs = ref[ri].to_ca
98
- si = rs.bsearch(self)
99
- return ri.project(si)
100
- end
101
-
102
- def matchup_nearest (ref, direction: "round")
103
- ri = ref.sort_addr
104
- rs = ref[ri].to_ca
105
- si = rs.section(self).send(direction.intern).int64
106
- si.trim!(0,si.size)
107
- return ri[si].to_ca
108
- end
109
-
110
-
111
- # index / indices / axes
112
-
113
- def address ()
114
- return CArray.int32(*dim).seq!
115
- end
116
-
117
- def index (n = 0)
118
- unless n.is_a?(Integer)
119
- raise ArgumentError, "argument should be an integer"
120
- end
121
- if n.between?(0, ndim-1)
122
- return CArray.int32(dim[n]).seq!
123
- else
124
- raise ArgumentError,
125
- "invalid dimension specifier #{n} (0..#{self.ndim-1})"
126
- end
127
- end
128
-
129
- #
130
- #
131
- #
132
-
133
- def indices
134
- list = Array.new(ndim) {|i|
135
- rpt = self.dim
136
- rpt[i] = :%
137
- index(i)[*rpt]
138
- }
139
- if block_given?
140
- return yield(*list)
141
- else
142
- return list
143
- end
144
- end
145
-
146
-
147
-
148
- end
149
-
150
- class CArray
151
-
152
- # Returns object carray has elements of splitted carray at dimensions
153
- # which is given by arguments
154
- #
155
- # a = CA_INT([[1,2,3], [4,5,6], [7,8,9]])
156
- #
157
- # a.split(0)
158
- # [1,2,3], [4,5,6], [7,8,9]
159
- #
160
- # a.split(1)
161
- # [1,4,7], [2,5,8], [3,6,9]
162
- #
163
-
164
- def split (*argv)
165
- odim = dim.values_at(*argv)
166
- out = CArray.object(*odim)
167
- idx = [nil] * ndim
168
- attach {
169
- out.map_with_index! do |o, v|
170
- argv.each_with_index do |r, i|
171
- idx[r] = v[i]
172
- end
173
- self[*idx].to_ca
174
- end
175
- }
176
- return out
177
- end
178
-
179
- end
180
-
181
- class CAUnboundRepeat
182
-
183
- def template (*argv, &block)
184
- return parent.template(*argv,&block)[*spec.map{|x| x != :* ? nil : x}]
185
- end
186
-
187
- end
188
-
189
-
190
-
191
-
@@ -1,101 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/broadcast.rb
4
- #
5
- # This file is part of Ruby/CArray extension library.
6
- #
7
- # Copyright (C) 2005-2020 Hiroki Motoyoshi
8
- #
9
- # ----------------------------------------------------------------------------
10
-
11
- class CArray
12
-
13
- def broadcast_to (*newdim)
14
-
15
- if newdim.size < ndim
16
- raise "(Broadcasting) can't broadcast to #{newdim.inspect} because too small rank is specified"
17
- end
18
-
19
- #
20
- # Try to build unbound repeat index (includes :*)
21
- # with broadcasting rule in Numpy.
22
- #
23
- repdim = []
24
- shape = []
25
-
26
- srcdim = dim.dup
27
- dstdim = newdim.dup
28
- sd = srcdim.pop
29
- dd = dstdim.pop
30
- while dd
31
- if sd == dd
32
- repdim.unshift nil
33
- shape.unshift(dd)
34
- sd = srcdim.pop
35
- elsif dd == 1
36
- repdim.unshift :*
37
- elsif sd == 1
38
- repdim.unshift :*
39
- sd = srcdim.pop
40
- else
41
- raise "(Broadcasting) can't broadcast to #{newdim.inspect} "
42
- end
43
- dd = dstdim.pop
44
- end
45
-
46
- #
47
- # Call Unbound repeat's bind
48
- #
49
- return self.reshape(*shape)[*repdim].bind(*newdim) if repdim.include?(:*)
50
-
51
- self
52
- end
53
-
54
- end
55
-
56
- class CScalar
57
-
58
- def broadcast_to (*newdim)
59
- out = CArray.new(data_type, newdim, bytes: bytes)
60
- out[] = self
61
- out
62
- end
63
-
64
- end
65
-
66
- class CAUnboundRepeat
67
-
68
- alias broadcast_to bind
69
-
70
- end
71
-
72
- def CArray.broadcast (*argv, expand_scalar: false, &block)
73
-
74
- sel = argv.select { |arg| arg.is_a?(CArray) }
75
- return argv if sel.empty?
76
-
77
- dim = []
78
- ndim = sel.map(&:ndim).max
79
- ndim.times do |k|
80
- dim[k] = sel.map { |arg| arg.dim[k] || 1 }.max
81
- end
82
-
83
- if not expand_scalar
84
- list = argv.map { |arg|
85
- case arg
86
- when CScalar
87
- arg
88
- when CArray
89
- arg.broadcast_to(*dim)
90
- else
91
- arg
92
- end
93
- }
94
- else
95
- list = argv.map { |arg| arg.is_a?(CArray) ? arg.broadcast_to(*dim) : arg }
96
- end
97
-
98
- return block.call(*list) if block
99
- return list
100
- end
101
-