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,99 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/object/ca_obj_pack.rb
4
- #
5
- # This file is part of Ruby/CArray extension library.
6
- #
7
- # Copyright (C) 2005-2020 Hiroki Motoyoshi
8
- #
9
- # ----------------------------------------------------------------------------
10
-
11
- #
12
- #
13
- # [ca1, ca2, ca3] => ca4
14
- #
15
- #
16
- #
17
-
18
-
19
- class CAPack < CAObject # :nodoc:
20
-
21
- def initialize (list, options={})
22
- @list = list
23
- @ndim = options[:ndim]
24
- unless @ndim
25
- @ndim = list.map{|m| m.ndim}.min
26
- end
27
- @names = options[:names] || [nil]*@list.size
28
- @dim = guess_dim(list)
29
- @struct = guess_struct(list)
30
- super(@struct, @dim, :read_only=>true)
31
- freeze
32
- end
33
-
34
- private
35
-
36
- def fetch_index (idx)
37
- out = @struct.new
38
- dummy = idx + [false]
39
- @struct.members.each_with_index do |name, i|
40
- out[name] = @list[i][*dummy]
41
- end
42
- return out
43
- end
44
-
45
- def copy_data (data)
46
- data.fields.zip(@list).each do |mem, d|
47
- mem[] = d
48
- end
49
- end
50
-
51
- def guess_dim (list)
52
- dim = nil
53
- list.each do |mem|
54
- case mem
55
- when CArray
56
- if mem.ndim < @ndim
57
- raise "mem.ndim < @ndim"
58
- else
59
- newdim = mem.dim[0, @ndim]
60
- end
61
- if dim
62
- unless dim == newdim
63
- raise "dim != newdim"
64
- end
65
- else
66
- dim = newdim
67
- end
68
- end
69
- end
70
- return dim || [1]
71
- end
72
-
73
- def guess_struct (list)
74
- st = CA.struct(:pack=>1) { |s|
75
- list.each_with_index do |mem, i|
76
- name = @names[i]
77
- case mem
78
- when CArray
79
- if mem.ndim == @ndim
80
- s.member mem.data_type, name, :bytes=>mem.bytes ### anonymous member
81
- else
82
- dummy = Array.new(@ndim){0} + [false]
83
- s.member mem[*dummy].to_ca, name ### anonymous member
84
- end
85
- else
86
- raise "invalid object for CAPack"
87
- end
88
- end
89
- }
90
- return st
91
- end
92
-
93
- end
94
-
95
- class CArray
96
- def self.pack (*argv)
97
- return CAPack.new(argv)
98
- end
99
- end
@@ -1,256 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/obsolete.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 CA
12
- TableMethods = CArray::TableMethods
13
- end
14
-
15
- class CArray
16
-
17
- ### obsolete methods
18
-
19
- def extend_as_table (column_names)
20
- warn "CArray#extend_as_table will be obsolete"
21
- self.extend CArray::TableMethods
22
- self.column_names = column_names
23
- self
24
- end
25
-
26
- # Returns the array eliminated all the duplicated elements.
27
- def duplicated_values
28
- warn "CArray#duplicated_values will be obsolete"
29
- if uniq.size == size
30
- return []
31
- else
32
- hash = {}
33
- list = []
34
- each_with_addr do |v, addr|
35
- if v == UNDEF
36
- next
37
- elsif hash[v]
38
- list << [v, addr, hash[v]]
39
- hash[v] += 1
40
- else
41
- hash[v] = 0
42
- end
43
- end
44
- return list
45
- end
46
- end
47
-
48
- def self.summation (*dim)
49
- warn "CArray.summation will be obsolete"
50
- out = nil
51
- first = true
52
- CArray.each_index(*dim) { |*idx|
53
- if first
54
- out = yield(*idx)
55
- first = false
56
- else
57
- out += yield(*idx)
58
- end
59
- }
60
- return out
61
- end
62
-
63
- def by (other)
64
- warn "CArray#by will be obsolete"
65
- case other
66
- when CArray
67
- return (self[nil][nil,:*]*other[nil][:*,nil]).reshape(*(dim+other.dim))
68
- else
69
- return self * other
70
- end
71
- end
72
-
73
- def save_binary (filename, opt={}) # :nodoc:
74
- warn "CArray#save_binary will be obsolete, use CArray.save"
75
- open(filename, "w") { |io|
76
- return Serializer.new(io).save(self, opt)
77
- }
78
- end
79
-
80
- def self.load_binary (filename, opt={}) # :nodoc:
81
- warn "CArray.load_binary will be obsolete, use CArray.load"
82
- open(filename) { |io|
83
- return Serializer.new(io).load(opt)
84
- }
85
- end
86
-
87
- def save_binary_io (io, opt={}) # :nodoc:
88
- warn "CArray#save_binary_io will be obsolete, use CArray.save"
89
- return Serializer.new(io).save(self, opt)
90
- end
91
-
92
- def self.load_binary_io (io, opt={}) # :nodoc:
93
- warn "CArray#load_binary_io will be obsolete, use CArray.load"
94
- return Serializer.new(io).load(opt)
95
- end
96
-
97
- def to_binary (io="", opt={}) # :nodoc:
98
- warn "CArray#to_binary will be obsolete, use CArray.dump"
99
- Serializer.new(io).save(self, opt)
100
- return io
101
- end
102
-
103
- def self.from_binary (io, opt={}) # :nodoc:
104
- warn "CArray.from_binary will be obsolete, use CArray.load"
105
- return Serializer.new(io).load(opt)
106
- end
107
-
108
- def replace_value (from, to)
109
- warn "CArray#replace_value will be obsolete"
110
- self[:eq, from] = to
111
- return self
112
- end
113
-
114
- def asign (*idx)
115
- warn "CArray#asign will be obsolete"
116
- self[*idx] = yield
117
- return self
118
- end
119
-
120
- def fa # :nodoc:
121
- warn "CArray#fa will be obsolete, use CArray#t"
122
- return self.t
123
- end
124
-
125
- def block_iterator (*argv) # :nodoc:
126
- warn "CArray#block_iterator will be obsolete, use CArray#blocks"
127
- return blocks(*argv)
128
- end
129
-
130
- def window_iterator (*argv) # :nodoc:
131
- warn "CArray#window_iterator will be obsolete, use CArray#windows"
132
- return windows(*argv)
133
- end
134
-
135
- def rotated (*argv) # :nodoc:
136
- warn "CArray#rotated will be obsolete, use CArray#rolled"
137
- argv.push({:roll => Array.new(ndim){1} })
138
- return shifted(*argv)
139
- end
140
-
141
- def rotate! (*argv) # :nodoc:
142
- warn "CArray#rotate! will be obsolete, use CArray#roll!"
143
- self[] = self.rolled(*argv)
144
- return self
145
- end
146
-
147
- def rotate (*argv) # :nodoc:
148
- warn "CArray#rotate will be obsolete, use CArray#roll"
149
- return self.rolled(*argv).to_ca
150
- end
151
-
152
- def select (&block) # :nodoc:
153
- warn "CArray#select will be obsolete"
154
- case block.arity
155
- when 1
156
- return self[*yield(self)]
157
- when -1, 0
158
- return self[*instance_exec(&block)]
159
- else
160
- raise
161
- end
162
- end
163
-
164
- def transform (type, dim, opt = {}) # :nodoc:
165
- warn("CArray#transform will be obsolete")
166
- return refer(type, dim, opt).to_ca
167
- end
168
-
169
- def classify (klass, outlier = nil) # :nodoc:
170
- warn "CArray#classify will be obsolete"
171
- b = CArray.int32(*dim)
172
- f = CArray.boolean(*dim) { 1 }
173
- attach {
174
- (klass.elements-1).times do |i|
175
- r = f.and(self < klass[i+1])
176
- b[r] = i
177
- f[r] = 0
178
- end
179
- if outlier
180
- b[self < klass[0]] = outlier
181
- b[f] = outlier
182
- else
183
- b[self < klass[0]] = -1
184
- b[f] = klass.elements-1
185
- end
186
- }
187
- return b
188
- end
189
-
190
-
191
-
192
- end
193
-
194
- =begin
195
-
196
- class Numeric
197
-
198
- [
199
- :boolean,
200
- :int8,
201
- :uint8,
202
- :int16,
203
- :uint16,
204
- :int32,
205
- :uint32,
206
- :int64,
207
- :uint64,
208
- :float32,
209
- :float64,
210
- :float128,
211
- :cmplx64,
212
- :cmplx128,
213
- :cmplx256,
214
- :byte,
215
- :short,
216
- :int,
217
- :float,
218
- :double,
219
- :complex,
220
- :dcomplex,
221
- :object
222
- ].each do |name|
223
- class_eval %{
224
- def #{name} ()
225
- warn "Numeric##{name} will be obsolete"
226
- CScalar.new(#{name.inspect}) {self}
227
- end
228
- }
229
- end
230
-
231
- end
232
-
233
- class CArray
234
- def histogram (klass)
235
- c = CArray.int32(klass.elements-1)
236
- f = CArray.boolean(*dim) { 1 }
237
- attach {
238
- k = 0
239
- r = f.and(self < klass[0])
240
- f[r] = 0
241
- (klass.elements-1).times do |i|
242
- r = f.and(self < klass[i+1])
243
- c[k] = r.count_true
244
- f[r] = 0
245
- k+=1
246
- end
247
- }
248
- return c
249
- end
250
-
251
- def self.load_from_file (filename, data_type, dim, opt={}) # :nodoc:
252
- raise "Sorry, CArray.load_from_file is depleted"
253
- end
254
-
255
- end
256
- =end
@@ -1,181 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/ordering.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
- # reversed
14
- def reversed
15
- return self[*([-1..0]*ndim)]
16
- end
17
-
18
- # roll / shift
19
-
20
- def shift! (*argv, &block)
21
- self[] = self.shifted(*argv, &block)
22
- return self
23
- end
24
-
25
- def shift (*argv, &block)
26
- return self.shifted(*argv, &block).to_ca
27
- end
28
-
29
- def rolled (*argv)
30
- argv.push({:roll => Array.new(ndim){1} })
31
- return shifted(*argv)
32
- end
33
-
34
- def roll! (*argv)
35
- self[] = self.rolled(*argv)
36
- return self
37
- end
38
-
39
- def roll (*argv)
40
- return self.rolled(*argv).to_ca
41
- end
42
-
43
- # Returns the reference which elements are sorted by the comparison method
44
- # given as block
45
- def sorted_by (type=nil, opt={}, &block)
46
- type, bytes =
47
- CArray.guess_type_and_bytes(type||data_type, opt[:bytes]||bytes)
48
- cmpary = convert(type, :bytes=>bytes, &block)
49
- return self[cmpary.sort_addr]
50
- end
51
-
52
- # Returns the array which elements are sorted by the comparison method
53
- # given as block
54
- def sort_by (type=nil, opt={}, &block)
55
- type, bytes =
56
- CArray.guess_type_and_bytes(type||data_type, opt[:bytes]||bytes)
57
- cmpary = convert(type, :bytes=>bytes, &block)
58
- return self[cmpary.sort_addr].to_ca
59
- end
60
-
61
- def sorted_with (*others)
62
- addr = sort_addr
63
- ([self] + others).map { |x| x[addr] }
64
- end
65
-
66
- def sort_with (*others)
67
- addr = sort_addr
68
- ([self] + others).map { |x| x[addr].to_ca }
69
- end
70
-
71
- def max_by (&block)
72
- if empty?
73
- return UNDEF
74
- else
75
- addr = convert(:object, &block).max_addr
76
- return self[addr]
77
- end
78
- end
79
-
80
- def max_with (*others)
81
- if empty?
82
- return ([self] + others).map { |x| UNDEF }
83
- else
84
- addr = max_addr
85
- return ([self] + others).map { |x| x[addr] }
86
- end
87
- end
88
-
89
- def min_by (&block)
90
- if empty?
91
- return UNDEF
92
- else
93
- addr = convert(:object, &block).min_addr
94
- return self[addr]
95
- end
96
- end
97
-
98
- def min_with (*others)
99
- if empty?
100
- return ([self] + others).map { |x| UNDEF }
101
- else
102
- addr = min_addr
103
- return ([self] + others).map { |x| x[addr] }
104
- end
105
- end
106
-
107
- def range
108
- return (self.min)..(self.max)
109
- end
110
-
111
- def nlargest (n)
112
- obj = self.to_ca
113
- list = []
114
- n.times do |i|
115
- k = obj.max_addr
116
- list << obj[k]
117
- obj[k] = UNDEF
118
- end
119
- list.to_ca.to_type(data_type)
120
- end
121
-
122
- def nlargest_addr (n)
123
- obj = self.to_ca
124
- list = []
125
- n.times do |i|
126
- k = obj.max_addr
127
- list << k
128
- obj[k] = UNDEF
129
- end
130
- CA_INT64(list)
131
- end
132
-
133
- def nsmallest (n)
134
- obj = self.to_ca
135
- list = []
136
- n.times do |i|
137
- k = obj.min_addr
138
- list << obj[k]
139
- obj[k] = UNDEF
140
- end
141
- list.to_ca.to_type(data_type)
142
- end
143
-
144
- def nsmallest_addr (n)
145
- obj = self.to_ca
146
- list = []
147
- n.times do |i|
148
- k = obj.min_addr
149
- list << k
150
- obj[k] = UNDEF
151
- end
152
- CA_INT64(list)
153
- end
154
-
155
- def order (dir = 1)
156
- if dir >= 0 ### ascending order
157
- if has_mask?
158
- obj = template(:int32) { UNDEF }
159
- sel = is_not_masked
160
- obj[sel][self[sel].sort_addr].seq!
161
- return obj
162
- else
163
- obj = template(:int32)
164
- obj[sort_addr].seq!
165
- return obj
166
- end
167
- else ### descending order
168
- if has_mask?
169
- obj = template(:int32) { UNDEF}
170
- sel = is_not_masked
171
- obj[sel][self[sel].sort_addr.reversed].seq!
172
- return obj
173
- else
174
- obj = template(:int32)
175
- obj[sort_addr.reversed].seq!
176
- return obj
177
- end
178
- end
179
- end
180
-
181
- end
@@ -1,51 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/test.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 test (&block)
14
- return convert(:boolean) {|v| yield(v) ? true : false }
15
- end
16
-
17
- def contains (*list)
18
- result = self.false()
19
- list.each do |item|
20
- result = result | self.eq(item)
21
- end
22
- return result
23
- end
24
-
25
- def between (a, b)
26
- return (self >= a) & (self <= b)
27
- end
28
-
29
- def where_range
30
- w = where
31
- x = (w - w.shifted(1){-2}).sub!(1).where
32
- y = (w - w.shifted(-1){-2}).add!(1).where
33
- list = []
34
- x.each_addr do |i|
35
- list.push(w[x[i]]..w[y[i]])
36
- end
37
- return list
38
- end
39
-
40
- # Returns the array eliminated all the duplicated elements.
41
- def uniq
42
- ary = flatten.to_a.uniq
43
- if has_mask?
44
- ary.delete(UNDEF)
45
- end
46
- out = CArray.new(data_type, [ary.length], :bytes=>bytes) { ary }
47
- out.data_class = data_class if has_data_class?
48
- return out
49
- end
50
-
51
- end
@@ -1,109 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/composition.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
- # reshape
14
-
15
- def reshape (*newdim)
16
- ifalse = nil
17
- i = 0
18
- 0.upto(newdim.size-1) do |i|
19
- if newdim[i].nil?
20
- newdim[i] = dim[i]
21
- elsif newdim[i] == false
22
- ifalse = i
23
- break
24
- end
25
- end
26
- k = 0
27
- (newdim.size-1).downto(i+1) do |j|
28
- if newdim[j].nil?
29
- newdim[j] = dim[ndim-1-k]
30
- end
31
- k += 1
32
- end
33
- if ifalse
34
- newdim[ifalse] =
35
- elements/newdim.select{|x| x!=false}.inject(1){|s,x| s*x}
36
- end
37
- return refer(data_type, newdim, :bytes=>bytes)
38
- end
39
-
40
- # flatten
41
-
42
- def flattened
43
- return reshape(elements)
44
- end
45
-
46
- def flatten
47
- return reshape(elements).to_ca
48
- end
49
-
50
- def transpose! (*argv)
51
- self[] = self.transposed(*argv)
52
- return self
53
- end
54
-
55
- def transpose (*argv)
56
- return self.transposed(*argv).to_ca
57
- end
58
-
59
- # Reutrns the reference which ndim is reduced
60
- # by eliminating the dimensions which size == 1
61
- def compacted
62
- if ndim == 1
63
- return self[]
64
- else
65
- newdim = dim.reject{|x| x == 1 }
66
- return ( ndim != newdim.size ) ? reshape(*newdim) : self[]
67
- end
68
- end
69
-
70
- # Returns the array which ndim is reduced
71
- # by eliminating the dimensions which size == 1
72
- def compact
73
- if ndim == 1
74
- return self.to_ca
75
- else
76
- newdim = dim.reject{|x| x == 1 }
77
- return ( ndim != newdim.size ) ? reshape(*newdim).to_ca : self.to_ca
78
- end
79
- end
80
-
81
- # Returns (1,n) array from 1-dimensional array
82
- def to_row
83
- if ndim != 1
84
- raise "ndim should be 1"
85
- end
86
- return self[1,:%]
87
- end
88
-
89
- # Returns (n,1) array from 1-dimensional array
90
- def to_column
91
- if ndim != 1
92
- raise "ndim should be 1"
93
- end
94
- return self[:%,1]
95
- end
96
-
97
- # pulled
98
-
99
- def pulled (*args)
100
- idx = args.map{|s| s.nil? ? :% : s}
101
- return self[*idx]
102
- end
103
-
104
- def pull (*args)
105
- idx = args.map{|s| s.nil? ? :% : s}
106
- return self[*idx].to_ca
107
- end
108
-
109
- end