carray 3.0.4 → 3.0.6
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +438 -0
- data/README.md +1 -1
- data/carray.gemspec +3 -2
- data/ext/ca_array_pool.c +25 -1
- data/ext/ca_axis_dispatch.c +19 -20
- data/ext/ca_axis_group.c +1 -1
- data/ext/ca_categorical_iterator.c +34 -27
- data/ext/ca_compare.c +4 -4
- data/ext/ca_composite_dispatch.c +9 -9
- data/ext/ca_kernel_iterator.c +122 -237
- data/ext/ca_kernel_iterator.h +522 -337
- data/ext/ca_obj_array.c +69 -19
- data/ext/ca_obj_bincmp.c +10 -1
- data/ext/ca_obj_binop.c +11 -1
- data/ext/ca_obj_bitarray.c +5 -1
- data/ext/ca_obj_bitfield.c +60 -43
- data/ext/ca_obj_byte_swap.c +4 -1
- data/ext/ca_obj_const_string.c +15 -3
- data/ext/ca_obj_face.c +44 -1
- data/ext/ca_obj_fake.c +3 -1
- data/ext/ca_obj_field.c +13 -3
- data/ext/ca_obj_grid.c +219 -17
- data/ext/ca_obj_meld.c +69 -113
- data/ext/ca_obj_moncmp.c +9 -1
- data/ext/ca_obj_monop.c +86 -12
- data/ext/ca_obj_object.c +118 -32
- data/ext/ca_obj_record.c +3 -0
- data/ext/ca_obj_reduce.c +19 -1
- data/ext/ca_obj_refer.c +80 -26
- data/ext/ca_obj_remap.c +69 -10
- data/ext/ca_obj_roll.c +27 -6
- data/ext/ca_obj_select.c +38 -6
- data/ext/ca_obj_select_axis.c +1 -0
- data/ext/ca_obj_shift.c +32 -7
- data/ext/ca_obj_stack.c +311 -111
- data/ext/ca_obj_stride.c +159 -64
- data/ext/ca_obj_string.c +27 -2
- data/ext/ca_obj_tile.c +28 -7
- data/ext/ca_obj_transpose.c +8 -4
- data/ext/ca_obj_triop.c +12 -1
- data/ext/ca_obj_window.c +80 -50
- data/ext/ca_op_ipower.c +12 -12
- data/ext/ca_sort_kernels.h +6 -3
- data/ext/caframe_csv_reader.c +1 -1
- data/ext/carray.h +35 -1
- data/ext/carray_access.c +43 -67
- data/ext/carray_address_basis.c +134 -0
- data/ext/carray_attribute.c +32 -0
- data/ext/carray_broadcast.c +3 -4
- data/ext/carray_build_flags.h +1 -1
- data/ext/carray_cast.c +251 -93
- data/ext/carray_cast_func.rb +56 -26
- data/ext/carray_conversion.c +11 -7
- data/ext/carray_core.c +814 -72
- data/ext/carray_count.c +6 -0
- data/ext/carray_element.c +22 -13
- data/ext/carray_factorize.c +20 -20
- data/ext/carray_generate.c +8 -2
- data/ext/carray_histogram.c +26 -4
- data/ext/carray_index_classifier.c +4 -4
- data/ext/carray_internal.h +159 -12
- data/ext/carray_kernels_bincmp.c +2174 -170
- data/ext/carray_kernels_binop.c +25653 -5487
- data/ext/carray_kernels_init.c +8 -8
- data/ext/carray_kernels_moncmp.c +96 -96
- data/ext/carray_kernels_monop.c +12253 -5235
- data/ext/carray_kernels_reduce_aggregate.c +6150 -2423
- data/ext/carray_kernels_reduce_boolean.c +1533 -15
- data/ext/carray_kernels_reduce_cumulative.c +2442 -882
- data/ext/carray_kernels_reduce_extreme.c +5658 -1661
- data/ext/carray_kernels_reduce_variance.c +2534 -402
- data/ext/carray_kernels_scan.c +368 -368
- data/ext/carray_kernels_search.c +4551 -604
- data/ext/carray_kernels_sort.c +659 -751
- data/ext/carray_kernels_triop.c +114 -114
- data/ext/carray_key_windows.c +4 -0
- data/ext/carray_lazy.c +47 -0
- data/ext/carray_loop.c +1 -1
- data/ext/carray_mask.c +175 -161
- data/ext/carray_median_percentile.c +4 -4
- data/ext/carray_memory_view.c +15 -9
- data/ext/carray_operator.c +152 -49
- data/ext/carray_order.c +230 -10
- data/ext/carray_random.c +22 -19
- data/ext/carray_scatter.c +24 -7
- data/ext/carray_slab.c +128 -29
- data/ext/carray_sort.c +224 -16
- data/ext/carray_sort_kernel.c +5 -7
- data/ext/carray_struct.c +35 -43
- data/ext/carray_test.c +74 -19
- data/ext/carray_time_text.c +6 -4
- data/ext/carray_utils.c +63 -21
- data/ext/extconf.rb +11 -0
- data/ext/mkkernel.rb +546 -199
- data/ext/ruby_carray.c +4 -1
- data/ext/version.h +4 -4
- data/lib/carray/attribute.rb +42 -5
- data/lib/carray/autoload_carray.rb +3 -3
- data/lib/carray/autoload_method_extension.rb +5 -3
- data/lib/carray/axis_group.rb +13 -7
- data/lib/carray/basics.rb +28 -8
- data/lib/carray/block_iterator.rb +17 -3
- data/lib/carray/categorical.rb +35 -23
- data/lib/carray/categorical_iterator.rb +8 -8
- data/lib/carray/complex.rb +2 -2
- data/lib/carray/conditional.rb +3 -2
- data/lib/carray/const_string.rb +10 -0
- data/lib/carray/data_type_extension.rb +8 -1
- data/lib/carray/fixlen_string.rb +41 -2
- data/lib/carray/frame/column_verbs.rb +48 -16
- data/lib/carray/frame/concat.rb +17 -3
- data/lib/carray/frame/convert.rb +19 -0
- data/lib/carray/frame/csv_parser.rb +32 -32
- data/lib/carray/frame/describe.rb +4 -2
- data/lib/carray/frame/frame.rb +405 -85
- data/lib/carray/frame/group.rb +777 -64
- data/lib/carray/frame/io.rb +212 -72
- data/lib/carray/frame/join.rb +146 -37
- data/lib/carray/frame/records.rb +3 -3
- data/lib/carray/frame/reshape.rb +89 -11
- data/lib/carray/frame/sort.rb +57 -9
- data/lib/carray/frame/verbs.rb +384 -49
- data/lib/carray/frame/windows.rb +44 -6
- data/lib/carray/fuse_source.rb +31 -2
- data/lib/carray/inspect.rb +7 -2
- data/lib/carray/iterator.rb +32 -0
- data/lib/carray/lazy.rb +52 -8
- data/lib/carray/mask_gap_fill.rb +37 -17
- data/lib/carray/meld_reduce.rb +1 -1
- data/lib/carray/methods/choose.rb +3 -2
- data/lib/carray/methods/is_in.rb +8 -1
- data/lib/carray/methods/meshgrid.rb +3 -1
- data/lib/carray/runtime.rb +47 -8
- data/lib/carray/segment_iterator.rb +35 -16
- data/lib/carray/serialize.rb +53 -19
- data/lib/carray/stack.rb +33 -18
- data/lib/carray/string.rb +8 -0
- data/lib/carray/string_operation_extension.rb +13 -5
- data/lib/carray/struct_builder.rb +5 -3
- data/lib/carray/time.rb +112 -68
- data/lib/carray/window_iterator.rb +16 -4
- data/yard-stubs/ca_obj_array.rb +26 -1
- data/yard-stubs/ca_obj_transpose.rb +5 -4
- data/yard-stubs/carray_attribute.rb +3 -1
- data/yard-stubs/carray_cast.rb +10 -5
- data/yard-stubs/carray_conversion.rb +13 -3
- data/yard-stubs/carray_element.rb +7 -6
- data/yard-stubs/carray_mask.rb +28 -4
- data/yard-stubs/carray_math.rb +45 -20
- data/yard-stubs/carray_memory_view.rb +7 -0
- data/yard-stubs/carray_order.rb +100 -4
- data/yard-stubs/carray_scatter.rb +7 -5
- data/yard-stubs/carray_test.rb +7 -4
- metadata +18 -4
data/ext/carray_kernels_scan.c
CHANGED
|
@@ -49,7 +49,7 @@ static VALUE
|
|
|
49
49
|
cumsum_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
50
50
|
{
|
|
51
51
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
52
|
-
INT2NUM(sizeof(
|
|
52
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
53
53
|
CArray *co;
|
|
54
54
|
GetCArray(vout, co);
|
|
55
55
|
|
|
@@ -58,6 +58,7 @@ cumsum_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
58
58
|
INIT inside the macro. */
|
|
59
59
|
int8_t slab_axes[CA_RANK_MAX];
|
|
60
60
|
slab_axes[0] = (int8_t) axis;
|
|
61
|
+
|
|
61
62
|
ca_iter_state st_in, st_out;
|
|
62
63
|
int rc;
|
|
63
64
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -73,12 +74,11 @@ cumsum_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
73
74
|
rb_raise(rb_eRuntimeError,
|
|
74
75
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
75
76
|
}
|
|
76
|
-
|
|
77
77
|
char *pi, *po;
|
|
78
78
|
boolean8_t *mi, *mo;
|
|
79
79
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
80
80
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
81
|
-
CA_SLAB_SCAN_T(int8_t,
|
|
81
|
+
CA_SLAB_SCAN_T(int8_t, ca_u_float64_t, st_in, pi, mi,
|
|
82
82
|
st_out, po, 0, acc += v; r = acc);
|
|
83
83
|
ca_iter_state_sync_slab(&st_out);
|
|
84
84
|
}
|
|
@@ -91,7 +91,7 @@ static VALUE
|
|
|
91
91
|
cumsum_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
92
92
|
{
|
|
93
93
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
94
|
-
INT2NUM(sizeof(
|
|
94
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
95
95
|
CArray *co;
|
|
96
96
|
GetCArray(vout, co);
|
|
97
97
|
|
|
@@ -100,6 +100,7 @@ cumsum_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
100
100
|
INIT inside the macro. */
|
|
101
101
|
int8_t slab_axes[CA_RANK_MAX];
|
|
102
102
|
slab_axes[0] = (int8_t) axis;
|
|
103
|
+
|
|
103
104
|
ca_iter_state st_in, st_out;
|
|
104
105
|
int rc;
|
|
105
106
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -115,12 +116,11 @@ cumsum_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
115
116
|
rb_raise(rb_eRuntimeError,
|
|
116
117
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
117
118
|
}
|
|
118
|
-
|
|
119
119
|
char *pi, *po;
|
|
120
120
|
boolean8_t *mi, *mo;
|
|
121
121
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
122
122
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
123
|
-
CA_SLAB_SCAN_T(uint8_t,
|
|
123
|
+
CA_SLAB_SCAN_T(uint8_t, ca_u_float64_t, st_in, pi, mi,
|
|
124
124
|
st_out, po, 0, acc += v; r = acc);
|
|
125
125
|
ca_iter_state_sync_slab(&st_out);
|
|
126
126
|
}
|
|
@@ -133,7 +133,7 @@ static VALUE
|
|
|
133
133
|
cumsum_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
134
134
|
{
|
|
135
135
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
136
|
-
INT2NUM(sizeof(
|
|
136
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
137
137
|
CArray *co;
|
|
138
138
|
GetCArray(vout, co);
|
|
139
139
|
|
|
@@ -142,6 +142,7 @@ cumsum_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
142
142
|
INIT inside the macro. */
|
|
143
143
|
int8_t slab_axes[CA_RANK_MAX];
|
|
144
144
|
slab_axes[0] = (int8_t) axis;
|
|
145
|
+
|
|
145
146
|
ca_iter_state st_in, st_out;
|
|
146
147
|
int rc;
|
|
147
148
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -157,12 +158,11 @@ cumsum_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
157
158
|
rb_raise(rb_eRuntimeError,
|
|
158
159
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
159
160
|
}
|
|
160
|
-
|
|
161
161
|
char *pi, *po;
|
|
162
162
|
boolean8_t *mi, *mo;
|
|
163
163
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
164
164
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
165
|
-
CA_SLAB_SCAN_T(
|
|
165
|
+
CA_SLAB_SCAN_T(ca_u_int16_t, ca_u_float64_t, st_in, pi, mi,
|
|
166
166
|
st_out, po, 0, acc += v; r = acc);
|
|
167
167
|
ca_iter_state_sync_slab(&st_out);
|
|
168
168
|
}
|
|
@@ -175,7 +175,7 @@ static VALUE
|
|
|
175
175
|
cumsum_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
176
176
|
{
|
|
177
177
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
178
|
-
INT2NUM(sizeof(
|
|
178
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
179
179
|
CArray *co;
|
|
180
180
|
GetCArray(vout, co);
|
|
181
181
|
|
|
@@ -184,6 +184,7 @@ cumsum_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
184
184
|
INIT inside the macro. */
|
|
185
185
|
int8_t slab_axes[CA_RANK_MAX];
|
|
186
186
|
slab_axes[0] = (int8_t) axis;
|
|
187
|
+
|
|
187
188
|
ca_iter_state st_in, st_out;
|
|
188
189
|
int rc;
|
|
189
190
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -199,12 +200,11 @@ cumsum_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
199
200
|
rb_raise(rb_eRuntimeError,
|
|
200
201
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
201
202
|
}
|
|
202
|
-
|
|
203
203
|
char *pi, *po;
|
|
204
204
|
boolean8_t *mi, *mo;
|
|
205
205
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
206
206
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
207
|
-
CA_SLAB_SCAN_T(
|
|
207
|
+
CA_SLAB_SCAN_T(ca_u_uint16_t, ca_u_float64_t, st_in, pi, mi,
|
|
208
208
|
st_out, po, 0, acc += v; r = acc);
|
|
209
209
|
ca_iter_state_sync_slab(&st_out);
|
|
210
210
|
}
|
|
@@ -217,7 +217,7 @@ static VALUE
|
|
|
217
217
|
cumsum_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
218
218
|
{
|
|
219
219
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
220
|
-
INT2NUM(sizeof(
|
|
220
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
221
221
|
CArray *co;
|
|
222
222
|
GetCArray(vout, co);
|
|
223
223
|
|
|
@@ -226,6 +226,7 @@ cumsum_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
226
226
|
INIT inside the macro. */
|
|
227
227
|
int8_t slab_axes[CA_RANK_MAX];
|
|
228
228
|
slab_axes[0] = (int8_t) axis;
|
|
229
|
+
|
|
229
230
|
ca_iter_state st_in, st_out;
|
|
230
231
|
int rc;
|
|
231
232
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -241,12 +242,11 @@ cumsum_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
241
242
|
rb_raise(rb_eRuntimeError,
|
|
242
243
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
243
244
|
}
|
|
244
|
-
|
|
245
245
|
char *pi, *po;
|
|
246
246
|
boolean8_t *mi, *mo;
|
|
247
247
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
248
248
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
249
|
-
CA_SLAB_SCAN_T(
|
|
249
|
+
CA_SLAB_SCAN_T(ca_u_int32_t, ca_u_float64_t, st_in, pi, mi,
|
|
250
250
|
st_out, po, 0, acc += v; r = acc);
|
|
251
251
|
ca_iter_state_sync_slab(&st_out);
|
|
252
252
|
}
|
|
@@ -259,7 +259,7 @@ static VALUE
|
|
|
259
259
|
cumsum_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
260
260
|
{
|
|
261
261
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
262
|
-
INT2NUM(sizeof(
|
|
262
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
263
263
|
CArray *co;
|
|
264
264
|
GetCArray(vout, co);
|
|
265
265
|
|
|
@@ -268,6 +268,7 @@ cumsum_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
268
268
|
INIT inside the macro. */
|
|
269
269
|
int8_t slab_axes[CA_RANK_MAX];
|
|
270
270
|
slab_axes[0] = (int8_t) axis;
|
|
271
|
+
|
|
271
272
|
ca_iter_state st_in, st_out;
|
|
272
273
|
int rc;
|
|
273
274
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -283,12 +284,11 @@ cumsum_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
283
284
|
rb_raise(rb_eRuntimeError,
|
|
284
285
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
285
286
|
}
|
|
286
|
-
|
|
287
287
|
char *pi, *po;
|
|
288
288
|
boolean8_t *mi, *mo;
|
|
289
289
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
290
290
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
291
|
-
CA_SLAB_SCAN_T(
|
|
291
|
+
CA_SLAB_SCAN_T(ca_u_uint32_t, ca_u_float64_t, st_in, pi, mi,
|
|
292
292
|
st_out, po, 0, acc += v; r = acc);
|
|
293
293
|
ca_iter_state_sync_slab(&st_out);
|
|
294
294
|
}
|
|
@@ -301,7 +301,7 @@ static VALUE
|
|
|
301
301
|
cumsum_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
302
302
|
{
|
|
303
303
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
304
|
-
INT2NUM(sizeof(
|
|
304
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
305
305
|
CArray *co;
|
|
306
306
|
GetCArray(vout, co);
|
|
307
307
|
|
|
@@ -310,6 +310,7 @@ cumsum_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
310
310
|
INIT inside the macro. */
|
|
311
311
|
int8_t slab_axes[CA_RANK_MAX];
|
|
312
312
|
slab_axes[0] = (int8_t) axis;
|
|
313
|
+
|
|
313
314
|
ca_iter_state st_in, st_out;
|
|
314
315
|
int rc;
|
|
315
316
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -325,12 +326,11 @@ cumsum_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
325
326
|
rb_raise(rb_eRuntimeError,
|
|
326
327
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
327
328
|
}
|
|
328
|
-
|
|
329
329
|
char *pi, *po;
|
|
330
330
|
boolean8_t *mi, *mo;
|
|
331
331
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
332
332
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
333
|
-
CA_SLAB_SCAN_T(
|
|
333
|
+
CA_SLAB_SCAN_T(ca_u_int64_t, ca_u_float64_t, st_in, pi, mi,
|
|
334
334
|
st_out, po, 0, acc += v; r = acc);
|
|
335
335
|
ca_iter_state_sync_slab(&st_out);
|
|
336
336
|
}
|
|
@@ -343,7 +343,7 @@ static VALUE
|
|
|
343
343
|
cumsum_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
344
344
|
{
|
|
345
345
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
346
|
-
INT2NUM(sizeof(
|
|
346
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
347
347
|
CArray *co;
|
|
348
348
|
GetCArray(vout, co);
|
|
349
349
|
|
|
@@ -352,6 +352,7 @@ cumsum_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
352
352
|
INIT inside the macro. */
|
|
353
353
|
int8_t slab_axes[CA_RANK_MAX];
|
|
354
354
|
slab_axes[0] = (int8_t) axis;
|
|
355
|
+
|
|
355
356
|
ca_iter_state st_in, st_out;
|
|
356
357
|
int rc;
|
|
357
358
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -367,12 +368,11 @@ cumsum_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
367
368
|
rb_raise(rb_eRuntimeError,
|
|
368
369
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
369
370
|
}
|
|
370
|
-
|
|
371
371
|
char *pi, *po;
|
|
372
372
|
boolean8_t *mi, *mo;
|
|
373
373
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
374
374
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
375
|
-
CA_SLAB_SCAN_T(
|
|
375
|
+
CA_SLAB_SCAN_T(ca_u_uint64_t, ca_u_float64_t, st_in, pi, mi,
|
|
376
376
|
st_out, po, 0, acc += v; r = acc);
|
|
377
377
|
ca_iter_state_sync_slab(&st_out);
|
|
378
378
|
}
|
|
@@ -385,7 +385,7 @@ static VALUE
|
|
|
385
385
|
cumsum_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
386
386
|
{
|
|
387
387
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
388
|
-
INT2NUM(sizeof(
|
|
388
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
389
389
|
CArray *co;
|
|
390
390
|
GetCArray(vout, co);
|
|
391
391
|
|
|
@@ -394,6 +394,7 @@ cumsum_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
394
394
|
INIT inside the macro. */
|
|
395
395
|
int8_t slab_axes[CA_RANK_MAX];
|
|
396
396
|
slab_axes[0] = (int8_t) axis;
|
|
397
|
+
|
|
397
398
|
ca_iter_state st_in, st_out;
|
|
398
399
|
int rc;
|
|
399
400
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -409,12 +410,11 @@ cumsum_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
409
410
|
rb_raise(rb_eRuntimeError,
|
|
410
411
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
411
412
|
}
|
|
412
|
-
|
|
413
413
|
char *pi, *po;
|
|
414
414
|
boolean8_t *mi, *mo;
|
|
415
415
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
416
416
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
417
|
-
CA_SLAB_SCAN_T(
|
|
417
|
+
CA_SLAB_SCAN_T(ca_u_float32_t, ca_u_float64_t, st_in, pi, mi,
|
|
418
418
|
st_out, po, 0, acc += v; r = acc);
|
|
419
419
|
ca_iter_state_sync_slab(&st_out);
|
|
420
420
|
}
|
|
@@ -427,7 +427,7 @@ static VALUE
|
|
|
427
427
|
cumsum_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
428
428
|
{
|
|
429
429
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
430
|
-
INT2NUM(sizeof(
|
|
430
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
431
431
|
CArray *co;
|
|
432
432
|
GetCArray(vout, co);
|
|
433
433
|
|
|
@@ -436,6 +436,7 @@ cumsum_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
436
436
|
INIT inside the macro. */
|
|
437
437
|
int8_t slab_axes[CA_RANK_MAX];
|
|
438
438
|
slab_axes[0] = (int8_t) axis;
|
|
439
|
+
|
|
439
440
|
ca_iter_state st_in, st_out;
|
|
440
441
|
int rc;
|
|
441
442
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -451,12 +452,11 @@ cumsum_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
451
452
|
rb_raise(rb_eRuntimeError,
|
|
452
453
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
453
454
|
}
|
|
454
|
-
|
|
455
455
|
char *pi, *po;
|
|
456
456
|
boolean8_t *mi, *mo;
|
|
457
457
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
458
458
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
459
|
-
CA_SLAB_SCAN_T(
|
|
459
|
+
CA_SLAB_SCAN_T(ca_u_float64_t, ca_u_float64_t, st_in, pi, mi,
|
|
460
460
|
st_out, po, 0, acc += v; r = acc);
|
|
461
461
|
ca_iter_state_sync_slab(&st_out);
|
|
462
462
|
}
|
|
@@ -469,7 +469,7 @@ static VALUE
|
|
|
469
469
|
cumsum_ki_native_cmplx64 (VALUE self, CArray *ca, int axis)
|
|
470
470
|
{
|
|
471
471
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_CMPLX128),
|
|
472
|
-
INT2NUM(sizeof(
|
|
472
|
+
INT2NUM(sizeof(ca_u_cmplx128_t)));
|
|
473
473
|
CArray *co;
|
|
474
474
|
GetCArray(vout, co);
|
|
475
475
|
|
|
@@ -478,6 +478,7 @@ cumsum_ki_native_cmplx64 (VALUE self, CArray *ca, int axis)
|
|
|
478
478
|
INIT inside the macro. */
|
|
479
479
|
int8_t slab_axes[CA_RANK_MAX];
|
|
480
480
|
slab_axes[0] = (int8_t) axis;
|
|
481
|
+
|
|
481
482
|
ca_iter_state st_in, st_out;
|
|
482
483
|
int rc;
|
|
483
484
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -493,12 +494,11 @@ cumsum_ki_native_cmplx64 (VALUE self, CArray *ca, int axis)
|
|
|
493
494
|
rb_raise(rb_eRuntimeError,
|
|
494
495
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
495
496
|
}
|
|
496
|
-
|
|
497
497
|
char *pi, *po;
|
|
498
498
|
boolean8_t *mi, *mo;
|
|
499
499
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
500
500
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
501
|
-
CA_SLAB_SCAN_T(
|
|
501
|
+
CA_SLAB_SCAN_T(ca_u_cmplx64_t, ca_u_cmplx128_t, st_in, pi, mi,
|
|
502
502
|
st_out, po, 0, acc += v; r = acc);
|
|
503
503
|
ca_iter_state_sync_slab(&st_out);
|
|
504
504
|
}
|
|
@@ -511,7 +511,7 @@ static VALUE
|
|
|
511
511
|
cumsum_ki_native_cmplx128 (VALUE self, CArray *ca, int axis)
|
|
512
512
|
{
|
|
513
513
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_CMPLX128),
|
|
514
|
-
INT2NUM(sizeof(
|
|
514
|
+
INT2NUM(sizeof(ca_u_cmplx128_t)));
|
|
515
515
|
CArray *co;
|
|
516
516
|
GetCArray(vout, co);
|
|
517
517
|
|
|
@@ -520,6 +520,7 @@ cumsum_ki_native_cmplx128 (VALUE self, CArray *ca, int axis)
|
|
|
520
520
|
INIT inside the macro. */
|
|
521
521
|
int8_t slab_axes[CA_RANK_MAX];
|
|
522
522
|
slab_axes[0] = (int8_t) axis;
|
|
523
|
+
|
|
523
524
|
ca_iter_state st_in, st_out;
|
|
524
525
|
int rc;
|
|
525
526
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -535,12 +536,11 @@ cumsum_ki_native_cmplx128 (VALUE self, CArray *ca, int axis)
|
|
|
535
536
|
rb_raise(rb_eRuntimeError,
|
|
536
537
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
537
538
|
}
|
|
538
|
-
|
|
539
539
|
char *pi, *po;
|
|
540
540
|
boolean8_t *mi, *mo;
|
|
541
541
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
542
542
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
543
|
-
CA_SLAB_SCAN_T(
|
|
543
|
+
CA_SLAB_SCAN_T(ca_u_cmplx128_t, ca_u_cmplx128_t, st_in, pi, mi,
|
|
544
544
|
st_out, po, 0, acc += v; r = acc);
|
|
545
545
|
ca_iter_state_sync_slab(&st_out);
|
|
546
546
|
}
|
|
@@ -553,7 +553,7 @@ static VALUE
|
|
|
553
553
|
cumsum_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
554
554
|
{
|
|
555
555
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT64),
|
|
556
|
-
INT2NUM(sizeof(
|
|
556
|
+
INT2NUM(sizeof(ca_u_uint64_t)));
|
|
557
557
|
CArray *co;
|
|
558
558
|
GetCArray(vout, co);
|
|
559
559
|
|
|
@@ -562,6 +562,7 @@ cumsum_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
562
562
|
INIT inside the macro. */
|
|
563
563
|
int8_t slab_axes[CA_RANK_MAX];
|
|
564
564
|
slab_axes[0] = (int8_t) axis;
|
|
565
|
+
|
|
565
566
|
ca_iter_state st_in, st_out;
|
|
566
567
|
int rc;
|
|
567
568
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -577,12 +578,11 @@ cumsum_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
577
578
|
rb_raise(rb_eRuntimeError,
|
|
578
579
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
579
580
|
}
|
|
580
|
-
|
|
581
581
|
char *pi, *po;
|
|
582
582
|
boolean8_t *mi, *mo;
|
|
583
583
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
584
584
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
585
|
-
CA_SLAB_SCAN_T(boolean8_t,
|
|
585
|
+
CA_SLAB_SCAN_T(boolean8_t, ca_u_uint64_t, st_in, pi, mi,
|
|
586
586
|
st_out, po, 0, acc += v; r = acc);
|
|
587
587
|
ca_iter_state_sync_slab(&st_out);
|
|
588
588
|
}
|
|
@@ -591,9 +591,9 @@ cumsum_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
591
591
|
return vout;
|
|
592
592
|
}
|
|
593
593
|
|
|
594
|
-
/* The
|
|
595
|
-
|
|
596
|
-
finishes them however the body leaves. */
|
|
594
|
+
/* The walks can raise part way (a Ruby call per cell in the object
|
|
595
|
+
lane, an allocation in any lane). Their states live in the caller's
|
|
596
|
+
frame, and ca_iter_ensure finishes them however the body leaves. */
|
|
597
597
|
typedef struct {
|
|
598
598
|
ca_iter_state states[2];
|
|
599
599
|
VALUE self;
|
|
@@ -623,6 +623,7 @@ cumsum_ki_native_object_body (VALUE arg)
|
|
|
623
623
|
INIT inside the macro. */
|
|
624
624
|
int8_t slab_axes[CA_RANK_MAX];
|
|
625
625
|
slab_axes[0] = (int8_t) axis;
|
|
626
|
+
|
|
626
627
|
int rc;
|
|
627
628
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
628
629
|
slab_axes, 1, 0);
|
|
@@ -637,7 +638,6 @@ cumsum_ki_native_object_body (VALUE arg)
|
|
|
637
638
|
rb_raise(rb_eRuntimeError,
|
|
638
639
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
639
640
|
}
|
|
640
|
-
|
|
641
641
|
char *pi, *po;
|
|
642
642
|
boolean8_t *mi, *mo;
|
|
643
643
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -660,7 +660,7 @@ cumsum_ki_native_object (VALUE self, CArray *ca, int axis)
|
|
|
660
660
|
fr.self = self;
|
|
661
661
|
fr.ca = ca;
|
|
662
662
|
fr.axis = axis;
|
|
663
|
-
return
|
|
663
|
+
return ca_iter_ensure_computing(ca, 2, fr.states, cumsum_ki_native_object_body, (VALUE) &fr);
|
|
664
664
|
}
|
|
665
665
|
|
|
666
666
|
|
|
@@ -747,6 +747,7 @@ cumsum_in_own_type_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
747
747
|
INIT inside the macro. */
|
|
748
748
|
int8_t slab_axes[CA_RANK_MAX];
|
|
749
749
|
slab_axes[0] = (int8_t) axis;
|
|
750
|
+
|
|
750
751
|
ca_iter_state st_in, st_out;
|
|
751
752
|
int rc;
|
|
752
753
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -762,7 +763,6 @@ cumsum_in_own_type_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
762
763
|
rb_raise(rb_eRuntimeError,
|
|
763
764
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
764
765
|
}
|
|
765
|
-
|
|
766
766
|
char *pi, *po;
|
|
767
767
|
boolean8_t *mi, *mo;
|
|
768
768
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -789,6 +789,7 @@ cumsum_in_own_type_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
789
789
|
INIT inside the macro. */
|
|
790
790
|
int8_t slab_axes[CA_RANK_MAX];
|
|
791
791
|
slab_axes[0] = (int8_t) axis;
|
|
792
|
+
|
|
792
793
|
ca_iter_state st_in, st_out;
|
|
793
794
|
int rc;
|
|
794
795
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -804,7 +805,6 @@ cumsum_in_own_type_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
804
805
|
rb_raise(rb_eRuntimeError,
|
|
805
806
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
806
807
|
}
|
|
807
|
-
|
|
808
808
|
char *pi, *po;
|
|
809
809
|
boolean8_t *mi, *mo;
|
|
810
810
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -822,7 +822,7 @@ static VALUE
|
|
|
822
822
|
cumsum_in_own_type_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
823
823
|
{
|
|
824
824
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT16),
|
|
825
|
-
INT2NUM(sizeof(
|
|
825
|
+
INT2NUM(sizeof(ca_u_int16_t)));
|
|
826
826
|
CArray *co;
|
|
827
827
|
GetCArray(vout, co);
|
|
828
828
|
|
|
@@ -831,6 +831,7 @@ cumsum_in_own_type_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
831
831
|
INIT inside the macro. */
|
|
832
832
|
int8_t slab_axes[CA_RANK_MAX];
|
|
833
833
|
slab_axes[0] = (int8_t) axis;
|
|
834
|
+
|
|
834
835
|
ca_iter_state st_in, st_out;
|
|
835
836
|
int rc;
|
|
836
837
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -846,12 +847,11 @@ cumsum_in_own_type_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
846
847
|
rb_raise(rb_eRuntimeError,
|
|
847
848
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
848
849
|
}
|
|
849
|
-
|
|
850
850
|
char *pi, *po;
|
|
851
851
|
boolean8_t *mi, *mo;
|
|
852
852
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
853
853
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
854
|
-
CA_SLAB_SCAN_T(
|
|
854
|
+
CA_SLAB_SCAN_T(ca_u_int16_t, ca_u_int16_t, st_in, pi, mi,
|
|
855
855
|
st_out, po, 0, acc += v; r = acc);
|
|
856
856
|
ca_iter_state_sync_slab(&st_out);
|
|
857
857
|
}
|
|
@@ -864,7 +864,7 @@ static VALUE
|
|
|
864
864
|
cumsum_in_own_type_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
865
865
|
{
|
|
866
866
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT16),
|
|
867
|
-
INT2NUM(sizeof(
|
|
867
|
+
INT2NUM(sizeof(ca_u_uint16_t)));
|
|
868
868
|
CArray *co;
|
|
869
869
|
GetCArray(vout, co);
|
|
870
870
|
|
|
@@ -873,6 +873,7 @@ cumsum_in_own_type_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
873
873
|
INIT inside the macro. */
|
|
874
874
|
int8_t slab_axes[CA_RANK_MAX];
|
|
875
875
|
slab_axes[0] = (int8_t) axis;
|
|
876
|
+
|
|
876
877
|
ca_iter_state st_in, st_out;
|
|
877
878
|
int rc;
|
|
878
879
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -888,12 +889,11 @@ cumsum_in_own_type_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
888
889
|
rb_raise(rb_eRuntimeError,
|
|
889
890
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
890
891
|
}
|
|
891
|
-
|
|
892
892
|
char *pi, *po;
|
|
893
893
|
boolean8_t *mi, *mo;
|
|
894
894
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
895
895
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
896
|
-
CA_SLAB_SCAN_T(
|
|
896
|
+
CA_SLAB_SCAN_T(ca_u_uint16_t, ca_u_uint16_t, st_in, pi, mi,
|
|
897
897
|
st_out, po, 0, acc += v; r = acc);
|
|
898
898
|
ca_iter_state_sync_slab(&st_out);
|
|
899
899
|
}
|
|
@@ -906,7 +906,7 @@ static VALUE
|
|
|
906
906
|
cumsum_in_own_type_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
907
907
|
{
|
|
908
908
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT32),
|
|
909
|
-
INT2NUM(sizeof(
|
|
909
|
+
INT2NUM(sizeof(ca_u_int32_t)));
|
|
910
910
|
CArray *co;
|
|
911
911
|
GetCArray(vout, co);
|
|
912
912
|
|
|
@@ -915,6 +915,7 @@ cumsum_in_own_type_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
915
915
|
INIT inside the macro. */
|
|
916
916
|
int8_t slab_axes[CA_RANK_MAX];
|
|
917
917
|
slab_axes[0] = (int8_t) axis;
|
|
918
|
+
|
|
918
919
|
ca_iter_state st_in, st_out;
|
|
919
920
|
int rc;
|
|
920
921
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -930,12 +931,11 @@ cumsum_in_own_type_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
930
931
|
rb_raise(rb_eRuntimeError,
|
|
931
932
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
932
933
|
}
|
|
933
|
-
|
|
934
934
|
char *pi, *po;
|
|
935
935
|
boolean8_t *mi, *mo;
|
|
936
936
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
937
937
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
938
|
-
CA_SLAB_SCAN_T(
|
|
938
|
+
CA_SLAB_SCAN_T(ca_u_int32_t, ca_u_int32_t, st_in, pi, mi,
|
|
939
939
|
st_out, po, 0, acc += v; r = acc);
|
|
940
940
|
ca_iter_state_sync_slab(&st_out);
|
|
941
941
|
}
|
|
@@ -948,7 +948,7 @@ static VALUE
|
|
|
948
948
|
cumsum_in_own_type_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
949
949
|
{
|
|
950
950
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT32),
|
|
951
|
-
INT2NUM(sizeof(
|
|
951
|
+
INT2NUM(sizeof(ca_u_uint32_t)));
|
|
952
952
|
CArray *co;
|
|
953
953
|
GetCArray(vout, co);
|
|
954
954
|
|
|
@@ -957,6 +957,7 @@ cumsum_in_own_type_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
957
957
|
INIT inside the macro. */
|
|
958
958
|
int8_t slab_axes[CA_RANK_MAX];
|
|
959
959
|
slab_axes[0] = (int8_t) axis;
|
|
960
|
+
|
|
960
961
|
ca_iter_state st_in, st_out;
|
|
961
962
|
int rc;
|
|
962
963
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -972,12 +973,11 @@ cumsum_in_own_type_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
972
973
|
rb_raise(rb_eRuntimeError,
|
|
973
974
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
974
975
|
}
|
|
975
|
-
|
|
976
976
|
char *pi, *po;
|
|
977
977
|
boolean8_t *mi, *mo;
|
|
978
978
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
979
979
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
980
|
-
CA_SLAB_SCAN_T(
|
|
980
|
+
CA_SLAB_SCAN_T(ca_u_uint32_t, ca_u_uint32_t, st_in, pi, mi,
|
|
981
981
|
st_out, po, 0, acc += v; r = acc);
|
|
982
982
|
ca_iter_state_sync_slab(&st_out);
|
|
983
983
|
}
|
|
@@ -990,7 +990,7 @@ static VALUE
|
|
|
990
990
|
cumsum_in_own_type_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
991
991
|
{
|
|
992
992
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
993
|
-
INT2NUM(sizeof(
|
|
993
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
994
994
|
CArray *co;
|
|
995
995
|
GetCArray(vout, co);
|
|
996
996
|
|
|
@@ -999,6 +999,7 @@ cumsum_in_own_type_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
999
999
|
INIT inside the macro. */
|
|
1000
1000
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1001
1001
|
slab_axes[0] = (int8_t) axis;
|
|
1002
|
+
|
|
1002
1003
|
ca_iter_state st_in, st_out;
|
|
1003
1004
|
int rc;
|
|
1004
1005
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1014,12 +1015,11 @@ cumsum_in_own_type_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
1014
1015
|
rb_raise(rb_eRuntimeError,
|
|
1015
1016
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1016
1017
|
}
|
|
1017
|
-
|
|
1018
1018
|
char *pi, *po;
|
|
1019
1019
|
boolean8_t *mi, *mo;
|
|
1020
1020
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1021
1021
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1022
|
-
CA_SLAB_SCAN_T(
|
|
1022
|
+
CA_SLAB_SCAN_T(ca_u_int64_t, ca_u_int64_t, st_in, pi, mi,
|
|
1023
1023
|
st_out, po, 0, acc += v; r = acc);
|
|
1024
1024
|
ca_iter_state_sync_slab(&st_out);
|
|
1025
1025
|
}
|
|
@@ -1032,7 +1032,7 @@ static VALUE
|
|
|
1032
1032
|
cumsum_in_own_type_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
1033
1033
|
{
|
|
1034
1034
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT64),
|
|
1035
|
-
INT2NUM(sizeof(
|
|
1035
|
+
INT2NUM(sizeof(ca_u_uint64_t)));
|
|
1036
1036
|
CArray *co;
|
|
1037
1037
|
GetCArray(vout, co);
|
|
1038
1038
|
|
|
@@ -1041,6 +1041,7 @@ cumsum_in_own_type_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
1041
1041
|
INIT inside the macro. */
|
|
1042
1042
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1043
1043
|
slab_axes[0] = (int8_t) axis;
|
|
1044
|
+
|
|
1044
1045
|
ca_iter_state st_in, st_out;
|
|
1045
1046
|
int rc;
|
|
1046
1047
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1056,12 +1057,11 @@ cumsum_in_own_type_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
1056
1057
|
rb_raise(rb_eRuntimeError,
|
|
1057
1058
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1058
1059
|
}
|
|
1059
|
-
|
|
1060
1060
|
char *pi, *po;
|
|
1061
1061
|
boolean8_t *mi, *mo;
|
|
1062
1062
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1063
1063
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1064
|
-
CA_SLAB_SCAN_T(
|
|
1064
|
+
CA_SLAB_SCAN_T(ca_u_uint64_t, ca_u_uint64_t, st_in, pi, mi,
|
|
1065
1065
|
st_out, po, 0, acc += v; r = acc);
|
|
1066
1066
|
ca_iter_state_sync_slab(&st_out);
|
|
1067
1067
|
}
|
|
@@ -1132,7 +1132,7 @@ static VALUE
|
|
|
1132
1132
|
cumprod_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
1133
1133
|
{
|
|
1134
1134
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
1135
|
-
INT2NUM(sizeof(
|
|
1135
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
1136
1136
|
CArray *co;
|
|
1137
1137
|
GetCArray(vout, co);
|
|
1138
1138
|
|
|
@@ -1141,6 +1141,7 @@ cumprod_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
1141
1141
|
INIT inside the macro. */
|
|
1142
1142
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1143
1143
|
slab_axes[0] = (int8_t) axis;
|
|
1144
|
+
|
|
1144
1145
|
ca_iter_state st_in, st_out;
|
|
1145
1146
|
int rc;
|
|
1146
1147
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1156,12 +1157,11 @@ cumprod_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
1156
1157
|
rb_raise(rb_eRuntimeError,
|
|
1157
1158
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1158
1159
|
}
|
|
1159
|
-
|
|
1160
1160
|
char *pi, *po;
|
|
1161
1161
|
boolean8_t *mi, *mo;
|
|
1162
1162
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1163
1163
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1164
|
-
CA_SLAB_SCAN_T(int8_t,
|
|
1164
|
+
CA_SLAB_SCAN_T(int8_t, ca_u_float64_t, st_in, pi, mi,
|
|
1165
1165
|
st_out, po, 1, acc *= v; r = acc);
|
|
1166
1166
|
ca_iter_state_sync_slab(&st_out);
|
|
1167
1167
|
}
|
|
@@ -1174,7 +1174,7 @@ static VALUE
|
|
|
1174
1174
|
cumprod_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
1175
1175
|
{
|
|
1176
1176
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
1177
|
-
INT2NUM(sizeof(
|
|
1177
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
1178
1178
|
CArray *co;
|
|
1179
1179
|
GetCArray(vout, co);
|
|
1180
1180
|
|
|
@@ -1183,6 +1183,7 @@ cumprod_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
1183
1183
|
INIT inside the macro. */
|
|
1184
1184
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1185
1185
|
slab_axes[0] = (int8_t) axis;
|
|
1186
|
+
|
|
1186
1187
|
ca_iter_state st_in, st_out;
|
|
1187
1188
|
int rc;
|
|
1188
1189
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1198,12 +1199,11 @@ cumprod_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
1198
1199
|
rb_raise(rb_eRuntimeError,
|
|
1199
1200
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1200
1201
|
}
|
|
1201
|
-
|
|
1202
1202
|
char *pi, *po;
|
|
1203
1203
|
boolean8_t *mi, *mo;
|
|
1204
1204
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1205
1205
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1206
|
-
CA_SLAB_SCAN_T(uint8_t,
|
|
1206
|
+
CA_SLAB_SCAN_T(uint8_t, ca_u_float64_t, st_in, pi, mi,
|
|
1207
1207
|
st_out, po, 1, acc *= v; r = acc);
|
|
1208
1208
|
ca_iter_state_sync_slab(&st_out);
|
|
1209
1209
|
}
|
|
@@ -1216,7 +1216,7 @@ static VALUE
|
|
|
1216
1216
|
cumprod_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
1217
1217
|
{
|
|
1218
1218
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
1219
|
-
INT2NUM(sizeof(
|
|
1219
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
1220
1220
|
CArray *co;
|
|
1221
1221
|
GetCArray(vout, co);
|
|
1222
1222
|
|
|
@@ -1225,6 +1225,7 @@ cumprod_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
1225
1225
|
INIT inside the macro. */
|
|
1226
1226
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1227
1227
|
slab_axes[0] = (int8_t) axis;
|
|
1228
|
+
|
|
1228
1229
|
ca_iter_state st_in, st_out;
|
|
1229
1230
|
int rc;
|
|
1230
1231
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1240,12 +1241,11 @@ cumprod_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
1240
1241
|
rb_raise(rb_eRuntimeError,
|
|
1241
1242
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1242
1243
|
}
|
|
1243
|
-
|
|
1244
1244
|
char *pi, *po;
|
|
1245
1245
|
boolean8_t *mi, *mo;
|
|
1246
1246
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1247
1247
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1248
|
-
CA_SLAB_SCAN_T(
|
|
1248
|
+
CA_SLAB_SCAN_T(ca_u_int16_t, ca_u_float64_t, st_in, pi, mi,
|
|
1249
1249
|
st_out, po, 1, acc *= v; r = acc);
|
|
1250
1250
|
ca_iter_state_sync_slab(&st_out);
|
|
1251
1251
|
}
|
|
@@ -1258,7 +1258,7 @@ static VALUE
|
|
|
1258
1258
|
cumprod_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
1259
1259
|
{
|
|
1260
1260
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
1261
|
-
INT2NUM(sizeof(
|
|
1261
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
1262
1262
|
CArray *co;
|
|
1263
1263
|
GetCArray(vout, co);
|
|
1264
1264
|
|
|
@@ -1267,6 +1267,7 @@ cumprod_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
1267
1267
|
INIT inside the macro. */
|
|
1268
1268
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1269
1269
|
slab_axes[0] = (int8_t) axis;
|
|
1270
|
+
|
|
1270
1271
|
ca_iter_state st_in, st_out;
|
|
1271
1272
|
int rc;
|
|
1272
1273
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1282,12 +1283,11 @@ cumprod_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
1282
1283
|
rb_raise(rb_eRuntimeError,
|
|
1283
1284
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1284
1285
|
}
|
|
1285
|
-
|
|
1286
1286
|
char *pi, *po;
|
|
1287
1287
|
boolean8_t *mi, *mo;
|
|
1288
1288
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1289
1289
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1290
|
-
CA_SLAB_SCAN_T(
|
|
1290
|
+
CA_SLAB_SCAN_T(ca_u_uint16_t, ca_u_float64_t, st_in, pi, mi,
|
|
1291
1291
|
st_out, po, 1, acc *= v; r = acc);
|
|
1292
1292
|
ca_iter_state_sync_slab(&st_out);
|
|
1293
1293
|
}
|
|
@@ -1300,7 +1300,7 @@ static VALUE
|
|
|
1300
1300
|
cumprod_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
1301
1301
|
{
|
|
1302
1302
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
1303
|
-
INT2NUM(sizeof(
|
|
1303
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
1304
1304
|
CArray *co;
|
|
1305
1305
|
GetCArray(vout, co);
|
|
1306
1306
|
|
|
@@ -1309,6 +1309,7 @@ cumprod_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
1309
1309
|
INIT inside the macro. */
|
|
1310
1310
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1311
1311
|
slab_axes[0] = (int8_t) axis;
|
|
1312
|
+
|
|
1312
1313
|
ca_iter_state st_in, st_out;
|
|
1313
1314
|
int rc;
|
|
1314
1315
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1324,12 +1325,11 @@ cumprod_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
1324
1325
|
rb_raise(rb_eRuntimeError,
|
|
1325
1326
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1326
1327
|
}
|
|
1327
|
-
|
|
1328
1328
|
char *pi, *po;
|
|
1329
1329
|
boolean8_t *mi, *mo;
|
|
1330
1330
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1331
1331
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1332
|
-
CA_SLAB_SCAN_T(
|
|
1332
|
+
CA_SLAB_SCAN_T(ca_u_int32_t, ca_u_float64_t, st_in, pi, mi,
|
|
1333
1333
|
st_out, po, 1, acc *= v; r = acc);
|
|
1334
1334
|
ca_iter_state_sync_slab(&st_out);
|
|
1335
1335
|
}
|
|
@@ -1342,7 +1342,7 @@ static VALUE
|
|
|
1342
1342
|
cumprod_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
1343
1343
|
{
|
|
1344
1344
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
1345
|
-
INT2NUM(sizeof(
|
|
1345
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
1346
1346
|
CArray *co;
|
|
1347
1347
|
GetCArray(vout, co);
|
|
1348
1348
|
|
|
@@ -1351,6 +1351,7 @@ cumprod_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
1351
1351
|
INIT inside the macro. */
|
|
1352
1352
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1353
1353
|
slab_axes[0] = (int8_t) axis;
|
|
1354
|
+
|
|
1354
1355
|
ca_iter_state st_in, st_out;
|
|
1355
1356
|
int rc;
|
|
1356
1357
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1366,12 +1367,11 @@ cumprod_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
1366
1367
|
rb_raise(rb_eRuntimeError,
|
|
1367
1368
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1368
1369
|
}
|
|
1369
|
-
|
|
1370
1370
|
char *pi, *po;
|
|
1371
1371
|
boolean8_t *mi, *mo;
|
|
1372
1372
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1373
1373
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1374
|
-
CA_SLAB_SCAN_T(
|
|
1374
|
+
CA_SLAB_SCAN_T(ca_u_uint32_t, ca_u_float64_t, st_in, pi, mi,
|
|
1375
1375
|
st_out, po, 1, acc *= v; r = acc);
|
|
1376
1376
|
ca_iter_state_sync_slab(&st_out);
|
|
1377
1377
|
}
|
|
@@ -1384,7 +1384,7 @@ static VALUE
|
|
|
1384
1384
|
cumprod_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
1385
1385
|
{
|
|
1386
1386
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
1387
|
-
INT2NUM(sizeof(
|
|
1387
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
1388
1388
|
CArray *co;
|
|
1389
1389
|
GetCArray(vout, co);
|
|
1390
1390
|
|
|
@@ -1393,6 +1393,7 @@ cumprod_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
1393
1393
|
INIT inside the macro. */
|
|
1394
1394
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1395
1395
|
slab_axes[0] = (int8_t) axis;
|
|
1396
|
+
|
|
1396
1397
|
ca_iter_state st_in, st_out;
|
|
1397
1398
|
int rc;
|
|
1398
1399
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1408,12 +1409,11 @@ cumprod_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
1408
1409
|
rb_raise(rb_eRuntimeError,
|
|
1409
1410
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1410
1411
|
}
|
|
1411
|
-
|
|
1412
1412
|
char *pi, *po;
|
|
1413
1413
|
boolean8_t *mi, *mo;
|
|
1414
1414
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1415
1415
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1416
|
-
CA_SLAB_SCAN_T(
|
|
1416
|
+
CA_SLAB_SCAN_T(ca_u_int64_t, ca_u_float64_t, st_in, pi, mi,
|
|
1417
1417
|
st_out, po, 1, acc *= v; r = acc);
|
|
1418
1418
|
ca_iter_state_sync_slab(&st_out);
|
|
1419
1419
|
}
|
|
@@ -1426,7 +1426,7 @@ static VALUE
|
|
|
1426
1426
|
cumprod_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
1427
1427
|
{
|
|
1428
1428
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
1429
|
-
INT2NUM(sizeof(
|
|
1429
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
1430
1430
|
CArray *co;
|
|
1431
1431
|
GetCArray(vout, co);
|
|
1432
1432
|
|
|
@@ -1435,6 +1435,7 @@ cumprod_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
1435
1435
|
INIT inside the macro. */
|
|
1436
1436
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1437
1437
|
slab_axes[0] = (int8_t) axis;
|
|
1438
|
+
|
|
1438
1439
|
ca_iter_state st_in, st_out;
|
|
1439
1440
|
int rc;
|
|
1440
1441
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1450,12 +1451,11 @@ cumprod_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
1450
1451
|
rb_raise(rb_eRuntimeError,
|
|
1451
1452
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1452
1453
|
}
|
|
1453
|
-
|
|
1454
1454
|
char *pi, *po;
|
|
1455
1455
|
boolean8_t *mi, *mo;
|
|
1456
1456
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1457
1457
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1458
|
-
CA_SLAB_SCAN_T(
|
|
1458
|
+
CA_SLAB_SCAN_T(ca_u_uint64_t, ca_u_float64_t, st_in, pi, mi,
|
|
1459
1459
|
st_out, po, 1, acc *= v; r = acc);
|
|
1460
1460
|
ca_iter_state_sync_slab(&st_out);
|
|
1461
1461
|
}
|
|
@@ -1468,7 +1468,7 @@ static VALUE
|
|
|
1468
1468
|
cumprod_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
1469
1469
|
{
|
|
1470
1470
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
1471
|
-
INT2NUM(sizeof(
|
|
1471
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
1472
1472
|
CArray *co;
|
|
1473
1473
|
GetCArray(vout, co);
|
|
1474
1474
|
|
|
@@ -1477,6 +1477,7 @@ cumprod_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
1477
1477
|
INIT inside the macro. */
|
|
1478
1478
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1479
1479
|
slab_axes[0] = (int8_t) axis;
|
|
1480
|
+
|
|
1480
1481
|
ca_iter_state st_in, st_out;
|
|
1481
1482
|
int rc;
|
|
1482
1483
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1492,12 +1493,11 @@ cumprod_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
1492
1493
|
rb_raise(rb_eRuntimeError,
|
|
1493
1494
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1494
1495
|
}
|
|
1495
|
-
|
|
1496
1496
|
char *pi, *po;
|
|
1497
1497
|
boolean8_t *mi, *mo;
|
|
1498
1498
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1499
1499
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1500
|
-
CA_SLAB_SCAN_T(
|
|
1500
|
+
CA_SLAB_SCAN_T(ca_u_float32_t, ca_u_float64_t, st_in, pi, mi,
|
|
1501
1501
|
st_out, po, 1, acc *= v; r = acc);
|
|
1502
1502
|
ca_iter_state_sync_slab(&st_out);
|
|
1503
1503
|
}
|
|
@@ -1510,7 +1510,7 @@ static VALUE
|
|
|
1510
1510
|
cumprod_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
1511
1511
|
{
|
|
1512
1512
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
1513
|
-
INT2NUM(sizeof(
|
|
1513
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
1514
1514
|
CArray *co;
|
|
1515
1515
|
GetCArray(vout, co);
|
|
1516
1516
|
|
|
@@ -1519,6 +1519,7 @@ cumprod_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
1519
1519
|
INIT inside the macro. */
|
|
1520
1520
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1521
1521
|
slab_axes[0] = (int8_t) axis;
|
|
1522
|
+
|
|
1522
1523
|
ca_iter_state st_in, st_out;
|
|
1523
1524
|
int rc;
|
|
1524
1525
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1534,12 +1535,11 @@ cumprod_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
1534
1535
|
rb_raise(rb_eRuntimeError,
|
|
1535
1536
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1536
1537
|
}
|
|
1537
|
-
|
|
1538
1538
|
char *pi, *po;
|
|
1539
1539
|
boolean8_t *mi, *mo;
|
|
1540
1540
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1541
1541
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1542
|
-
CA_SLAB_SCAN_T(
|
|
1542
|
+
CA_SLAB_SCAN_T(ca_u_float64_t, ca_u_float64_t, st_in, pi, mi,
|
|
1543
1543
|
st_out, po, 1, acc *= v; r = acc);
|
|
1544
1544
|
ca_iter_state_sync_slab(&st_out);
|
|
1545
1545
|
}
|
|
@@ -1552,7 +1552,7 @@ static VALUE
|
|
|
1552
1552
|
cumprod_ki_native_cmplx64 (VALUE self, CArray *ca, int axis)
|
|
1553
1553
|
{
|
|
1554
1554
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_CMPLX128),
|
|
1555
|
-
INT2NUM(sizeof(
|
|
1555
|
+
INT2NUM(sizeof(ca_u_cmplx128_t)));
|
|
1556
1556
|
CArray *co;
|
|
1557
1557
|
GetCArray(vout, co);
|
|
1558
1558
|
|
|
@@ -1561,6 +1561,7 @@ cumprod_ki_native_cmplx64 (VALUE self, CArray *ca, int axis)
|
|
|
1561
1561
|
INIT inside the macro. */
|
|
1562
1562
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1563
1563
|
slab_axes[0] = (int8_t) axis;
|
|
1564
|
+
|
|
1564
1565
|
ca_iter_state st_in, st_out;
|
|
1565
1566
|
int rc;
|
|
1566
1567
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1576,12 +1577,11 @@ cumprod_ki_native_cmplx64 (VALUE self, CArray *ca, int axis)
|
|
|
1576
1577
|
rb_raise(rb_eRuntimeError,
|
|
1577
1578
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1578
1579
|
}
|
|
1579
|
-
|
|
1580
1580
|
char *pi, *po;
|
|
1581
1581
|
boolean8_t *mi, *mo;
|
|
1582
1582
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1583
1583
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1584
|
-
CA_SLAB_SCAN_T(
|
|
1584
|
+
CA_SLAB_SCAN_T(ca_u_cmplx64_t, ca_u_cmplx128_t, st_in, pi, mi,
|
|
1585
1585
|
st_out, po, 1, acc *= v; r = acc);
|
|
1586
1586
|
ca_iter_state_sync_slab(&st_out);
|
|
1587
1587
|
}
|
|
@@ -1594,7 +1594,7 @@ static VALUE
|
|
|
1594
1594
|
cumprod_ki_native_cmplx128 (VALUE self, CArray *ca, int axis)
|
|
1595
1595
|
{
|
|
1596
1596
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_CMPLX128),
|
|
1597
|
-
INT2NUM(sizeof(
|
|
1597
|
+
INT2NUM(sizeof(ca_u_cmplx128_t)));
|
|
1598
1598
|
CArray *co;
|
|
1599
1599
|
GetCArray(vout, co);
|
|
1600
1600
|
|
|
@@ -1603,6 +1603,7 @@ cumprod_ki_native_cmplx128 (VALUE self, CArray *ca, int axis)
|
|
|
1603
1603
|
INIT inside the macro. */
|
|
1604
1604
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1605
1605
|
slab_axes[0] = (int8_t) axis;
|
|
1606
|
+
|
|
1606
1607
|
ca_iter_state st_in, st_out;
|
|
1607
1608
|
int rc;
|
|
1608
1609
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1618,12 +1619,11 @@ cumprod_ki_native_cmplx128 (VALUE self, CArray *ca, int axis)
|
|
|
1618
1619
|
rb_raise(rb_eRuntimeError,
|
|
1619
1620
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1620
1621
|
}
|
|
1621
|
-
|
|
1622
1622
|
char *pi, *po;
|
|
1623
1623
|
boolean8_t *mi, *mo;
|
|
1624
1624
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1625
1625
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1626
|
-
CA_SLAB_SCAN_T(
|
|
1626
|
+
CA_SLAB_SCAN_T(ca_u_cmplx128_t, ca_u_cmplx128_t, st_in, pi, mi,
|
|
1627
1627
|
st_out, po, 1, acc *= v; r = acc);
|
|
1628
1628
|
ca_iter_state_sync_slab(&st_out);
|
|
1629
1629
|
}
|
|
@@ -1636,7 +1636,7 @@ static VALUE
|
|
|
1636
1636
|
cumprod_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
1637
1637
|
{
|
|
1638
1638
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT64),
|
|
1639
|
-
INT2NUM(sizeof(
|
|
1639
|
+
INT2NUM(sizeof(ca_u_uint64_t)));
|
|
1640
1640
|
CArray *co;
|
|
1641
1641
|
GetCArray(vout, co);
|
|
1642
1642
|
|
|
@@ -1645,6 +1645,7 @@ cumprod_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
1645
1645
|
INIT inside the macro. */
|
|
1646
1646
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1647
1647
|
slab_axes[0] = (int8_t) axis;
|
|
1648
|
+
|
|
1648
1649
|
ca_iter_state st_in, st_out;
|
|
1649
1650
|
int rc;
|
|
1650
1651
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1660,12 +1661,11 @@ cumprod_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
1660
1661
|
rb_raise(rb_eRuntimeError,
|
|
1661
1662
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1662
1663
|
}
|
|
1663
|
-
|
|
1664
1664
|
char *pi, *po;
|
|
1665
1665
|
boolean8_t *mi, *mo;
|
|
1666
1666
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
1667
1667
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
1668
|
-
CA_SLAB_SCAN_T(boolean8_t,
|
|
1668
|
+
CA_SLAB_SCAN_T(boolean8_t, ca_u_uint64_t, st_in, pi, mi,
|
|
1669
1669
|
st_out, po, 1, acc *= v; r = acc);
|
|
1670
1670
|
ca_iter_state_sync_slab(&st_out);
|
|
1671
1671
|
}
|
|
@@ -1674,9 +1674,9 @@ cumprod_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
1674
1674
|
return vout;
|
|
1675
1675
|
}
|
|
1676
1676
|
|
|
1677
|
-
/* The
|
|
1678
|
-
|
|
1679
|
-
finishes them however the body leaves. */
|
|
1677
|
+
/* The walks can raise part way (a Ruby call per cell in the object
|
|
1678
|
+
lane, an allocation in any lane). Their states live in the caller's
|
|
1679
|
+
frame, and ca_iter_ensure finishes them however the body leaves. */
|
|
1680
1680
|
typedef struct {
|
|
1681
1681
|
ca_iter_state states[2];
|
|
1682
1682
|
VALUE self;
|
|
@@ -1706,6 +1706,7 @@ cumprod_ki_native_object_body (VALUE arg)
|
|
|
1706
1706
|
INIT inside the macro. */
|
|
1707
1707
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1708
1708
|
slab_axes[0] = (int8_t) axis;
|
|
1709
|
+
|
|
1709
1710
|
int rc;
|
|
1710
1711
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
1711
1712
|
slab_axes, 1, 0);
|
|
@@ -1720,7 +1721,6 @@ cumprod_ki_native_object_body (VALUE arg)
|
|
|
1720
1721
|
rb_raise(rb_eRuntimeError,
|
|
1721
1722
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1722
1723
|
}
|
|
1723
|
-
|
|
1724
1724
|
char *pi, *po;
|
|
1725
1725
|
boolean8_t *mi, *mo;
|
|
1726
1726
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -1743,7 +1743,7 @@ cumprod_ki_native_object (VALUE self, CArray *ca, int axis)
|
|
|
1743
1743
|
fr.self = self;
|
|
1744
1744
|
fr.ca = ca;
|
|
1745
1745
|
fr.axis = axis;
|
|
1746
|
-
return
|
|
1746
|
+
return ca_iter_ensure_computing(ca, 2, fr.states, cumprod_ki_native_object_body, (VALUE) &fr);
|
|
1747
1747
|
}
|
|
1748
1748
|
|
|
1749
1749
|
|
|
@@ -1830,6 +1830,13 @@ cummax_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
1830
1830
|
INIT inside the macro. */
|
|
1831
1831
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1832
1832
|
slab_axes[0] = (int8_t) axis;
|
|
1833
|
+
|
|
1834
|
+
boolean8_t *op_mask = NULL;
|
|
1835
|
+
if ( ca_has_mask(ca) ) {
|
|
1836
|
+
ca_create_mask(co);
|
|
1837
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
1838
|
+
}
|
|
1839
|
+
|
|
1833
1840
|
ca_iter_state st_in, st_out;
|
|
1834
1841
|
int rc;
|
|
1835
1842
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1845,13 +1852,6 @@ cummax_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
1845
1852
|
rb_raise(rb_eRuntimeError,
|
|
1846
1853
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1847
1854
|
}
|
|
1848
|
-
|
|
1849
|
-
boolean8_t *op_mask = NULL;
|
|
1850
|
-
if ( ca_has_mask(ca) ) {
|
|
1851
|
-
ca_create_mask(co);
|
|
1852
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
1853
|
-
}
|
|
1854
|
-
|
|
1855
1855
|
char *pi, *po;
|
|
1856
1856
|
boolean8_t *mi, *mo;
|
|
1857
1857
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -1881,6 +1881,13 @@ cummax_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
1881
1881
|
INIT inside the macro. */
|
|
1882
1882
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1883
1883
|
slab_axes[0] = (int8_t) axis;
|
|
1884
|
+
|
|
1885
|
+
boolean8_t *op_mask = NULL;
|
|
1886
|
+
if ( ca_has_mask(ca) ) {
|
|
1887
|
+
ca_create_mask(co);
|
|
1888
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
1889
|
+
}
|
|
1890
|
+
|
|
1884
1891
|
ca_iter_state st_in, st_out;
|
|
1885
1892
|
int rc;
|
|
1886
1893
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1896,13 +1903,6 @@ cummax_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
1896
1903
|
rb_raise(rb_eRuntimeError,
|
|
1897
1904
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1898
1905
|
}
|
|
1899
|
-
|
|
1900
|
-
boolean8_t *op_mask = NULL;
|
|
1901
|
-
if ( ca_has_mask(ca) ) {
|
|
1902
|
-
ca_create_mask(co);
|
|
1903
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
1904
|
-
}
|
|
1905
|
-
|
|
1906
1906
|
char *pi, *po;
|
|
1907
1907
|
boolean8_t *mi, *mo;
|
|
1908
1908
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -1923,7 +1923,7 @@ static VALUE
|
|
|
1923
1923
|
cummax_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
1924
1924
|
{
|
|
1925
1925
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT16),
|
|
1926
|
-
INT2NUM(sizeof(
|
|
1926
|
+
INT2NUM(sizeof(ca_u_int16_t)));
|
|
1927
1927
|
CArray *co;
|
|
1928
1928
|
GetCArray(vout, co);
|
|
1929
1929
|
|
|
@@ -1932,6 +1932,13 @@ cummax_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
1932
1932
|
INIT inside the macro. */
|
|
1933
1933
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1934
1934
|
slab_axes[0] = (int8_t) axis;
|
|
1935
|
+
|
|
1936
|
+
boolean8_t *op_mask = NULL;
|
|
1937
|
+
if ( ca_has_mask(ca) ) {
|
|
1938
|
+
ca_create_mask(co);
|
|
1939
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
1940
|
+
}
|
|
1941
|
+
|
|
1935
1942
|
ca_iter_state st_in, st_out;
|
|
1936
1943
|
int rc;
|
|
1937
1944
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1947,13 +1954,6 @@ cummax_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
1947
1954
|
rb_raise(rb_eRuntimeError,
|
|
1948
1955
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
1949
1956
|
}
|
|
1950
|
-
|
|
1951
|
-
boolean8_t *op_mask = NULL;
|
|
1952
|
-
if ( ca_has_mask(ca) ) {
|
|
1953
|
-
ca_create_mask(co);
|
|
1954
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
1955
|
-
}
|
|
1956
|
-
|
|
1957
1957
|
char *pi, *po;
|
|
1958
1958
|
boolean8_t *mi, *mo;
|
|
1959
1959
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -1961,7 +1961,7 @@ cummax_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
1961
1961
|
boolean8_t *mo_fiber = op_mask
|
|
1962
1962
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
1963
1963
|
: NULL;
|
|
1964
|
-
CA_SLAB_SCAN_T_GATED(
|
|
1964
|
+
CA_SLAB_SCAN_T_GATED(ca_u_int16_t, ca_u_int16_t, st_in, pi, mi,
|
|
1965
1965
|
st_out, po, mo_fiber, INT16_MIN, if (v > acc) acc = v; r = acc);
|
|
1966
1966
|
ca_iter_state_sync_slab(&st_out);
|
|
1967
1967
|
}
|
|
@@ -1974,7 +1974,7 @@ static VALUE
|
|
|
1974
1974
|
cummax_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
1975
1975
|
{
|
|
1976
1976
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT16),
|
|
1977
|
-
INT2NUM(sizeof(
|
|
1977
|
+
INT2NUM(sizeof(ca_u_uint16_t)));
|
|
1978
1978
|
CArray *co;
|
|
1979
1979
|
GetCArray(vout, co);
|
|
1980
1980
|
|
|
@@ -1983,6 +1983,13 @@ cummax_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
1983
1983
|
INIT inside the macro. */
|
|
1984
1984
|
int8_t slab_axes[CA_RANK_MAX];
|
|
1985
1985
|
slab_axes[0] = (int8_t) axis;
|
|
1986
|
+
|
|
1987
|
+
boolean8_t *op_mask = NULL;
|
|
1988
|
+
if ( ca_has_mask(ca) ) {
|
|
1989
|
+
ca_create_mask(co);
|
|
1990
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
1991
|
+
}
|
|
1992
|
+
|
|
1986
1993
|
ca_iter_state st_in, st_out;
|
|
1987
1994
|
int rc;
|
|
1988
1995
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -1998,13 +2005,6 @@ cummax_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
1998
2005
|
rb_raise(rb_eRuntimeError,
|
|
1999
2006
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2000
2007
|
}
|
|
2001
|
-
|
|
2002
|
-
boolean8_t *op_mask = NULL;
|
|
2003
|
-
if ( ca_has_mask(ca) ) {
|
|
2004
|
-
ca_create_mask(co);
|
|
2005
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2006
|
-
}
|
|
2007
|
-
|
|
2008
2008
|
char *pi, *po;
|
|
2009
2009
|
boolean8_t *mi, *mo;
|
|
2010
2010
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2012,7 +2012,7 @@ cummax_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
2012
2012
|
boolean8_t *mo_fiber = op_mask
|
|
2013
2013
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2014
2014
|
: NULL;
|
|
2015
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2015
|
+
CA_SLAB_SCAN_T_GATED(ca_u_uint16_t, ca_u_uint16_t, st_in, pi, mi,
|
|
2016
2016
|
st_out, po, mo_fiber, 0, if (v > acc) acc = v; r = acc);
|
|
2017
2017
|
ca_iter_state_sync_slab(&st_out);
|
|
2018
2018
|
}
|
|
@@ -2025,7 +2025,7 @@ static VALUE
|
|
|
2025
2025
|
cummax_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
2026
2026
|
{
|
|
2027
2027
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT32),
|
|
2028
|
-
INT2NUM(sizeof(
|
|
2028
|
+
INT2NUM(sizeof(ca_u_int32_t)));
|
|
2029
2029
|
CArray *co;
|
|
2030
2030
|
GetCArray(vout, co);
|
|
2031
2031
|
|
|
@@ -2034,6 +2034,13 @@ cummax_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
2034
2034
|
INIT inside the macro. */
|
|
2035
2035
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2036
2036
|
slab_axes[0] = (int8_t) axis;
|
|
2037
|
+
|
|
2038
|
+
boolean8_t *op_mask = NULL;
|
|
2039
|
+
if ( ca_has_mask(ca) ) {
|
|
2040
|
+
ca_create_mask(co);
|
|
2041
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2042
|
+
}
|
|
2043
|
+
|
|
2037
2044
|
ca_iter_state st_in, st_out;
|
|
2038
2045
|
int rc;
|
|
2039
2046
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2049,13 +2056,6 @@ cummax_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
2049
2056
|
rb_raise(rb_eRuntimeError,
|
|
2050
2057
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2051
2058
|
}
|
|
2052
|
-
|
|
2053
|
-
boolean8_t *op_mask = NULL;
|
|
2054
|
-
if ( ca_has_mask(ca) ) {
|
|
2055
|
-
ca_create_mask(co);
|
|
2056
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2057
|
-
}
|
|
2058
|
-
|
|
2059
2059
|
char *pi, *po;
|
|
2060
2060
|
boolean8_t *mi, *mo;
|
|
2061
2061
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2063,7 +2063,7 @@ cummax_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
2063
2063
|
boolean8_t *mo_fiber = op_mask
|
|
2064
2064
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2065
2065
|
: NULL;
|
|
2066
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2066
|
+
CA_SLAB_SCAN_T_GATED(ca_u_int32_t, ca_u_int32_t, st_in, pi, mi,
|
|
2067
2067
|
st_out, po, mo_fiber, INT32_MIN, if (v > acc) acc = v; r = acc);
|
|
2068
2068
|
ca_iter_state_sync_slab(&st_out);
|
|
2069
2069
|
}
|
|
@@ -2076,7 +2076,7 @@ static VALUE
|
|
|
2076
2076
|
cummax_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
2077
2077
|
{
|
|
2078
2078
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT32),
|
|
2079
|
-
INT2NUM(sizeof(
|
|
2079
|
+
INT2NUM(sizeof(ca_u_uint32_t)));
|
|
2080
2080
|
CArray *co;
|
|
2081
2081
|
GetCArray(vout, co);
|
|
2082
2082
|
|
|
@@ -2085,6 +2085,13 @@ cummax_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
2085
2085
|
INIT inside the macro. */
|
|
2086
2086
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2087
2087
|
slab_axes[0] = (int8_t) axis;
|
|
2088
|
+
|
|
2089
|
+
boolean8_t *op_mask = NULL;
|
|
2090
|
+
if ( ca_has_mask(ca) ) {
|
|
2091
|
+
ca_create_mask(co);
|
|
2092
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2093
|
+
}
|
|
2094
|
+
|
|
2088
2095
|
ca_iter_state st_in, st_out;
|
|
2089
2096
|
int rc;
|
|
2090
2097
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2100,13 +2107,6 @@ cummax_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
2100
2107
|
rb_raise(rb_eRuntimeError,
|
|
2101
2108
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2102
2109
|
}
|
|
2103
|
-
|
|
2104
|
-
boolean8_t *op_mask = NULL;
|
|
2105
|
-
if ( ca_has_mask(ca) ) {
|
|
2106
|
-
ca_create_mask(co);
|
|
2107
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2108
|
-
}
|
|
2109
|
-
|
|
2110
2110
|
char *pi, *po;
|
|
2111
2111
|
boolean8_t *mi, *mo;
|
|
2112
2112
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2114,7 +2114,7 @@ cummax_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
2114
2114
|
boolean8_t *mo_fiber = op_mask
|
|
2115
2115
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2116
2116
|
: NULL;
|
|
2117
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2117
|
+
CA_SLAB_SCAN_T_GATED(ca_u_uint32_t, ca_u_uint32_t, st_in, pi, mi,
|
|
2118
2118
|
st_out, po, mo_fiber, 0, if (v > acc) acc = v; r = acc);
|
|
2119
2119
|
ca_iter_state_sync_slab(&st_out);
|
|
2120
2120
|
}
|
|
@@ -2127,7 +2127,7 @@ static VALUE
|
|
|
2127
2127
|
cummax_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
2128
2128
|
{
|
|
2129
2129
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
2130
|
-
INT2NUM(sizeof(
|
|
2130
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
2131
2131
|
CArray *co;
|
|
2132
2132
|
GetCArray(vout, co);
|
|
2133
2133
|
|
|
@@ -2136,6 +2136,13 @@ cummax_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
2136
2136
|
INIT inside the macro. */
|
|
2137
2137
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2138
2138
|
slab_axes[0] = (int8_t) axis;
|
|
2139
|
+
|
|
2140
|
+
boolean8_t *op_mask = NULL;
|
|
2141
|
+
if ( ca_has_mask(ca) ) {
|
|
2142
|
+
ca_create_mask(co);
|
|
2143
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2144
|
+
}
|
|
2145
|
+
|
|
2139
2146
|
ca_iter_state st_in, st_out;
|
|
2140
2147
|
int rc;
|
|
2141
2148
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2151,13 +2158,6 @@ cummax_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
2151
2158
|
rb_raise(rb_eRuntimeError,
|
|
2152
2159
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2153
2160
|
}
|
|
2154
|
-
|
|
2155
|
-
boolean8_t *op_mask = NULL;
|
|
2156
|
-
if ( ca_has_mask(ca) ) {
|
|
2157
|
-
ca_create_mask(co);
|
|
2158
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2159
|
-
}
|
|
2160
|
-
|
|
2161
2161
|
char *pi, *po;
|
|
2162
2162
|
boolean8_t *mi, *mo;
|
|
2163
2163
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2165,7 +2165,7 @@ cummax_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
2165
2165
|
boolean8_t *mo_fiber = op_mask
|
|
2166
2166
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2167
2167
|
: NULL;
|
|
2168
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2168
|
+
CA_SLAB_SCAN_T_GATED(ca_u_int64_t, ca_u_int64_t, st_in, pi, mi,
|
|
2169
2169
|
st_out, po, mo_fiber, INT64_MIN, if (v > acc) acc = v; r = acc);
|
|
2170
2170
|
ca_iter_state_sync_slab(&st_out);
|
|
2171
2171
|
}
|
|
@@ -2178,7 +2178,7 @@ static VALUE
|
|
|
2178
2178
|
cummax_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
2179
2179
|
{
|
|
2180
2180
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT64),
|
|
2181
|
-
INT2NUM(sizeof(
|
|
2181
|
+
INT2NUM(sizeof(ca_u_uint64_t)));
|
|
2182
2182
|
CArray *co;
|
|
2183
2183
|
GetCArray(vout, co);
|
|
2184
2184
|
|
|
@@ -2187,6 +2187,13 @@ cummax_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
2187
2187
|
INIT inside the macro. */
|
|
2188
2188
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2189
2189
|
slab_axes[0] = (int8_t) axis;
|
|
2190
|
+
|
|
2191
|
+
boolean8_t *op_mask = NULL;
|
|
2192
|
+
if ( ca_has_mask(ca) ) {
|
|
2193
|
+
ca_create_mask(co);
|
|
2194
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2195
|
+
}
|
|
2196
|
+
|
|
2190
2197
|
ca_iter_state st_in, st_out;
|
|
2191
2198
|
int rc;
|
|
2192
2199
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2202,13 +2209,6 @@ cummax_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
2202
2209
|
rb_raise(rb_eRuntimeError,
|
|
2203
2210
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2204
2211
|
}
|
|
2205
|
-
|
|
2206
|
-
boolean8_t *op_mask = NULL;
|
|
2207
|
-
if ( ca_has_mask(ca) ) {
|
|
2208
|
-
ca_create_mask(co);
|
|
2209
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2210
|
-
}
|
|
2211
|
-
|
|
2212
2212
|
char *pi, *po;
|
|
2213
2213
|
boolean8_t *mi, *mo;
|
|
2214
2214
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2216,7 +2216,7 @@ cummax_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
2216
2216
|
boolean8_t *mo_fiber = op_mask
|
|
2217
2217
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2218
2218
|
: NULL;
|
|
2219
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2219
|
+
CA_SLAB_SCAN_T_GATED(ca_u_uint64_t, ca_u_uint64_t, st_in, pi, mi,
|
|
2220
2220
|
st_out, po, mo_fiber, 0, if (v > acc) acc = v; r = acc);
|
|
2221
2221
|
ca_iter_state_sync_slab(&st_out);
|
|
2222
2222
|
}
|
|
@@ -2229,7 +2229,7 @@ static VALUE
|
|
|
2229
2229
|
cummax_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
2230
2230
|
{
|
|
2231
2231
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT32),
|
|
2232
|
-
INT2NUM(sizeof(
|
|
2232
|
+
INT2NUM(sizeof(ca_u_float32_t)));
|
|
2233
2233
|
CArray *co;
|
|
2234
2234
|
GetCArray(vout, co);
|
|
2235
2235
|
|
|
@@ -2238,6 +2238,13 @@ cummax_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
2238
2238
|
INIT inside the macro. */
|
|
2239
2239
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2240
2240
|
slab_axes[0] = (int8_t) axis;
|
|
2241
|
+
|
|
2242
|
+
boolean8_t *op_mask = NULL;
|
|
2243
|
+
if ( ca_has_mask(ca) ) {
|
|
2244
|
+
ca_create_mask(co);
|
|
2245
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2246
|
+
}
|
|
2247
|
+
|
|
2241
2248
|
ca_iter_state st_in, st_out;
|
|
2242
2249
|
int rc;
|
|
2243
2250
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2253,13 +2260,6 @@ cummax_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
2253
2260
|
rb_raise(rb_eRuntimeError,
|
|
2254
2261
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2255
2262
|
}
|
|
2256
|
-
|
|
2257
|
-
boolean8_t *op_mask = NULL;
|
|
2258
|
-
if ( ca_has_mask(ca) ) {
|
|
2259
|
-
ca_create_mask(co);
|
|
2260
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2261
|
-
}
|
|
2262
|
-
|
|
2263
2263
|
char *pi, *po;
|
|
2264
2264
|
boolean8_t *mi, *mo;
|
|
2265
2265
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2267,7 +2267,7 @@ cummax_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
2267
2267
|
boolean8_t *mo_fiber = op_mask
|
|
2268
2268
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2269
2269
|
: NULL;
|
|
2270
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2270
|
+
CA_SLAB_SCAN_T_GATED(ca_u_float32_t, ca_u_float32_t, st_in, pi, mi,
|
|
2271
2271
|
st_out, po, mo_fiber, NAN, acc = fmax(acc, v); r = acc);
|
|
2272
2272
|
ca_iter_state_sync_slab(&st_out);
|
|
2273
2273
|
}
|
|
@@ -2280,7 +2280,7 @@ static VALUE
|
|
|
2280
2280
|
cummax_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
2281
2281
|
{
|
|
2282
2282
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
2283
|
-
INT2NUM(sizeof(
|
|
2283
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
2284
2284
|
CArray *co;
|
|
2285
2285
|
GetCArray(vout, co);
|
|
2286
2286
|
|
|
@@ -2289,6 +2289,13 @@ cummax_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
2289
2289
|
INIT inside the macro. */
|
|
2290
2290
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2291
2291
|
slab_axes[0] = (int8_t) axis;
|
|
2292
|
+
|
|
2293
|
+
boolean8_t *op_mask = NULL;
|
|
2294
|
+
if ( ca_has_mask(ca) ) {
|
|
2295
|
+
ca_create_mask(co);
|
|
2296
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2297
|
+
}
|
|
2298
|
+
|
|
2292
2299
|
ca_iter_state st_in, st_out;
|
|
2293
2300
|
int rc;
|
|
2294
2301
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2304,13 +2311,6 @@ cummax_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
2304
2311
|
rb_raise(rb_eRuntimeError,
|
|
2305
2312
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2306
2313
|
}
|
|
2307
|
-
|
|
2308
|
-
boolean8_t *op_mask = NULL;
|
|
2309
|
-
if ( ca_has_mask(ca) ) {
|
|
2310
|
-
ca_create_mask(co);
|
|
2311
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2312
|
-
}
|
|
2313
|
-
|
|
2314
2314
|
char *pi, *po;
|
|
2315
2315
|
boolean8_t *mi, *mo;
|
|
2316
2316
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2318,7 +2318,7 @@ cummax_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
2318
2318
|
boolean8_t *mo_fiber = op_mask
|
|
2319
2319
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2320
2320
|
: NULL;
|
|
2321
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2321
|
+
CA_SLAB_SCAN_T_GATED(ca_u_float64_t, ca_u_float64_t, st_in, pi, mi,
|
|
2322
2322
|
st_out, po, mo_fiber, NAN, acc = fmax(acc, v); r = acc);
|
|
2323
2323
|
ca_iter_state_sync_slab(&st_out);
|
|
2324
2324
|
}
|
|
@@ -2331,7 +2331,7 @@ static VALUE
|
|
|
2331
2331
|
cummax_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
2332
2332
|
{
|
|
2333
2333
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT64),
|
|
2334
|
-
INT2NUM(sizeof(
|
|
2334
|
+
INT2NUM(sizeof(ca_u_uint64_t)));
|
|
2335
2335
|
CArray *co;
|
|
2336
2336
|
GetCArray(vout, co);
|
|
2337
2337
|
|
|
@@ -2340,6 +2340,13 @@ cummax_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
2340
2340
|
INIT inside the macro. */
|
|
2341
2341
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2342
2342
|
slab_axes[0] = (int8_t) axis;
|
|
2343
|
+
|
|
2344
|
+
boolean8_t *op_mask = NULL;
|
|
2345
|
+
if ( ca_has_mask(ca) ) {
|
|
2346
|
+
ca_create_mask(co);
|
|
2347
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2348
|
+
}
|
|
2349
|
+
|
|
2343
2350
|
ca_iter_state st_in, st_out;
|
|
2344
2351
|
int rc;
|
|
2345
2352
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2355,13 +2362,6 @@ cummax_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
2355
2362
|
rb_raise(rb_eRuntimeError,
|
|
2356
2363
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2357
2364
|
}
|
|
2358
|
-
|
|
2359
|
-
boolean8_t *op_mask = NULL;
|
|
2360
|
-
if ( ca_has_mask(ca) ) {
|
|
2361
|
-
ca_create_mask(co);
|
|
2362
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2363
|
-
}
|
|
2364
|
-
|
|
2365
2365
|
char *pi, *po;
|
|
2366
2366
|
boolean8_t *mi, *mo;
|
|
2367
2367
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2369,7 +2369,7 @@ cummax_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
2369
2369
|
boolean8_t *mo_fiber = op_mask
|
|
2370
2370
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2371
2371
|
: NULL;
|
|
2372
|
-
CA_SLAB_SCAN_T_GATED(boolean8_t,
|
|
2372
|
+
CA_SLAB_SCAN_T_GATED(boolean8_t, ca_u_uint64_t, st_in, pi, mi,
|
|
2373
2373
|
st_out, po, mo_fiber, 0, if ((uint64_t) v > acc) acc = v; r = acc);
|
|
2374
2374
|
ca_iter_state_sync_slab(&st_out);
|
|
2375
2375
|
}
|
|
@@ -2378,9 +2378,9 @@ cummax_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
2378
2378
|
return vout;
|
|
2379
2379
|
}
|
|
2380
2380
|
|
|
2381
|
-
/* The
|
|
2382
|
-
|
|
2383
|
-
finishes them however the body leaves. */
|
|
2381
|
+
/* The walks can raise part way (a Ruby call per cell in the object
|
|
2382
|
+
lane, an allocation in any lane). Their states live in the caller's
|
|
2383
|
+
frame, and ca_iter_ensure finishes them however the body leaves. */
|
|
2384
2384
|
typedef struct {
|
|
2385
2385
|
ca_iter_state states[2];
|
|
2386
2386
|
VALUE self;
|
|
@@ -2410,6 +2410,13 @@ cummax_ki_native_object_body (VALUE arg)
|
|
|
2410
2410
|
INIT inside the macro. */
|
|
2411
2411
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2412
2412
|
slab_axes[0] = (int8_t) axis;
|
|
2413
|
+
|
|
2414
|
+
boolean8_t *op_mask = NULL;
|
|
2415
|
+
if ( ca_has_mask(ca) ) {
|
|
2416
|
+
ca_create_mask(co);
|
|
2417
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2418
|
+
}
|
|
2419
|
+
|
|
2413
2420
|
int rc;
|
|
2414
2421
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
2415
2422
|
slab_axes, 1, 0);
|
|
@@ -2424,13 +2431,6 @@ cummax_ki_native_object_body (VALUE arg)
|
|
|
2424
2431
|
rb_raise(rb_eRuntimeError,
|
|
2425
2432
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2426
2433
|
}
|
|
2427
|
-
|
|
2428
|
-
boolean8_t *op_mask = NULL;
|
|
2429
|
-
if ( ca_has_mask(ca) ) {
|
|
2430
|
-
ca_create_mask(co);
|
|
2431
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2432
|
-
}
|
|
2433
|
-
|
|
2434
2434
|
char *pi, *po;
|
|
2435
2435
|
boolean8_t *mi, *mo;
|
|
2436
2436
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2456,7 +2456,7 @@ cummax_ki_native_object (VALUE self, CArray *ca, int axis)
|
|
|
2456
2456
|
fr.self = self;
|
|
2457
2457
|
fr.ca = ca;
|
|
2458
2458
|
fr.axis = axis;
|
|
2459
|
-
return
|
|
2459
|
+
return ca_iter_ensure_computing(ca, 2, fr.states, cummax_ki_native_object_body, (VALUE) &fr);
|
|
2460
2460
|
}
|
|
2461
2461
|
|
|
2462
2462
|
|
|
@@ -2592,6 +2592,13 @@ cummin_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
2592
2592
|
INIT inside the macro. */
|
|
2593
2593
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2594
2594
|
slab_axes[0] = (int8_t) axis;
|
|
2595
|
+
|
|
2596
|
+
boolean8_t *op_mask = NULL;
|
|
2597
|
+
if ( ca_has_mask(ca) ) {
|
|
2598
|
+
ca_create_mask(co);
|
|
2599
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2600
|
+
}
|
|
2601
|
+
|
|
2595
2602
|
ca_iter_state st_in, st_out;
|
|
2596
2603
|
int rc;
|
|
2597
2604
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2607,13 +2614,6 @@ cummin_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
2607
2614
|
rb_raise(rb_eRuntimeError,
|
|
2608
2615
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2609
2616
|
}
|
|
2610
|
-
|
|
2611
|
-
boolean8_t *op_mask = NULL;
|
|
2612
|
-
if ( ca_has_mask(ca) ) {
|
|
2613
|
-
ca_create_mask(co);
|
|
2614
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2615
|
-
}
|
|
2616
|
-
|
|
2617
2617
|
char *pi, *po;
|
|
2618
2618
|
boolean8_t *mi, *mo;
|
|
2619
2619
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2643,6 +2643,13 @@ cummin_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
2643
2643
|
INIT inside the macro. */
|
|
2644
2644
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2645
2645
|
slab_axes[0] = (int8_t) axis;
|
|
2646
|
+
|
|
2647
|
+
boolean8_t *op_mask = NULL;
|
|
2648
|
+
if ( ca_has_mask(ca) ) {
|
|
2649
|
+
ca_create_mask(co);
|
|
2650
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2651
|
+
}
|
|
2652
|
+
|
|
2646
2653
|
ca_iter_state st_in, st_out;
|
|
2647
2654
|
int rc;
|
|
2648
2655
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2658,13 +2665,6 @@ cummin_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
2658
2665
|
rb_raise(rb_eRuntimeError,
|
|
2659
2666
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2660
2667
|
}
|
|
2661
|
-
|
|
2662
|
-
boolean8_t *op_mask = NULL;
|
|
2663
|
-
if ( ca_has_mask(ca) ) {
|
|
2664
|
-
ca_create_mask(co);
|
|
2665
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2666
|
-
}
|
|
2667
|
-
|
|
2668
2668
|
char *pi, *po;
|
|
2669
2669
|
boolean8_t *mi, *mo;
|
|
2670
2670
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2685,7 +2685,7 @@ static VALUE
|
|
|
2685
2685
|
cummin_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
2686
2686
|
{
|
|
2687
2687
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT16),
|
|
2688
|
-
INT2NUM(sizeof(
|
|
2688
|
+
INT2NUM(sizeof(ca_u_int16_t)));
|
|
2689
2689
|
CArray *co;
|
|
2690
2690
|
GetCArray(vout, co);
|
|
2691
2691
|
|
|
@@ -2694,6 +2694,13 @@ cummin_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
2694
2694
|
INIT inside the macro. */
|
|
2695
2695
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2696
2696
|
slab_axes[0] = (int8_t) axis;
|
|
2697
|
+
|
|
2698
|
+
boolean8_t *op_mask = NULL;
|
|
2699
|
+
if ( ca_has_mask(ca) ) {
|
|
2700
|
+
ca_create_mask(co);
|
|
2701
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2702
|
+
}
|
|
2703
|
+
|
|
2697
2704
|
ca_iter_state st_in, st_out;
|
|
2698
2705
|
int rc;
|
|
2699
2706
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2709,13 +2716,6 @@ cummin_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
2709
2716
|
rb_raise(rb_eRuntimeError,
|
|
2710
2717
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2711
2718
|
}
|
|
2712
|
-
|
|
2713
|
-
boolean8_t *op_mask = NULL;
|
|
2714
|
-
if ( ca_has_mask(ca) ) {
|
|
2715
|
-
ca_create_mask(co);
|
|
2716
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2717
|
-
}
|
|
2718
|
-
|
|
2719
2719
|
char *pi, *po;
|
|
2720
2720
|
boolean8_t *mi, *mo;
|
|
2721
2721
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2723,7 +2723,7 @@ cummin_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
2723
2723
|
boolean8_t *mo_fiber = op_mask
|
|
2724
2724
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2725
2725
|
: NULL;
|
|
2726
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2726
|
+
CA_SLAB_SCAN_T_GATED(ca_u_int16_t, ca_u_int16_t, st_in, pi, mi,
|
|
2727
2727
|
st_out, po, mo_fiber, INT16_MAX, if (v < acc) acc = v; r = acc);
|
|
2728
2728
|
ca_iter_state_sync_slab(&st_out);
|
|
2729
2729
|
}
|
|
@@ -2736,7 +2736,7 @@ static VALUE
|
|
|
2736
2736
|
cummin_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
2737
2737
|
{
|
|
2738
2738
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT16),
|
|
2739
|
-
INT2NUM(sizeof(
|
|
2739
|
+
INT2NUM(sizeof(ca_u_uint16_t)));
|
|
2740
2740
|
CArray *co;
|
|
2741
2741
|
GetCArray(vout, co);
|
|
2742
2742
|
|
|
@@ -2745,6 +2745,13 @@ cummin_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
2745
2745
|
INIT inside the macro. */
|
|
2746
2746
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2747
2747
|
slab_axes[0] = (int8_t) axis;
|
|
2748
|
+
|
|
2749
|
+
boolean8_t *op_mask = NULL;
|
|
2750
|
+
if ( ca_has_mask(ca) ) {
|
|
2751
|
+
ca_create_mask(co);
|
|
2752
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2753
|
+
}
|
|
2754
|
+
|
|
2748
2755
|
ca_iter_state st_in, st_out;
|
|
2749
2756
|
int rc;
|
|
2750
2757
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2760,13 +2767,6 @@ cummin_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
2760
2767
|
rb_raise(rb_eRuntimeError,
|
|
2761
2768
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2762
2769
|
}
|
|
2763
|
-
|
|
2764
|
-
boolean8_t *op_mask = NULL;
|
|
2765
|
-
if ( ca_has_mask(ca) ) {
|
|
2766
|
-
ca_create_mask(co);
|
|
2767
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2768
|
-
}
|
|
2769
|
-
|
|
2770
2770
|
char *pi, *po;
|
|
2771
2771
|
boolean8_t *mi, *mo;
|
|
2772
2772
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2774,7 +2774,7 @@ cummin_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
2774
2774
|
boolean8_t *mo_fiber = op_mask
|
|
2775
2775
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2776
2776
|
: NULL;
|
|
2777
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2777
|
+
CA_SLAB_SCAN_T_GATED(ca_u_uint16_t, ca_u_uint16_t, st_in, pi, mi,
|
|
2778
2778
|
st_out, po, mo_fiber, UINT16_MAX, if (v < acc) acc = v; r = acc);
|
|
2779
2779
|
ca_iter_state_sync_slab(&st_out);
|
|
2780
2780
|
}
|
|
@@ -2787,7 +2787,7 @@ static VALUE
|
|
|
2787
2787
|
cummin_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
2788
2788
|
{
|
|
2789
2789
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT32),
|
|
2790
|
-
INT2NUM(sizeof(
|
|
2790
|
+
INT2NUM(sizeof(ca_u_int32_t)));
|
|
2791
2791
|
CArray *co;
|
|
2792
2792
|
GetCArray(vout, co);
|
|
2793
2793
|
|
|
@@ -2796,6 +2796,13 @@ cummin_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
2796
2796
|
INIT inside the macro. */
|
|
2797
2797
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2798
2798
|
slab_axes[0] = (int8_t) axis;
|
|
2799
|
+
|
|
2800
|
+
boolean8_t *op_mask = NULL;
|
|
2801
|
+
if ( ca_has_mask(ca) ) {
|
|
2802
|
+
ca_create_mask(co);
|
|
2803
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2804
|
+
}
|
|
2805
|
+
|
|
2799
2806
|
ca_iter_state st_in, st_out;
|
|
2800
2807
|
int rc;
|
|
2801
2808
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2811,13 +2818,6 @@ cummin_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
2811
2818
|
rb_raise(rb_eRuntimeError,
|
|
2812
2819
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2813
2820
|
}
|
|
2814
|
-
|
|
2815
|
-
boolean8_t *op_mask = NULL;
|
|
2816
|
-
if ( ca_has_mask(ca) ) {
|
|
2817
|
-
ca_create_mask(co);
|
|
2818
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2819
|
-
}
|
|
2820
|
-
|
|
2821
2821
|
char *pi, *po;
|
|
2822
2822
|
boolean8_t *mi, *mo;
|
|
2823
2823
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2825,7 +2825,7 @@ cummin_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
2825
2825
|
boolean8_t *mo_fiber = op_mask
|
|
2826
2826
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2827
2827
|
: NULL;
|
|
2828
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2828
|
+
CA_SLAB_SCAN_T_GATED(ca_u_int32_t, ca_u_int32_t, st_in, pi, mi,
|
|
2829
2829
|
st_out, po, mo_fiber, INT32_MAX, if (v < acc) acc = v; r = acc);
|
|
2830
2830
|
ca_iter_state_sync_slab(&st_out);
|
|
2831
2831
|
}
|
|
@@ -2838,7 +2838,7 @@ static VALUE
|
|
|
2838
2838
|
cummin_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
2839
2839
|
{
|
|
2840
2840
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT32),
|
|
2841
|
-
INT2NUM(sizeof(
|
|
2841
|
+
INT2NUM(sizeof(ca_u_uint32_t)));
|
|
2842
2842
|
CArray *co;
|
|
2843
2843
|
GetCArray(vout, co);
|
|
2844
2844
|
|
|
@@ -2847,6 +2847,13 @@ cummin_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
2847
2847
|
INIT inside the macro. */
|
|
2848
2848
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2849
2849
|
slab_axes[0] = (int8_t) axis;
|
|
2850
|
+
|
|
2851
|
+
boolean8_t *op_mask = NULL;
|
|
2852
|
+
if ( ca_has_mask(ca) ) {
|
|
2853
|
+
ca_create_mask(co);
|
|
2854
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2855
|
+
}
|
|
2856
|
+
|
|
2850
2857
|
ca_iter_state st_in, st_out;
|
|
2851
2858
|
int rc;
|
|
2852
2859
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2862,13 +2869,6 @@ cummin_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
2862
2869
|
rb_raise(rb_eRuntimeError,
|
|
2863
2870
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2864
2871
|
}
|
|
2865
|
-
|
|
2866
|
-
boolean8_t *op_mask = NULL;
|
|
2867
|
-
if ( ca_has_mask(ca) ) {
|
|
2868
|
-
ca_create_mask(co);
|
|
2869
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2870
|
-
}
|
|
2871
|
-
|
|
2872
2872
|
char *pi, *po;
|
|
2873
2873
|
boolean8_t *mi, *mo;
|
|
2874
2874
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2876,7 +2876,7 @@ cummin_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
2876
2876
|
boolean8_t *mo_fiber = op_mask
|
|
2877
2877
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2878
2878
|
: NULL;
|
|
2879
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2879
|
+
CA_SLAB_SCAN_T_GATED(ca_u_uint32_t, ca_u_uint32_t, st_in, pi, mi,
|
|
2880
2880
|
st_out, po, mo_fiber, UINT32_MAX, if (v < acc) acc = v; r = acc);
|
|
2881
2881
|
ca_iter_state_sync_slab(&st_out);
|
|
2882
2882
|
}
|
|
@@ -2889,7 +2889,7 @@ static VALUE
|
|
|
2889
2889
|
cummin_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
2890
2890
|
{
|
|
2891
2891
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
2892
|
-
INT2NUM(sizeof(
|
|
2892
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
2893
2893
|
CArray *co;
|
|
2894
2894
|
GetCArray(vout, co);
|
|
2895
2895
|
|
|
@@ -2898,6 +2898,13 @@ cummin_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
2898
2898
|
INIT inside the macro. */
|
|
2899
2899
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2900
2900
|
slab_axes[0] = (int8_t) axis;
|
|
2901
|
+
|
|
2902
|
+
boolean8_t *op_mask = NULL;
|
|
2903
|
+
if ( ca_has_mask(ca) ) {
|
|
2904
|
+
ca_create_mask(co);
|
|
2905
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2906
|
+
}
|
|
2907
|
+
|
|
2901
2908
|
ca_iter_state st_in, st_out;
|
|
2902
2909
|
int rc;
|
|
2903
2910
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2913,13 +2920,6 @@ cummin_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
2913
2920
|
rb_raise(rb_eRuntimeError,
|
|
2914
2921
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2915
2922
|
}
|
|
2916
|
-
|
|
2917
|
-
boolean8_t *op_mask = NULL;
|
|
2918
|
-
if ( ca_has_mask(ca) ) {
|
|
2919
|
-
ca_create_mask(co);
|
|
2920
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2921
|
-
}
|
|
2922
|
-
|
|
2923
2923
|
char *pi, *po;
|
|
2924
2924
|
boolean8_t *mi, *mo;
|
|
2925
2925
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2927,7 +2927,7 @@ cummin_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
2927
2927
|
boolean8_t *mo_fiber = op_mask
|
|
2928
2928
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2929
2929
|
: NULL;
|
|
2930
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2930
|
+
CA_SLAB_SCAN_T_GATED(ca_u_int64_t, ca_u_int64_t, st_in, pi, mi,
|
|
2931
2931
|
st_out, po, mo_fiber, INT64_MAX, if (v < acc) acc = v; r = acc);
|
|
2932
2932
|
ca_iter_state_sync_slab(&st_out);
|
|
2933
2933
|
}
|
|
@@ -2940,7 +2940,7 @@ static VALUE
|
|
|
2940
2940
|
cummin_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
2941
2941
|
{
|
|
2942
2942
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT64),
|
|
2943
|
-
INT2NUM(sizeof(
|
|
2943
|
+
INT2NUM(sizeof(ca_u_uint64_t)));
|
|
2944
2944
|
CArray *co;
|
|
2945
2945
|
GetCArray(vout, co);
|
|
2946
2946
|
|
|
@@ -2949,6 +2949,13 @@ cummin_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
2949
2949
|
INIT inside the macro. */
|
|
2950
2950
|
int8_t slab_axes[CA_RANK_MAX];
|
|
2951
2951
|
slab_axes[0] = (int8_t) axis;
|
|
2952
|
+
|
|
2953
|
+
boolean8_t *op_mask = NULL;
|
|
2954
|
+
if ( ca_has_mask(ca) ) {
|
|
2955
|
+
ca_create_mask(co);
|
|
2956
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2957
|
+
}
|
|
2958
|
+
|
|
2952
2959
|
ca_iter_state st_in, st_out;
|
|
2953
2960
|
int rc;
|
|
2954
2961
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -2964,13 +2971,6 @@ cummin_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
2964
2971
|
rb_raise(rb_eRuntimeError,
|
|
2965
2972
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
2966
2973
|
}
|
|
2967
|
-
|
|
2968
|
-
boolean8_t *op_mask = NULL;
|
|
2969
|
-
if ( ca_has_mask(ca) ) {
|
|
2970
|
-
ca_create_mask(co);
|
|
2971
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
2972
|
-
}
|
|
2973
|
-
|
|
2974
2974
|
char *pi, *po;
|
|
2975
2975
|
boolean8_t *mi, *mo;
|
|
2976
2976
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -2978,7 +2978,7 @@ cummin_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
2978
2978
|
boolean8_t *mo_fiber = op_mask
|
|
2979
2979
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
2980
2980
|
: NULL;
|
|
2981
|
-
CA_SLAB_SCAN_T_GATED(
|
|
2981
|
+
CA_SLAB_SCAN_T_GATED(ca_u_uint64_t, ca_u_uint64_t, st_in, pi, mi,
|
|
2982
2982
|
st_out, po, mo_fiber, UINT64_MAX, if (v < acc) acc = v; r = acc);
|
|
2983
2983
|
ca_iter_state_sync_slab(&st_out);
|
|
2984
2984
|
}
|
|
@@ -2991,7 +2991,7 @@ static VALUE
|
|
|
2991
2991
|
cummin_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
2992
2992
|
{
|
|
2993
2993
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT32),
|
|
2994
|
-
INT2NUM(sizeof(
|
|
2994
|
+
INT2NUM(sizeof(ca_u_float32_t)));
|
|
2995
2995
|
CArray *co;
|
|
2996
2996
|
GetCArray(vout, co);
|
|
2997
2997
|
|
|
@@ -3000,6 +3000,13 @@ cummin_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
3000
3000
|
INIT inside the macro. */
|
|
3001
3001
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3002
3002
|
slab_axes[0] = (int8_t) axis;
|
|
3003
|
+
|
|
3004
|
+
boolean8_t *op_mask = NULL;
|
|
3005
|
+
if ( ca_has_mask(ca) ) {
|
|
3006
|
+
ca_create_mask(co);
|
|
3007
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
3008
|
+
}
|
|
3009
|
+
|
|
3003
3010
|
ca_iter_state st_in, st_out;
|
|
3004
3011
|
int rc;
|
|
3005
3012
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3015,13 +3022,6 @@ cummin_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
3015
3022
|
rb_raise(rb_eRuntimeError,
|
|
3016
3023
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3017
3024
|
}
|
|
3018
|
-
|
|
3019
|
-
boolean8_t *op_mask = NULL;
|
|
3020
|
-
if ( ca_has_mask(ca) ) {
|
|
3021
|
-
ca_create_mask(co);
|
|
3022
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
3023
|
-
}
|
|
3024
|
-
|
|
3025
3025
|
char *pi, *po;
|
|
3026
3026
|
boolean8_t *mi, *mo;
|
|
3027
3027
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -3029,7 +3029,7 @@ cummin_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
3029
3029
|
boolean8_t *mo_fiber = op_mask
|
|
3030
3030
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
3031
3031
|
: NULL;
|
|
3032
|
-
CA_SLAB_SCAN_T_GATED(
|
|
3032
|
+
CA_SLAB_SCAN_T_GATED(ca_u_float32_t, ca_u_float32_t, st_in, pi, mi,
|
|
3033
3033
|
st_out, po, mo_fiber, NAN, acc = fmin(acc, v); r = acc);
|
|
3034
3034
|
ca_iter_state_sync_slab(&st_out);
|
|
3035
3035
|
}
|
|
@@ -3042,7 +3042,7 @@ static VALUE
|
|
|
3042
3042
|
cummin_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
3043
3043
|
{
|
|
3044
3044
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_FLOAT64),
|
|
3045
|
-
INT2NUM(sizeof(
|
|
3045
|
+
INT2NUM(sizeof(ca_u_float64_t)));
|
|
3046
3046
|
CArray *co;
|
|
3047
3047
|
GetCArray(vout, co);
|
|
3048
3048
|
|
|
@@ -3051,6 +3051,13 @@ cummin_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
3051
3051
|
INIT inside the macro. */
|
|
3052
3052
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3053
3053
|
slab_axes[0] = (int8_t) axis;
|
|
3054
|
+
|
|
3055
|
+
boolean8_t *op_mask = NULL;
|
|
3056
|
+
if ( ca_has_mask(ca) ) {
|
|
3057
|
+
ca_create_mask(co);
|
|
3058
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
3059
|
+
}
|
|
3060
|
+
|
|
3054
3061
|
ca_iter_state st_in, st_out;
|
|
3055
3062
|
int rc;
|
|
3056
3063
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3066,13 +3073,6 @@ cummin_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
3066
3073
|
rb_raise(rb_eRuntimeError,
|
|
3067
3074
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3068
3075
|
}
|
|
3069
|
-
|
|
3070
|
-
boolean8_t *op_mask = NULL;
|
|
3071
|
-
if ( ca_has_mask(ca) ) {
|
|
3072
|
-
ca_create_mask(co);
|
|
3073
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
3074
|
-
}
|
|
3075
|
-
|
|
3076
3076
|
char *pi, *po;
|
|
3077
3077
|
boolean8_t *mi, *mo;
|
|
3078
3078
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -3080,7 +3080,7 @@ cummin_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
3080
3080
|
boolean8_t *mo_fiber = op_mask
|
|
3081
3081
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
3082
3082
|
: NULL;
|
|
3083
|
-
CA_SLAB_SCAN_T_GATED(
|
|
3083
|
+
CA_SLAB_SCAN_T_GATED(ca_u_float64_t, ca_u_float64_t, st_in, pi, mi,
|
|
3084
3084
|
st_out, po, mo_fiber, NAN, acc = fmin(acc, v); r = acc);
|
|
3085
3085
|
ca_iter_state_sync_slab(&st_out);
|
|
3086
3086
|
}
|
|
@@ -3093,7 +3093,7 @@ static VALUE
|
|
|
3093
3093
|
cummin_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
3094
3094
|
{
|
|
3095
3095
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_UINT64),
|
|
3096
|
-
INT2NUM(sizeof(
|
|
3096
|
+
INT2NUM(sizeof(ca_u_uint64_t)));
|
|
3097
3097
|
CArray *co;
|
|
3098
3098
|
GetCArray(vout, co);
|
|
3099
3099
|
|
|
@@ -3102,6 +3102,13 @@ cummin_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
3102
3102
|
INIT inside the macro. */
|
|
3103
3103
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3104
3104
|
slab_axes[0] = (int8_t) axis;
|
|
3105
|
+
|
|
3106
|
+
boolean8_t *op_mask = NULL;
|
|
3107
|
+
if ( ca_has_mask(ca) ) {
|
|
3108
|
+
ca_create_mask(co);
|
|
3109
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
3110
|
+
}
|
|
3111
|
+
|
|
3105
3112
|
ca_iter_state st_in, st_out;
|
|
3106
3113
|
int rc;
|
|
3107
3114
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3117,13 +3124,6 @@ cummin_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
3117
3124
|
rb_raise(rb_eRuntimeError,
|
|
3118
3125
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3119
3126
|
}
|
|
3120
|
-
|
|
3121
|
-
boolean8_t *op_mask = NULL;
|
|
3122
|
-
if ( ca_has_mask(ca) ) {
|
|
3123
|
-
ca_create_mask(co);
|
|
3124
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
3125
|
-
}
|
|
3126
|
-
|
|
3127
3127
|
char *pi, *po;
|
|
3128
3128
|
boolean8_t *mi, *mo;
|
|
3129
3129
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -3131,7 +3131,7 @@ cummin_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
3131
3131
|
boolean8_t *mo_fiber = op_mask
|
|
3132
3132
|
? op_mask + (ca_size_t)(po - st_out.alias_ptr) / (ca_size_t) co->bytes
|
|
3133
3133
|
: NULL;
|
|
3134
|
-
CA_SLAB_SCAN_T_GATED(boolean8_t,
|
|
3134
|
+
CA_SLAB_SCAN_T_GATED(boolean8_t, ca_u_uint64_t, st_in, pi, mi,
|
|
3135
3135
|
st_out, po, mo_fiber, 1, if ((uint64_t) v < acc) acc = v; r = acc);
|
|
3136
3136
|
ca_iter_state_sync_slab(&st_out);
|
|
3137
3137
|
}
|
|
@@ -3140,9 +3140,9 @@ cummin_ki_native_bool (VALUE self, CArray *ca, int axis)
|
|
|
3140
3140
|
return vout;
|
|
3141
3141
|
}
|
|
3142
3142
|
|
|
3143
|
-
/* The
|
|
3144
|
-
|
|
3145
|
-
finishes them however the body leaves. */
|
|
3143
|
+
/* The walks can raise part way (a Ruby call per cell in the object
|
|
3144
|
+
lane, an allocation in any lane). Their states live in the caller's
|
|
3145
|
+
frame, and ca_iter_ensure finishes them however the body leaves. */
|
|
3146
3146
|
typedef struct {
|
|
3147
3147
|
ca_iter_state states[2];
|
|
3148
3148
|
VALUE self;
|
|
@@ -3172,6 +3172,13 @@ cummin_ki_native_object_body (VALUE arg)
|
|
|
3172
3172
|
INIT inside the macro. */
|
|
3173
3173
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3174
3174
|
slab_axes[0] = (int8_t) axis;
|
|
3175
|
+
|
|
3176
|
+
boolean8_t *op_mask = NULL;
|
|
3177
|
+
if ( ca_has_mask(ca) ) {
|
|
3178
|
+
ca_create_mask(co);
|
|
3179
|
+
op_mask = (boolean8_t *) co->mask->ptr;
|
|
3180
|
+
}
|
|
3181
|
+
|
|
3175
3182
|
int rc;
|
|
3176
3183
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
3177
3184
|
slab_axes, 1, 0);
|
|
@@ -3186,13 +3193,6 @@ cummin_ki_native_object_body (VALUE arg)
|
|
|
3186
3193
|
rb_raise(rb_eRuntimeError,
|
|
3187
3194
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3188
3195
|
}
|
|
3189
|
-
|
|
3190
|
-
boolean8_t *op_mask = NULL;
|
|
3191
|
-
if ( ca_has_mask(ca) ) {
|
|
3192
|
-
ca_create_mask(co);
|
|
3193
|
-
op_mask = (boolean8_t *) co->mask->ptr;
|
|
3194
|
-
}
|
|
3195
|
-
|
|
3196
3196
|
char *pi, *po;
|
|
3197
3197
|
boolean8_t *mi, *mo;
|
|
3198
3198
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -3218,7 +3218,7 @@ cummin_ki_native_object (VALUE self, CArray *ca, int axis)
|
|
|
3218
3218
|
fr.self = self;
|
|
3219
3219
|
fr.ca = ca;
|
|
3220
3220
|
fr.axis = axis;
|
|
3221
|
-
return
|
|
3221
|
+
return ca_iter_ensure_computing(ca, 2, fr.states, cummin_ki_native_object_body, (VALUE) &fr);
|
|
3222
3222
|
}
|
|
3223
3223
|
|
|
3224
3224
|
|
|
@@ -3345,7 +3345,7 @@ static VALUE
|
|
|
3345
3345
|
cumcount_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
3346
3346
|
{
|
|
3347
3347
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
3348
|
-
INT2NUM(sizeof(
|
|
3348
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
3349
3349
|
CArray *co;
|
|
3350
3350
|
GetCArray(vout, co);
|
|
3351
3351
|
|
|
@@ -3354,6 +3354,7 @@ cumcount_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
3354
3354
|
INIT inside the macro. */
|
|
3355
3355
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3356
3356
|
slab_axes[0] = (int8_t) axis;
|
|
3357
|
+
|
|
3357
3358
|
ca_iter_state st_in, st_out;
|
|
3358
3359
|
int rc;
|
|
3359
3360
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3369,12 +3370,11 @@ cumcount_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
3369
3370
|
rb_raise(rb_eRuntimeError,
|
|
3370
3371
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3371
3372
|
}
|
|
3372
|
-
|
|
3373
3373
|
char *pi, *po;
|
|
3374
3374
|
boolean8_t *mi, *mo;
|
|
3375
3375
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3376
3376
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3377
|
-
CA_SLAB_SCAN_T(int8_t,
|
|
3377
|
+
CA_SLAB_SCAN_T(int8_t, ca_u_int64_t, st_in, pi, mi,
|
|
3378
3378
|
st_out, po, 0, (void) v; r = ++acc);
|
|
3379
3379
|
ca_iter_state_sync_slab(&st_out);
|
|
3380
3380
|
}
|
|
@@ -3387,7 +3387,7 @@ static VALUE
|
|
|
3387
3387
|
cumcount_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
3388
3388
|
{
|
|
3389
3389
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
3390
|
-
INT2NUM(sizeof(
|
|
3390
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
3391
3391
|
CArray *co;
|
|
3392
3392
|
GetCArray(vout, co);
|
|
3393
3393
|
|
|
@@ -3396,6 +3396,7 @@ cumcount_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
3396
3396
|
INIT inside the macro. */
|
|
3397
3397
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3398
3398
|
slab_axes[0] = (int8_t) axis;
|
|
3399
|
+
|
|
3399
3400
|
ca_iter_state st_in, st_out;
|
|
3400
3401
|
int rc;
|
|
3401
3402
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3411,12 +3412,11 @@ cumcount_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
3411
3412
|
rb_raise(rb_eRuntimeError,
|
|
3412
3413
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3413
3414
|
}
|
|
3414
|
-
|
|
3415
3415
|
char *pi, *po;
|
|
3416
3416
|
boolean8_t *mi, *mo;
|
|
3417
3417
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3418
3418
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3419
|
-
CA_SLAB_SCAN_T(uint8_t,
|
|
3419
|
+
CA_SLAB_SCAN_T(uint8_t, ca_u_int64_t, st_in, pi, mi,
|
|
3420
3420
|
st_out, po, 0, (void) v; r = ++acc);
|
|
3421
3421
|
ca_iter_state_sync_slab(&st_out);
|
|
3422
3422
|
}
|
|
@@ -3429,7 +3429,7 @@ static VALUE
|
|
|
3429
3429
|
cumcount_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
3430
3430
|
{
|
|
3431
3431
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
3432
|
-
INT2NUM(sizeof(
|
|
3432
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
3433
3433
|
CArray *co;
|
|
3434
3434
|
GetCArray(vout, co);
|
|
3435
3435
|
|
|
@@ -3438,6 +3438,7 @@ cumcount_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
3438
3438
|
INIT inside the macro. */
|
|
3439
3439
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3440
3440
|
slab_axes[0] = (int8_t) axis;
|
|
3441
|
+
|
|
3441
3442
|
ca_iter_state st_in, st_out;
|
|
3442
3443
|
int rc;
|
|
3443
3444
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3453,12 +3454,11 @@ cumcount_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
3453
3454
|
rb_raise(rb_eRuntimeError,
|
|
3454
3455
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3455
3456
|
}
|
|
3456
|
-
|
|
3457
3457
|
char *pi, *po;
|
|
3458
3458
|
boolean8_t *mi, *mo;
|
|
3459
3459
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3460
3460
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3461
|
-
CA_SLAB_SCAN_T(
|
|
3461
|
+
CA_SLAB_SCAN_T(ca_u_int16_t, ca_u_int64_t, st_in, pi, mi,
|
|
3462
3462
|
st_out, po, 0, (void) v; r = ++acc);
|
|
3463
3463
|
ca_iter_state_sync_slab(&st_out);
|
|
3464
3464
|
}
|
|
@@ -3471,7 +3471,7 @@ static VALUE
|
|
|
3471
3471
|
cumcount_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
3472
3472
|
{
|
|
3473
3473
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
3474
|
-
INT2NUM(sizeof(
|
|
3474
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
3475
3475
|
CArray *co;
|
|
3476
3476
|
GetCArray(vout, co);
|
|
3477
3477
|
|
|
@@ -3480,6 +3480,7 @@ cumcount_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
3480
3480
|
INIT inside the macro. */
|
|
3481
3481
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3482
3482
|
slab_axes[0] = (int8_t) axis;
|
|
3483
|
+
|
|
3483
3484
|
ca_iter_state st_in, st_out;
|
|
3484
3485
|
int rc;
|
|
3485
3486
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3495,12 +3496,11 @@ cumcount_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
3495
3496
|
rb_raise(rb_eRuntimeError,
|
|
3496
3497
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3497
3498
|
}
|
|
3498
|
-
|
|
3499
3499
|
char *pi, *po;
|
|
3500
3500
|
boolean8_t *mi, *mo;
|
|
3501
3501
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3502
3502
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3503
|
-
CA_SLAB_SCAN_T(
|
|
3503
|
+
CA_SLAB_SCAN_T(ca_u_uint16_t, ca_u_int64_t, st_in, pi, mi,
|
|
3504
3504
|
st_out, po, 0, (void) v; r = ++acc);
|
|
3505
3505
|
ca_iter_state_sync_slab(&st_out);
|
|
3506
3506
|
}
|
|
@@ -3513,7 +3513,7 @@ static VALUE
|
|
|
3513
3513
|
cumcount_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
3514
3514
|
{
|
|
3515
3515
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
3516
|
-
INT2NUM(sizeof(
|
|
3516
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
3517
3517
|
CArray *co;
|
|
3518
3518
|
GetCArray(vout, co);
|
|
3519
3519
|
|
|
@@ -3522,6 +3522,7 @@ cumcount_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
3522
3522
|
INIT inside the macro. */
|
|
3523
3523
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3524
3524
|
slab_axes[0] = (int8_t) axis;
|
|
3525
|
+
|
|
3525
3526
|
ca_iter_state st_in, st_out;
|
|
3526
3527
|
int rc;
|
|
3527
3528
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3537,12 +3538,11 @@ cumcount_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
3537
3538
|
rb_raise(rb_eRuntimeError,
|
|
3538
3539
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3539
3540
|
}
|
|
3540
|
-
|
|
3541
3541
|
char *pi, *po;
|
|
3542
3542
|
boolean8_t *mi, *mo;
|
|
3543
3543
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3544
3544
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3545
|
-
CA_SLAB_SCAN_T(
|
|
3545
|
+
CA_SLAB_SCAN_T(ca_u_int32_t, ca_u_int64_t, st_in, pi, mi,
|
|
3546
3546
|
st_out, po, 0, (void) v; r = ++acc);
|
|
3547
3547
|
ca_iter_state_sync_slab(&st_out);
|
|
3548
3548
|
}
|
|
@@ -3555,7 +3555,7 @@ static VALUE
|
|
|
3555
3555
|
cumcount_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
3556
3556
|
{
|
|
3557
3557
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
3558
|
-
INT2NUM(sizeof(
|
|
3558
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
3559
3559
|
CArray *co;
|
|
3560
3560
|
GetCArray(vout, co);
|
|
3561
3561
|
|
|
@@ -3564,6 +3564,7 @@ cumcount_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
3564
3564
|
INIT inside the macro. */
|
|
3565
3565
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3566
3566
|
slab_axes[0] = (int8_t) axis;
|
|
3567
|
+
|
|
3567
3568
|
ca_iter_state st_in, st_out;
|
|
3568
3569
|
int rc;
|
|
3569
3570
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3579,12 +3580,11 @@ cumcount_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
3579
3580
|
rb_raise(rb_eRuntimeError,
|
|
3580
3581
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3581
3582
|
}
|
|
3582
|
-
|
|
3583
3583
|
char *pi, *po;
|
|
3584
3584
|
boolean8_t *mi, *mo;
|
|
3585
3585
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3586
3586
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3587
|
-
CA_SLAB_SCAN_T(
|
|
3587
|
+
CA_SLAB_SCAN_T(ca_u_uint32_t, ca_u_int64_t, st_in, pi, mi,
|
|
3588
3588
|
st_out, po, 0, (void) v; r = ++acc);
|
|
3589
3589
|
ca_iter_state_sync_slab(&st_out);
|
|
3590
3590
|
}
|
|
@@ -3597,7 +3597,7 @@ static VALUE
|
|
|
3597
3597
|
cumcount_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
3598
3598
|
{
|
|
3599
3599
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
3600
|
-
INT2NUM(sizeof(
|
|
3600
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
3601
3601
|
CArray *co;
|
|
3602
3602
|
GetCArray(vout, co);
|
|
3603
3603
|
|
|
@@ -3606,6 +3606,7 @@ cumcount_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
3606
3606
|
INIT inside the macro. */
|
|
3607
3607
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3608
3608
|
slab_axes[0] = (int8_t) axis;
|
|
3609
|
+
|
|
3609
3610
|
ca_iter_state st_in, st_out;
|
|
3610
3611
|
int rc;
|
|
3611
3612
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3621,12 +3622,11 @@ cumcount_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
3621
3622
|
rb_raise(rb_eRuntimeError,
|
|
3622
3623
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3623
3624
|
}
|
|
3624
|
-
|
|
3625
3625
|
char *pi, *po;
|
|
3626
3626
|
boolean8_t *mi, *mo;
|
|
3627
3627
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3628
3628
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3629
|
-
CA_SLAB_SCAN_T(
|
|
3629
|
+
CA_SLAB_SCAN_T(ca_u_int64_t, ca_u_int64_t, st_in, pi, mi,
|
|
3630
3630
|
st_out, po, 0, (void) v; r = ++acc);
|
|
3631
3631
|
ca_iter_state_sync_slab(&st_out);
|
|
3632
3632
|
}
|
|
@@ -3639,7 +3639,7 @@ static VALUE
|
|
|
3639
3639
|
cumcount_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
3640
3640
|
{
|
|
3641
3641
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
3642
|
-
INT2NUM(sizeof(
|
|
3642
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
3643
3643
|
CArray *co;
|
|
3644
3644
|
GetCArray(vout, co);
|
|
3645
3645
|
|
|
@@ -3648,6 +3648,7 @@ cumcount_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
3648
3648
|
INIT inside the macro. */
|
|
3649
3649
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3650
3650
|
slab_axes[0] = (int8_t) axis;
|
|
3651
|
+
|
|
3651
3652
|
ca_iter_state st_in, st_out;
|
|
3652
3653
|
int rc;
|
|
3653
3654
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3663,12 +3664,11 @@ cumcount_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
3663
3664
|
rb_raise(rb_eRuntimeError,
|
|
3664
3665
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3665
3666
|
}
|
|
3666
|
-
|
|
3667
3667
|
char *pi, *po;
|
|
3668
3668
|
boolean8_t *mi, *mo;
|
|
3669
3669
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3670
3670
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3671
|
-
CA_SLAB_SCAN_T(
|
|
3671
|
+
CA_SLAB_SCAN_T(ca_u_uint64_t, ca_u_int64_t, st_in, pi, mi,
|
|
3672
3672
|
st_out, po, 0, (void) v; r = ++acc);
|
|
3673
3673
|
ca_iter_state_sync_slab(&st_out);
|
|
3674
3674
|
}
|
|
@@ -3681,7 +3681,7 @@ static VALUE
|
|
|
3681
3681
|
cumcount_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
3682
3682
|
{
|
|
3683
3683
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
3684
|
-
INT2NUM(sizeof(
|
|
3684
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
3685
3685
|
CArray *co;
|
|
3686
3686
|
GetCArray(vout, co);
|
|
3687
3687
|
|
|
@@ -3690,6 +3690,7 @@ cumcount_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
3690
3690
|
INIT inside the macro. */
|
|
3691
3691
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3692
3692
|
slab_axes[0] = (int8_t) axis;
|
|
3693
|
+
|
|
3693
3694
|
ca_iter_state st_in, st_out;
|
|
3694
3695
|
int rc;
|
|
3695
3696
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3705,12 +3706,11 @@ cumcount_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
3705
3706
|
rb_raise(rb_eRuntimeError,
|
|
3706
3707
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3707
3708
|
}
|
|
3708
|
-
|
|
3709
3709
|
char *pi, *po;
|
|
3710
3710
|
boolean8_t *mi, *mo;
|
|
3711
3711
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3712
3712
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3713
|
-
CA_SLAB_SCAN_T(
|
|
3713
|
+
CA_SLAB_SCAN_T(ca_u_float32_t, ca_u_int64_t, st_in, pi, mi,
|
|
3714
3714
|
st_out, po, 0, (void) v; r = ++acc);
|
|
3715
3715
|
ca_iter_state_sync_slab(&st_out);
|
|
3716
3716
|
}
|
|
@@ -3723,7 +3723,7 @@ static VALUE
|
|
|
3723
3723
|
cumcount_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
3724
3724
|
{
|
|
3725
3725
|
VALUE vout = rb_ca_template_with_type(self, INT2NUM(CA_INT64),
|
|
3726
|
-
INT2NUM(sizeof(
|
|
3726
|
+
INT2NUM(sizeof(ca_u_int64_t)));
|
|
3727
3727
|
CArray *co;
|
|
3728
3728
|
GetCArray(vout, co);
|
|
3729
3729
|
|
|
@@ -3732,6 +3732,7 @@ cumcount_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
3732
3732
|
INIT inside the macro. */
|
|
3733
3733
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3734
3734
|
slab_axes[0] = (int8_t) axis;
|
|
3735
|
+
|
|
3735
3736
|
ca_iter_state st_in, st_out;
|
|
3736
3737
|
int rc;
|
|
3737
3738
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3747,12 +3748,11 @@ cumcount_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
3747
3748
|
rb_raise(rb_eRuntimeError,
|
|
3748
3749
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3749
3750
|
}
|
|
3750
|
-
|
|
3751
3751
|
char *pi, *po;
|
|
3752
3752
|
boolean8_t *mi, *mo;
|
|
3753
3753
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3754
3754
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3755
|
-
CA_SLAB_SCAN_T(
|
|
3755
|
+
CA_SLAB_SCAN_T(ca_u_float64_t, ca_u_int64_t, st_in, pi, mi,
|
|
3756
3756
|
st_out, po, 0, (void) v; r = ++acc);
|
|
3757
3757
|
ca_iter_state_sync_slab(&st_out);
|
|
3758
3758
|
}
|
|
@@ -3834,6 +3834,7 @@ uniq_scan_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
3834
3834
|
INIT inside the macro. */
|
|
3835
3835
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3836
3836
|
slab_axes[0] = (int8_t) axis;
|
|
3837
|
+
|
|
3837
3838
|
ca_iter_state st_in, st_out;
|
|
3838
3839
|
int rc;
|
|
3839
3840
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3849,7 +3850,6 @@ uniq_scan_ki_native_i8 (VALUE self, CArray *ca, int axis)
|
|
|
3849
3850
|
rb_raise(rb_eRuntimeError,
|
|
3850
3851
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3851
3852
|
}
|
|
3852
|
-
|
|
3853
3853
|
char *pi, *po;
|
|
3854
3854
|
boolean8_t *mi, *mo;
|
|
3855
3855
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -3876,6 +3876,7 @@ uniq_scan_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
3876
3876
|
INIT inside the macro. */
|
|
3877
3877
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3878
3878
|
slab_axes[0] = (int8_t) axis;
|
|
3879
|
+
|
|
3879
3880
|
ca_iter_state st_in, st_out;
|
|
3880
3881
|
int rc;
|
|
3881
3882
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3891,7 +3892,6 @@ uniq_scan_ki_native_u8 (VALUE self, CArray *ca, int axis)
|
|
|
3891
3892
|
rb_raise(rb_eRuntimeError,
|
|
3892
3893
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3893
3894
|
}
|
|
3894
|
-
|
|
3895
3895
|
char *pi, *po;
|
|
3896
3896
|
boolean8_t *mi, *mo;
|
|
3897
3897
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
@@ -3918,6 +3918,7 @@ uniq_scan_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
3918
3918
|
INIT inside the macro. */
|
|
3919
3919
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3920
3920
|
slab_axes[0] = (int8_t) axis;
|
|
3921
|
+
|
|
3921
3922
|
ca_iter_state st_in, st_out;
|
|
3922
3923
|
int rc;
|
|
3923
3924
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3933,12 +3934,11 @@ uniq_scan_ki_native_i16 (VALUE self, CArray *ca, int axis)
|
|
|
3933
3934
|
rb_raise(rb_eRuntimeError,
|
|
3934
3935
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3935
3936
|
}
|
|
3936
|
-
|
|
3937
3937
|
char *pi, *po;
|
|
3938
3938
|
boolean8_t *mi, *mo;
|
|
3939
3939
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3940
3940
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3941
|
-
CA_SLAB_SCAN_TA(
|
|
3941
|
+
CA_SLAB_SCAN_TA(ca_u_int16_t, boolean8_t, ca_u_int16_t, st_in, pi, mi,
|
|
3942
3942
|
st_out, po, 0, if (first) { acc = v; r = 0; } else if (v == acc) { r = 1; } else { acc = v; r = 0; });
|
|
3943
3943
|
ca_iter_state_sync_slab(&st_out);
|
|
3944
3944
|
}
|
|
@@ -3960,6 +3960,7 @@ uniq_scan_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
3960
3960
|
INIT inside the macro. */
|
|
3961
3961
|
int8_t slab_axes[CA_RANK_MAX];
|
|
3962
3962
|
slab_axes[0] = (int8_t) axis;
|
|
3963
|
+
|
|
3963
3964
|
ca_iter_state st_in, st_out;
|
|
3964
3965
|
int rc;
|
|
3965
3966
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -3975,12 +3976,11 @@ uniq_scan_ki_native_u16 (VALUE self, CArray *ca, int axis)
|
|
|
3975
3976
|
rb_raise(rb_eRuntimeError,
|
|
3976
3977
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
3977
3978
|
}
|
|
3978
|
-
|
|
3979
3979
|
char *pi, *po;
|
|
3980
3980
|
boolean8_t *mi, *mo;
|
|
3981
3981
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
3982
3982
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
3983
|
-
CA_SLAB_SCAN_TA(
|
|
3983
|
+
CA_SLAB_SCAN_TA(ca_u_uint16_t, boolean8_t, ca_u_uint16_t, st_in, pi, mi,
|
|
3984
3984
|
st_out, po, 0, if (first) { acc = v; r = 0; } else if (v == acc) { r = 1; } else { acc = v; r = 0; });
|
|
3985
3985
|
ca_iter_state_sync_slab(&st_out);
|
|
3986
3986
|
}
|
|
@@ -4002,6 +4002,7 @@ uniq_scan_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
4002
4002
|
INIT inside the macro. */
|
|
4003
4003
|
int8_t slab_axes[CA_RANK_MAX];
|
|
4004
4004
|
slab_axes[0] = (int8_t) axis;
|
|
4005
|
+
|
|
4005
4006
|
ca_iter_state st_in, st_out;
|
|
4006
4007
|
int rc;
|
|
4007
4008
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -4017,12 +4018,11 @@ uniq_scan_ki_native_i32 (VALUE self, CArray *ca, int axis)
|
|
|
4017
4018
|
rb_raise(rb_eRuntimeError,
|
|
4018
4019
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
4019
4020
|
}
|
|
4020
|
-
|
|
4021
4021
|
char *pi, *po;
|
|
4022
4022
|
boolean8_t *mi, *mo;
|
|
4023
4023
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
4024
4024
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
4025
|
-
CA_SLAB_SCAN_TA(
|
|
4025
|
+
CA_SLAB_SCAN_TA(ca_u_int32_t, boolean8_t, ca_u_int32_t, st_in, pi, mi,
|
|
4026
4026
|
st_out, po, 0, if (first) { acc = v; r = 0; } else if (v == acc) { r = 1; } else { acc = v; r = 0; });
|
|
4027
4027
|
ca_iter_state_sync_slab(&st_out);
|
|
4028
4028
|
}
|
|
@@ -4044,6 +4044,7 @@ uniq_scan_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
4044
4044
|
INIT inside the macro. */
|
|
4045
4045
|
int8_t slab_axes[CA_RANK_MAX];
|
|
4046
4046
|
slab_axes[0] = (int8_t) axis;
|
|
4047
|
+
|
|
4047
4048
|
ca_iter_state st_in, st_out;
|
|
4048
4049
|
int rc;
|
|
4049
4050
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -4059,12 +4060,11 @@ uniq_scan_ki_native_u32 (VALUE self, CArray *ca, int axis)
|
|
|
4059
4060
|
rb_raise(rb_eRuntimeError,
|
|
4060
4061
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
4061
4062
|
}
|
|
4062
|
-
|
|
4063
4063
|
char *pi, *po;
|
|
4064
4064
|
boolean8_t *mi, *mo;
|
|
4065
4065
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
4066
4066
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
4067
|
-
CA_SLAB_SCAN_TA(
|
|
4067
|
+
CA_SLAB_SCAN_TA(ca_u_uint32_t, boolean8_t, ca_u_uint32_t, st_in, pi, mi,
|
|
4068
4068
|
st_out, po, 0, if (first) { acc = v; r = 0; } else if (v == acc) { r = 1; } else { acc = v; r = 0; });
|
|
4069
4069
|
ca_iter_state_sync_slab(&st_out);
|
|
4070
4070
|
}
|
|
@@ -4086,6 +4086,7 @@ uniq_scan_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
4086
4086
|
INIT inside the macro. */
|
|
4087
4087
|
int8_t slab_axes[CA_RANK_MAX];
|
|
4088
4088
|
slab_axes[0] = (int8_t) axis;
|
|
4089
|
+
|
|
4089
4090
|
ca_iter_state st_in, st_out;
|
|
4090
4091
|
int rc;
|
|
4091
4092
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -4101,12 +4102,11 @@ uniq_scan_ki_native_i64 (VALUE self, CArray *ca, int axis)
|
|
|
4101
4102
|
rb_raise(rb_eRuntimeError,
|
|
4102
4103
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
4103
4104
|
}
|
|
4104
|
-
|
|
4105
4105
|
char *pi, *po;
|
|
4106
4106
|
boolean8_t *mi, *mo;
|
|
4107
4107
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
4108
4108
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
4109
|
-
CA_SLAB_SCAN_TA(
|
|
4109
|
+
CA_SLAB_SCAN_TA(ca_u_int64_t, boolean8_t, ca_u_int64_t, st_in, pi, mi,
|
|
4110
4110
|
st_out, po, 0, if (first) { acc = v; r = 0; } else if (v == acc) { r = 1; } else { acc = v; r = 0; });
|
|
4111
4111
|
ca_iter_state_sync_slab(&st_out);
|
|
4112
4112
|
}
|
|
@@ -4128,6 +4128,7 @@ uniq_scan_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
4128
4128
|
INIT inside the macro. */
|
|
4129
4129
|
int8_t slab_axes[CA_RANK_MAX];
|
|
4130
4130
|
slab_axes[0] = (int8_t) axis;
|
|
4131
|
+
|
|
4131
4132
|
ca_iter_state st_in, st_out;
|
|
4132
4133
|
int rc;
|
|
4133
4134
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -4143,12 +4144,11 @@ uniq_scan_ki_native_u64 (VALUE self, CArray *ca, int axis)
|
|
|
4143
4144
|
rb_raise(rb_eRuntimeError,
|
|
4144
4145
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
4145
4146
|
}
|
|
4146
|
-
|
|
4147
4147
|
char *pi, *po;
|
|
4148
4148
|
boolean8_t *mi, *mo;
|
|
4149
4149
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
4150
4150
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
4151
|
-
CA_SLAB_SCAN_TA(
|
|
4151
|
+
CA_SLAB_SCAN_TA(ca_u_uint64_t, boolean8_t, ca_u_uint64_t, st_in, pi, mi,
|
|
4152
4152
|
st_out, po, 0, if (first) { acc = v; r = 0; } else if (v == acc) { r = 1; } else { acc = v; r = 0; });
|
|
4153
4153
|
ca_iter_state_sync_slab(&st_out);
|
|
4154
4154
|
}
|
|
@@ -4170,6 +4170,7 @@ uniq_scan_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
4170
4170
|
INIT inside the macro. */
|
|
4171
4171
|
int8_t slab_axes[CA_RANK_MAX];
|
|
4172
4172
|
slab_axes[0] = (int8_t) axis;
|
|
4173
|
+
|
|
4173
4174
|
ca_iter_state st_in, st_out;
|
|
4174
4175
|
int rc;
|
|
4175
4176
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -4185,12 +4186,11 @@ uniq_scan_ki_native_f32 (VALUE self, CArray *ca, int axis)
|
|
|
4185
4186
|
rb_raise(rb_eRuntimeError,
|
|
4186
4187
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
4187
4188
|
}
|
|
4188
|
-
|
|
4189
4189
|
char *pi, *po;
|
|
4190
4190
|
boolean8_t *mi, *mo;
|
|
4191
4191
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
4192
4192
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
4193
|
-
CA_SLAB_SCAN_TA(
|
|
4193
|
+
CA_SLAB_SCAN_TA(ca_u_float32_t, boolean8_t, ca_u_float32_t, st_in, pi, mi,
|
|
4194
4194
|
st_out, po, 0, if (first) { acc = v; r = 0; } else if (v == acc) { r = 1; } else { acc = v; r = 0; });
|
|
4195
4195
|
ca_iter_state_sync_slab(&st_out);
|
|
4196
4196
|
}
|
|
@@ -4212,6 +4212,7 @@ uniq_scan_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
4212
4212
|
INIT inside the macro. */
|
|
4213
4213
|
int8_t slab_axes[CA_RANK_MAX];
|
|
4214
4214
|
slab_axes[0] = (int8_t) axis;
|
|
4215
|
+
|
|
4215
4216
|
ca_iter_state st_in, st_out;
|
|
4216
4217
|
int rc;
|
|
4217
4218
|
rc = ca_iter_state_init_l2(&st_in, ca, CA_SLAB_AXES,
|
|
@@ -4227,12 +4228,11 @@ uniq_scan_ki_native_f64 (VALUE self, CArray *ca, int axis)
|
|
|
4227
4228
|
rb_raise(rb_eRuntimeError,
|
|
4228
4229
|
"%s: output init failed rc=%d", ca_calling_method_name(), rc);
|
|
4229
4230
|
}
|
|
4230
|
-
|
|
4231
4231
|
char *pi, *po;
|
|
4232
4232
|
boolean8_t *mi, *mo;
|
|
4233
4233
|
while ( ca_iter_state_next_slab_axes(&st_in, &pi, &mi) &&
|
|
4234
4234
|
ca_iter_state_next_slab_axes(&st_out, &po, &mo) ) {
|
|
4235
|
-
CA_SLAB_SCAN_TA(
|
|
4235
|
+
CA_SLAB_SCAN_TA(ca_u_float64_t, boolean8_t, ca_u_float64_t, st_in, pi, mi,
|
|
4236
4236
|
st_out, po, 0, if (first) { acc = v; r = 0; } else if (v == acc) { r = 1; } else { acc = v; r = 0; });
|
|
4237
4237
|
ca_iter_state_sync_slab(&st_out);
|
|
4238
4238
|
}
|