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_reduce.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
 
@@ -16,7 +14,7 @@ static int8_t CA_OBJ_REDUCE;
16
14
 
17
15
  static VALUE rb_cCAReduce;
18
16
 
19
- /* rdoc:
17
+ /* yard:
20
18
  class CAReduce < CAVirtual # :nodoc:
21
19
  end
22
20
  */
@@ -40,7 +38,7 @@ ca_reduce_setup (CAReduce *ca, CArray *parent, ca_size_t count, ca_size_t offset
40
38
  ca->obj_type = CA_OBJ_REDUCE;
41
39
  ca->data_type = CA_BOOLEAN; /* data type is fixed to boolean */
42
40
  ca->flags = 0;
43
- ca->rank = 1;
41
+ ca->ndim = 1;
44
42
  ca->bytes = ca_sizeof[CA_BOOLEAN];
45
43
  ca->elements = elements;
46
44
  ca->ptr = NULL;
@@ -3,10 +3,8 @@
3
3
  ca_obj_refer.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,14 +12,14 @@
14
12
 
15
13
  VALUE rb_cCARefer;
16
14
 
17
- /* rdoc:
15
+ /* yard:
18
16
  class CARefer < CAVirtual # :nodoc:
19
17
  end
20
18
  */
21
19
 
22
20
  static int
23
21
  ca_refer_setup (CARefer *ca, CArray *parent,
24
- int8_t data_type, int8_t rank, ca_size_t *dim, ca_size_t bytes,
22
+ int8_t data_type, int8_t ndim, ca_size_t *dim, ca_size_t bytes,
25
23
  ca_size_t offset)
26
24
  {
27
25
  ca_size_t elements, ratio;
@@ -29,23 +27,23 @@ ca_refer_setup (CARefer *ca, CArray *parent,
29
27
  int is_deformed;
30
28
 
31
29
  CA_CHECK_DATA_TYPE(data_type);
32
- CA_CHECK_RANK(rank);
33
- CA_CHECK_DIM(rank, dim);
30
+ CA_CHECK_RANK(ndim);
31
+ CA_CHECK_DIM(ndim, dim);
34
32
  CA_CHECK_BYTES(data_type, bytes);
35
33
 
36
34
  if ( ca_is_object_type(parent) && data_type != CA_OBJECT ) {
37
- rb_raise(rb_eRuntimeError, "object carray can't be referred by other type");
35
+ rb_raise(rb_eRuntimeError, "object array can't be referred by other data type");
38
36
  }
39
37
 
40
38
  if ( parent->elements && bytes > parent->bytes * parent->elements ) {
41
- rb_raise(rb_eRuntimeError, "byte size mismatch");
39
+ rb_raise(rb_eRuntimeError, "bytes exceeds the data size of referent");
42
40
  }
43
41
 
44
42
  /* calc datanum and check deformation */
45
- is_deformed = ( rank == parent->rank ) ? 0 : 1;
43
+ is_deformed = ( ndim == parent->ndim ) ? 0 : 1;
46
44
  ratio = 1;
47
45
  elements = 1;
48
- for (i=0; i<rank; i++) {
46
+ for (i=0; i<ndim; i++) {
49
47
  elements *= dim[i];
50
48
  if ( dim[i] != parent->dim[i] ) {
51
49
  is_deformed |= 1;
@@ -53,36 +51,34 @@ ca_refer_setup (CARefer *ca, CArray *parent,
53
51
  }
54
52
  if ( bytes < parent->bytes ) {
55
53
  if ( parent->bytes % bytes != 0 ) {
56
- rb_raise(rb_eArgError, "invalid bytes");
54
+ rb_raise(rb_eRuntimeError, "bytes of reference array must be a multiple of that of referent");
57
55
  }
58
56
  is_deformed = -2;
59
57
  ratio = parent->bytes / bytes;
60
58
  }
61
59
  else if ( bytes > parent->bytes ) {
62
60
  if ( bytes % parent->bytes != 0 ) {
63
- rb_raise(rb_eArgError, "invalid bytes");
61
+ rb_raise(rb_eRuntimeError, "bytes of reference array must be a multiple of that of referent");
64
62
  }
65
63
  is_deformed = 2;
66
64
  ratio = bytes / parent->bytes;
67
65
  }
68
-
69
66
  if ( offset < 0 ) {
70
- rb_raise(rb_eRuntimeError,
71
- "negative offset for CARefer");
67
+ rb_raise(rb_eRuntimeError, "negative offset is not permitted for CARefer");
72
68
  }
73
69
 
74
70
  if ( ( bytes * elements + parent->bytes * offset ) >
75
71
  ( parent->bytes * parent->elements ) ) {
76
- rb_raise(rb_eRuntimeError, "data size too large for CARefer");
72
+ rb_raise(rb_eRuntimeError, "data size of reference array must not exceed that of referent");
77
73
  }
78
74
 
79
75
  ca->obj_type = CA_OBJ_REFER;
80
76
  ca->data_type = data_type;
81
77
  ca->flags = 0;
82
- ca->rank = rank;
78
+ ca->ndim = ndim;
83
79
  ca->bytes = bytes;
84
80
  ca->elements = elements;
85
- ca->dim = ALLOC_N(ca_size_t, rank);
81
+ ca->dim = ALLOC_N(ca_size_t, ndim);
86
82
  ca->ptr = NULL;
87
83
  ca->mask = NULL;
88
84
  ca->mask0 = NULL;
@@ -99,7 +95,7 @@ ca_refer_setup (CARefer *ca, CArray *parent,
99
95
  ca->is_deformed = 1;
100
96
  }
101
97
 
102
- memcpy(ca->dim, dim, rank * sizeof(ca_size_t));
98
+ memcpy(ca->dim, dim, ndim * sizeof(ca_size_t));
103
99
 
104
100
  if ( ca_is_scalar(parent) ) {
105
101
  ca_set_flag(ca, CA_FLAG_SCALAR);
@@ -110,11 +106,11 @@ ca_refer_setup (CARefer *ca, CArray *parent,
110
106
 
111
107
  CARefer *
112
108
  ca_refer_new (CArray *parent,
113
- int8_t data_type, int8_t rank, ca_size_t *dim, ca_size_t bytes,
109
+ int8_t data_type, int8_t ndim, ca_size_t *dim, ca_size_t bytes,
114
110
  ca_size_t offset)
115
111
  {
116
112
  CARefer *ca = ALLOC(CARefer);
117
- ca_refer_setup(ca, parent, data_type, rank, dim, bytes, offset);
113
+ ca_refer_setup(ca, parent, data_type, ndim, dim, bytes, offset);
118
114
  return ca;
119
115
  }
120
116
 
@@ -137,7 +133,7 @@ ca_refer_func_clone (void *ap)
137
133
  {
138
134
  CARefer *ca = (CARefer *) ap;
139
135
  return ca_refer_new(ca->parent,
140
- ca->data_type, ca->rank, ca->dim, ca->bytes, ca->offset);
136
+ ca->data_type, ca->ndim, ca->dim, ca->bytes, ca->offset);
141
137
  }
142
138
 
143
139
  static char *
@@ -167,9 +163,9 @@ ca_refer_func_ptr_at_index (void *ap, ca_size_t *idx)
167
163
  ca_size_t *dim = ca->dim;
168
164
  int8_t i;
169
165
  ca_size_t n;
170
- n = idx[0]; /* n = idx[0]*dim[1]*dim[2]*...*dim[rank-1] */
171
- for (i=1; i<ca->rank; i++) { /* + idx[1]*dim[1]*dim[2]*...*dim[rank-1] */
172
- n = dim[i]*n+idx[i]; /* ... + idx[rank-2]*dim[1] + idx[rank-1] */
166
+ n = idx[0]; /* n = idx[0]*dim[1]*dim[2]*...*dim[ndim-1] */
167
+ for (i=1; i<ca->ndim; i++) { /* + idx[1]*dim[1]*dim[2]*...*dim[ndim-1] */
168
+ n = dim[i]*n+idx[i]; /* ... + idx[ndim-2]*dim[1] + idx[ndim-1] */
173
169
  }
174
170
  return ca->ptr + ca->bytes * n;
175
171
  }
@@ -206,7 +202,7 @@ ca_refer_func_fetch_addr (void *ap, ca_size_t addr, void *ptr)
206
202
  for (i=0; i<ca->ratio; i++) {
207
203
  ca_fetch_addr(ca->parent,
208
204
  addr * ca->ratio + i + ca->offset,
209
- ptr + i * ca->parent->bytes);
205
+ (char *) ptr + i * ca->parent->bytes);
210
206
  }
211
207
  break;
212
208
  }
@@ -222,7 +218,7 @@ ca_refer_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
222
218
  int8_t i;
223
219
  ca_size_t n;
224
220
  n = idx[0];
225
- for (i=1; i<ca->rank; i++) {
221
+ for (i=1; i<ca->ndim; i++) {
226
222
  n = dim[i]*n+idx[i];
227
223
  }
228
224
  ca_refer_func_fetch_addr(ca, n, ptr);
@@ -267,7 +263,7 @@ ca_refer_func_store_addr (void *ap, ca_size_t addr, void *ptr)
267
263
  for (i=0; i<ca->ratio; i++) {
268
264
  ca_store_addr(ca->parent,
269
265
  addr * ca->ratio + i + ca->offset,
270
- ptr + i * ca->parent->bytes);
266
+ (char *) ptr + i * ca->parent->bytes);
271
267
  }
272
268
  break;
273
269
  }
@@ -283,7 +279,7 @@ ca_refer_func_store_index (void *ap, ca_size_t *idx, void *ptr)
283
279
  int8_t i;
284
280
  ca_size_t n;
285
281
  n = idx[0];
286
- for (i=1; i<ca->rank; i++) {
282
+ for (i=1; i<ca->ndim; i++) {
287
283
  n = dim[i]*n+idx[i];
288
284
  }
289
285
  ca_refer_func_store_addr(ca, n, ptr);
@@ -421,29 +417,29 @@ ca_refer_func_create_mask (void *ap)
421
417
  if ( ca->bytes == ca->parent->bytes ) {
422
418
  ca->mask =
423
419
  (CArray *) ca_refer_new(ca->parent->mask,
424
- CA_BOOLEAN, ca->rank, ca->dim, 0, ca->offset);
420
+ CA_BOOLEAN, ca->ndim, ca->dim, 0, ca->offset);
425
421
  }
426
422
  else if ( ca->is_deformed == -2 ) {
427
423
  ca_size_t count[CA_RANK_MAX];
428
424
  int i;
429
- for (i=0; i<ca->parent->rank; i++) {
425
+ for (i=0; i<ca->parent->ndim; i++) {
430
426
  count[i] = 0;
431
427
  }
432
- count[ca->parent->rank] = ca->ratio;
428
+ count[ca->parent->ndim] = ca->ratio;
433
429
  ca->mask0 =
434
- (CArray *) ca_repeat_new(ca->parent->mask, ca->parent->rank+1, count);
430
+ (CArray *) ca_repeat_new(ca->parent->mask, ca->parent->ndim+1, count);
435
431
  ca_unset_flag(ca->mask0, CA_FLAG_READ_ONLY);
436
432
 
437
433
  ca->mask =
438
434
  (CArray *) ca_refer_new(ca->mask0,
439
- CA_BOOLEAN, ca->rank, ca->dim, 0, ca->offset);
435
+ CA_BOOLEAN, ca->ndim, ca->dim, 0, ca->offset);
440
436
  }
441
437
  else if ( ca->is_deformed == 2 ) {
442
438
  /* TODO */
443
439
  ca->mask0 =
444
440
  (CArray *) ca_reduce_new(ca->parent->mask, ca->ratio, ca->offset);
445
441
  ca->mask =
446
- (CArray *) ca_refer_new(ca->mask0, CA_BOOLEAN, ca->rank, ca->dim, 0, 0);
442
+ (CArray *) ca_refer_new(ca->mask0, CA_BOOLEAN, ca->ndim, ca->dim, 0, 0);
447
443
  }
448
444
  }
449
445
 
@@ -485,13 +481,13 @@ rb_ca_refer_initialize_copy (VALUE self, VALUE other)
485
481
  Data_Get_Struct(self, CARefer, ca);
486
482
  Data_Get_Struct(other, CARefer, cs);
487
483
 
488
- ca_refer_setup(ca, cs->parent, cs->data_type, cs->rank, cs->dim,
484
+ ca_refer_setup(ca, cs->parent, cs->data_type, cs->ndim, cs->dim,
489
485
  cs->bytes, cs->offset);
490
486
 
491
487
  return self;
492
488
  }
493
489
 
494
- /* rdoc:
490
+ /* yard:
495
491
  class CArray
496
492
  # call-seq:
497
493
  # CArray.refer()
@@ -514,7 +510,7 @@ rb_ca_refer (int argc, VALUE *argv, VALUE self)
514
510
  CArray *ca;
515
511
  CARefer *cr;
516
512
  int8_t data_type;
517
- int8_t rank;
513
+ int8_t ndim;
518
514
  ca_size_t dim[CA_RANK_MAX];
519
515
  ca_size_t bytes, offset = 0;
520
516
  int8_t i;
@@ -524,11 +520,11 @@ rb_ca_refer (int argc, VALUE *argv, VALUE self)
524
520
  if ( argc == 0 ) { /* CArray#refer() */
525
521
  data_type = ca->data_type;
526
522
  bytes = ca->bytes;
527
- rank = ca->rank;
528
- for (i=0; i<rank; i++) {
523
+ ndim = ca->ndim;
524
+ for (i=0; i<ndim; i++) {
529
525
  dim[i] = ca->dim[i];
530
526
  }
531
- cr = ca_refer_new((CArray*)ca, data_type, rank, dim, bytes, offset);
527
+ cr = ca_refer_new((CArray*)ca, data_type, ndim, dim, bytes, offset);
532
528
  obj = ca_wrap_struct(cr);
533
529
  rb_ca_set_parent(obj, self);
534
530
  rb_ca_data_type_inherit(obj, self);
@@ -558,10 +554,10 @@ rb_ca_refer (int argc, VALUE *argv, VALUE self)
558
554
  }
559
555
 
560
556
  Check_Type(rdim, T_ARRAY);
561
- rank = RARRAY_LEN(rdim);
557
+ ndim = RARRAY_LEN(rdim);
562
558
 
563
559
  elements = 1;
564
- for (i=0; i<rank; i++) {
560
+ for (i=0; i<ndim; i++) {
565
561
  dim[i] = NUM2SIZE(rb_ary_entry(rdim, i));
566
562
  elements *= dim[i];
567
563
  }
@@ -570,7 +566,7 @@ rb_ca_refer (int argc, VALUE *argv, VALUE self)
570
566
  offset = NUM2SIZE(roffset);
571
567
  }
572
568
 
573
- cr = ca_refer_new((CArray*)ca, data_type, rank, dim, bytes, offset);
569
+ cr = ca_refer_new((CArray*)ca, data_type, ndim, dim, bytes, offset);
574
570
  obj = ca_wrap_struct(cr);
575
571
  rb_ca_set_parent(obj, self);
576
572
  rb_ca_data_type_import(obj, rtype);
@@ -584,7 +580,7 @@ rb_ca_refer (int argc, VALUE *argv, VALUE self)
584
580
 
585
581
  VALUE
586
582
  rb_ca_refer_new (VALUE self,
587
- int8_t data_type, int8_t rank, ca_size_t *dim, ca_size_t bytes,
583
+ int8_t data_type, int8_t ndim, ca_size_t *dim, ca_size_t bytes,
588
584
  ca_size_t offset)
589
585
  {
590
586
  volatile VALUE list, rdim, ropt;
@@ -593,8 +589,8 @@ rb_ca_refer_new (VALUE self,
593
589
 
594
590
  Data_Get_Struct(self, CArray, ca);
595
591
 
596
- rdim = rb_ary_new2(rank);
597
- for (i=0; i<rank; i++) {
592
+ rdim = rb_ary_new2(ndim);
593
+ for (i=0; i<ndim; i++) {
598
594
  rb_ary_store(rdim, i, SIZE2NUM(dim[i]));
599
595
  }
600
596
 
@@ -3,10 +3,8 @@
3
3
  ca_obj_repeat.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,22 +12,22 @@
14
12
 
15
13
  VALUE rb_cCARepeat;
16
14
 
17
- /* rdoc:
15
+ /* yard:
18
16
  class CARepeat < CAVirtual # :nodoc:
19
17
  end
20
18
  */
21
19
 
22
20
  int
23
- ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t rank, ca_size_t *count)
21
+ ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t ndim, ca_size_t *count)
24
22
  {
25
23
  int8_t data_type;
26
24
  ca_size_t elements, bytes, nrpt, repeat_level, repeat_num,
27
- contig_level, contig_num, data_rank;
25
+ contig_level, contig_num, data_ndim;
28
26
  int i, j;
29
27
 
30
28
  nrpt = 1;
31
- data_rank = 0;
32
- for (i=0; i<rank; i++) {
29
+ data_ndim = 0;
30
+ for (i=0; i<ndim; i++) {
33
31
  if ( count[i] < 0 ) {
34
32
  rb_raise(rb_eRuntimeError,
35
33
  "negative size for %i-th dimension specified", i);
@@ -39,27 +37,27 @@ ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t rank, ca_size_t *count)
39
37
  nrpt *= count[i];
40
38
  }
41
39
  else {
42
- data_rank += 1;
40
+ data_ndim += 1;
43
41
  }
44
42
  }
45
43
 
46
44
  repeat_level = 0;
47
45
  repeat_num = 1;
48
- for (i=0; i<rank && count[i]; i++) {
46
+ for (i=0; i<ndim && count[i]; i++) {
49
47
  repeat_level = i+1;
50
48
  repeat_num *= count[i];
51
49
  }
52
50
 
53
- contig_level = rank-1;
51
+ contig_level = ndim-1;
54
52
  contig_num = 1;
55
- for (i=rank-1; i >= 0 && count[i]; i--) {
53
+ for (i=ndim-1; i >= 0 && count[i]; i--) {
56
54
  contig_level = i;
57
55
  contig_num *= count[i];
58
56
  }
59
57
 
60
- if ( data_rank != parent->rank ) {
58
+ if ( data_ndim != parent->ndim ) {
61
59
  rb_raise(rb_eRuntimeError,
62
- "mismatch in rank between original array and determined by # of dummies");
60
+ "mismatch in ndim between original array and determined by # of dummies");
63
61
  }
64
62
 
65
63
  if ( ((double) parent->elements) * nrpt > CA_LENGTH_MAX ) {
@@ -73,24 +71,24 @@ ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t rank, ca_size_t *count)
73
71
  ca->obj_type = CA_OBJ_REPEAT;
74
72
  ca->data_type = data_type;
75
73
  ca->flags = 0;
76
- ca->rank = rank;
74
+ ca->ndim = ndim;
77
75
  ca->bytes = bytes;
78
76
  ca->elements = elements;
79
77
  ca->ptr = NULL;
80
78
  ca->mask = NULL;
81
- ca->dim = ALLOC_N(ca_size_t, rank);
79
+ ca->dim = ALLOC_N(ca_size_t, ndim);
82
80
 
83
81
  ca->parent = parent;
84
82
  ca->attach = 0;
85
83
  ca->nosync = 0;
86
- ca->count = ALLOC_N(ca_size_t, rank);
84
+ ca->count = ALLOC_N(ca_size_t, ndim);
87
85
  ca->repeat_level = repeat_level;
88
86
  ca->repeat_num = repeat_num;
89
87
  ca->contig_level = contig_level;
90
88
  ca->contig_num = contig_num;
91
89
 
92
90
  j = 0;
93
- for (i=0; i<rank; i++) {
91
+ for (i=0; i<ndim; i++) {
94
92
  if ( count[i] ) {
95
93
  ca->dim[i] = count[i];
96
94
  }
@@ -99,7 +97,7 @@ ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t rank, ca_size_t *count)
99
97
  }
100
98
  }
101
99
 
102
- memcpy(ca->count, count, rank * sizeof(ca_size_t));
100
+ memcpy(ca->count, count, ndim * sizeof(ca_size_t));
103
101
 
104
102
  ca_set_flag(ca, CA_FLAG_READ_ONLY);
105
103
 
@@ -112,10 +110,10 @@ ca_repeat_setup (CARepeat *ca, CArray *parent, int8_t rank, ca_size_t *count)
112
110
 
113
111
 
114
112
  CARepeat *
115
- ca_repeat_new (CArray *parent, int8_t rank, ca_size_t *count)
113
+ ca_repeat_new (CArray *parent, int8_t ndim, ca_size_t *count)
116
114
  {
117
115
  CARepeat *ca = ALLOC(CARepeat);
118
- ca_repeat_setup(ca, parent, rank, count);
116
+ ca_repeat_setup(ca, parent, ndim, count);
119
117
  return ca;
120
118
  }
121
119
 
@@ -141,7 +139,7 @@ static void *
141
139
  ca_repeat_func_clone (void *ap)
142
140
  {
143
141
  CARepeat *ca = (CARepeat *) ap;
144
- return ca_repeat_new(ca->parent, ca->rank, ca->count);
142
+ return ca_repeat_new(ca->parent, ca->ndim, ca->count);
145
143
  }
146
144
 
147
145
  static char *
@@ -173,7 +171,7 @@ ca_repeat_func_ptr_at_index (void *ap, ca_size_t *idx)
173
171
 
174
172
  j = 0;
175
173
  n = 0;
176
- for (i=0; i<ca->rank; i++) {
174
+ for (i=0; i<ca->ndim; i++) {
177
175
  if ( ! count[i] ) {
178
176
  n = dim0[j]*n + idx[i];
179
177
  j++;
@@ -199,7 +197,7 @@ ca_repeat_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
199
197
  ca_size_t n, j;
200
198
  j = 0;
201
199
  n = 0;
202
- for (i=0; i<ca->rank; i++) {
200
+ for (i=0; i<ca->ndim; i++) {
203
201
  if ( ! count[i] ) {
204
202
  idx0[j++] = idx[i];
205
203
  }
@@ -217,7 +215,7 @@ ca_repeat_func_store_index (void *ap, ca_size_t *idx, void *ptr)
217
215
  ca_size_t n, j;
218
216
  j = 0;
219
217
  n = 0;
220
- for (i=0; i<ca->rank; i++) {
218
+ for (i=0; i<ca->ndim; i++) {
221
219
  if ( ! count[i] ) {
222
220
  idx0[j++] = idx[i];
223
221
  }
@@ -305,7 +303,7 @@ ca_repeat_func_create_mask (void *ap)
305
303
  ca_create_mask(ca->parent);
306
304
  }
307
305
  ca->mask =
308
- (CArray *) ca_repeat_new(ca->parent->mask, ca->rank, ca->count);
306
+ (CArray *) ca_repeat_new(ca->parent->mask, ca->ndim, ca->count);
309
307
  }
310
308
 
311
309
  ca_operation_function_t ca_repeat_func = {
@@ -410,7 +408,7 @@ ca_repeat_attach (CARepeat *ca)
410
408
  ca_size_t i;
411
409
  char *dp, *sp;
412
410
 
413
- for (i=0; i<ca->rank; i++) {
411
+ for (i=0; i<ca->ndim; i++) {
414
412
  idx[i] = 0;
415
413
  idx0[i] = 0;
416
414
  }
@@ -459,7 +457,7 @@ ca_repeat_sync (CARepeat *ca)
459
457
  ca_size_t idx[CA_RANK_MAX];
460
458
  ca_size_t idx0[CA_RANK_MAX];
461
459
  int8_t i;
462
- for (i=0; i<ca->rank; i++) {
460
+ for (i=0; i<ca->ndim; i++) {
463
461
  idx[i] = 0;
464
462
  idx0[i] = 0;
465
463
  }
@@ -475,14 +473,14 @@ ca_repeat_fill (CARepeat *ca, char *ptr)
475
473
  /* ------------------------------------------------------------------- */
476
474
 
477
475
  VALUE
478
- rb_ca_repeat_new (VALUE cary, int8_t rank, ca_size_t *count)
476
+ rb_ca_repeat_new (VALUE cary, int8_t ndim, ca_size_t *count)
479
477
  {
480
478
  volatile VALUE obj;
481
479
  CArray *parent;
482
480
  CARepeat *ca;
483
481
  rb_check_carray_object(cary);
484
482
  Data_Get_Struct(cary, CArray, parent);
485
- ca = ca_repeat_new(parent, rank, count);
483
+ ca = ca_repeat_new(parent, ndim, count);
486
484
  obj = ca_wrap_struct(ca);
487
485
  rb_ca_set_parent(obj, cary);
488
486
  rb_ca_data_type_inherit(obj, cary);
@@ -507,7 +505,7 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
507
505
  ) ) {
508
506
  volatile VALUE args;
509
507
  CArray *ct;
510
- ca_size_t rank, dim[CA_RANK_MAX];
508
+ ca_size_t ndim, dim[CA_RANK_MAX];
511
509
  int k;
512
510
  if ( argv[0] == ID2SYM(rb_intern("%") ) ) {
513
511
  Data_Get_Struct(argv[1], CArray, ct);
@@ -515,34 +513,34 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
515
513
  else {
516
514
  Data_Get_Struct(argv[0], CArray, ct);
517
515
  }
518
- if ( ct->rank < ca->rank ) {
519
- rb_raise(rb_eRuntimeError, "invalid rank to template");
516
+ if ( ct->ndim < ca->ndim ) {
517
+ rb_raise(rb_eRuntimeError, "invalid ndim to template");
520
518
  }
521
519
  args = rb_ary_new();
522
- rank = 0;
520
+ ndim = 0;
523
521
  if ( argv[0] == ID2SYM(rb_intern("%") ) ) {
524
522
  k = 0;
525
- for (i=0; i<ct->rank; i++) {
523
+ for (i=0; i<ct->ndim; i++) {
526
524
  if ( ca->dim[k] == 1 ) {
527
525
  rb_ary_push(args, SIZE2NUM(ct->dim[i]));
528
526
  k++;
529
527
  }
530
528
  else if ( ct->dim[i] == ca->dim[k] ) {
531
529
  rb_ary_push(args, ID2SYM(rb_intern("%")));
532
- dim[rank] = ca->dim[k];
533
- k++; rank++;
530
+ dim[ndim] = ca->dim[k];
531
+ k++; ndim++;
534
532
  }
535
533
  else {
536
534
  rb_ary_push(args, SIZE2NUM(ct->dim[i]));
537
535
  }
538
536
  }
539
- if ( rank != ca->rank ) {
540
- self = rb_ca_refer_new(self, ca->data_type, rank, dim, ca->bytes, 0);
537
+ if ( ndim != ca->ndim ) {
538
+ self = rb_ca_refer_new(self, ca->data_type, ndim, dim, ca->bytes, 0);
541
539
  }
542
540
  }
543
541
  else {
544
- k = ca->rank - 1;
545
- for (i=ct->rank-1; i>=0; i--) {
542
+ k = ca->ndim - 1;
543
+ for (i=ct->ndim-1; i>=0; i--) {
546
544
  if ( ca->dim[k] == 1 ) {
547
545
  rb_ary_unshift(args, SIZE2NUM(ct->dim[i]));
548
546
  k--;
@@ -556,14 +554,14 @@ rb_ca_repeat (int argc, VALUE *argv, VALUE self)
556
554
  }
557
555
  }
558
556
  if ( k != 0 ) {
559
- rank = 0;
560
- for (i=0; i<ca->rank; i++) {
557
+ ndim = 0;
558
+ for (i=0; i<ca->ndim; i++) {
561
559
  if ( ca->dim[i] != 1 ) {
562
- dim[rank] = ca->dim[i];
563
- rank++;
560
+ dim[ndim] = ca->dim[i];
561
+ ndim++;
564
562
  }
565
563
  }
566
- self = rb_ca_refer_new(self, ca->data_type, rank, dim, ca->bytes, 0);
564
+ self = rb_ca_refer_new(self, ca->data_type, ndim, dim, ca->bytes, 0);
567
565
  }
568
566
  }
569
567
  return rb_ca_repeat((int)RARRAY_LEN(args), RARRAY_PTR(args), self);
@@ -625,7 +623,7 @@ rb_ca_repeat_initialize_copy (VALUE self, VALUE other)
625
623
  Data_Get_Struct(self, CARepeat, ca);
626
624
  Data_Get_Struct(other, CARepeat, cs);
627
625
 
628
- ca_repeat_setup(ca, cs->parent, cs->rank, cs->count);
626
+ ca_repeat_setup(ca, cs->parent, cs->ndim, cs->count);
629
627
 
630
628
  return self;
631
629
  }