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_fake.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;
@@ -31,7 +29,7 @@ static int8_t CA_OBJ_FAKE;
31
29
 
32
30
  static VALUE rb_cCAFake;
33
31
 
34
- /* rdoc:
32
+ /* yard:
35
33
  class CAFake < CAVirtual # :nodoc:
36
34
  end
37
35
  */
@@ -41,7 +39,7 @@ static VALUE rb_cCAFake;
41
39
  int
42
40
  ca_fake_setup (CAFake *ca, CArray *parent, int8_t data_type, ca_size_t bytes)
43
41
  {
44
- int8_t rank;
42
+ int8_t ndim;
45
43
  ca_size_t *dim, elements;
46
44
 
47
45
  /* check arguments */
@@ -49,25 +47,25 @@ ca_fake_setup (CAFake *ca, CArray *parent, int8_t data_type, ca_size_t bytes)
49
47
  CA_CHECK_DATA_TYPE(data_type);
50
48
  CA_CHECK_BYTES(data_type, bytes);
51
49
 
52
- rank = parent->rank;
50
+ ndim = parent->ndim;
53
51
  dim = parent->dim;
54
52
  elements = parent->elements;
55
53
 
56
54
  ca->obj_type = CA_OBJ_FAKE;
57
55
  ca->data_type = data_type;
58
56
  ca->flags = 0;
59
- ca->rank = rank;
57
+ ca->ndim = ndim;
60
58
  ca->bytes = bytes;
61
59
  ca->elements = elements;
62
60
  ca->ptr = NULL;
63
61
  ca->mask = NULL;
64
- ca->dim = ALLOC_N(ca_size_t, rank);
62
+ ca->dim = ALLOC_N(ca_size_t, ndim);
65
63
 
66
64
  ca->parent = parent;
67
65
  ca->attach = 0;
68
66
  ca->nosync = 0;
69
67
 
70
- memcpy(ca->dim, dim, rank * sizeof(ca_size_t));
68
+ memcpy(ca->dim, dim, ndim * sizeof(ca_size_t));
71
69
 
72
70
  if ( ca_has_mask(parent) ) {
73
71
  ca_create_mask(ca);
@@ -288,7 +286,7 @@ ca_fake_func_create_mask (void *ap)
288
286
  }
289
287
  ca->mask =
290
288
  (CArray *) ca_refer_new(ca->parent->mask,
291
- CA_BOOLEAN, ca->rank, ca->dim, 0, 0);
289
+ CA_BOOLEAN, ca->ndim, ca->dim, 0, 0);
292
290
  }
293
291
 
294
292
  ca_operation_function_t ca_fake_func = {
@@ -328,7 +326,7 @@ rb_ca_fake_new (VALUE cary, int8_t data_type, ca_size_t bytes)
328
326
  return obj;
329
327
  }
330
328
 
331
- /* rdoc:
329
+ /* yard:
332
330
  class CArray
333
331
  def fake (data_type, options={:bytes=>0})
334
332
  end
@@ -3,10 +3,8 @@
3
3
  ca_obj_farray.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;
@@ -33,7 +31,7 @@ static int8_t CA_OBJ_FARRAY;
33
31
 
34
32
  static VALUE rb_cCAFarray;
35
33
 
36
- /* rdoc:
34
+ /* yard:
37
35
  class CAFArray < CAVirtual # :nodoc:
38
36
  end
39
37
  */
@@ -43,14 +41,14 @@ static VALUE rb_cCAFarray;
43
41
  int
44
42
  ca_farray_setup (CAFarray *ca, CArray *parent)
45
43
  {
46
- int8_t rank, data_type;
44
+ int8_t ndim, data_type;
47
45
  ca_size_t *dim, elements, bytes;
48
46
  int i;
49
47
 
50
48
  /* check arguments */
51
49
 
52
50
  data_type = parent->data_type;
53
- rank = parent->rank;
51
+ ndim = parent->ndim;
54
52
  dim = parent->dim;
55
53
  bytes = parent->bytes;
56
54
  elements = parent->elements;
@@ -58,23 +56,23 @@ ca_farray_setup (CAFarray *ca, CArray *parent)
58
56
  ca->obj_type = CA_OBJ_FARRAY;
59
57
  ca->data_type = data_type;
60
58
  ca->flags = 0;
61
- ca->rank = rank;
59
+ ca->ndim = ndim;
62
60
  ca->bytes = bytes;
63
61
  ca->elements = elements;
64
62
  ca->ptr = NULL;
65
63
  ca->mask = NULL;
66
- ca->dim = ALLOC_N(ca_size_t, rank);
64
+ ca->dim = ALLOC_N(ca_size_t, ndim);
67
65
 
68
66
  ca->parent = parent;
69
67
  ca->attach = 0;
70
68
  ca->nosync = 0;
71
69
 
72
- for (i=0; i<rank; i++) {
73
- ca->dim[i] = dim[rank-1-i];
70
+ for (i=0; i<ndim; i++) {
71
+ ca->dim[i] = dim[ndim-1-i];
74
72
  }
75
73
 
76
74
  ca->step = 1;
77
- for (i=1; i<rank; i++) {
75
+ for (i=1; i<ndim; i++) {
78
76
  ca->step *= dim[i];
79
77
  }
80
78
 
@@ -124,11 +122,11 @@ static void
124
122
  ca_farray_func_fetch_index (void *ap, ca_size_t *idx, void *ptr)
125
123
  {
126
124
  CAFarray *ca = (CAFarray *) ap;
127
- int8_t rank = ca->rank;
125
+ int8_t ndim = ca->ndim;
128
126
  ca_size_t idx0[CA_RANK_MAX];
129
127
  int i;
130
- for (i=0; i<rank; i++) {
131
- idx0[i] = idx[rank-1-i];
128
+ for (i=0; i<ndim; i++) {
129
+ idx0[i] = idx[ndim-1-i];
132
130
  }
133
131
  ca_fetch_index(ca->parent, idx0, ptr);
134
132
  }
@@ -137,11 +135,11 @@ static void
137
135
  ca_farray_func_store_index (void *ap, ca_size_t *idx, void *ptr)
138
136
  {
139
137
  CAFarray *ca = (CAFarray *) ap;
140
- int8_t rank = ca->rank;
138
+ int8_t ndim = ca->ndim;
141
139
  ca_size_t idx0[CA_RANK_MAX];
142
140
  int i;
143
- for (i=0; i<rank; i++) {
144
- idx0[i] = idx[rank-1-i];
141
+ for (i=0; i<ndim; i++) {
142
+ idx0[i] = idx[ndim-1-i];
145
143
  }
146
144
  ca_store_index(ca->parent, idx0, ptr);
147
145
  }
@@ -258,7 +256,7 @@ ca_fa_attach_loop (CAFarray *ca, int8_t level, ca_size_t *idx, ca_size_t *idx0)
258
256
  ca_size_t step = ca->step;
259
257
  ca_size_t dim = ca->dim[level];
260
258
  ca_size_t i;
261
- if ( level == ca->rank - 1 ) {
259
+ if ( level == ca->ndim - 1 ) {
262
260
  idx[level] = 0;
263
261
  idx0[0] = 0;
264
262
  switch ( ca->bytes ) {
@@ -315,7 +313,7 @@ ca_fa_attach_loop (CAFarray *ca, int8_t level, ca_size_t *idx, ca_size_t *idx0)
315
313
  }
316
314
  }
317
315
  else {
318
- int level0 = ca->rank - 1 - level;
316
+ int level0 = ca->ndim - 1 - level;
319
317
  for (i=0; i<dim; i++) {
320
318
  idx[level] = i;
321
319
  idx0[level0] = i;
@@ -339,7 +337,7 @@ ca_fa_sync_loop (CAFarray *ca, int8_t level, ca_size_t *idx, ca_size_t *idx0)
339
337
  ca_size_t dim = ca->dim[level];
340
338
  ca_size_t i;
341
339
 
342
- if ( level == ca->rank - 1 ) {
340
+ if ( level == ca->ndim - 1 ) {
343
341
  idx[level] = 0;
344
342
  idx0[0] = 0;
345
343
  switch ( ca->bytes ) {
@@ -398,7 +396,7 @@ ca_fa_sync_loop (CAFarray *ca, int8_t level, ca_size_t *idx, ca_size_t *idx0)
398
396
  else {
399
397
  for (i=0; i<dim; i++) {
400
398
  idx[level] = i;
401
- idx0[ca->rank - 1 - level] = i;
399
+ idx0[ca->ndim - 1 - level] = i;
402
400
  ca_fa_sync_loop(ca, level+1, idx, idx0);
403
401
  }
404
402
  }
@@ -429,7 +427,7 @@ rb_ca_farray_new (VALUE cary)
429
427
  return obj;
430
428
  }
431
429
 
432
- /* rdoc:
430
+ /* yard:
433
431
  class CArray
434
432
  # create the virtual transposed array which dimension order is reversed.
435
433
  def t
@@ -3,10 +3,8 @@
3
3
  ca_obj_field.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;
@@ -33,7 +31,7 @@ static int8_t CA_OBJ_FIELD;
33
31
 
34
32
  static VALUE rb_cCAField;
35
33
 
36
- /* rdoc:
34
+ /* yard:
37
35
  class CAField < CAVirtual # :nodoc:
38
36
  end
39
37
  */
@@ -44,7 +42,7 @@ int
44
42
  ca_field_setup (CAField *ca, CArray *parent,
45
43
  ca_size_t offset, int8_t data_type, ca_size_t bytes)
46
44
  {
47
- int8_t rank;
45
+ int8_t ndim;
48
46
  ca_size_t elements;
49
47
 
50
48
  /* check arguments */
@@ -64,25 +62,25 @@ ca_field_setup (CAField *ca, CArray *parent,
64
62
  rb_raise(rb_eRuntimeError, "offset or bytes out of range");
65
63
  }
66
64
 
67
- rank = parent->rank;
65
+ ndim = parent->ndim;
68
66
  elements = parent->elements;
69
67
 
70
68
  ca->obj_type = CA_OBJ_FIELD;
71
69
  ca->data_type = data_type;
72
70
  ca->flags = 0;
73
- ca->rank = rank;
71
+ ca->ndim = ndim;
74
72
  ca->bytes = bytes;
75
73
  ca->elements = elements;
76
74
  ca->ptr = NULL;
77
75
  ca->mask = NULL;
78
- ca->dim = ALLOC_N(ca_size_t, rank);
76
+ ca->dim = ALLOC_N(ca_size_t, ndim);
79
77
 
80
78
  ca->parent = parent;
81
79
  ca->attach = 0;
82
80
  ca->nosync = 0;
83
81
  ca->offset = offset;
84
82
 
85
- memcpy(ca->dim, parent->dim, rank * sizeof(ca_size_t));
83
+ memcpy(ca->dim, parent->dim, ndim * sizeof(ca_size_t));
86
84
 
87
85
  if ( ca_has_mask(parent) ) {
88
86
  ca_create_mask(ca);
@@ -149,13 +147,13 @@ ca_field_func_ptr_at_index (void *ap, ca_size_t *idx)
149
147
  ca_size_t *dim = ca->dim;
150
148
  int8_t i;
151
149
  ca_size_t n;
152
- n = idx[0]; /* n = idx[0]*dim[1]*dim[2]*...*dim[rank-1] */
153
- for (i=1; i<ca->rank; i++) { /* + idx[1]*dim[1]*dim[2]*...*dim[rank-1] */
154
- n = dim[i]*n+idx[i]; /* ... + idx[rank-2]*dim[1] + idx[rank-1] */
150
+ n = idx[0]; /* n = idx[0]*dim[1]*dim[2]*...*dim[ndim-1] */
151
+ for (i=1; i<ca->ndim; i++) { /* + idx[1]*dim[1]*dim[2]*...*dim[ndim-1] */
152
+ n = dim[i]*n+idx[i]; /* ... + idx[ndim-2]*dim[1] + idx[ndim-1] */
155
153
  }
156
154
 
157
155
  if ( ca->parent->ptr == NULL ) {
158
- return ca_ptr_at_addr(ca->parent, n) + ca->offset;
156
+ return (void *)((char *) ca_ptr_at_addr(ca->parent, n) + ca->offset);
159
157
  }
160
158
  else {
161
159
  return ca->parent->ptr + ca->parent->bytes * n + ca->offset;
@@ -285,7 +283,7 @@ ca_field_func_create_mask (void *ap)
285
283
  }
286
284
  ca->mask =
287
285
  (CArray *) ca_refer_new(ca->parent->mask,
288
- CA_BOOLEAN, ca->rank, ca->dim, 0, 0);
286
+ CA_BOOLEAN, ca->ndim, ca->dim, 0, 0);
289
287
  }
290
288
 
291
289
  ca_operation_function_t ca_field_func = {
@@ -324,7 +322,7 @@ ca_field_attach (CAField *ca)
324
322
  case CA_UINT8:
325
323
  {
326
324
  char *p = ca_ptr_at_addr(ca, 0);
327
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
325
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
328
326
  while ( n-- ) {
329
327
  *p = *q;
330
328
  p += 1; q += pbytes;
@@ -335,7 +333,7 @@ ca_field_attach (CAField *ca)
335
333
  case CA_UINT16:
336
334
  {
337
335
  int16_t *p = (int16_t*) ca_ptr_at_addr(ca, 0);
338
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
336
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
339
337
  while ( n-- ) {
340
338
  *p = *(int16_t*) q;
341
339
  p += 1; q += pbytes;
@@ -347,7 +345,7 @@ ca_field_attach (CAField *ca)
347
345
  case CA_FLOAT32:
348
346
  {
349
347
  int32_t *p = (int32_t*) ca_ptr_at_addr(ca, 0);
350
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
348
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
351
349
  while ( n-- ) {
352
350
  *p = *(int32_t*) q;
353
351
  p += 1; q += pbytes;
@@ -359,7 +357,7 @@ ca_field_attach (CAField *ca)
359
357
  case CA_FLOAT64:
360
358
  {
361
359
  float64_t *p = (float64_t*) ca_ptr_at_addr(ca, 0);
362
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
360
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
363
361
  while ( n-- ) {
364
362
  *p = *(float64_t*) q;
365
363
  p += 1; q += pbytes;
@@ -369,7 +367,7 @@ ca_field_attach (CAField *ca)
369
367
  default:
370
368
  {
371
369
  char *p = ca_ptr_at_addr(ca, 0);
372
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
370
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
373
371
  while ( n-- ) {
374
372
  memcpy(p, q, ca->bytes);
375
373
  p += bytes; q += pbytes;
@@ -391,7 +389,7 @@ ca_field_sync (CAField *ca)
391
389
  case CA_UINT8:
392
390
  {
393
391
  char *p = ca_ptr_at_addr(ca, 0);
394
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
392
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
395
393
  while ( n-- ) {
396
394
  *q = *p;
397
395
  p += 1; q += pbytes;
@@ -402,7 +400,7 @@ ca_field_sync (CAField *ca)
402
400
  case CA_UINT16:
403
401
  {
404
402
  int16_t *p = (int16_t*) ca_ptr_at_addr(ca, 0);
405
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
403
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
406
404
  while ( n-- ) {
407
405
  *(int16_t*) q = *p;
408
406
  p += 1; q += pbytes;
@@ -414,7 +412,7 @@ ca_field_sync (CAField *ca)
414
412
  case CA_FLOAT32:
415
413
  {
416
414
  int32_t *p = (int32_t*) ca_ptr_at_addr(ca, 0);
417
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
415
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
418
416
  while ( n-- ) {
419
417
  *(int32_t*) q = *p;
420
418
  p += 1; q += pbytes;
@@ -426,7 +424,7 @@ ca_field_sync (CAField *ca)
426
424
  case CA_FLOAT64:
427
425
  {
428
426
  float64_t *p = (float64_t*) ca_ptr_at_addr(ca, 0);
429
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
427
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
430
428
  while ( n-- ) {
431
429
  *(float64_t*) q = *p;
432
430
  p += 1; q += pbytes;
@@ -436,7 +434,7 @@ ca_field_sync (CAField *ca)
436
434
  default:
437
435
  {
438
436
  char *p = ca_ptr_at_addr(ca, 0);
439
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
437
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
440
438
  while ( n-- ) {
441
439
  memcpy(q, p, ca->bytes);
442
440
  p += bytes; q += pbytes;
@@ -450,7 +448,7 @@ ca_field_fill (CAField *ca, char *ptr)
450
448
  {
451
449
  ca_size_t pbytes = ca->parent->bytes;
452
450
  ca_size_t n = ca->elements;
453
- char *q = ca_ptr_at_addr(ca->parent, 0) + ca->offset;
451
+ char *q = (char *) ca_ptr_at_addr(ca->parent, 0) + ca->offset;
454
452
 
455
453
  switch ( ca->data_type ) {
456
454
  case CA_BOOLEAN:
@@ -545,7 +543,7 @@ rb_ca_field_initialize_copy (VALUE self, VALUE other)
545
543
 
546
544
  /* ----------------------------------------------------------------------- */
547
545
 
548
- /* rdoc:
546
+ /* yard:
549
547
  class CArray
550
548
  # call-seq:
551
549
  # CArray#field(offset, data_type[, :bytes=>bytes])
@@ -583,21 +581,21 @@ rb_ca_field (int argc, VALUE *argv, VALUE self)
583
581
  if ( rb_obj_is_carray(rtype) ) {
584
582
  CArray *ct;
585
583
  ca_size_t dim[CA_RANK_MAX];
586
- int8_t rank;
584
+ int8_t ndim;
587
585
  int8_t i, j;
588
586
  Data_Get_Struct(rtype, CArray, ct);
589
587
  data_type = CA_FIXLEN;
590
588
  bytes = ct->bytes * ct->elements;
591
589
  obj = rb_ca_field_new(self, offset, data_type, bytes);
592
590
  rb_ca_data_type_inherit(obj, rtype);
593
- rank = ca->rank + ct->rank;
594
- for (i=0; i<ca->rank; i++) {
591
+ ndim = ca->ndim + ct->ndim;
592
+ for (i=0; i<ca->ndim; i++) {
595
593
  dim[i] = ca->dim[i];
596
594
  }
597
- for (j=0; j<ct->rank; j++, i++) {
595
+ for (j=0; j<ct->ndim; j++, i++) {
598
596
  dim[i] = ct->dim[j];
599
597
  }
600
- obj = rb_ca_refer_new(obj, ct->data_type, rank, dim, ct->bytes, 0);
598
+ obj = rb_ca_refer_new(obj, ct->data_type, ndim, dim, ct->bytes, 0);
601
599
  }
602
600
  else {
603
601
  rb_ca_guess_type_and_bytes(rtype, rbytes, &data_type, &bytes);