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
data/misc/Methods.ja.md DELETED
@@ -1,182 +0,0 @@
1
- メソッドドキュメント
2
- ===================
3
-
4
- 多次元配列クラスのRuby用ライブラリ
5
-
6
- 特徴
7
- ---
8
-
9
- * 一様なデータを格納するための多次元配列
10
- * データ要素への多様なアクセス方法
11
- * 欠測値を扱うための要素別のマスク
12
- * 要素毎の演算や数学関数
13
- * 要素に対する統計関数
14
- * 真の参照配列
15
- * ユーザー定義配列
16
- * 他オブジェクトとのメモリ共有(Experimental)
17
-
18
- マスクに関するメソッド
19
- -------------------
20
-
21
- * 一度生成されたマスク配列を取り除く方法は提供されていない。
22
-
23
- == メソッド
24
-
25
- === --- CArray#has_mask?
26
- マスク配列が付加されている場合にtrueを返す。
27
- 全要素がマスクされていなくても、マスク配列が付加されていればtrueを返す。
28
-
29
- a = CA_INT(0..2);
30
- a.has_mask?
31
- a[1] = UNDEF;
32
- a.has_mask?
33
-
34
- === --- CArray#any_masked?
35
- マスクされた要素が1つ以上ある場合にtrueを返す。
36
- どの要素もマスクされていない場合やマスク配列自体を持っていない場合にfalseを返す。
37
-
38
- a = CA_INT(0..2);
39
- a.mask = 0;
40
- a.any_masked?
41
- a[1] = UNDEF;
42
- a.any_masked?
43
- a.unmask;
44
- a.any_masked?
45
-
46
- === --- CArray#value
47
- データ配列を参照する配列を返す。
48
- マスクされているいないに関わらず、要素の値を参照したり、
49
- 値を変更することができる。
50
- この配列(もしくはこの配列を参照する配列)に対し、
51
- マスクを付加しようとすると例外が発生する。
52
-
53
- a = CA_INT(0..2);
54
- a[1] = UNDEF;
55
- a
56
- a.value
57
-
58
- === --- CArray#mask
59
- マスク配列を参照するboolean型配列を返す。
60
- この配列を変更すると、元の配列のマスク状態を変更することができる。
61
- この配列(もしくはこの配列を参照する配列)に対し、
62
- マスクを付加しようとすると例外が発生する。
63
-
64
- a = CA_INT(0..2);
65
- a[1] = UNDEF;
66
- a.mask
67
- a
68
- a.mask[] ^= 1;
69
- a
70
-
71
- === --- CArray#mask=(new_mask)
72
- new_maskをマスク配列に代入する。
73
- new_maskは、<TBD>でなければならない。
74
- 配列がマスク配列を持っていない場合は、代入前にマスク配列が生成される。
75
-
76
- a = CA_INT(0..2);
77
- a.mask
78
- a.mask = 0;
79
- a.mask
80
- a.mask = [0,1,0];
81
- a.mask
82
- a.mask ^= 1;
83
- a.mask
84
-
85
- === --- CArray#is_masked
86
- マスク状態を表すboolean型配列を返す。
87
- この配列はマスクされた要素が1で、マスクされていない要素が0となる。
88
-
89
- a = CA_INT(0..2);
90
- a[1] = UNDEF;
91
- a.is_masked
92
-
93
- === --- CArray#is_not_masked
94
- マスク状態を表すboolean型配列を返す。
95
- この配列はマスクされた要素が0で、マスクされていない要素が1となる。
96
-
97
- a = CA_INT(0..2);
98
- a[1] = UNDEF;
99
- a.is_not_masked
100
-
101
- === --- CArray#count_masked (*axis)
102
- マスクされた要素の数を返す。
103
- axisで与えられた次元で集計し、残りの次元の配列を返す。
104
- axisが与えられない場合は、整数を返す。
105
-
106
- a = CA_INT(0..2);
107
- a[1] = UNDEF;
108
- a.count_masked
109
-
110
- === --- CArray#count_not_masked
111
- マスクされていない要素の数を返す。
112
- axisで与えられた次元で集計し、残りの次元の配列を返す。
113
- axisが与えられない場合は、整数を返す。
114
-
115
- a = CA_INT(0..2);
116
- a[1] = UNDEF;
117
- a.count_not_masked
118
-
119
- === --- CArray#unmask([fill_value])
120
- すべての要素のマスクを解除する。
121
- fill_valueが与えられている場合は、マスクされた要素をすべてfill_valueで置き換える。
122
- このメソッドでは、マスク配列自体を取り除かれることはない。
123
-
124
- a = CA_INT(0..2);
125
- # example for fill_value not to be given
126
- a[1] = UNDEF;
127
- a
128
- a.unmask();
129
- a
130
-
131
- # example for fill_value to be given
132
- b = CA_INT(0..2);
133
- b[1] = UNDEF;
134
- b.unmask(-9999);
135
- b
136
-
137
- === --- CArray#unmask_copy([fill_value])
138
- すべての要素のマスクが解除された複製を返す。
139
- fill_valueが与えられている場合は、マスクされた要素をすべてfill_valueで置き換える。
140
- 返り値の配列はマスク配列を持たない状態で生成される。
141
-
142
- a = CA_INT(0..2);
143
- a[1] = UNDEF;
144
- a
145
-
146
- b = a.unmask_copy(-9999)
147
- b.has_mask?
148
-
149
- === --- CArray#inherit_mask(a1, a2, ...)
150
- オブジェクトと引数で与えられた配列の集合で(self,a1,a2,...)でマスク状態の論理和をとり、
151
- 新しいマスク状態として置き換える。
152
-
153
- a = CA_INT(0..2);
154
- b = CA_INT(0..2);
155
- c = CA_INT(0..2);
156
- a[0] = UNDEF;
157
- b[1] = UNDEF;
158
- c[2] = UNDEF;
159
- a ### => [_,1,2]
160
- b ### => [0,_,2]
161
- c ### => [0,1,_]
162
- a.inherit_mask(b,c);
163
- a ### => [_,_,_]
164
-
165
- === --- CArray#inherit_mask_replace(a1, a2, ...)
166
- 引数で与えられた配列 a1、a2、… のマスク状態の論理和をとり、
167
- 新しいマスク状態として設定する。
168
- オブジェクト自身のマスク値は上記の論理和に含まれない点に注意する。
169
-
170
- a = CA_INT(0..2);
171
- b = CA_INT(0..2);
172
- c = CA_INT(0..2);
173
- a[0] = UNDEF;
174
- b[1] = UNDEF;
175
- c[2] = UNDEF;
176
- a ### => [_,1,2]
177
- b ### => [0,_,2]
178
- c ### => [0,1,_]
179
- a.inherit_mask_replace(b,c);
180
- a ### => [0,_,_]
181
-
182
-
data/misc/NOTE DELETED
@@ -1,51 +0,0 @@
1
- Note for developper
2
- ===================
3
-
4
- Utility scripts
5
- ---------------
6
-
7
- ### check version.h
8
-
9
- ruby version.rb
10
-
11
- ### check installed ruby-carray environment
12
-
13
- ruby -v -e "require 'carray/info'"
14
-
15
- Check Points for Debug
16
- ----------------------
17
-
18
- * 'elements' should be checked with double float number
19
-
20
- * One of the following methods should be called before ca->mask refered
21
- + ca_attach
22
- + ca_has_mask
23
- + ca_update_mask
24
- + ca_create_mask
25
-
26
- * Avoid the exposition of raw VALUE data in object array
27
-
28
- + CArray#refer, CArray#member, CArray#bitarray, CArray#bitfield
29
- + CArray#transform, CArray#load, CArray#dump
30
- + CArray#swap_bytes!, CArray#swap_bytes
31
-
32
- * inherit data_class when copy
33
-
34
- + rb_ca_copy, rb_ca_template
35
- + rb_ca_unmask_copy
36
-
37
- OpenMP
38
- ------
39
-
40
- * '--with-cc="gcc -fopenmp"' ... and so on.
41
-
42
- Range
43
- -----
44
-
45
- int rb_arithmetic_sequence_extract(VALUE, VALUE *, VALUE *, VALUE *, int *);
46
-
47
- /* range.c */
48
- #define RANGE_BEG(r) (RSTRUCT(r)->as.ary[0])
49
- #define RANGE_END(r) (RSTRUCT(r)->as.ary[1])
50
- #define RANGE_EXCL(r) (RSTRUCT(r)->as.ary[2])
51
-
@@ -1,58 +0,0 @@
1
-
2
- require 'carray'
3
- require "rspec-power_assert"
4
-
5
- describe "TestCArrayCABitfield " do
6
-
7
- example "virtual_array" do
8
- a = CArray.int(3,3) { 1 }
9
- b = a.bitfield(0)
10
- r = b.parent
11
- is_asserted_by { b.class == CABitfield }
12
- is_asserted_by { true == b.virtual? }
13
- is_asserted_by { a == r }
14
- end
15
-
16
- example "basic_features" do
17
- # ---
18
- a = CArray.int(3,3)
19
- b = a.bitfield(0)
20
- b[] = 1
21
- is_asserted_by { a.template { 1 } == a }
22
- is_asserted_by { b.template { 1 } == b }
23
- b[] = 0
24
- is_asserted_by { a.template { 0 } == a }
25
- is_asserted_by { b.template { 0 } == b }
26
- # ---
27
- a = CArray.int(3,3)
28
- b = a.bitfield(0..1)
29
- b[] = 3
30
- is_asserted_by { a.template { 3 } == a }
31
- is_asserted_by { b.template { 3 } == b }
32
-
33
- # ---
34
- a = CArray.int(3,3)
35
- b = a.bitfield(5..6)
36
- b[] = 3
37
- is_asserted_by { a.template { 3 << 5 } == a }
38
- is_asserted_by { b.template { 3 } == b }
39
-
40
- # ---
41
- a = CArray.int(3,3)
42
- b = a.bitfield(27..28)
43
- b[] = 3
44
- is_asserted_by { a.template { 3 << 27 } == a }
45
- is_asserted_by { b.template { 3 } == b }
46
- end
47
-
48
- example "out_of_index" do
49
- # ---
50
- a = CArray.int8(3)
51
- expect { a.bitfield(-1..0) }.to raise_error(IndexError)
52
- expect { a.bitfield(0..16) }.to raise_error(IndexError)
53
- expect { a.bitfield([nil,2]) }.to raise_error(IndexError)
54
- expect { a.bitfield([nil,1]) }.not_to raise_error()
55
- end
56
-
57
-
58
- end
@@ -1,114 +0,0 @@
1
- require "carray"
2
- require "rspec-power_assert"
3
-
4
- describe CABlockIterator do
5
-
6
- describe "each method" do
7
-
8
- before do
9
- @original = CArray.object(4,4).seq!
10
- @it = @original.blocks(0..1, 0..1)
11
- end
12
-
13
- example "should call 4-times its block" do
14
- count = 0
15
- @it.each do |blk|
16
- count += 1
17
- end
18
- is_asserted_by { count == 4 }
19
- end
20
-
21
- example "should have the block parameter of 2x2 CABlock object" do
22
- @it.each do |blk|
23
- is_asserted_by { blk.class == CABlock }
24
- is_asserted_by { blk.data_type == CA_OBJECT }
25
- is_asserted_by { blk.dim == [2,2] }
26
- end
27
- end
28
-
29
- end
30
-
31
- describe "reference method []" do
32
-
33
- before do
34
- @original = CArray.object(4,4).seq!
35
- @it = @original.blocks(0..1, 0..1)
36
- end
37
-
38
- example "should return a 2x2 CABlock object" do
39
- blk = @it[0]
40
- is_asserted_by { blk.class == CABlock }
41
- is_asserted_by { blk.data_type == CA_OBJECT }
42
- is_asserted_by { blk == CA_OBJECT([[0,1],[4,5]]) }
43
- blk = @it[1,0]
44
- is_asserted_by { blk.class == CABlock }
45
- is_asserted_by { blk.data_type == CA_OBJECT }
46
- is_asserted_by { blk == CA_OBJECT([[8,9],[12,13]]) }
47
- end
48
-
49
- example "should return a 2x2 CABlock object" do
50
- is_asserted_by { @it[0] == @it.kernel_at_addr(0, @it.reference) }
51
- is_asserted_by { @it[1,0] == @it.kernel_at_index([1,0], @it.reference) }
52
- end
53
-
54
- end
55
-
56
- describe "store method []=" do
57
-
58
- before do
59
- @original = CArray.object(4,4).seq!
60
- @it = @original.blocks(0..1, 0..1)
61
- end
62
-
63
- example "should return a 2x2 CABlock object" do
64
- @it[0] = 1
65
- @it[1,0] = 2
66
- is_asserted_by { @it.reference == CA_OBJECT( [ [ 1, 1, 2, 3 ],
67
- [ 1, 1, 6, 7 ],
68
- [ 2, 2, 10, 11 ],
69
- [ 2, 2, 14, 15 ] ] ) }
70
- end
71
-
72
- end
73
-
74
- describe "pick method" do
75
-
76
- before do
77
- @original = CArray.object(4,4).seq!
78
- @it = @original.blocks(0..1, 0..1)
79
- end
80
-
81
- example "should return a 2x2 CABlock object" do
82
- blk = @it.pick(0)
83
- is_asserted_by { blk.class == CArray }
84
- is_asserted_by { blk.data_type == CA_OBJECT }
85
- is_asserted_by { blk == CA_OBJECT([[0,2],[8,10]]) }
86
- blk = @it.pick(1,0)
87
- is_asserted_by { blk.class == CArray }
88
- is_asserted_by { blk.data_type == CA_OBJECT }
89
- is_asserted_by { blk == CA_OBJECT([[4,6],[12,14]]) }
90
- end
91
-
92
- end
93
-
94
- describe "put method" do
95
-
96
- before do
97
- @original = CArray.object(4,4).seq!
98
- @it = @original.blocks(0..1, 0..1)
99
- end
100
-
101
- example "should store value via 2x2 CBlock object" do
102
- @it.put(0,1)
103
- @it.put(0,1,2)
104
- is_asserted_by { @it.pick(0) == CA_OBJECT([[1,1],[1,1]]) }
105
- is_asserted_by { @it.pick(0,1) == CA_OBJECT([[2,2],[2,2]]) }
106
- is_asserted_by { @it.reference == CA_OBJECT([[ 1, 2, 1, 2 ],
107
- [ 4, 5, 6, 7 ],
108
- [ 1, 2, 1, 2 ],
109
- [ 12, 13, 14, 15 ]]) }
110
- end
111
-
112
- end
113
-
114
- end
@@ -1,205 +0,0 @@
1
-
2
- require 'carray'
3
- require "rspec-power_assert"
4
-
5
- describe "TestCABlock " do
6
-
7
- example "virtual_array" do
8
- a = CArray.int(3,3)
9
- b = a[0..1,0..1]
10
- r = b.parent
11
- t = b.root_array
12
- is_asserted_by { b.class == CABlock }
13
- is_asserted_by { r.class == CArray }
14
- is_asserted_by { a == r }
15
- is_asserted_by { a == t }
16
- end
17
-
18
- example "block" do
19
- a = CArray.int32(3, 3) { 1 }
20
- b = CArray.int32(3) { 1 }
21
-
22
- is_asserted_by { a[nil, 1] == b }
23
- is_asserted_by { a[1, nil] == b }
24
-
25
- a[nil, 1].seq!
26
- b.seq!
27
- is_asserted_by { a[nil, 1] == b }
28
-
29
- a[1, nil].seq!
30
- b.seq!
31
- is_asserted_by { a[1, nil] == b }
32
- end
33
-
34
- example "CABlock" do
35
- a = CArray.int32(4, 4)
36
-
37
- a.seq!
38
- b = a[1..2, 1..2]
39
-
40
- is_asserted_by { b.class == CABlock }
41
- is_asserted_by { b.rank == a.rank }
42
- is_asserted_by { b.dim == [2, 2] }
43
- is_asserted_by { b.elements == 4 }
44
-
45
- c = CArray.int32(2, 2){ [[5,6],[9,10]] }
46
- is_asserted_by { b == c }
47
-
48
- d = a.clone
49
- d[1..2, 1..2] = 1
50
- b[] = 1
51
- is_asserted_by { a == d }
52
-
53
- a.seq!
54
- is_asserted_by { b == c }
55
- end
56
-
57
-
58
- example "s_new" do
59
- a = CArray.int32(4, 4) { 1 }
60
- b = a[0..2, 0..2]
61
- is_asserted_by { b.data_type == CA_INT32 }
62
- is_asserted_by { b.rank == 2 }
63
- is_asserted_by { b.bytes == CArray.sizeof(CA_INT32) }
64
- is_asserted_by { b.size0 == [4, 4] }
65
- is_asserted_by { b.dim == [3, 3] }
66
- is_asserted_by { b.start == [0, 0] }
67
- is_asserted_by { b.step == [1, 1] }
68
- is_asserted_by { b.count == [3, 3] }
69
- is_asserted_by { b.elements == 9 }
70
- is_asserted_by { b == CArray.int32(3, 3) { 1 } }
71
- end
72
-
73
- example "block_of_block" do
74
- a = CArray.new(CA_INT32, [4, 4]).seq!
75
- b = a[0..2, 0..2]
76
- c = b[0..1, 0..1]
77
-
78
- is_asserted_by { b == CArray.int32(3, 3) {
79
- [
80
- [0, 1, 2],
81
- [4, 5, 6],
82
- [8, 9, 10],
83
- ]
84
- } }
85
-
86
- is_asserted_by { c == CArray.int32(2, 2) {
87
- [
88
- [0, 1],
89
- [4, 5],
90
- ]
91
- } }
92
- end
93
-
94
- example "block_of_block_set_value" do
95
- a = CArray.new(CA_INT32, [4, 4]).seq!
96
- b = a[0..2, 0..2]
97
- c = b[0..1, 0..1]
98
-
99
- a[0..1, 0..1] = 1
100
-
101
- is_asserted_by { b == CArray.int32(3, 3) {
102
- [
103
- [1, 1, 2],
104
- [1, 1, 6],
105
- [8, 9, 10],
106
- ]
107
- } }
108
-
109
- is_asserted_by { c == CArray.int32(2, 2) {
110
- [
111
- [1, 1],
112
- [1, 1],
113
- ]
114
- } }
115
-
116
- c[] = 2
117
-
118
- is_asserted_by { b == CArray.int32(3, 3) {
119
- [
120
- [2, 2, 2],
121
- [2, 2, 6],
122
- [8, 9, 10],
123
- ]
124
- } }
125
-
126
- is_asserted_by { a[0..1, 0..1] == CArray.int32(2, 2) {
127
- [
128
- [2, 2],
129
- [2, 2],
130
- ]
131
- } }
132
- end
133
-
134
- example "block_of_block_downrank" do
135
- a = CArray.new(CA_INT32, [4, 4, 4]) { 0 }
136
- b = a[0..2, 0..2, 1]
137
- c = b[0..1, 1]
138
-
139
- b.seq!
140
-
141
- is_asserted_by { b == a[0..2, 0..2, 1] }
142
- is_asserted_by { c == CArray.int32(2) { [1, 4] } }
143
-
144
- c[] = 1
145
-
146
- is_asserted_by { a[0..1, 1, 1] == CArray.int(2) { 1 } }
147
- end
148
-
149
- example "block_of_block_ref_address" do
150
- a = CArray.new(CA_INT32, [4, 4]).seq!
151
- b = a[0..2, 0..2]
152
- c = b[1..0, 0..1]
153
-
154
- is_asserted_by { c[2] == 0 }
155
- is_asserted_by { c[[2]] == CArray.int32(1) { [0] } }
156
- is_asserted_by { c[nil] == CArray.int32(4) { [4, 5, 0, 1] } }
157
- is_asserted_by { c[1..2] == CArray.int32(2) { [5, 0] } }
158
- is_asserted_by { c[[nil, 2]] == CArray.int32(2) { [4, 0] } }
159
- is_asserted_by { c[[(1..-1), 2]] == CArray.int32(2) { [5, 1] } }
160
-
161
- c[nil] = 1
162
- is_asserted_by { a[0..1, 0..1] == CArray.int32(2, 2) { 1 } }
163
- end
164
-
165
- example "refer_of_block" do
166
- a = CArray.new(CA_INT32, [4, 4]).seq!
167
- b = a[nil, 0..2]
168
- c = b.reshape(2, 6)
169
- # is_asserted_by { b.to_a.flatten, c.to_a.flatten)
170
-
171
- c[0, 0] = 3
172
- is_asserted_by { b[0, 0] == 3 }
173
- is_asserted_by { a[0, 0] == 3 }
174
- end
175
-
176
- example "refer_of_block_cast" do
177
- a = CArray.new(CA_INT32, [4, 4]).seq!
178
- b = a[nil, 0..2]
179
- c = b.reshape(2, 6)
180
- is_asserted_by { c.float32[0, 1] == 1.0 }
181
- is_asserted_by { c.float64[0, 1] == 1.0 }
182
- end
183
-
184
- example "block_of_block_self_asign" do
185
- a = CArray.new(CA_INT32, [4, 4]).seq!
186
- b = a[0..2, 0..2]
187
- b[0..1, 0..1] = a[0..1, 0..1]
188
- end
189
-
190
- example "block_move" do
191
- a = CArray.int(10, 10).seq!
192
- b = a[0..2, 0..2]
193
-
194
- is_asserted_by { b == CArray.int(3, 3) { [[0, 1, 2], [10, 11, 12], [20, 21, 22]] } }
195
-
196
- b.move(1,1)
197
- is_asserted_by { b == CArray.int(3, 3) { [[11, 12, 13], [21, 22, 23], [31, 32, 33]] } }
198
-
199
- b.move(7,7)
200
- is_asserted_by { b == CArray.int(3, 3) { [[77, 78, 79], [87, 88, 89], [97, 98, 99]] } }
201
-
202
- expect { b.move(8,8) }.to raise_error(ArgumentError)
203
- end
204
-
205
- end
@@ -1,39 +0,0 @@
1
-
2
- require 'carray'
3
- require "rspec-power_assert"
4
-
5
- describe "TestCArrayCAField " do
6
-
7
- example "virtual_array" do
8
- a = CArray.int(3,3)
9
- b = a.field(0,CA_INT8)
10
- r = b.parent
11
- is_asserted_by { b.class == CAField }
12
- is_asserted_by { true == b.virtual? }
13
- is_asserted_by { a == r }
14
- end
15
-
16
- example "attributes" do
17
- #
18
- a = CArray.int16(3,3) { 0x1122 }
19
- b = a.field(0, CA_INT8)
20
- is_asserted_by { CA_INT8 == b.data_type }
21
- is_asserted_by { [3, 3] == b.dim }
22
- end
23
-
24
- example "endian" do
25
- #
26
- a = CArray.int16(3,3) { 0x1122 }
27
- b = CArray.int8(3,3) { 0x11 }
28
- c = CArray.int8(3,3) { 0x22 }
29
- if CArray.big_endian?
30
- is_asserted_by { b == a.field(0, CA_INT8) }
31
- is_asserted_by { c == a.field(1, CA_INT8) }
32
- else
33
- is_asserted_by { b == a.field(1, CA_INT8) }
34
- is_asserted_by { c == a.field(0, CA_INT8) }
35
- end
36
- end
37
-
38
-
39
- end