carray 3.0.0 → 3.0.1

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 (180) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -1
  3. data/CHANGELOG.md +325 -3
  4. data/{NEWS.md → CHANGELOG.v1.md} +1 -1
  5. data/README.md +32 -32
  6. data/carray.gemspec +12 -8
  7. data/ext/ca_axis_group.c +55 -19
  8. data/ext/ca_binop_dispatch.c +5 -6
  9. data/ext/ca_binop_dispatch.h +0 -7
  10. data/ext/ca_categorical_iterator.c +13 -13
  11. data/ext/ca_for_each_element.h +6 -8
  12. data/ext/ca_group_iter.c +1 -1
  13. data/ext/ca_kernel_iterator.c +69 -23
  14. data/ext/ca_kernel_iterator.h +3 -10
  15. data/ext/ca_obj_bincmp.c +57 -27
  16. data/ext/ca_obj_binop.c +86 -30
  17. data/ext/ca_obj_const_string.c +3 -1
  18. data/ext/ca_obj_face.c +80 -0
  19. data/ext/ca_obj_face.h +33 -1
  20. data/ext/ca_obj_fake.c +11 -0
  21. data/ext/ca_obj_fixlen_string.c +3 -1
  22. data/ext/ca_obj_grid.c +11 -3
  23. data/ext/ca_obj_meld.c +13 -8
  24. data/ext/ca_obj_moncmp.c +33 -14
  25. data/ext/ca_obj_monop.c +19 -7
  26. data/ext/ca_obj_object.c +99 -4
  27. data/ext/ca_obj_record.c +3 -1
  28. data/ext/ca_obj_refer.c +30 -6
  29. data/ext/ca_obj_roll.c +13 -5
  30. data/ext/ca_obj_select_axis.c +16 -6
  31. data/ext/ca_obj_shift.c +3 -3
  32. data/ext/ca_obj_stride.c +106 -23
  33. data/ext/ca_obj_string.c +3 -1
  34. data/ext/ca_obj_tile.c +13 -5
  35. data/ext/ca_obj_time.c +3 -1
  36. data/ext/ca_obj_timedelta.c +3 -1
  37. data/ext/ca_obj_transpose.c +1 -1
  38. data/ext/ca_obj_triop.c +62 -23
  39. data/ext/ca_obj_window.c +86 -17
  40. data/ext/ca_op_cmplx64.h +123 -0
  41. data/ext/ca_op_ipower.c +0 -3
  42. data/ext/ca_sort_kernels.h +5 -5
  43. data/ext/ca_sweep_engine.c +78 -35
  44. data/ext/ca_sweep_engine.h +13 -4
  45. data/ext/ca_transform_common.c +7 -0
  46. data/ext/carray.h +127 -130
  47. data/ext/carray_access.c +56 -34
  48. data/ext/carray_bincount.c +8 -8
  49. data/ext/carray_broadcast.c +99 -6
  50. data/ext/carray_build_flags.h +3 -0
  51. data/ext/carray_call_cfunc.c +1491 -0
  52. data/ext/carray_call_cfunc.h +153 -0
  53. data/ext/carray_cast.c +69 -31
  54. data/ext/carray_conversion.c +22 -22
  55. data/ext/carray_copy.c +12 -2
  56. data/ext/carray_core.c +57 -10
  57. data/ext/carray_count.c +1 -1
  58. data/ext/carray_element.c +7 -7
  59. data/ext/carray_factorize.c +28 -28
  60. data/ext/carray_hold.c +1 -1
  61. data/ext/carray_index_classifier.c +7 -21
  62. data/ext/carray_internal.h +19 -3
  63. data/ext/carray_kernels_bincmp.c +1 -0
  64. data/ext/carray_kernels_binop.c +320 -298
  65. data/ext/carray_kernels_init.c +1095 -0
  66. data/ext/carray_kernels_map.c +1 -0
  67. data/ext/carray_kernels_moncmp.c +1 -0
  68. data/ext/carray_kernels_monop.c +412 -411
  69. data/ext/carray_kernels_reduce_aggregate.c +88 -87
  70. data/ext/carray_kernels_reduce_boolean.c +1 -0
  71. data/ext/carray_kernels_reduce_cumulative.c +54 -53
  72. data/ext/carray_kernels_reduce_extreme.c +51 -50
  73. data/ext/carray_kernels_reduce_variance.c +1 -0
  74. data/ext/carray_kernels_scan.c +1 -0
  75. data/ext/carray_kernels_search.c +93 -92
  76. data/ext/carray_kernels_sort.c +1 -0
  77. data/ext/carray_kernels_triop.c +1 -0
  78. data/ext/carray_lazy.c +175 -5
  79. data/ext/carray_mask.c +6 -5
  80. data/ext/carray_median_percentile.c +1 -1
  81. data/ext/carray_memory_view.c +46 -21
  82. data/ext/carray_operator.c +46 -49
  83. data/ext/carray_partition.c +4 -4
  84. data/ext/carray_random.c +7 -7
  85. data/ext/carray_scatter.c +1 -1
  86. data/ext/carray_sort.c +3 -3
  87. data/ext/carray_sort_kernel.c +10 -10
  88. data/ext/carray_test.c +1 -1
  89. data/ext/extconf.rb +18 -0
  90. data/ext/mk_call_cfunc.rb +243 -52
  91. data/ext/mkkernel.rb +354 -100
  92. data/ext/ruby_carray.c +18 -16
  93. data/ext/version.h +4 -4
  94. data/lib/carray/autoload_carray.rb +19 -0
  95. data/lib/carray/autoload_method_extension.rb +2 -1
  96. data/lib/carray/axis_group.rb +7 -7
  97. data/lib/carray/basics.rb +59 -59
  98. data/lib/carray/bincount_nd.rb +12 -12
  99. data/lib/carray/block_iterator.rb +24 -14
  100. data/lib/carray/categorical.rb +4 -4
  101. data/lib/carray/categorical_iterator.rb +98 -76
  102. data/lib/carray/conditional.rb +14 -14
  103. data/lib/carray/construct.rb +21 -0
  104. data/lib/carray/core_extensions.rb +62 -5
  105. data/lib/carray/data_type_extension.rb +18 -1
  106. data/lib/carray/frame/concat.rb +3 -3
  107. data/lib/carray/frame/convert.rb +1 -1
  108. data/lib/carray/frame/frame.rb +4 -11
  109. data/lib/carray/frame/io.rb +159 -2
  110. data/lib/carray/frame/sort.rb +1 -1
  111. data/lib/carray/frame/verbs.rb +18 -1
  112. data/lib/carray/fuse_source.rb +123 -0
  113. data/lib/carray/fusion.rb +218 -0
  114. data/lib/carray/histogram.rb +16 -16
  115. data/lib/carray/inspect.rb +1 -7
  116. data/lib/carray/iterator.rb +4 -3
  117. data/lib/carray/lazy.rb +125 -73
  118. data/lib/carray/meld_reduce.rb +2 -2
  119. data/lib/carray/methods/align_addr.rb +1 -1
  120. data/lib/carray/methods/composition.rb +1 -1
  121. data/lib/carray/methods/is_in.rb +12 -12
  122. data/lib/carray/methods/locate_addr.rb +6 -1
  123. data/lib/carray/methods/mask_duplicates.rb +1 -1
  124. data/lib/carray/methods/meshgrid.rb +4 -5
  125. data/lib/carray/methods/mode.rb +2 -2
  126. data/lib/carray/methods/nunique.rb +1 -1
  127. data/lib/carray/methods/snap.rb +7 -2
  128. data/lib/carray/methods/unique.rb +3 -3
  129. data/lib/carray/methods/value_counts.rb +2 -2
  130. data/lib/carray/runtime.rb +0 -19
  131. data/lib/carray/slab_iterator.rb +20 -7
  132. data/lib/carray/string_operation_extension.rb +5 -5
  133. data/lib/carray/time.rb +890 -491
  134. data/lib/carray/window_iterator.rb +285 -13
  135. data/lib/carray.rb +5 -5
  136. data/yard-stubs/ca_obj_array.rb +385 -0
  137. data/yard-stubs/ca_obj_bitarray.rb +38 -0
  138. data/yard-stubs/ca_obj_bitfield.rb +43 -0
  139. data/yard-stubs/ca_obj_block.rb +73 -0
  140. data/yard-stubs/ca_obj_byte_swap.rb +56 -0
  141. data/yard-stubs/ca_obj_fake.rb +31 -0
  142. data/yard-stubs/ca_obj_farray.rb +32 -0
  143. data/yard-stubs/ca_obj_field.rb +45 -0
  144. data/yard-stubs/ca_obj_grid.rb +35 -0
  145. data/yard-stubs/ca_obj_refer.rb +72 -0
  146. data/yard-stubs/ca_obj_roll.rb +45 -0
  147. data/yard-stubs/ca_obj_shift.rb +43 -0
  148. data/yard-stubs/ca_obj_stride.rb +181 -0
  149. data/yard-stubs/ca_obj_tile.rb +29 -0
  150. data/yard-stubs/ca_obj_transpose.rb +40 -0
  151. data/yard-stubs/ca_obj_window.rb +49 -0
  152. data/yard-stubs/carray_access.rb +131 -0
  153. data/yard-stubs/carray_attribute.rb +246 -0
  154. data/yard-stubs/carray_broadcast.rb +37 -0
  155. data/yard-stubs/carray_cast.rb +489 -0
  156. data/yard-stubs/carray_class.rb +65 -0
  157. data/yard-stubs/carray_conversion.rb +76 -0
  158. data/yard-stubs/carray_copy.rb +79 -0
  159. data/yard-stubs/carray_core.rb +114 -0
  160. data/yard-stubs/carray_count.rb +79 -0
  161. data/yard-stubs/carray_element.rb +108 -0
  162. data/yard-stubs/carray_generate.rb +66 -0
  163. data/yard-stubs/carray_lazy.rb +23 -0
  164. data/yard-stubs/carray_loop.rb +140 -0
  165. data/yard-stubs/carray_mask.rb +259 -0
  166. data/yard-stubs/carray_math.rb +132 -0
  167. data/yard-stubs/carray_mathfunc.rb +45 -0
  168. data/yard-stubs/carray_median_percentile.rb +89 -0
  169. data/yard-stubs/carray_memory_view.rb +163 -0
  170. data/yard-stubs/carray_order.rb +312 -0
  171. data/yard-stubs/carray_random.rb +89 -0
  172. data/yard-stubs/carray_scatter.rb +106 -0
  173. data/yard-stubs/carray_slab.rb +57 -0
  174. data/yard-stubs/carray_sort.rb +163 -0
  175. data/yard-stubs/carray_test.rb +85 -0
  176. data/yard-stubs/carray_undef.rb +64 -0
  177. data/yard-stubs/carray_utils.rb +97 -0
  178. data/yard-stubs/ruby_carray.rb +193 -0
  179. metadata +59 -10
  180. data/ext/ca_obj_unbound_repeat.c +0 -496
@@ -0,0 +1,246 @@
1
+ # DOCUMENTATION ONLY — DO NOT REQUIRE.
2
+ # Stubs for methods defined in ext/carray_attribute.c.
3
+ # See yard-stubs/README.md and yard-stubs/STYLE.md.
4
+
5
+ class CArray
6
+ # @!group Attributes
7
+
8
+ # @overload obj_type
9
+ # Returns the object-type integer of `self` (e.g. `CA_OBJ_ARRAY`,
10
+ # `CA_OBJ_BLOCK`).
11
+ #
12
+ # Rarely needed in user code; the same information is available
13
+ # from `self.class`.
14
+ # @return [Integer]
15
+ def obj_type; end
16
+
17
+ # @!group Type inquiry
18
+
19
+ # @overload data_type
20
+ # Returns the data type of each element as a Symbol (e.g. `:int32`,
21
+ # `:float64`).
22
+ # @return [Symbol]
23
+ def data_type; end
24
+
25
+ # @overload data_type_name
26
+ # Returns the String name of `data_type` (e.g. `"int32"`,
27
+ # `"fixlen"`).
28
+ # @return [String]
29
+ def data_type_name; end
30
+
31
+ # @!group Attributes
32
+
33
+ # @overload ndim
34
+ # Returns the number of dimensions of `self`.
35
+ # @return [Integer]
36
+ def ndim; end
37
+
38
+ # @overload rank
39
+ # @deprecated Use {#ndim}.
40
+ # @return [Integer]
41
+ def rank; end
42
+
43
+ # @overload bytes
44
+ # Returns the byte size of one element. Equals
45
+ # `CArray.sizeof(data_type)` for numeric types; for fixed-length
46
+ # types this method is the only way to obtain the size.
47
+ # @return [Integer]
48
+ def bytes; end
49
+
50
+ # @overload flags
51
+ # Returns the raw internal flag bitset (`ca->flags`) as an Integer.
52
+ # The bits record structural facts about the array (scalar, Face,
53
+ # view, read-only, …). This is a low-level provenance value with no
54
+ # stable public meaning; it is exposed mainly so the `_CARRAY3`
55
+ # serializer can snapshot it into a saved file's header.
56
+ # @return [Integer]
57
+ def flags; end
58
+
59
+ # @overload elements
60
+ # Returns the total number of elements (product of `shape`).
61
+ # @return [Integer]
62
+ def elements; end
63
+
64
+ # @overload size
65
+ # Alias of {#elements}.
66
+ # @return [Integer]
67
+ def size; end
68
+
69
+ # @overload length
70
+ # @deprecated Use {#elements} or {#size}.
71
+ # @return [Integer]
72
+ def length; end
73
+
74
+ # @overload shape
75
+ # Returns a freshly allocated Array containing the dimensional
76
+ # shape of `self` (e.g. `[2, 3]` for a 2×3 array).
77
+ #
78
+ # This is the recommended accessor. {#dim} is a legacy alias.
79
+ # @return [Array<Integer>]
80
+ # @example
81
+ # CArray.float64(2, 3).shape # => [2, 3]
82
+ def shape; end
83
+
84
+ # @overload dim
85
+ # @deprecated Use {#shape}.
86
+ # @return [Array<Integer>]
87
+ def dim; end
88
+
89
+ # @overload dim0
90
+ # Returns `shape[0]`.
91
+ # @return [Integer]
92
+ def dim0; end
93
+
94
+ # @overload dim1
95
+ # Returns `shape[1]`, or `nil` if `ndim < 2`.
96
+ # @return [Integer, nil]
97
+ def dim1; end
98
+
99
+ # @overload dim2
100
+ # Returns `shape[2]`, or `nil` if `ndim < 3`.
101
+ # @return [Integer, nil]
102
+ def dim2; end
103
+
104
+ # @overload dim3
105
+ # Returns `shape[3]`, or `nil` if `ndim < 4`.
106
+ # @return [Integer, nil]
107
+ def dim3; end
108
+
109
+ # @overload parent
110
+ # Returns the parent CArray of `self`, or `nil` if `self` has no
111
+ # parent (i.e. is an entity).
112
+ # @return [CArray, nil]
113
+ def parent; end
114
+
115
+ # @overload root_array
116
+ # Returns the array at the root of the view chain (the entity).
117
+ # Returns `self` if `self` is already an entity.
118
+ # @return [CArray]
119
+ def root_array; end
120
+
121
+ # @overload ancestors
122
+ # Returns the list of arrays in the view chain, ordered from root
123
+ # to `self`.
124
+ # @return [Array<CArray>]
125
+ def ancestors; end
126
+
127
+ # @!group Type inquiry
128
+
129
+ # @overload data_class
130
+ # Returns the `data_class` of `self` if it is a Face that carries
131
+ # one (e.g. `CARecord`). Returns `nil` for non-Face arrays.
132
+ # @return [Class, nil]
133
+ def data_class; end
134
+
135
+ # @overload data_class=(klass)
136
+ # Always raises. `data_class` now lives on the Face tail
137
+ # (`CARecord`); use `CARecord.new(klass, *shape)` or
138
+ # `CARecord.wrap(entity, klass)` instead.
139
+ # @param klass [Class] unused.
140
+ # @return [void]
141
+ # @raise [ArgumentError] always.
142
+ def data_class=(klass); end
143
+
144
+ # @!endgroup
145
+
146
+ # @!group State inquiry
147
+
148
+ # @overload scalar?
149
+ # Returns `true` if `self` is a {CScalar}.
150
+ # @return [Boolean]
151
+ def scalar?; end
152
+
153
+ # @overload entity?
154
+ # Returns `true` if `self` is an entity array (not a virtual
155
+ # view).
156
+ # @return [Boolean]
157
+ def entity?; end
158
+
159
+ # @overload virtual?
160
+ # Returns `true` if `self` is a virtual array (a view, not an
161
+ # entity).
162
+ # @return [Boolean]
163
+ def virtual?; end
164
+
165
+ # @overload attached?
166
+ # Returns `true` if `self` is currently attached
167
+ # (`ptr != NULL`).
168
+ # @return [Boolean]
169
+ def attached?; end
170
+
171
+ # @overload empty?
172
+ # Returns `true` if `self` has zero elements.
173
+ # @return [Boolean]
174
+ def empty?; end
175
+
176
+ # @overload read_only?
177
+ # Returns `true` if `self` is read-only.
178
+ # @return [Boolean]
179
+ def read_only?; end
180
+
181
+ # @overload mask_array?
182
+ # Returns `true` if `self` is itself a mask array. (Not the same
183
+ # as "a masked array"; for that see {#has_mask?}.)
184
+ # @return [Boolean]
185
+ def mask_array?; end
186
+
187
+ # @overload value_array?
188
+ # Returns `true` if `self` is a value array (the `.value` view of
189
+ # a masked array).
190
+ # @return [Boolean]
191
+ def value_array?; end
192
+
193
+ # @!group Type inquiry
194
+
195
+ # @overload face?
196
+ # Returns `true` if `self` is a Face view (`CA_FLAG_IS_FACE`
197
+ # set).
198
+ # @return [Boolean]
199
+ def face?; end
200
+
201
+ # @overload has_data_class?
202
+ # Returns `true` if `self` carries a `data_class` (i.e. is a Face
203
+ # such as `CARecord`).
204
+ # @return [Boolean]
205
+ def has_data_class?; end
206
+
207
+ # @overload fixlen?
208
+ # Returns `true` if `self` is a fixed-length type array.
209
+ # @return [Boolean]
210
+ def fixlen?; end
211
+
212
+ # @overload boolean?
213
+ # Returns `true` if `self` is a boolean type array.
214
+ # @return [Boolean]
215
+ def boolean?; end
216
+
217
+ # @overload numeric?
218
+ # Returns `true` if `self` is a numeric type array (any integer,
219
+ # float, or complex type).
220
+ # @return [Boolean]
221
+ def numeric?; end
222
+
223
+ # @overload integer?
224
+ # Returns `true` if `self` is an integer type array (signed or
225
+ # unsigned, any width).
226
+ # @return [Boolean]
227
+ def integer?; end
228
+
229
+ # @overload float?
230
+ # Returns `true` if `self` is a floating-point type array.
231
+ # @return [Boolean]
232
+ def float?; end
233
+
234
+ # @overload complex?
235
+ # Returns `true` if `self` is a complex type array.
236
+ # @return [Boolean]
237
+ def complex?; end
238
+
239
+ # @overload object?
240
+ # Returns `true` if `self` is an object type array
241
+ # (`data_type == :object`).
242
+ # @return [Boolean]
243
+ def object?; end
244
+
245
+ # @!endgroup
246
+ end
@@ -0,0 +1,37 @@
1
+ # DOCUMENTATION ONLY — DO NOT REQUIRE.
2
+ # Stubs for methods defined in ext/carray_broadcast.c.
3
+ # See yard-stubs/README.md and yard-stubs/STYLE.md.
4
+
5
+ class CArray
6
+ # @!group Views
7
+
8
+ # @overload broadcast_to(*shape)
9
+ # Returns a read-only `CARepeat` view of `self` whose shape is
10
+ # `shape`. Axes are paired right-to-left:
11
+ #
12
+ # - matching extents reuse the source stride
13
+ # - target extent `> 1` against source extent `1` repeats with
14
+ # stride `0`
15
+ # - extra leading target axes require the corresponding source
16
+ # axis to be `1` (otherwise raises)
17
+ #
18
+ # `CScalar` sources broadcast to any target shape with all
19
+ # strides `0`.
20
+ #
21
+ # The result is read-only because writes against a stride-0
22
+ # axis would be ambiguous.
23
+ # @param shape [Array<Integer>] target shape, with
24
+ # `length >= self.ndim`.
25
+ # @return [CArray]
26
+ # @raise [RuntimeError] if a source axis cannot be paired with a
27
+ # target axis (cross-ndim expansion is intentionally strict —
28
+ # see {CArray.broadcast} for the explicit-`:_` / `:*` axis
29
+ # declaration form).
30
+ # @example
31
+ # a = CArray.float64(3) { [1.0, 2.0, 3.0] }
32
+ # a.broadcast_to(2, 3).to_a
33
+ # # => [[1.0, 2.0, 3.0], [1.0, 2.0, 3.0]]
34
+ def broadcast_to(*shape); end
35
+
36
+ # @!endgroup
37
+ end