carray 1.4.0 → 1.5.5

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 (239) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +32 -0
  3. data/LICENSE +22 -0
  4. data/NEWS.md +83 -0
  5. data/README.md +38 -18
  6. data/Rakefile +2 -2
  7. data/TODO.md +17 -0
  8. data/carray.gemspec +13 -18
  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} +44 -48
  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} +86 -59
  31. data/{carray_access.c → ext/carray_access.c} +194 -101
  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} +351 -150
  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} +63 -68
  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} +71 -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} +105 -114
  46. data/{carray_math.rb → ext/carray_math.rb} +29 -13
  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} +49 -36
  50. data/{carray_order.c → ext/carray_order.c} +232 -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} +63 -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} +10 -7
  58. data/{mkmath.rb → ext/mkmath.rb} +2 -2
  59. data/{ruby_carray.c → ext/ruby_carray.c} +20 -8
  60. data/{ruby_ccomplex.c → ext/ruby_ccomplex.c} +2 -4
  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 +51 -40
  65. data/lib/carray/{base/autoload.rb → autoload.rb} +1 -3
  66. data/lib/carray/autoload/autoload_base.rb +1 -1
  67. data/lib/carray/autoload/autoload_gem_numo_narray.rb +7 -6
  68. data/lib/carray/autoload/autoload_gem_random.rb +8 -0
  69. data/lib/carray/basic.rb +191 -0
  70. data/lib/carray/broadcast.rb +101 -0
  71. data/lib/carray/compose.rb +315 -0
  72. data/lib/carray/construct.rb +484 -0
  73. data/lib/carray/convert.rb +115 -0
  74. data/lib/carray/info.rb +1 -3
  75. data/lib/carray/{base/inspect.rb → inspect.rb} +9 -11
  76. data/lib/carray/io/imagemagick.rb +2 -4
  77. data/lib/carray/{base/iterator.rb → iterator.rb} +6 -6
  78. data/lib/carray/mask.rb +102 -0
  79. data/lib/carray/{base/math.rb → math.rb} +20 -52
  80. data/lib/carray/math/histogram.rb +8 -10
  81. data/lib/carray/math/recurrence.rb +1 -3
  82. data/lib/carray/mkmf.rb +9 -3
  83. data/lib/carray/object/ca_obj_iterator.rb +1 -3
  84. data/lib/carray/object/ca_obj_link.rb +1 -3
  85. data/lib/carray/object/ca_obj_pack.rb +9 -11
  86. data/lib/carray/obsolete.rb +256 -0
  87. data/lib/carray/ordering.rb +181 -0
  88. data/lib/carray/{base/serialize.rb → serialize.rb} +60 -76
  89. data/lib/carray/{base/string.rb → string.rb} +10 -64
  90. data/lib/carray/{base/struct.rb → struct.rb} +19 -21
  91. data/lib/carray/{io/table.rb → table.rb} +1 -10
  92. data/lib/carray/testing.rb +51 -0
  93. data/lib/carray/time.rb +76 -0
  94. data/lib/carray/transform.rb +109 -0
  95. data/misc/Methods.ja.md +182 -0
  96. data/{NOTE → misc/NOTE} +16 -38
  97. data/spec/Classes/CABitfield_spec.rb +58 -0
  98. data/spec/Classes/CABlockIterator_spec.rb +114 -0
  99. data/spec/Classes/CABlock_spec.rb +205 -0
  100. data/spec/Classes/CAField_spec.rb +39 -0
  101. data/spec/Classes/CAGrid_spec.rb +75 -0
  102. data/spec/Classes/CAMap_spec.rb +0 -0
  103. data/{test/test_CAMapping.rb → spec/Classes/CAMapping_spec.rb} +35 -36
  104. data/spec/Classes/CAObject_attribute_spec.rb +33 -0
  105. data/spec/Classes/CAObject_spec.rb +33 -0
  106. data/spec/Classes/CARefer_spec.rb +93 -0
  107. data/spec/Classes/CARepeat_spec.rb +65 -0
  108. data/spec/Classes/CASelect_spec.rb +22 -0
  109. data/spec/Classes/CAShift_spec.rb +16 -0
  110. data/spec/Classes/CAStruct_spec.rb +71 -0
  111. data/{test/test_CATranspose.rb → spec/Classes/CATranspose_spec.rb} +20 -21
  112. data/spec/Classes/CAUnboudRepeat_spec.rb +102 -0
  113. data/spec/Classes/CAWindow_spec.rb +54 -0
  114. data/spec/Classes/CAWrap_spec.rb +8 -0
  115. data/{test/test_CArray.rb → spec/Classes/CArray_spec.rb} +48 -92
  116. data/spec/Classes/CScalar_spec.rb +55 -0
  117. data/spec/Features/feature_130_spec.rb +19 -0
  118. data/spec/Features/feature_attributes_spec.rb +280 -0
  119. data/spec/Features/feature_boolean_spec.rb +98 -0
  120. data/spec/Features/feature_broadcast.rb +116 -0
  121. data/spec/Features/feature_cast_function.rb +19 -0
  122. data/spec/Features/feature_cast_spec.rb +33 -0
  123. data/spec/Features/feature_class_spec.rb +84 -0
  124. data/spec/Features/feature_complex_spec.rb +42 -0
  125. data/{test/test_composite.rb → spec/Features/feature_composite_spec.rb} +17 -18
  126. data/spec/Features/feature_convert_spec.rb +46 -0
  127. data/spec/Features/feature_copy_spec.rb +123 -0
  128. data/spec/Features/feature_creation_spec.rb +84 -0
  129. data/spec/Features/feature_element_spec.rb +144 -0
  130. data/spec/Features/feature_extream_spec.rb +54 -0
  131. data/spec/Features/feature_generate_spec.rb +74 -0
  132. data/spec/Features/feature_index_spec.rb +69 -0
  133. data/spec/Features/feature_mask_spec.rb +580 -0
  134. data/spec/Features/feature_math_spec.rb +97 -0
  135. data/spec/Features/feature_order_spec.rb +146 -0
  136. data/spec/Features/feature_ref_store_spec.rb +209 -0
  137. data/spec/Features/feature_serialization_spec.rb +125 -0
  138. data/spec/Features/feature_stat_spec.rb +397 -0
  139. data/spec/Features/feature_virtual_spec.rb +48 -0
  140. data/spec/Features/method_eq_spec.rb +81 -0
  141. data/spec/Features/method_is_nan_spec.rb +12 -0
  142. data/spec/Features/method_map_spec.rb +54 -0
  143. data/spec/Features/method_max_with.rb +20 -0
  144. data/spec/Features/method_min_with.rb +19 -0
  145. data/spec/Features/method_ne_spec.rb +18 -0
  146. data/spec/Features/method_project_spec.rb +188 -0
  147. data/spec/Features/method_ref_spec.rb +27 -0
  148. data/spec/Features/method_round_spec.rb +11 -0
  149. data/spec/Features/method_s_linspace_spec.rb +48 -0
  150. data/spec/Features/method_s_span_spec.rb +14 -0
  151. data/spec/Features/method_seq_spec.rb +47 -0
  152. data/spec/Features/method_sort_with.rb +43 -0
  153. data/spec/Features/method_sorted_with.rb +29 -0
  154. data/spec/Features/method_span_spec.rb +42 -0
  155. data/spec/Features/method_wrap_readonly_spec.rb +43 -0
  156. data/{test → spec/UnitTest}/test_CAVirtual.rb +0 -0
  157. data/spec/spec_all.rb +0 -1
  158. data/utils/convert_test.rb +73 -0
  159. data/utils/{extract_rdoc.rb → extract_yard.rb} +7 -12
  160. data/{devel → utils}/guess_shape.rb +0 -0
  161. data/utils/{diff_method.rb → monkey_patch_methods.rb} +17 -7
  162. metadata +159 -206
  163. data/COPYING +0 -56
  164. data/GPL +0 -340
  165. data/LEGAL +0 -50
  166. data/TODO +0 -5
  167. data/carray_random.c +0 -531
  168. data/devel/im2col.rb +0 -17
  169. data/ext/calculus/carray_calculus.c +0 -931
  170. data/ext/calculus/carray_interp.c +0 -358
  171. data/ext/calculus/extconf.rb +0 -12
  172. data/ext/calculus/lib/math/calculus.rb +0 -119
  173. data/ext/calculus/lib/math/interp/adapter_interp1d.rb +0 -31
  174. data/ext/mathfunc/extconf.rb +0 -18
  175. data/ext/mathfunc/test/test_hypot.rb +0 -5
  176. data/ext/mathfunc/test/test_j0.rb +0 -22
  177. data/ext/mathfunc/test/test_jn.rb +0 -8
  178. data/ext/mathfunc/test/test_sph.rb +0 -9
  179. data/lib/carray/autoload/autoload_io_table.rb +0 -1
  180. data/lib/carray/autoload/autoload_math_interp.rb +0 -4
  181. data/lib/carray/base/basic.rb +0 -1146
  182. data/lib/carray/base/obsolete.rb +0 -131
  183. data/lib/carray/math/interp.rb +0 -57
  184. data/lib/carray/math/interp/adapter_gsl_spline.rb +0 -47
  185. data/mt19937ar.c +0 -182
  186. data/mt19937ar.h +0 -86
  187. data/rdoc_main.rb +0 -27
  188. data/rdoc_math.rb +0 -5
  189. data/rdoc_stat.rb +0 -31
  190. data/spec/CABlockIterator/CABlockIterator_spec.rb +0 -113
  191. data/spec/CArray/bug/store_spec.rb +0 -27
  192. data/spec/CArray/index/repeat_spec.rb +0 -10
  193. data/spec/CArray/method/eq_spec.rb +0 -80
  194. data/spec/CArray/method/is_nan_spec.rb +0 -12
  195. data/spec/CArray/method/ne_spec.rb +0 -18
  196. data/spec/CArray/method/round_spec.rb +0 -11
  197. data/spec/CArray/object/_attribute_spec.rb +0 -32
  198. data/spec/CArray/object/s_new_spec.rb +0 -31
  199. data/spec/CArray/serialize/Serialization_spec.rb +0 -89
  200. data/test/test_130.rb +0 -23
  201. data/test/test_ALL.rb +0 -51
  202. data/test/test_CABitfield.rb +0 -59
  203. data/test/test_CABlock.rb +0 -208
  204. data/test/test_CAField.rb +0 -40
  205. data/test/test_CAGrid.rb +0 -76
  206. data/test/test_CAMmap.rb +0 -11
  207. data/test/test_CARefer.rb +0 -94
  208. data/test/test_CARepeat.rb +0 -66
  209. data/test/test_CASelect.rb +0 -23
  210. data/test/test_CAShift.rb +0 -17
  211. data/test/test_CAWindow.rb +0 -55
  212. data/test/test_CAWrap.rb +0 -9
  213. data/test/test_CComplex.rb +0 -83
  214. data/test/test_CScalar.rb +0 -91
  215. data/test/test_attribute.rb +0 -281
  216. data/test/test_block_iterator.rb +0 -17
  217. data/test/test_boolean.rb +0 -99
  218. data/test/test_cast.rb +0 -33
  219. data/test/test_class.rb +0 -85
  220. data/test/test_complex.rb +0 -43
  221. data/test/test_convert.rb +0 -79
  222. data/test/test_copy.rb +0 -141
  223. data/test/test_creation.rb +0 -85
  224. data/test/test_element.rb +0 -146
  225. data/test/test_extream.rb +0 -55
  226. data/test/test_generate.rb +0 -75
  227. data/test/test_index.rb +0 -71
  228. data/test/test_mask.rb +0 -578
  229. data/test/test_math.rb +0 -98
  230. data/test/test_narray.rb +0 -64
  231. data/test/test_order.rb +0 -147
  232. data/test/test_random.rb +0 -15
  233. data/test/test_ref_store.rb +0 -211
  234. data/test/test_stat.rb +0 -414
  235. data/test/test_struct.rb +0 -72
  236. data/test/test_virtual.rb +0 -49
  237. data/utils/create_rdoc.sh +0 -9
  238. data/utils/make_tgz.sh +0 -3
  239. data/version.h +0 -18
@@ -3,10 +3,8 @@
3
3
  ca_obj_bitarray.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
 
@@ -15,7 +13,7 @@
15
13
  typedef struct {
16
14
  int16_t obj_type;
17
15
  int8_t data_type;
18
- int8_t rank;
16
+ int8_t ndim;
19
17
  int32_t flags;
20
18
  ca_size_t bytes;
21
19
  ca_size_t elements;
@@ -34,7 +32,7 @@ static int8_t CA_OBJ_BITARRAY;
34
32
 
35
33
  static VALUE rb_cCABitarray;
36
34
 
37
- /* rdoc:
35
+ /* yard:
38
36
  class CABitArray < CAVirtual # :nodoc:
39
37
  end
40
38
  */
@@ -55,7 +53,7 @@ static uint8_t bits[8] = {
55
53
  int
56
54
  ca_bitarray_setup (CABitarray *ca, CArray *parent)
57
55
  {
58
- int8_t rank;
56
+ int8_t ndim;
59
57
  ca_size_t bitlen, elements;
60
58
 
61
59
  /* check arguments */
@@ -64,19 +62,19 @@ ca_bitarray_setup (CABitarray *ca, CArray *parent)
64
62
  rb_raise(rb_eCADataTypeError, "invalid data_type for bitarray");
65
63
  }
66
64
 
67
- rank = parent->rank + 1;
65
+ ndim = parent->ndim + 1;
68
66
  bitlen = 8 * parent->bytes;
69
67
  elements = bitlen * parent->elements;
70
68
 
71
69
  ca->obj_type = CA_OBJ_BITARRAY;
72
70
  ca->data_type = CA_BOOLEAN;
73
71
  ca->flags = 0;
74
- ca->rank = rank;
72
+ ca->ndim = ndim;
75
73
  ca->bytes = 1;
76
74
  ca->elements = elements;
77
75
  ca->ptr = NULL;
78
76
  ca->mask = NULL;
79
- ca->dim = ALLOC_N(ca_size_t, rank);
77
+ ca->dim = ALLOC_N(ca_size_t, ndim);
80
78
 
81
79
  ca->parent = parent;
82
80
  ca->attach = 0;
@@ -85,8 +83,8 @@ ca_bitarray_setup (CABitarray *ca, CArray *parent)
85
83
  ca->bytelen = parent->bytes;
86
84
  ca->bitlen = bitlen;
87
85
 
88
- memcpy(ca->dim, parent->dim, (rank-1) * sizeof(ca_size_t));
89
- ca->dim[rank-1] = bitlen;
86
+ memcpy(ca->dim, parent->dim, (ndim-1) * sizeof(ca_size_t));
87
+ ca->dim[ndim-1] = bitlen;
90
88
 
91
89
  if ( ca_has_mask(parent) ) {
92
90
  ca_create_mask(ca);
@@ -158,7 +156,7 @@ ca_bitarray_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
158
156
  {
159
157
  CABitarray *ca = (CABitarray *) ap;
160
158
  ca_size_t bytes = ca->parent->bytes;
161
- ca_size_t offset = idx[ca->rank-1];
159
+ ca_size_t offset = idx[ca->ndim-1];
162
160
  ca_size_t major, minor;
163
161
 
164
162
  if ( ca_endian == CA_BIG_ENDIAN &&
@@ -190,7 +188,7 @@ ca_bitarray_func_store_index (void *ap, ca_size_t *idx, void *ptr)
190
188
  {
191
189
  CABitarray *ca = (CABitarray *) ap;
192
190
  uint8_t test = *(uint8_t *) ptr;
193
- ca_size_t offset = idx[ca->rank-1];
191
+ ca_size_t offset = idx[ca->ndim-1];
194
192
  ca_size_t bytes = ca->parent->bytes;
195
193
  ca_size_t major, minor;
196
194
 
@@ -310,16 +308,16 @@ ca_bitarray_func_create_mask (void *ap)
310
308
  ca_size_t count[CA_RANK_MAX];
311
309
  int8_t i;
312
310
 
313
- for (i=0; i<ca->rank-1; i++) {
311
+ for (i=0; i<ca->ndim-1; i++) {
314
312
  count[i] = 0;
315
313
  }
316
- count[ca->rank-1] = ca->bitlen;
314
+ count[ca->ndim-1] = ca->bitlen;
317
315
 
318
316
  ca_update_mask(ca->parent);
319
317
  if ( ! ca->parent->mask ) {
320
318
  ca_create_mask(ca->parent);
321
319
  }
322
- ca->mask = (CArray *) ca_repeat_new(ca->parent->mask, ca->rank, count);
320
+ ca->mask = (CArray *) ca_repeat_new(ca->parent->mask, ca->ndim, count);
323
321
 
324
322
  ca_unset_flag(ca->mask, CA_FLAG_READ_ONLY);
325
323
  }
@@ -464,12 +462,9 @@ rb_ca_bitarray_new (VALUE cary)
464
462
  return obj;
465
463
  }
466
464
 
467
- /* rdoc:
468
- class CArray
469
- def bits
470
- end
471
- alias bitarray bits
472
- end
465
+ /* @overload bitarray
466
+
467
+ [TBD]
473
468
  */
474
469
 
475
470
  VALUE
@@ -513,8 +508,8 @@ Init_ca_obj_bitarray ()
513
508
  CA_OBJ_BITARRAY = ca_install_obj_type(rb_cCABitarray, ca_bitarray_func);
514
509
  rb_define_const(rb_cObject, "CA_OBJ_BITARRAY", INT2NUM(CA_OBJ_BITARRAY));
515
510
 
516
- rb_define_method(rb_cCArray, "bits", rb_ca_bitarray, 0);
517
511
  rb_define_method(rb_cCArray, "bitarray", rb_ca_bitarray, 0);
512
+ rb_define_alias(rb_cCArray, "bits", "bitarray");
518
513
 
519
514
  rb_define_alloc_func(rb_cCABitarray, rb_ca_bitarray_s_allocate);
520
515
  rb_define_method(rb_cCABitarray, "initialize_copy",
@@ -3,10 +3,8 @@
3
3
  ca_obj_bitfield.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
 
@@ -15,7 +13,7 @@
15
13
  typedef struct {
16
14
  int16_t obj_type;
17
15
  int8_t data_type;
18
- int8_t rank;
16
+ int8_t ndim;
19
17
  int32_t flags;
20
18
  ca_size_t bytes;
21
19
  ca_size_t elements;
@@ -35,7 +33,7 @@ static int8_t CA_OBJ_BITFIELD;
35
33
 
36
34
  static VALUE rb_cCABitfield;
37
35
 
38
- /* rdoc:
36
+ /* yard:
39
37
  class CABitField < CAVirtual # :nodoc:
40
38
  end
41
39
  */
@@ -211,7 +209,7 @@ int
211
209
  ca_bitfield_setup (CABitfield *ca, CArray *parent,
212
210
  ca_size_t offset, ca_size_t bitlen)
213
211
  {
214
- int8_t rank;
212
+ int8_t ndim;
215
213
  int8_t data_type;
216
214
  ca_size_t bytes = 0, elements;
217
215
  ca_size_t bitsize;
@@ -228,7 +226,7 @@ ca_bitfield_setup (CABitfield *ca, CArray *parent,
228
226
  }
229
227
  */
230
228
 
231
- rank = parent->rank;
229
+ ndim = parent->ndim;
232
230
  bitsize = parent->bytes * 8;
233
231
  elements = parent->elements;
234
232
 
@@ -293,12 +291,12 @@ ca_bitfield_setup (CABitfield *ca, CArray *parent,
293
291
  ca->obj_type = CA_OBJ_BITFIELD;
294
292
  ca->data_type = data_type;
295
293
  ca->flags = 0;
296
- ca->rank = rank;
294
+ ca->ndim = ndim;
297
295
  ca->bytes = bytes;
298
296
  ca->elements = elements;
299
297
  ca->ptr = NULL;
300
298
  ca->mask = NULL;
301
- ca->dim = ALLOC_N(ca_size_t, rank);
299
+ ca->dim = ALLOC_N(ca_size_t, ndim);
302
300
 
303
301
  ca->parent = parent;
304
302
  ca->attach = 0;
@@ -308,7 +306,7 @@ ca_bitfield_setup (CABitfield *ca, CArray *parent,
308
306
  ca->bit_offset = bit_offset;
309
307
  ca->bit_mask = bit_mask;
310
308
 
311
- memcpy(ca->dim, parent->dim, rank * sizeof(ca_size_t));
309
+ memcpy(ca->dim, parent->dim, ndim * sizeof(ca_size_t));
312
310
 
313
311
  if ( ca_has_mask(parent) ) {
314
312
  ca_create_mask(ca);
@@ -484,7 +482,7 @@ ca_bitfield_func_create_mask (void *ap)
484
482
  }
485
483
 
486
484
  ca->mask = (CArray *) ca_refer_new(ca->parent->mask,
487
- CA_BOOLEAN, ca->rank, ca->dim, 0, 0);
485
+ CA_BOOLEAN, ca->ndim, ca->dim, 0, 0);
488
486
  }
489
487
 
490
488
  ca_operation_function_t ca_bitfield_func = {
@@ -559,11 +557,9 @@ rb_ca_bitfield_new (VALUE cary, ca_size_t offset, ca_size_t bitlen)
559
557
  return obj;
560
558
  }
561
559
 
562
- /* rdoc:
563
- class CArray
564
- def bitfield (range, type)
565
- end
566
- end
560
+ /* @overload bitfield (range, type)
561
+
562
+ [TBD]
567
563
  */
568
564
 
569
565
  VALUE
@@ -3,10 +3,8 @@
3
3
  ca_obj_block.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
 
@@ -14,13 +12,8 @@
14
12
 
15
13
  VALUE rb_cCABlock;
16
14
 
17
- /* rdoc:
18
- class CABlock < CAVirtual # :nodoc:
19
- end
20
- */
21
-
22
15
  static int
23
- ca_block_setup (CABlock *ca, CArray *parent, int8_t rank, ca_size_t *dim,
16
+ ca_block_setup (CABlock *ca, CArray *parent, int8_t ndim, ca_size_t *dim,
24
17
  ca_size_t *start, ca_size_t *step, ca_size_t *count, ca_size_t offset)
25
18
  {
26
19
  int8_t data_type;
@@ -33,7 +26,7 @@ ca_block_setup (CABlock *ca, CArray *parent, int8_t rank, ca_size_t *dim,
33
26
  bytes = parent->bytes;
34
27
 
35
28
  elements = 1;
36
- for (i=0; i<rank; i++) {
29
+ for (i=0; i<ndim; i++) {
37
30
  if ( count[i] < 0 ) {
38
31
  rb_raise(rb_eIndexError,
39
32
  "invalid size for %i-th dimension (negative)", i);
@@ -41,8 +34,8 @@ ca_block_setup (CABlock *ca, CArray *parent, int8_t rank, ca_size_t *dim,
41
34
  elements *= count[i];
42
35
  }
43
36
 
44
- maxdim_index = rank-1;
45
- for (i=rank-2; i>=0; i--) {
37
+ maxdim_index = ndim-1;
38
+ for (i=ndim-2; i>=0; i--) {
46
39
  if ( count[i] > count[maxdim_index] ) {
47
40
  maxdim_index = i;
48
41
  }
@@ -50,7 +43,7 @@ ca_block_setup (CABlock *ca, CArray *parent, int8_t rank, ca_size_t *dim,
50
43
 
51
44
  maxdim_step = 1;
52
45
  maxdim_step0 = step[maxdim_index];
53
- for (i=maxdim_index+1; i<rank; i++) {
46
+ for (i=maxdim_index+1; i<ndim; i++) {
54
47
  maxdim_step *= count[i];
55
48
  maxdim_step0 *= dim[i];
56
49
  }
@@ -58,7 +51,7 @@ ca_block_setup (CABlock *ca, CArray *parent, int8_t rank, ca_size_t *dim,
58
51
  ca->obj_type = CA_OBJ_BLOCK;
59
52
  ca->data_type = data_type;
60
53
  ca->flags = 0;
61
- ca->rank = rank;
54
+ ca->ndim = ndim;
62
55
  ca->bytes = bytes;
63
56
  ca->elements = elements;
64
57
  ca->ptr = NULL;
@@ -67,10 +60,10 @@ ca_block_setup (CABlock *ca, CArray *parent, int8_t rank, ca_size_t *dim,
67
60
  ca->attach = 0;
68
61
  ca->nosync = 0;
69
62
  ca->offset = offset;
70
- ca->start = ALLOC_N(ca_size_t, rank);
71
- ca->step = ALLOC_N(ca_size_t, rank);
72
- ca->count = ALLOC_N(ca_size_t, rank);
73
- ca->size0 = ALLOC_N(ca_size_t, rank);
63
+ ca->start = ALLOC_N(ca_size_t, ndim);
64
+ ca->step = ALLOC_N(ca_size_t, ndim);
65
+ ca->count = ALLOC_N(ca_size_t, ndim);
66
+ ca->size0 = ALLOC_N(ca_size_t, ndim);
74
67
 
75
68
  ca->maxdim_index = maxdim_index;
76
69
  ca->maxdim_step = maxdim_step;
@@ -80,10 +73,10 @@ ca_block_setup (CABlock *ca, CArray *parent, int8_t rank, ca_size_t *dim,
80
73
 
81
74
  ca->dim = ca->count; /* ca->dim should not be free */
82
75
 
83
- memcpy(ca->start, start, rank * sizeof(ca_size_t));
84
- memcpy(ca->step, step, rank * sizeof(ca_size_t));
85
- memcpy(ca->count, count, rank * sizeof(ca_size_t));
86
- memcpy(ca->size0, dim, rank * sizeof(ca_size_t));
76
+ memcpy(ca->start, start, ndim * sizeof(ca_size_t));
77
+ memcpy(ca->step, step, ndim * sizeof(ca_size_t));
78
+ memcpy(ca->count, count, ndim * sizeof(ca_size_t));
79
+ memcpy(ca->size0, dim, ndim * sizeof(ca_size_t));
87
80
 
88
81
  if ( ca_has_mask(parent) ) {
89
82
  ca_create_mask(ca);
@@ -93,11 +86,11 @@ ca_block_setup (CABlock *ca, CArray *parent, int8_t rank, ca_size_t *dim,
93
86
  }
94
87
 
95
88
  CABlock *
96
- ca_block_new (CArray *parent, int8_t rank, ca_size_t *dim,
89
+ ca_block_new (CArray *parent, int8_t ndim, ca_size_t *dim,
97
90
  ca_size_t *start, ca_size_t *step, ca_size_t *count, ca_size_t offset)
98
91
  {
99
92
  CABlock *ca = ALLOC(CABlock);
100
- ca_block_setup(ca, parent, rank, dim, start, step, count, offset);
93
+ ca_block_setup(ca, parent, ndim, dim, start, step, count, offset);
101
94
  return ca;
102
95
  }
103
96
 
@@ -126,7 +119,7 @@ ca_block_func_clone (void *ap)
126
119
  {
127
120
  CABlock *ca = (CABlock *) ap;
128
121
  return ca_block_new(ca->parent,
129
- ca->rank, ca->size0,
122
+ ca->ndim, ca->size0,
130
123
  ca->start, ca->step, ca->count, ca->offset);
131
124
  }
132
125
 
@@ -162,7 +155,7 @@ ca_block_func_ptr_at_index (void *ap, ca_size_t *idx)
162
155
  int8_t i;
163
156
  ca_size_t n;
164
157
  n = start[0] + idx[0]*step[0];
165
- for (i=1; i<ca->rank; i++) {
158
+ for (i=1; i<ca->ndim; i++) {
166
159
  n *= size0[i];
167
160
  n += start[i] + idx[i]*step[i];
168
161
  }
@@ -186,7 +179,7 @@ ca_block_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
186
179
  int8_t i;
187
180
  ca_size_t n;
188
181
  n = start[0] + idx[0]*step[0];
189
- for (i=1; i<ca->rank; i++) {
182
+ for (i=1; i<ca->ndim; i++) {
190
183
  n *= size0[i];
191
184
  n += start[i] + idx[i]*step[i];
192
185
  }
@@ -204,7 +197,7 @@ ca_block_func_store_index (void *ap, ca_size_t *idx, void *ptr)
204
197
  int8_t i;
205
198
  ca_size_t n;
206
199
  n = start[0] + idx[0]*step[0];
207
- for (i=1; i<ca->rank; i++) {
200
+ for (i=1; i<ca->ndim; i++) {
208
201
  n *= size0[i];
209
202
  n += start[i] + idx[i]*step[i];
210
203
  }
@@ -292,7 +285,7 @@ ca_block_func_create_mask (void *ap)
292
285
  ca_create_mask(ca->parent);
293
286
  ca->mask =
294
287
  (CArray *) ca_block_new(ca->parent->mask,
295
- ca->rank, ca->size0,
288
+ ca->ndim, ca->size0,
296
289
  ca->start, ca->step, ca->count, ca->offset);
297
290
  }
298
291
 
@@ -320,7 +313,7 @@ ca_operation_function_t ca_block_func = {
320
313
  /* ------------------------------------------------------------------- */
321
314
 
322
315
  VALUE
323
- rb_ca_block_new (VALUE cary, int8_t rank, ca_size_t *dim,
316
+ rb_ca_block_new (VALUE cary, int8_t ndim, ca_size_t *dim,
324
317
  ca_size_t *start, ca_size_t *step, ca_size_t *count, ca_size_t offset)
325
318
  {
326
319
  volatile VALUE obj;
@@ -330,7 +323,7 @@ rb_ca_block_new (VALUE cary, int8_t rank, ca_size_t *dim,
330
323
  rb_check_carray_object(cary);
331
324
  Data_Get_Struct(cary, CArray, parent);
332
325
 
333
- ca = ca_block_new(parent, rank, dim, start, step, count, offset);
326
+ ca = ca_block_new(parent, ndim, dim, start, step, count, offset);
334
327
  obj = ca_wrap_struct(ca);
335
328
  rb_ca_set_parent(obj, cary);
336
329
  rb_ca_data_type_inherit(obj, cary);
@@ -351,7 +344,7 @@ ca_block_attach_loop2 (CABlock *ca, int8_t level, ca_size_t saddr, ca_size_t sad
351
344
  ca_size_t count = ca->count[level];
352
345
  ca_size_t addr, addr0, i;
353
346
 
354
- if ( level == ca->rank - 1 ) {
347
+ if ( level == ca->ndim - 1 ) {
355
348
  if ( ca->parent->ptr ) {
356
349
  addr = saddr * ca->dim[level];
357
350
  addr0 = saddr0 * ca->size0[level] + ca->start[level];
@@ -386,7 +379,7 @@ ca_block_attach_loop (CABlock *ca, ca_size_t level, ca_size_t saddr, ca_size_t s
386
379
  ca_size_t count = ca->count[level];
387
380
  ca_size_t addr, addr0, i;
388
381
 
389
- if ( level == ca->rank - 1 ) {
382
+ if ( level == ca->ndim - 1 ) {
390
383
  if ( level == ca->maxdim_index ) {
391
384
  addr = saddr * ca->dim[level];
392
385
  addr0 = saddr0 * ca->size0[level] + ca->start[level];
@@ -431,7 +424,7 @@ static void
431
424
  ca_block_attach (CABlock *ca)
432
425
  {
433
426
  ca_size_t addr = 0, addr0 = 0;
434
- if ( ca->rank <= 2 ) {
427
+ if ( ca->ndim <= 2 ) {
435
428
  ca_block_attach_loop2(ca, 0, addr, addr0);
436
429
  }
437
430
  else {
@@ -445,7 +438,7 @@ ca_block_sync_loop2 (CABlock *ca, int8_t level, ca_size_t saddr, ca_size_t saddr
445
438
  ca_size_t count = ca->count[level];
446
439
  ca_size_t addr, addr0, i;
447
440
 
448
- if ( level == ca->rank - 1 ) {
441
+ if ( level == ca->ndim - 1 ) {
449
442
  if ( ca->parent->ptr ) {
450
443
  addr = saddr * ca->dim[level];
451
444
  addr0 = saddr0 * ca->size0[level] + ca->start[level];
@@ -479,7 +472,7 @@ ca_block_sync_loop (CABlock *ca, int8_t level, ca_size_t saddr, ca_size_t saddr0
479
472
  ca_size_t count = ca->count[level];
480
473
  ca_size_t addr, addr0, i;
481
474
 
482
- if ( level == ca->rank - 1 ) {
475
+ if ( level == ca->ndim - 1 ) {
483
476
  if ( level == ca->maxdim_index ) {
484
477
  addr = saddr * ca->dim[level];
485
478
  addr0 = saddr0 * ca->size0[level] + ca->start[level];
@@ -520,7 +513,7 @@ static void
520
513
  ca_block_sync (CABlock *cb)
521
514
  {
522
515
  ca_size_t addr = 0, addr0 = 0;
523
- if ( cb->rank <= 2 ) {
516
+ if ( cb->ndim <= 2 ) {
524
517
  ca_block_sync_loop2(cb, 0, addr, addr0);
525
518
  }
526
519
  else {
@@ -533,7 +526,7 @@ ca_block_fill_loop2 (CABlock *ca, int8_t level, ca_size_t saddr, char *val)
533
526
  {
534
527
  ca_size_t count = ca->count[level];
535
528
  ca_size_t addr, i;
536
- if ( level == ca->rank - 1 ) {
529
+ if ( level == ca->ndim - 1 ) {
537
530
  addr = saddr * ca->dim[level];
538
531
  mfill_step(ca_ptr_at_addr(ca, addr),
539
532
  ca->bytes, count, ca->step[level], val);
@@ -551,7 +544,7 @@ ca_block_fill_loop (CABlock *ca, int8_t level, ca_size_t saddr, char *val)
551
544
  {
552
545
  ca_size_t count = ca->count[level];
553
546
  ca_size_t addr, i;
554
- if ( level == ca->rank - 1 ) {
547
+ if ( level == ca->ndim - 1 ) {
555
548
  if ( level == ca->maxdim_index ) {
556
549
  addr = saddr * ca->dim[level];
557
550
  mfill_step(ca_ptr_at_addr(ca, addr),
@@ -586,7 +579,7 @@ static void
586
579
  ca_block_fill (CABlock *ca, char *val)
587
580
  {
588
581
  ca_size_t addr = 0;
589
- if ( ca->rank <= 2 ) {
582
+ if ( ca->ndim <= 2 ) {
590
583
  ca_block_fill_loop2(ca, 0, addr, val);
591
584
  }
592
585
  else {
@@ -707,12 +700,12 @@ rb_cb_initialize_copy (VALUE self, VALUE other)
707
700
  Data_Get_Struct(self, CABlock, ca);
708
701
  Data_Get_Struct(other, CABlock, cs);
709
702
 
710
- for (i=0; i<cs->rank; i++) {
703
+ for (i=0; i<cs->ndim; i++) {
711
704
  shrink[i] = 0;
712
705
  }
713
706
 
714
707
  ca_block_setup(ca, cs->parent,
715
- cs->rank, cs->size0, cs->start, cs->step, cs->count, cs->offset);
708
+ cs->ndim, cs->size0, cs->start, cs->step, cs->count, cs->offset);
716
709
 
717
710
  /* CHECK ME : other.parent instead of other ? */
718
711
  rb_ca_set_parent(self, rb_ca_parent(other));
@@ -728,14 +721,14 @@ rb_cb_initialize_copy (VALUE self, VALUE other)
728
721
  CABlock *cb; \
729
722
  int8_t i; \
730
723
  Data_Get_Struct(self, CABlock, cb); \
731
- ary = rb_ary_new2(cb->rank); \
732
- for (i=0; i<cb->rank; i++) { \
724
+ ary = rb_ary_new2(cb->ndim); \
725
+ for (i=0; i<cb->ndim; i++) { \
733
726
  rb_ary_store(ary, i, LONG2NUM(cb->name[i])); \
734
727
  } \
735
728
  return ary; \
736
729
  }
737
730
 
738
- /* rdoc:
731
+ /* @overload size0:
739
732
  class CABlock
740
733
  def size0
741
734
  end
@@ -763,7 +756,7 @@ rb_cb_offset (VALUE self)
763
756
  return SIZE2NUM(cb->offset);
764
757
  }
765
758
 
766
- /* rdoc:
759
+ /* yard:
767
760
  class CABlock
768
761
  def idx2addr0 (idx)
769
762
  end
@@ -780,13 +773,13 @@ rb_cb_idx2addr0 (int argc, VALUE *argv, VALUE self)
780
773
 
781
774
  Data_Get_Struct(self, CABlock, cb);
782
775
 
783
- if ( argc != cb->rank ) {
776
+ if ( argc != cb->ndim ) {
784
777
  rb_raise(rb_eArgError,
785
- "invalid # of arguments (should be <%i>)", cb->rank);
778
+ "invalid # of arguments (should be <%i>)", cb->ndim);
786
779
  }
787
780
 
788
781
  addr = 0;
789
- for (i=0; i<cb->rank; i++) {
782
+ for (i=0; i<cb->ndim; i++) {
790
783
  idxi = NUM2SIZE(argv[i]);
791
784
  CA_CHECK_INDEX(idxi, cb->dim[i]);
792
785
  addr = cb->size0[i] * addr + cb->start[i] + idxi * cb->step[i];
@@ -795,7 +788,7 @@ rb_cb_idx2addr0 (int argc, VALUE *argv, VALUE self)
795
788
  return SIZE2NUM(addr + cb->offset);
796
789
  }
797
790
 
798
- /* rdoc:
791
+ /* yard:
799
792
  class CABlock
800
793
  def addr2addr0 (addr)
801
794
  end
@@ -815,7 +808,7 @@ rb_cb_addr2addr0 (VALUE self, VALUE raddr)
815
808
  ca_addr2index((CArray*)cb, addr, idx);
816
809
 
817
810
  addr = 0;
818
- for (i=0; i<cb->rank; i++) {
811
+ for (i=0; i<cb->ndim; i++) {
819
812
  addr *= cb->size0[i];
820
813
  addr += cb->start[i] + idx[i] * cb->step[i];
821
814
  }
@@ -824,7 +817,7 @@ rb_cb_addr2addr0 (VALUE self, VALUE raddr)
824
817
  }
825
818
 
826
819
 
827
- /* rdoc:
820
+ /* yard:
828
821
  class CABlock
829
822
  def move (*index)
830
823
  end
@@ -840,13 +833,13 @@ rb_cb_move (int argc, VALUE *argv, VALUE self)
840
833
 
841
834
  Data_Get_Struct(self, CABlock, cb);
842
835
 
843
- if ( argc != cb->rank ) {
836
+ if ( argc != cb->ndim ) {
844
837
  rb_raise(rb_eArgError, "invalid # of arguments");
845
838
  }
846
839
 
847
840
  ca_update_mask(cb);
848
841
 
849
- for (i=0; i<cb->rank; i++) {
842
+ for (i=0; i<cb->ndim; i++) {
850
843
  start = NUM2SIZE(argv[i]);
851
844
  if ( start < 0 ) {
852
845
  start += cb->size0[i];