carray 3.0.4 → 3.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +205 -0
- data/carray.gemspec +1 -1
- data/ext/ca_array_pool.c +25 -1
- data/ext/ca_axis_dispatch.c +13 -20
- data/ext/ca_categorical_iterator.c +27 -20
- data/ext/ca_compare.c +4 -4
- data/ext/ca_composite_dispatch.c +9 -9
- data/ext/ca_kernel_iterator.c +6 -6
- data/ext/ca_kernel_iterator.h +112 -83
- data/ext/ca_obj_array.c +69 -19
- data/ext/ca_obj_bincmp.c +1 -0
- data/ext/ca_obj_binop.c +1 -0
- data/ext/ca_obj_bitarray.c +5 -1
- data/ext/ca_obj_bitfield.c +58 -43
- data/ext/ca_obj_byte_swap.c +2 -1
- data/ext/ca_obj_const_string.c +15 -3
- data/ext/ca_obj_face.c +42 -1
- data/ext/ca_obj_field.c +13 -3
- data/ext/ca_obj_grid.c +52 -5
- data/ext/ca_obj_monop.c +46 -10
- data/ext/ca_obj_object.c +64 -12
- data/ext/ca_obj_record.c +3 -0
- data/ext/ca_obj_reduce.c +4 -0
- data/ext/ca_obj_refer.c +18 -9
- data/ext/ca_obj_roll.c +26 -6
- data/ext/ca_obj_select.c +34 -5
- data/ext/ca_obj_shift.c +31 -7
- data/ext/ca_obj_stack.c +1 -0
- data/ext/ca_obj_stride.c +28 -19
- data/ext/ca_obj_string.c +11 -2
- data/ext/ca_obj_tile.c +27 -7
- data/ext/ca_obj_transpose.c +8 -4
- data/ext/ca_obj_triop.c +3 -0
- data/ext/ca_obj_window.c +79 -50
- data/ext/ca_op_ipower.c +4 -4
- data/ext/ca_sort_kernels.h +6 -3
- data/ext/carray.h +33 -0
- data/ext/carray_access.c +16 -3
- data/ext/carray_attribute.c +24 -0
- data/ext/carray_cast.c +243 -82
- data/ext/carray_cast_func.rb +56 -26
- data/ext/carray_conversion.c +2 -2
- data/ext/carray_core.c +3 -0
- data/ext/carray_count.c +6 -0
- data/ext/carray_element.c +9 -4
- data/ext/carray_factorize.c +20 -20
- data/ext/carray_generate.c +8 -2
- data/ext/carray_histogram.c +1 -1
- data/ext/carray_index_classifier.c +4 -4
- data/ext/carray_internal.h +12 -0
- data/ext/carray_kernels_bincmp.c +168 -168
- data/ext/carray_kernels_binop.c +900 -900
- data/ext/carray_kernels_init.c +4 -4
- data/ext/carray_kernels_moncmp.c +96 -96
- data/ext/carray_kernels_monop.c +1984 -1984
- data/ext/carray_kernels_reduce_aggregate.c +1733 -1733
- data/ext/carray_kernels_reduce_cumulative.c +642 -642
- data/ext/carray_kernels_reduce_extreme.c +1150 -1150
- data/ext/carray_kernels_reduce_variance.c +258 -258
- data/ext/carray_kernels_scan.c +128 -128
- data/ext/carray_kernels_search.c +340 -340
- data/ext/carray_kernels_sort.c +295 -304
- data/ext/carray_kernels_triop.c +114 -114
- data/ext/carray_key_windows.c +4 -0
- data/ext/carray_mask.c +45 -22
- data/ext/carray_memory_view.c +2 -2
- data/ext/carray_operator.c +5 -5
- data/ext/carray_order.c +227 -8
- data/ext/carray_random.c +18 -18
- data/ext/carray_scatter.c +24 -7
- data/ext/carray_slab.c +32 -9
- 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_time_text.c +4 -2
- data/ext/carray_utils.c +63 -21
- data/ext/mkkernel.rb +210 -115
- data/ext/version.h +4 -4
- data/lib/carray/attribute.rb +17 -4
- data/lib/carray/basics.rb +27 -7
- data/lib/carray/categorical.rb +30 -16
- data/lib/carray/categorical_iterator.rb +6 -6
- 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 +4 -3
- data/lib/carray/frame/concat.rb +17 -3
- data/lib/carray/frame/frame.rb +6 -7
- data/lib/carray/frame/group.rb +100 -13
- data/lib/carray/frame/io.rb +3 -1
- data/lib/carray/fuse_source.rb +31 -2
- data/lib/carray/lazy.rb +35 -0
- data/lib/carray/methods/is_in.rb +8 -1
- data/lib/carray/segment_iterator.rb +12 -8
- data/lib/carray/serialize.rb +19 -2
- data/lib/carray/stack.rb +15 -12
- 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 +107 -68
- data/yard-stubs/ca_obj_transpose.rb +5 -4
- data/yard-stubs/carray_attribute.rb +3 -1
- data/yard-stubs/carray_cast.rb +2 -0
- data/yard-stubs/carray_conversion.rb +5 -1
- data/yard-stubs/carray_element.rb +7 -6
- data/yard-stubs/carray_mask.rb +8 -3
- data/yard-stubs/carray_math.rb +14 -4
- data/yard-stubs/carray_order.rb +100 -4
- data/yard-stubs/carray_scatter.rb +7 -5
- metadata +1 -1
data/ext/carray_kernels_sort.c
CHANGED
|
@@ -101,13 +101,13 @@ sort_index_ki_native_i8 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
101
101
|
if ( masked_last ) {
|
|
102
102
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
103
103
|
if ( mi[k * mstride] ) continue;
|
|
104
|
-
buf[n_valid].v
|
|
104
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
105
105
|
buf[n_valid].i = k;
|
|
106
106
|
n_valid++;
|
|
107
107
|
}
|
|
108
108
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
109
109
|
if ( ! mi[k * mstride] ) continue;
|
|
110
|
-
buf[n_valid + n_masked].v
|
|
110
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
111
111
|
buf[n_valid + n_masked].i = k;
|
|
112
112
|
n_masked++;
|
|
113
113
|
}
|
|
@@ -115,13 +115,13 @@ sort_index_ki_native_i8 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
115
115
|
} else {
|
|
116
116
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
117
117
|
if ( ! mi[k * mstride] ) continue;
|
|
118
|
-
buf[n_masked].v
|
|
118
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
119
119
|
buf[n_masked].i = k;
|
|
120
120
|
n_masked++;
|
|
121
121
|
}
|
|
122
122
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
123
123
|
if ( mi[k * mstride] ) continue;
|
|
124
|
-
buf[n_masked + n_valid].v
|
|
124
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
125
125
|
buf[n_masked + n_valid].i = k;
|
|
126
126
|
n_valid++;
|
|
127
127
|
}
|
|
@@ -129,7 +129,7 @@ sort_index_ki_native_i8 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
129
129
|
}
|
|
130
130
|
} else {
|
|
131
131
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
132
|
-
buf[k].v
|
|
132
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
133
133
|
buf[k].i = k;
|
|
134
134
|
}
|
|
135
135
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -216,13 +216,13 @@ sort_index_ki_native_u8 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
216
216
|
if ( masked_last ) {
|
|
217
217
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
218
218
|
if ( mi[k * mstride] ) continue;
|
|
219
|
-
buf[n_valid].v
|
|
219
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
220
220
|
buf[n_valid].i = k;
|
|
221
221
|
n_valid++;
|
|
222
222
|
}
|
|
223
223
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
224
224
|
if ( ! mi[k * mstride] ) continue;
|
|
225
|
-
buf[n_valid + n_masked].v
|
|
225
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
226
226
|
buf[n_valid + n_masked].i = k;
|
|
227
227
|
n_masked++;
|
|
228
228
|
}
|
|
@@ -230,13 +230,13 @@ sort_index_ki_native_u8 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
230
230
|
} else {
|
|
231
231
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
232
232
|
if ( ! mi[k * mstride] ) continue;
|
|
233
|
-
buf[n_masked].v
|
|
233
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
234
234
|
buf[n_masked].i = k;
|
|
235
235
|
n_masked++;
|
|
236
236
|
}
|
|
237
237
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
238
238
|
if ( mi[k * mstride] ) continue;
|
|
239
|
-
buf[n_masked + n_valid].v
|
|
239
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
240
240
|
buf[n_masked + n_valid].i = k;
|
|
241
241
|
n_valid++;
|
|
242
242
|
}
|
|
@@ -244,7 +244,7 @@ sort_index_ki_native_u8 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
244
244
|
}
|
|
245
245
|
} else {
|
|
246
246
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
247
|
-
buf[k].v
|
|
247
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
248
248
|
buf[k].i = k;
|
|
249
249
|
}
|
|
250
250
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -276,7 +276,7 @@ sort_index_ki_native_u8 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
276
276
|
}
|
|
277
277
|
|
|
278
278
|
typedef struct {
|
|
279
|
-
|
|
279
|
+
ca_u_int16_t v;
|
|
280
280
|
ca_size_t i;
|
|
281
281
|
} sort_index_pair_i16;
|
|
282
282
|
|
|
@@ -331,13 +331,13 @@ sort_index_ki_native_i16 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
331
331
|
if ( masked_last ) {
|
|
332
332
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
333
333
|
if ( mi[k * mstride] ) continue;
|
|
334
|
-
buf[n_valid].v
|
|
334
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
335
335
|
buf[n_valid].i = k;
|
|
336
336
|
n_valid++;
|
|
337
337
|
}
|
|
338
338
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
339
339
|
if ( ! mi[k * mstride] ) continue;
|
|
340
|
-
buf[n_valid + n_masked].v
|
|
340
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
341
341
|
buf[n_valid + n_masked].i = k;
|
|
342
342
|
n_masked++;
|
|
343
343
|
}
|
|
@@ -345,13 +345,13 @@ sort_index_ki_native_i16 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
345
345
|
} else {
|
|
346
346
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
347
347
|
if ( ! mi[k * mstride] ) continue;
|
|
348
|
-
buf[n_masked].v
|
|
348
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
349
349
|
buf[n_masked].i = k;
|
|
350
350
|
n_masked++;
|
|
351
351
|
}
|
|
352
352
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
353
353
|
if ( mi[k * mstride] ) continue;
|
|
354
|
-
buf[n_masked + n_valid].v
|
|
354
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
355
355
|
buf[n_masked + n_valid].i = k;
|
|
356
356
|
n_valid++;
|
|
357
357
|
}
|
|
@@ -359,7 +359,7 @@ sort_index_ki_native_i16 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
359
359
|
}
|
|
360
360
|
} else {
|
|
361
361
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
362
|
-
buf[k].v
|
|
362
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
363
363
|
buf[k].i = k;
|
|
364
364
|
}
|
|
365
365
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -391,7 +391,7 @@ sort_index_ki_native_i16 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
391
391
|
}
|
|
392
392
|
|
|
393
393
|
typedef struct {
|
|
394
|
-
|
|
394
|
+
ca_u_uint16_t v;
|
|
395
395
|
ca_size_t i;
|
|
396
396
|
} sort_index_pair_u16;
|
|
397
397
|
|
|
@@ -446,13 +446,13 @@ sort_index_ki_native_u16 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
446
446
|
if ( masked_last ) {
|
|
447
447
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
448
448
|
if ( mi[k * mstride] ) continue;
|
|
449
|
-
buf[n_valid].v
|
|
449
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
450
450
|
buf[n_valid].i = k;
|
|
451
451
|
n_valid++;
|
|
452
452
|
}
|
|
453
453
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
454
454
|
if ( ! mi[k * mstride] ) continue;
|
|
455
|
-
buf[n_valid + n_masked].v
|
|
455
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
456
456
|
buf[n_valid + n_masked].i = k;
|
|
457
457
|
n_masked++;
|
|
458
458
|
}
|
|
@@ -460,13 +460,13 @@ sort_index_ki_native_u16 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
460
460
|
} else {
|
|
461
461
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
462
462
|
if ( ! mi[k * mstride] ) continue;
|
|
463
|
-
buf[n_masked].v
|
|
463
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
464
464
|
buf[n_masked].i = k;
|
|
465
465
|
n_masked++;
|
|
466
466
|
}
|
|
467
467
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
468
468
|
if ( mi[k * mstride] ) continue;
|
|
469
|
-
buf[n_masked + n_valid].v
|
|
469
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
470
470
|
buf[n_masked + n_valid].i = k;
|
|
471
471
|
n_valid++;
|
|
472
472
|
}
|
|
@@ -474,7 +474,7 @@ sort_index_ki_native_u16 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
474
474
|
}
|
|
475
475
|
} else {
|
|
476
476
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
477
|
-
buf[k].v
|
|
477
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
478
478
|
buf[k].i = k;
|
|
479
479
|
}
|
|
480
480
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -506,7 +506,7 @@ sort_index_ki_native_u16 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
506
506
|
}
|
|
507
507
|
|
|
508
508
|
typedef struct {
|
|
509
|
-
|
|
509
|
+
ca_u_int32_t v;
|
|
510
510
|
ca_size_t i;
|
|
511
511
|
} sort_index_pair_i32;
|
|
512
512
|
|
|
@@ -561,13 +561,13 @@ sort_index_ki_native_i32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
561
561
|
if ( masked_last ) {
|
|
562
562
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
563
563
|
if ( mi[k * mstride] ) continue;
|
|
564
|
-
buf[n_valid].v
|
|
564
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
565
565
|
buf[n_valid].i = k;
|
|
566
566
|
n_valid++;
|
|
567
567
|
}
|
|
568
568
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
569
569
|
if ( ! mi[k * mstride] ) continue;
|
|
570
|
-
buf[n_valid + n_masked].v
|
|
570
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
571
571
|
buf[n_valid + n_masked].i = k;
|
|
572
572
|
n_masked++;
|
|
573
573
|
}
|
|
@@ -575,13 +575,13 @@ sort_index_ki_native_i32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
575
575
|
} else {
|
|
576
576
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
577
577
|
if ( ! mi[k * mstride] ) continue;
|
|
578
|
-
buf[n_masked].v
|
|
578
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
579
579
|
buf[n_masked].i = k;
|
|
580
580
|
n_masked++;
|
|
581
581
|
}
|
|
582
582
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
583
583
|
if ( mi[k * mstride] ) continue;
|
|
584
|
-
buf[n_masked + n_valid].v
|
|
584
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
585
585
|
buf[n_masked + n_valid].i = k;
|
|
586
586
|
n_valid++;
|
|
587
587
|
}
|
|
@@ -589,7 +589,7 @@ sort_index_ki_native_i32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
589
589
|
}
|
|
590
590
|
} else {
|
|
591
591
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
592
|
-
buf[k].v
|
|
592
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
593
593
|
buf[k].i = k;
|
|
594
594
|
}
|
|
595
595
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -621,7 +621,7 @@ sort_index_ki_native_i32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
621
621
|
}
|
|
622
622
|
|
|
623
623
|
typedef struct {
|
|
624
|
-
|
|
624
|
+
ca_u_uint32_t v;
|
|
625
625
|
ca_size_t i;
|
|
626
626
|
} sort_index_pair_u32;
|
|
627
627
|
|
|
@@ -676,13 +676,13 @@ sort_index_ki_native_u32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
676
676
|
if ( masked_last ) {
|
|
677
677
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
678
678
|
if ( mi[k * mstride] ) continue;
|
|
679
|
-
buf[n_valid].v
|
|
679
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
680
680
|
buf[n_valid].i = k;
|
|
681
681
|
n_valid++;
|
|
682
682
|
}
|
|
683
683
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
684
684
|
if ( ! mi[k * mstride] ) continue;
|
|
685
|
-
buf[n_valid + n_masked].v
|
|
685
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
686
686
|
buf[n_valid + n_masked].i = k;
|
|
687
687
|
n_masked++;
|
|
688
688
|
}
|
|
@@ -690,13 +690,13 @@ sort_index_ki_native_u32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
690
690
|
} else {
|
|
691
691
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
692
692
|
if ( ! mi[k * mstride] ) continue;
|
|
693
|
-
buf[n_masked].v
|
|
693
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
694
694
|
buf[n_masked].i = k;
|
|
695
695
|
n_masked++;
|
|
696
696
|
}
|
|
697
697
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
698
698
|
if ( mi[k * mstride] ) continue;
|
|
699
|
-
buf[n_masked + n_valid].v
|
|
699
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
700
700
|
buf[n_masked + n_valid].i = k;
|
|
701
701
|
n_valid++;
|
|
702
702
|
}
|
|
@@ -704,7 +704,7 @@ sort_index_ki_native_u32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
704
704
|
}
|
|
705
705
|
} else {
|
|
706
706
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
707
|
-
buf[k].v
|
|
707
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
708
708
|
buf[k].i = k;
|
|
709
709
|
}
|
|
710
710
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -736,7 +736,7 @@ sort_index_ki_native_u32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
736
736
|
}
|
|
737
737
|
|
|
738
738
|
typedef struct {
|
|
739
|
-
|
|
739
|
+
ca_u_int64_t v;
|
|
740
740
|
ca_size_t i;
|
|
741
741
|
} sort_index_pair_i64;
|
|
742
742
|
|
|
@@ -791,13 +791,13 @@ sort_index_ki_native_i64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
791
791
|
if ( masked_last ) {
|
|
792
792
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
793
793
|
if ( mi[k * mstride] ) continue;
|
|
794
|
-
buf[n_valid].v
|
|
794
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
795
795
|
buf[n_valid].i = k;
|
|
796
796
|
n_valid++;
|
|
797
797
|
}
|
|
798
798
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
799
799
|
if ( ! mi[k * mstride] ) continue;
|
|
800
|
-
buf[n_valid + n_masked].v
|
|
800
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
801
801
|
buf[n_valid + n_masked].i = k;
|
|
802
802
|
n_masked++;
|
|
803
803
|
}
|
|
@@ -805,13 +805,13 @@ sort_index_ki_native_i64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
805
805
|
} else {
|
|
806
806
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
807
807
|
if ( ! mi[k * mstride] ) continue;
|
|
808
|
-
buf[n_masked].v
|
|
808
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
809
809
|
buf[n_masked].i = k;
|
|
810
810
|
n_masked++;
|
|
811
811
|
}
|
|
812
812
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
813
813
|
if ( mi[k * mstride] ) continue;
|
|
814
|
-
buf[n_masked + n_valid].v
|
|
814
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
815
815
|
buf[n_masked + n_valid].i = k;
|
|
816
816
|
n_valid++;
|
|
817
817
|
}
|
|
@@ -819,7 +819,7 @@ sort_index_ki_native_i64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
819
819
|
}
|
|
820
820
|
} else {
|
|
821
821
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
822
|
-
buf[k].v
|
|
822
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
823
823
|
buf[k].i = k;
|
|
824
824
|
}
|
|
825
825
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -851,7 +851,7 @@ sort_index_ki_native_i64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
851
851
|
}
|
|
852
852
|
|
|
853
853
|
typedef struct {
|
|
854
|
-
|
|
854
|
+
ca_u_uint64_t v;
|
|
855
855
|
ca_size_t i;
|
|
856
856
|
} sort_index_pair_u64;
|
|
857
857
|
|
|
@@ -906,13 +906,13 @@ sort_index_ki_native_u64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
906
906
|
if ( masked_last ) {
|
|
907
907
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
908
908
|
if ( mi[k * mstride] ) continue;
|
|
909
|
-
buf[n_valid].v
|
|
909
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
910
910
|
buf[n_valid].i = k;
|
|
911
911
|
n_valid++;
|
|
912
912
|
}
|
|
913
913
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
914
914
|
if ( ! mi[k * mstride] ) continue;
|
|
915
|
-
buf[n_valid + n_masked].v
|
|
915
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
916
916
|
buf[n_valid + n_masked].i = k;
|
|
917
917
|
n_masked++;
|
|
918
918
|
}
|
|
@@ -920,13 +920,13 @@ sort_index_ki_native_u64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
920
920
|
} else {
|
|
921
921
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
922
922
|
if ( ! mi[k * mstride] ) continue;
|
|
923
|
-
buf[n_masked].v
|
|
923
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
924
924
|
buf[n_masked].i = k;
|
|
925
925
|
n_masked++;
|
|
926
926
|
}
|
|
927
927
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
928
928
|
if ( mi[k * mstride] ) continue;
|
|
929
|
-
buf[n_masked + n_valid].v
|
|
929
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
930
930
|
buf[n_masked + n_valid].i = k;
|
|
931
931
|
n_valid++;
|
|
932
932
|
}
|
|
@@ -934,7 +934,7 @@ sort_index_ki_native_u64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
934
934
|
}
|
|
935
935
|
} else {
|
|
936
936
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
937
|
-
buf[k].v
|
|
937
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
938
938
|
buf[k].i = k;
|
|
939
939
|
}
|
|
940
940
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -966,7 +966,7 @@ sort_index_ki_native_u64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
966
966
|
}
|
|
967
967
|
|
|
968
968
|
typedef struct {
|
|
969
|
-
|
|
969
|
+
ca_u_float32_t v;
|
|
970
970
|
ca_size_t i;
|
|
971
971
|
} sort_index_pair_f32;
|
|
972
972
|
|
|
@@ -1021,13 +1021,13 @@ sort_index_ki_native_f32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
1021
1021
|
if ( masked_last ) {
|
|
1022
1022
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1023
1023
|
if ( mi[k * mstride] ) continue;
|
|
1024
|
-
buf[n_valid].v
|
|
1024
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
1025
1025
|
buf[n_valid].i = k;
|
|
1026
1026
|
n_valid++;
|
|
1027
1027
|
}
|
|
1028
1028
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1029
1029
|
if ( ! mi[k * mstride] ) continue;
|
|
1030
|
-
buf[n_valid + n_masked].v
|
|
1030
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
1031
1031
|
buf[n_valid + n_masked].i = k;
|
|
1032
1032
|
n_masked++;
|
|
1033
1033
|
}
|
|
@@ -1035,13 +1035,13 @@ sort_index_ki_native_f32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
1035
1035
|
} else {
|
|
1036
1036
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1037
1037
|
if ( ! mi[k * mstride] ) continue;
|
|
1038
|
-
buf[n_masked].v
|
|
1038
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
1039
1039
|
buf[n_masked].i = k;
|
|
1040
1040
|
n_masked++;
|
|
1041
1041
|
}
|
|
1042
1042
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1043
1043
|
if ( mi[k * mstride] ) continue;
|
|
1044
|
-
buf[n_masked + n_valid].v
|
|
1044
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
1045
1045
|
buf[n_masked + n_valid].i = k;
|
|
1046
1046
|
n_valid++;
|
|
1047
1047
|
}
|
|
@@ -1049,7 +1049,7 @@ sort_index_ki_native_f32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
1049
1049
|
}
|
|
1050
1050
|
} else {
|
|
1051
1051
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1052
|
-
buf[k].v
|
|
1052
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
1053
1053
|
buf[k].i = k;
|
|
1054
1054
|
}
|
|
1055
1055
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -1085,7 +1085,7 @@ sort_index_ki_native_f32 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
1085
1085
|
}
|
|
1086
1086
|
|
|
1087
1087
|
typedef struct {
|
|
1088
|
-
|
|
1088
|
+
ca_u_float64_t v;
|
|
1089
1089
|
ca_size_t i;
|
|
1090
1090
|
} sort_index_pair_f64;
|
|
1091
1091
|
|
|
@@ -1140,13 +1140,13 @@ sort_index_ki_native_f64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
1140
1140
|
if ( masked_last ) {
|
|
1141
1141
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1142
1142
|
if ( mi[k * mstride] ) continue;
|
|
1143
|
-
buf[n_valid].v
|
|
1143
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
1144
1144
|
buf[n_valid].i = k;
|
|
1145
1145
|
n_valid++;
|
|
1146
1146
|
}
|
|
1147
1147
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1148
1148
|
if ( ! mi[k * mstride] ) continue;
|
|
1149
|
-
buf[n_valid + n_masked].v
|
|
1149
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
1150
1150
|
buf[n_valid + n_masked].i = k;
|
|
1151
1151
|
n_masked++;
|
|
1152
1152
|
}
|
|
@@ -1154,13 +1154,13 @@ sort_index_ki_native_f64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
1154
1154
|
} else {
|
|
1155
1155
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1156
1156
|
if ( ! mi[k * mstride] ) continue;
|
|
1157
|
-
buf[n_masked].v
|
|
1157
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
1158
1158
|
buf[n_masked].i = k;
|
|
1159
1159
|
n_masked++;
|
|
1160
1160
|
}
|
|
1161
1161
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1162
1162
|
if ( mi[k * mstride] ) continue;
|
|
1163
|
-
buf[n_masked + n_valid].v
|
|
1163
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
1164
1164
|
buf[n_masked + n_valid].i = k;
|
|
1165
1165
|
n_valid++;
|
|
1166
1166
|
}
|
|
@@ -1168,7 +1168,7 @@ sort_index_ki_native_f64 (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
1168
1168
|
}
|
|
1169
1169
|
} else {
|
|
1170
1170
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1171
|
-
buf[k].v
|
|
1171
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
1172
1172
|
buf[k].i = k;
|
|
1173
1173
|
}
|
|
1174
1174
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -1259,13 +1259,13 @@ sort_index_ki_native_bool (VALUE self, CArray *ca, int axis, int do_stable, int
|
|
|
1259
1259
|
if ( masked_last ) {
|
|
1260
1260
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1261
1261
|
if ( mi[k * mstride] ) continue;
|
|
1262
|
-
buf[n_valid].v
|
|
1262
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
1263
1263
|
buf[n_valid].i = k;
|
|
1264
1264
|
n_valid++;
|
|
1265
1265
|
}
|
|
1266
1266
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1267
1267
|
if ( ! mi[k * mstride] ) continue;
|
|
1268
|
-
buf[n_valid + n_masked].v
|
|
1268
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
1269
1269
|
buf[n_valid + n_masked].i = k;
|
|
1270
1270
|
n_masked++;
|
|
1271
1271
|
}
|
|
@@ -1273,13 +1273,13 @@ sort_index_ki_native_bool (VALUE self, CArray *ca, int axis, int do_stable, int
|
|
|
1273
1273
|
} else {
|
|
1274
1274
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1275
1275
|
if ( ! mi[k * mstride] ) continue;
|
|
1276
|
-
buf[n_masked].v
|
|
1276
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
1277
1277
|
buf[n_masked].i = k;
|
|
1278
1278
|
n_masked++;
|
|
1279
1279
|
}
|
|
1280
1280
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1281
1281
|
if ( mi[k * mstride] ) continue;
|
|
1282
|
-
buf[n_masked + n_valid].v
|
|
1282
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
1283
1283
|
buf[n_masked + n_valid].i = k;
|
|
1284
1284
|
n_valid++;
|
|
1285
1285
|
}
|
|
@@ -1287,7 +1287,7 @@ sort_index_ki_native_bool (VALUE self, CArray *ca, int axis, int do_stable, int
|
|
|
1287
1287
|
}
|
|
1288
1288
|
} else {
|
|
1289
1289
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1290
|
-
buf[k].v
|
|
1290
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
1291
1291
|
buf[k].i = k;
|
|
1292
1292
|
}
|
|
1293
1293
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -1408,13 +1408,13 @@ sort_index_ki_native_object_body (VALUE arg)
|
|
|
1408
1408
|
if ( masked_last ) {
|
|
1409
1409
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1410
1410
|
if ( mi[k * mstride] ) continue;
|
|
1411
|
-
buf[n_valid].v
|
|
1411
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
1412
1412
|
buf[n_valid].i = k;
|
|
1413
1413
|
n_valid++;
|
|
1414
1414
|
}
|
|
1415
1415
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1416
1416
|
if ( ! mi[k * mstride] ) continue;
|
|
1417
|
-
buf[n_valid + n_masked].v
|
|
1417
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
1418
1418
|
buf[n_valid + n_masked].i = k;
|
|
1419
1419
|
n_masked++;
|
|
1420
1420
|
}
|
|
@@ -1422,13 +1422,13 @@ sort_index_ki_native_object_body (VALUE arg)
|
|
|
1422
1422
|
} else {
|
|
1423
1423
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1424
1424
|
if ( ! mi[k * mstride] ) continue;
|
|
1425
|
-
buf[n_masked].v
|
|
1425
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
1426
1426
|
buf[n_masked].i = k;
|
|
1427
1427
|
n_masked++;
|
|
1428
1428
|
}
|
|
1429
1429
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1430
1430
|
if ( mi[k * mstride] ) continue;
|
|
1431
|
-
buf[n_masked + n_valid].v
|
|
1431
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
1432
1432
|
buf[n_masked + n_valid].i = k;
|
|
1433
1433
|
n_valid++;
|
|
1434
1434
|
}
|
|
@@ -1436,7 +1436,7 @@ sort_index_ki_native_object_body (VALUE arg)
|
|
|
1436
1436
|
}
|
|
1437
1437
|
} else {
|
|
1438
1438
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1439
|
-
buf[k].v
|
|
1439
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
1440
1440
|
buf[k].i = k;
|
|
1441
1441
|
}
|
|
1442
1442
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -1528,10 +1528,7 @@ sort_index_ki_native_fixlen (VALUE self, CArray *ca, int axis, int do_stable, in
|
|
|
1528
1528
|
ca_size_t fiber_n = st_in.slab_elements;
|
|
1529
1529
|
volatile VALUE hbuf = 0, haux = 0;
|
|
1530
1530
|
sort_index_pair_fixlen *buf = ALLOCV_N(sort_index_pair_fixlen, hbuf, fiber_n);
|
|
1531
|
-
|
|
1532
|
-
if ( do_stable ) {
|
|
1533
|
-
aux = ALLOCV_N(sort_index_pair_fixlen, haux, fiber_n);
|
|
1534
|
-
}
|
|
1531
|
+
(void) haux;
|
|
1535
1532
|
|
|
1536
1533
|
char *pi, *po;
|
|
1537
1534
|
boolean8_t *mi, *mo;
|
|
@@ -1778,13 +1775,13 @@ sort_addr_ki_native_i8 (VALUE self, CArray *ca, int axis, int do_stable, int mas
|
|
|
1778
1775
|
if ( masked_last ) {
|
|
1779
1776
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1780
1777
|
if ( mi[k * mstride] ) continue;
|
|
1781
|
-
buf[n_valid].v
|
|
1778
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
1782
1779
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
1783
1780
|
n_valid++;
|
|
1784
1781
|
}
|
|
1785
1782
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1786
1783
|
if ( ! mi[k * mstride] ) continue;
|
|
1787
|
-
buf[n_valid + n_masked].v
|
|
1784
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
1788
1785
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
1789
1786
|
n_masked++;
|
|
1790
1787
|
}
|
|
@@ -1792,13 +1789,13 @@ sort_addr_ki_native_i8 (VALUE self, CArray *ca, int axis, int do_stable, int mas
|
|
|
1792
1789
|
} else {
|
|
1793
1790
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1794
1791
|
if ( ! mi[k * mstride] ) continue;
|
|
1795
|
-
buf[n_masked].v
|
|
1792
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
1796
1793
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
1797
1794
|
n_masked++;
|
|
1798
1795
|
}
|
|
1799
1796
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1800
1797
|
if ( mi[k * mstride] ) continue;
|
|
1801
|
-
buf[n_masked + n_valid].v
|
|
1798
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
1802
1799
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
1803
1800
|
n_valid++;
|
|
1804
1801
|
}
|
|
@@ -1806,7 +1803,7 @@ sort_addr_ki_native_i8 (VALUE self, CArray *ca, int axis, int do_stable, int mas
|
|
|
1806
1803
|
}
|
|
1807
1804
|
} else {
|
|
1808
1805
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1809
|
-
buf[k].v
|
|
1806
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
1810
1807
|
buf[k].i = outer_off + k * axis_vstride;
|
|
1811
1808
|
}
|
|
1812
1809
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -1925,13 +1922,13 @@ sort_addr_ki_native_u8 (VALUE self, CArray *ca, int axis, int do_stable, int mas
|
|
|
1925
1922
|
if ( masked_last ) {
|
|
1926
1923
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1927
1924
|
if ( mi[k * mstride] ) continue;
|
|
1928
|
-
buf[n_valid].v
|
|
1925
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
1929
1926
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
1930
1927
|
n_valid++;
|
|
1931
1928
|
}
|
|
1932
1929
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1933
1930
|
if ( ! mi[k * mstride] ) continue;
|
|
1934
|
-
buf[n_valid + n_masked].v
|
|
1931
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
1935
1932
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
1936
1933
|
n_masked++;
|
|
1937
1934
|
}
|
|
@@ -1939,13 +1936,13 @@ sort_addr_ki_native_u8 (VALUE self, CArray *ca, int axis, int do_stable, int mas
|
|
|
1939
1936
|
} else {
|
|
1940
1937
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1941
1938
|
if ( ! mi[k * mstride] ) continue;
|
|
1942
|
-
buf[n_masked].v
|
|
1939
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
1943
1940
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
1944
1941
|
n_masked++;
|
|
1945
1942
|
}
|
|
1946
1943
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1947
1944
|
if ( mi[k * mstride] ) continue;
|
|
1948
|
-
buf[n_masked + n_valid].v
|
|
1945
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
1949
1946
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
1950
1947
|
n_valid++;
|
|
1951
1948
|
}
|
|
@@ -1953,7 +1950,7 @@ sort_addr_ki_native_u8 (VALUE self, CArray *ca, int axis, int do_stable, int mas
|
|
|
1953
1950
|
}
|
|
1954
1951
|
} else {
|
|
1955
1952
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
1956
|
-
buf[k].v
|
|
1953
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
1957
1954
|
buf[k].i = outer_off + k * axis_vstride;
|
|
1958
1955
|
}
|
|
1959
1956
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -1990,7 +1987,7 @@ sort_addr_ki_native_u8 (VALUE self, CArray *ca, int axis, int do_stable, int mas
|
|
|
1990
1987
|
}
|
|
1991
1988
|
|
|
1992
1989
|
typedef struct {
|
|
1993
|
-
|
|
1990
|
+
ca_u_int16_t v;
|
|
1994
1991
|
ca_size_t i;
|
|
1995
1992
|
} sort_addr_pair_i16;
|
|
1996
1993
|
|
|
@@ -2072,13 +2069,13 @@ sort_addr_ki_native_i16 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2072
2069
|
if ( masked_last ) {
|
|
2073
2070
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2074
2071
|
if ( mi[k * mstride] ) continue;
|
|
2075
|
-
buf[n_valid].v
|
|
2072
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
2076
2073
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
2077
2074
|
n_valid++;
|
|
2078
2075
|
}
|
|
2079
2076
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2080
2077
|
if ( ! mi[k * mstride] ) continue;
|
|
2081
|
-
buf[n_valid + n_masked].v
|
|
2078
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
2082
2079
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
2083
2080
|
n_masked++;
|
|
2084
2081
|
}
|
|
@@ -2086,13 +2083,13 @@ sort_addr_ki_native_i16 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2086
2083
|
} else {
|
|
2087
2084
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2088
2085
|
if ( ! mi[k * mstride] ) continue;
|
|
2089
|
-
buf[n_masked].v
|
|
2086
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
2090
2087
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
2091
2088
|
n_masked++;
|
|
2092
2089
|
}
|
|
2093
2090
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2094
2091
|
if ( mi[k * mstride] ) continue;
|
|
2095
|
-
buf[n_masked + n_valid].v
|
|
2092
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
2096
2093
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
2097
2094
|
n_valid++;
|
|
2098
2095
|
}
|
|
@@ -2100,7 +2097,7 @@ sort_addr_ki_native_i16 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2100
2097
|
}
|
|
2101
2098
|
} else {
|
|
2102
2099
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2103
|
-
buf[k].v
|
|
2100
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
2104
2101
|
buf[k].i = outer_off + k * axis_vstride;
|
|
2105
2102
|
}
|
|
2106
2103
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -2137,7 +2134,7 @@ sort_addr_ki_native_i16 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2137
2134
|
}
|
|
2138
2135
|
|
|
2139
2136
|
typedef struct {
|
|
2140
|
-
|
|
2137
|
+
ca_u_uint16_t v;
|
|
2141
2138
|
ca_size_t i;
|
|
2142
2139
|
} sort_addr_pair_u16;
|
|
2143
2140
|
|
|
@@ -2219,13 +2216,13 @@ sort_addr_ki_native_u16 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2219
2216
|
if ( masked_last ) {
|
|
2220
2217
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2221
2218
|
if ( mi[k * mstride] ) continue;
|
|
2222
|
-
buf[n_valid].v
|
|
2219
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
2223
2220
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
2224
2221
|
n_valid++;
|
|
2225
2222
|
}
|
|
2226
2223
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2227
2224
|
if ( ! mi[k * mstride] ) continue;
|
|
2228
|
-
buf[n_valid + n_masked].v
|
|
2225
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
2229
2226
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
2230
2227
|
n_masked++;
|
|
2231
2228
|
}
|
|
@@ -2233,13 +2230,13 @@ sort_addr_ki_native_u16 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2233
2230
|
} else {
|
|
2234
2231
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2235
2232
|
if ( ! mi[k * mstride] ) continue;
|
|
2236
|
-
buf[n_masked].v
|
|
2233
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
2237
2234
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
2238
2235
|
n_masked++;
|
|
2239
2236
|
}
|
|
2240
2237
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2241
2238
|
if ( mi[k * mstride] ) continue;
|
|
2242
|
-
buf[n_masked + n_valid].v
|
|
2239
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
2243
2240
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
2244
2241
|
n_valid++;
|
|
2245
2242
|
}
|
|
@@ -2247,7 +2244,7 @@ sort_addr_ki_native_u16 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2247
2244
|
}
|
|
2248
2245
|
} else {
|
|
2249
2246
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2250
|
-
buf[k].v
|
|
2247
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
2251
2248
|
buf[k].i = outer_off + k * axis_vstride;
|
|
2252
2249
|
}
|
|
2253
2250
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -2284,7 +2281,7 @@ sort_addr_ki_native_u16 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2284
2281
|
}
|
|
2285
2282
|
|
|
2286
2283
|
typedef struct {
|
|
2287
|
-
|
|
2284
|
+
ca_u_int32_t v;
|
|
2288
2285
|
ca_size_t i;
|
|
2289
2286
|
} sort_addr_pair_i32;
|
|
2290
2287
|
|
|
@@ -2366,13 +2363,13 @@ sort_addr_ki_native_i32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2366
2363
|
if ( masked_last ) {
|
|
2367
2364
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2368
2365
|
if ( mi[k * mstride] ) continue;
|
|
2369
|
-
buf[n_valid].v
|
|
2366
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
2370
2367
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
2371
2368
|
n_valid++;
|
|
2372
2369
|
}
|
|
2373
2370
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2374
2371
|
if ( ! mi[k * mstride] ) continue;
|
|
2375
|
-
buf[n_valid + n_masked].v
|
|
2372
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
2376
2373
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
2377
2374
|
n_masked++;
|
|
2378
2375
|
}
|
|
@@ -2380,13 +2377,13 @@ sort_addr_ki_native_i32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2380
2377
|
} else {
|
|
2381
2378
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2382
2379
|
if ( ! mi[k * mstride] ) continue;
|
|
2383
|
-
buf[n_masked].v
|
|
2380
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
2384
2381
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
2385
2382
|
n_masked++;
|
|
2386
2383
|
}
|
|
2387
2384
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2388
2385
|
if ( mi[k * mstride] ) continue;
|
|
2389
|
-
buf[n_masked + n_valid].v
|
|
2386
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
2390
2387
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
2391
2388
|
n_valid++;
|
|
2392
2389
|
}
|
|
@@ -2394,7 +2391,7 @@ sort_addr_ki_native_i32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2394
2391
|
}
|
|
2395
2392
|
} else {
|
|
2396
2393
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2397
|
-
buf[k].v
|
|
2394
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
2398
2395
|
buf[k].i = outer_off + k * axis_vstride;
|
|
2399
2396
|
}
|
|
2400
2397
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -2431,7 +2428,7 @@ sort_addr_ki_native_i32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2431
2428
|
}
|
|
2432
2429
|
|
|
2433
2430
|
typedef struct {
|
|
2434
|
-
|
|
2431
|
+
ca_u_uint32_t v;
|
|
2435
2432
|
ca_size_t i;
|
|
2436
2433
|
} sort_addr_pair_u32;
|
|
2437
2434
|
|
|
@@ -2513,13 +2510,13 @@ sort_addr_ki_native_u32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2513
2510
|
if ( masked_last ) {
|
|
2514
2511
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2515
2512
|
if ( mi[k * mstride] ) continue;
|
|
2516
|
-
buf[n_valid].v
|
|
2513
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
2517
2514
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
2518
2515
|
n_valid++;
|
|
2519
2516
|
}
|
|
2520
2517
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2521
2518
|
if ( ! mi[k * mstride] ) continue;
|
|
2522
|
-
buf[n_valid + n_masked].v
|
|
2519
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
2523
2520
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
2524
2521
|
n_masked++;
|
|
2525
2522
|
}
|
|
@@ -2527,13 +2524,13 @@ sort_addr_ki_native_u32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2527
2524
|
} else {
|
|
2528
2525
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2529
2526
|
if ( ! mi[k * mstride] ) continue;
|
|
2530
|
-
buf[n_masked].v
|
|
2527
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
2531
2528
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
2532
2529
|
n_masked++;
|
|
2533
2530
|
}
|
|
2534
2531
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2535
2532
|
if ( mi[k * mstride] ) continue;
|
|
2536
|
-
buf[n_masked + n_valid].v
|
|
2533
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
2537
2534
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
2538
2535
|
n_valid++;
|
|
2539
2536
|
}
|
|
@@ -2541,7 +2538,7 @@ sort_addr_ki_native_u32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2541
2538
|
}
|
|
2542
2539
|
} else {
|
|
2543
2540
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2544
|
-
buf[k].v
|
|
2541
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
2545
2542
|
buf[k].i = outer_off + k * axis_vstride;
|
|
2546
2543
|
}
|
|
2547
2544
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -2578,7 +2575,7 @@ sort_addr_ki_native_u32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2578
2575
|
}
|
|
2579
2576
|
|
|
2580
2577
|
typedef struct {
|
|
2581
|
-
|
|
2578
|
+
ca_u_int64_t v;
|
|
2582
2579
|
ca_size_t i;
|
|
2583
2580
|
} sort_addr_pair_i64;
|
|
2584
2581
|
|
|
@@ -2660,13 +2657,13 @@ sort_addr_ki_native_i64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2660
2657
|
if ( masked_last ) {
|
|
2661
2658
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2662
2659
|
if ( mi[k * mstride] ) continue;
|
|
2663
|
-
buf[n_valid].v
|
|
2660
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
2664
2661
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
2665
2662
|
n_valid++;
|
|
2666
2663
|
}
|
|
2667
2664
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2668
2665
|
if ( ! mi[k * mstride] ) continue;
|
|
2669
|
-
buf[n_valid + n_masked].v
|
|
2666
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
2670
2667
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
2671
2668
|
n_masked++;
|
|
2672
2669
|
}
|
|
@@ -2674,13 +2671,13 @@ sort_addr_ki_native_i64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2674
2671
|
} else {
|
|
2675
2672
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2676
2673
|
if ( ! mi[k * mstride] ) continue;
|
|
2677
|
-
buf[n_masked].v
|
|
2674
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
2678
2675
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
2679
2676
|
n_masked++;
|
|
2680
2677
|
}
|
|
2681
2678
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2682
2679
|
if ( mi[k * mstride] ) continue;
|
|
2683
|
-
buf[n_masked + n_valid].v
|
|
2680
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
2684
2681
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
2685
2682
|
n_valid++;
|
|
2686
2683
|
}
|
|
@@ -2688,7 +2685,7 @@ sort_addr_ki_native_i64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2688
2685
|
}
|
|
2689
2686
|
} else {
|
|
2690
2687
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2691
|
-
buf[k].v
|
|
2688
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
2692
2689
|
buf[k].i = outer_off + k * axis_vstride;
|
|
2693
2690
|
}
|
|
2694
2691
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -2725,7 +2722,7 @@ sort_addr_ki_native_i64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2725
2722
|
}
|
|
2726
2723
|
|
|
2727
2724
|
typedef struct {
|
|
2728
|
-
|
|
2725
|
+
ca_u_uint64_t v;
|
|
2729
2726
|
ca_size_t i;
|
|
2730
2727
|
} sort_addr_pair_u64;
|
|
2731
2728
|
|
|
@@ -2807,13 +2804,13 @@ sort_addr_ki_native_u64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2807
2804
|
if ( masked_last ) {
|
|
2808
2805
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2809
2806
|
if ( mi[k * mstride] ) continue;
|
|
2810
|
-
buf[n_valid].v
|
|
2807
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
2811
2808
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
2812
2809
|
n_valid++;
|
|
2813
2810
|
}
|
|
2814
2811
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2815
2812
|
if ( ! mi[k * mstride] ) continue;
|
|
2816
|
-
buf[n_valid + n_masked].v
|
|
2813
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
2817
2814
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
2818
2815
|
n_masked++;
|
|
2819
2816
|
}
|
|
@@ -2821,13 +2818,13 @@ sort_addr_ki_native_u64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2821
2818
|
} else {
|
|
2822
2819
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2823
2820
|
if ( ! mi[k * mstride] ) continue;
|
|
2824
|
-
buf[n_masked].v
|
|
2821
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
2825
2822
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
2826
2823
|
n_masked++;
|
|
2827
2824
|
}
|
|
2828
2825
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2829
2826
|
if ( mi[k * mstride] ) continue;
|
|
2830
|
-
buf[n_masked + n_valid].v
|
|
2827
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
2831
2828
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
2832
2829
|
n_valid++;
|
|
2833
2830
|
}
|
|
@@ -2835,7 +2832,7 @@ sort_addr_ki_native_u64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2835
2832
|
}
|
|
2836
2833
|
} else {
|
|
2837
2834
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2838
|
-
buf[k].v
|
|
2835
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
2839
2836
|
buf[k].i = outer_off + k * axis_vstride;
|
|
2840
2837
|
}
|
|
2841
2838
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -2872,7 +2869,7 @@ sort_addr_ki_native_u64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2872
2869
|
}
|
|
2873
2870
|
|
|
2874
2871
|
typedef struct {
|
|
2875
|
-
|
|
2872
|
+
ca_u_float32_t v;
|
|
2876
2873
|
ca_size_t i;
|
|
2877
2874
|
} sort_addr_pair_f32;
|
|
2878
2875
|
|
|
@@ -2954,13 +2951,13 @@ sort_addr_ki_native_f32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2954
2951
|
if ( masked_last ) {
|
|
2955
2952
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2956
2953
|
if ( mi[k * mstride] ) continue;
|
|
2957
|
-
buf[n_valid].v
|
|
2954
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
2958
2955
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
2959
2956
|
n_valid++;
|
|
2960
2957
|
}
|
|
2961
2958
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2962
2959
|
if ( ! mi[k * mstride] ) continue;
|
|
2963
|
-
buf[n_valid + n_masked].v
|
|
2960
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
2964
2961
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
2965
2962
|
n_masked++;
|
|
2966
2963
|
}
|
|
@@ -2968,13 +2965,13 @@ sort_addr_ki_native_f32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2968
2965
|
} else {
|
|
2969
2966
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2970
2967
|
if ( ! mi[k * mstride] ) continue;
|
|
2971
|
-
buf[n_masked].v
|
|
2968
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
2972
2969
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
2973
2970
|
n_masked++;
|
|
2974
2971
|
}
|
|
2975
2972
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2976
2973
|
if ( mi[k * mstride] ) continue;
|
|
2977
|
-
buf[n_masked + n_valid].v
|
|
2974
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
2978
2975
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
2979
2976
|
n_valid++;
|
|
2980
2977
|
}
|
|
@@ -2982,7 +2979,7 @@ sort_addr_ki_native_f32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
2982
2979
|
}
|
|
2983
2980
|
} else {
|
|
2984
2981
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
2985
|
-
buf[k].v
|
|
2982
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
2986
2983
|
buf[k].i = outer_off + k * axis_vstride;
|
|
2987
2984
|
}
|
|
2988
2985
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -3023,7 +3020,7 @@ sort_addr_ki_native_f32 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
3023
3020
|
}
|
|
3024
3021
|
|
|
3025
3022
|
typedef struct {
|
|
3026
|
-
|
|
3023
|
+
ca_u_float64_t v;
|
|
3027
3024
|
ca_size_t i;
|
|
3028
3025
|
} sort_addr_pair_f64;
|
|
3029
3026
|
|
|
@@ -3105,13 +3102,13 @@ sort_addr_ki_native_f64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
3105
3102
|
if ( masked_last ) {
|
|
3106
3103
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3107
3104
|
if ( mi[k * mstride] ) continue;
|
|
3108
|
-
buf[n_valid].v
|
|
3105
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
3109
3106
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
3110
3107
|
n_valid++;
|
|
3111
3108
|
}
|
|
3112
3109
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3113
3110
|
if ( ! mi[k * mstride] ) continue;
|
|
3114
|
-
buf[n_valid + n_masked].v
|
|
3111
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
3115
3112
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
3116
3113
|
n_masked++;
|
|
3117
3114
|
}
|
|
@@ -3119,13 +3116,13 @@ sort_addr_ki_native_f64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
3119
3116
|
} else {
|
|
3120
3117
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3121
3118
|
if ( ! mi[k * mstride] ) continue;
|
|
3122
|
-
buf[n_masked].v
|
|
3119
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
3123
3120
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
3124
3121
|
n_masked++;
|
|
3125
3122
|
}
|
|
3126
3123
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3127
3124
|
if ( mi[k * mstride] ) continue;
|
|
3128
|
-
buf[n_masked + n_valid].v
|
|
3125
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
3129
3126
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
3130
3127
|
n_valid++;
|
|
3131
3128
|
}
|
|
@@ -3133,7 +3130,7 @@ sort_addr_ki_native_f64 (VALUE self, CArray *ca, int axis, int do_stable, int ma
|
|
|
3133
3130
|
}
|
|
3134
3131
|
} else {
|
|
3135
3132
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3136
|
-
buf[k].v
|
|
3133
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
3137
3134
|
buf[k].i = outer_off + k * axis_vstride;
|
|
3138
3135
|
}
|
|
3139
3136
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -3256,13 +3253,13 @@ sort_addr_ki_native_bool (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
3256
3253
|
if ( masked_last ) {
|
|
3257
3254
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3258
3255
|
if ( mi[k * mstride] ) continue;
|
|
3259
|
-
buf[n_valid].v
|
|
3256
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
3260
3257
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
3261
3258
|
n_valid++;
|
|
3262
3259
|
}
|
|
3263
3260
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3264
3261
|
if ( ! mi[k * mstride] ) continue;
|
|
3265
|
-
buf[n_valid + n_masked].v
|
|
3262
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
3266
3263
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
3267
3264
|
n_masked++;
|
|
3268
3265
|
}
|
|
@@ -3270,13 +3267,13 @@ sort_addr_ki_native_bool (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
3270
3267
|
} else {
|
|
3271
3268
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3272
3269
|
if ( ! mi[k * mstride] ) continue;
|
|
3273
|
-
buf[n_masked].v
|
|
3270
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
3274
3271
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
3275
3272
|
n_masked++;
|
|
3276
3273
|
}
|
|
3277
3274
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3278
3275
|
if ( mi[k * mstride] ) continue;
|
|
3279
|
-
buf[n_masked + n_valid].v
|
|
3276
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
3280
3277
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
3281
3278
|
n_valid++;
|
|
3282
3279
|
}
|
|
@@ -3284,7 +3281,7 @@ sort_addr_ki_native_bool (VALUE self, CArray *ca, int axis, int do_stable, int m
|
|
|
3284
3281
|
}
|
|
3285
3282
|
} else {
|
|
3286
3283
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3287
|
-
buf[k].v
|
|
3284
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
3288
3285
|
buf[k].i = outer_off + k * axis_vstride;
|
|
3289
3286
|
}
|
|
3290
3287
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -3437,13 +3434,13 @@ sort_addr_ki_native_object_body (VALUE arg)
|
|
|
3437
3434
|
if ( masked_last ) {
|
|
3438
3435
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3439
3436
|
if ( mi[k * mstride] ) continue;
|
|
3440
|
-
buf[n_valid].v
|
|
3437
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
3441
3438
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
3442
3439
|
n_valid++;
|
|
3443
3440
|
}
|
|
3444
3441
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3445
3442
|
if ( ! mi[k * mstride] ) continue;
|
|
3446
|
-
buf[n_valid + n_masked].v
|
|
3443
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
3447
3444
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
3448
3445
|
n_masked++;
|
|
3449
3446
|
}
|
|
@@ -3451,13 +3448,13 @@ sort_addr_ki_native_object_body (VALUE arg)
|
|
|
3451
3448
|
} else {
|
|
3452
3449
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3453
3450
|
if ( ! mi[k * mstride] ) continue;
|
|
3454
|
-
buf[n_masked].v
|
|
3451
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
3455
3452
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
3456
3453
|
n_masked++;
|
|
3457
3454
|
}
|
|
3458
3455
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3459
3456
|
if ( mi[k * mstride] ) continue;
|
|
3460
|
-
buf[n_masked + n_valid].v
|
|
3457
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
3461
3458
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
3462
3459
|
n_valid++;
|
|
3463
3460
|
}
|
|
@@ -3465,7 +3462,7 @@ sort_addr_ki_native_object_body (VALUE arg)
|
|
|
3465
3462
|
}
|
|
3466
3463
|
} else {
|
|
3467
3464
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3468
|
-
buf[k].v
|
|
3465
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
3469
3466
|
buf[k].i = outer_off + k * axis_vstride;
|
|
3470
3467
|
}
|
|
3471
3468
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -3562,10 +3559,7 @@ sort_addr_ki_native_fixlen (VALUE self, CArray *ca, int axis, int do_stable, int
|
|
|
3562
3559
|
ca_size_t fiber_n = st_in.slab_elements;
|
|
3563
3560
|
volatile VALUE hbuf = 0, haux = 0;
|
|
3564
3561
|
sort_addr_pair_fixlen *buf = ALLOCV_N(sort_addr_pair_fixlen, hbuf, fiber_n);
|
|
3565
|
-
|
|
3566
|
-
if ( do_stable ) {
|
|
3567
|
-
aux = ALLOCV_N(sort_addr_pair_fixlen, haux, fiber_n);
|
|
3568
|
-
}
|
|
3562
|
+
(void) haux;
|
|
3569
3563
|
|
|
3570
3564
|
/* :view_flat semantics: kernel computes view-flat address
|
|
3571
3565
|
(= row-major position in ca's shape, 0..elements-1) for
|
|
@@ -3852,13 +3846,13 @@ partition_index_ki_native_i8 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
3852
3846
|
if ( masked_last ) {
|
|
3853
3847
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3854
3848
|
if ( mi[k * mstride] ) continue;
|
|
3855
|
-
buf[n_valid].v
|
|
3849
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
3856
3850
|
buf[n_valid].i = k;
|
|
3857
3851
|
n_valid++;
|
|
3858
3852
|
}
|
|
3859
3853
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3860
3854
|
if ( ! mi[k * mstride] ) continue;
|
|
3861
|
-
buf[n_valid + n_masked].v
|
|
3855
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
3862
3856
|
buf[n_valid + n_masked].i = k;
|
|
3863
3857
|
n_masked++;
|
|
3864
3858
|
}
|
|
@@ -3866,13 +3860,13 @@ partition_index_ki_native_i8 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
3866
3860
|
} else {
|
|
3867
3861
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3868
3862
|
if ( ! mi[k * mstride] ) continue;
|
|
3869
|
-
buf[n_masked].v
|
|
3863
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
3870
3864
|
buf[n_masked].i = k;
|
|
3871
3865
|
n_masked++;
|
|
3872
3866
|
}
|
|
3873
3867
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3874
3868
|
if ( mi[k * mstride] ) continue;
|
|
3875
|
-
buf[n_masked + n_valid].v
|
|
3869
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
3876
3870
|
buf[n_masked + n_valid].i = k;
|
|
3877
3871
|
n_valid++;
|
|
3878
3872
|
}
|
|
@@ -3880,7 +3874,7 @@ partition_index_ki_native_i8 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
3880
3874
|
}
|
|
3881
3875
|
} else {
|
|
3882
3876
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
3883
|
-
buf[k].v
|
|
3877
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
3884
3878
|
buf[k].i = k;
|
|
3885
3879
|
}
|
|
3886
3880
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -4031,13 +4025,13 @@ partition_index_ki_native_u8 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
4031
4025
|
if ( masked_last ) {
|
|
4032
4026
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4033
4027
|
if ( mi[k * mstride] ) continue;
|
|
4034
|
-
buf[n_valid].v
|
|
4028
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
4035
4029
|
buf[n_valid].i = k;
|
|
4036
4030
|
n_valid++;
|
|
4037
4031
|
}
|
|
4038
4032
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4039
4033
|
if ( ! mi[k * mstride] ) continue;
|
|
4040
|
-
buf[n_valid + n_masked].v
|
|
4034
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
4041
4035
|
buf[n_valid + n_masked].i = k;
|
|
4042
4036
|
n_masked++;
|
|
4043
4037
|
}
|
|
@@ -4045,13 +4039,13 @@ partition_index_ki_native_u8 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
4045
4039
|
} else {
|
|
4046
4040
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4047
4041
|
if ( ! mi[k * mstride] ) continue;
|
|
4048
|
-
buf[n_masked].v
|
|
4042
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
4049
4043
|
buf[n_masked].i = k;
|
|
4050
4044
|
n_masked++;
|
|
4051
4045
|
}
|
|
4052
4046
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4053
4047
|
if ( mi[k * mstride] ) continue;
|
|
4054
|
-
buf[n_masked + n_valid].v
|
|
4048
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
4055
4049
|
buf[n_masked + n_valid].i = k;
|
|
4056
4050
|
n_valid++;
|
|
4057
4051
|
}
|
|
@@ -4059,7 +4053,7 @@ partition_index_ki_native_u8 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
4059
4053
|
}
|
|
4060
4054
|
} else {
|
|
4061
4055
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4062
|
-
buf[k].v
|
|
4056
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
4063
4057
|
buf[k].i = k;
|
|
4064
4058
|
}
|
|
4065
4059
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -4090,7 +4084,7 @@ partition_index_ki_native_u8 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
4090
4084
|
}
|
|
4091
4085
|
|
|
4092
4086
|
typedef struct {
|
|
4093
|
-
|
|
4087
|
+
ca_u_int16_t v;
|
|
4094
4088
|
ca_size_t i;
|
|
4095
4089
|
} partition_index_pair_i16;
|
|
4096
4090
|
|
|
@@ -4210,13 +4204,13 @@ partition_index_ki_native_i16 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4210
4204
|
if ( masked_last ) {
|
|
4211
4205
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4212
4206
|
if ( mi[k * mstride] ) continue;
|
|
4213
|
-
buf[n_valid].v
|
|
4207
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
4214
4208
|
buf[n_valid].i = k;
|
|
4215
4209
|
n_valid++;
|
|
4216
4210
|
}
|
|
4217
4211
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4218
4212
|
if ( ! mi[k * mstride] ) continue;
|
|
4219
|
-
buf[n_valid + n_masked].v
|
|
4213
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
4220
4214
|
buf[n_valid + n_masked].i = k;
|
|
4221
4215
|
n_masked++;
|
|
4222
4216
|
}
|
|
@@ -4224,13 +4218,13 @@ partition_index_ki_native_i16 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4224
4218
|
} else {
|
|
4225
4219
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4226
4220
|
if ( ! mi[k * mstride] ) continue;
|
|
4227
|
-
buf[n_masked].v
|
|
4221
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
4228
4222
|
buf[n_masked].i = k;
|
|
4229
4223
|
n_masked++;
|
|
4230
4224
|
}
|
|
4231
4225
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4232
4226
|
if ( mi[k * mstride] ) continue;
|
|
4233
|
-
buf[n_masked + n_valid].v
|
|
4227
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
4234
4228
|
buf[n_masked + n_valid].i = k;
|
|
4235
4229
|
n_valid++;
|
|
4236
4230
|
}
|
|
@@ -4238,7 +4232,7 @@ partition_index_ki_native_i16 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4238
4232
|
}
|
|
4239
4233
|
} else {
|
|
4240
4234
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4241
|
-
buf[k].v
|
|
4235
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
4242
4236
|
buf[k].i = k;
|
|
4243
4237
|
}
|
|
4244
4238
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -4269,7 +4263,7 @@ partition_index_ki_native_i16 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4269
4263
|
}
|
|
4270
4264
|
|
|
4271
4265
|
typedef struct {
|
|
4272
|
-
|
|
4266
|
+
ca_u_uint16_t v;
|
|
4273
4267
|
ca_size_t i;
|
|
4274
4268
|
} partition_index_pair_u16;
|
|
4275
4269
|
|
|
@@ -4389,13 +4383,13 @@ partition_index_ki_native_u16 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4389
4383
|
if ( masked_last ) {
|
|
4390
4384
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4391
4385
|
if ( mi[k * mstride] ) continue;
|
|
4392
|
-
buf[n_valid].v
|
|
4386
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
4393
4387
|
buf[n_valid].i = k;
|
|
4394
4388
|
n_valid++;
|
|
4395
4389
|
}
|
|
4396
4390
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4397
4391
|
if ( ! mi[k * mstride] ) continue;
|
|
4398
|
-
buf[n_valid + n_masked].v
|
|
4392
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
4399
4393
|
buf[n_valid + n_masked].i = k;
|
|
4400
4394
|
n_masked++;
|
|
4401
4395
|
}
|
|
@@ -4403,13 +4397,13 @@ partition_index_ki_native_u16 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4403
4397
|
} else {
|
|
4404
4398
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4405
4399
|
if ( ! mi[k * mstride] ) continue;
|
|
4406
|
-
buf[n_masked].v
|
|
4400
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
4407
4401
|
buf[n_masked].i = k;
|
|
4408
4402
|
n_masked++;
|
|
4409
4403
|
}
|
|
4410
4404
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4411
4405
|
if ( mi[k * mstride] ) continue;
|
|
4412
|
-
buf[n_masked + n_valid].v
|
|
4406
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
4413
4407
|
buf[n_masked + n_valid].i = k;
|
|
4414
4408
|
n_valid++;
|
|
4415
4409
|
}
|
|
@@ -4417,7 +4411,7 @@ partition_index_ki_native_u16 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4417
4411
|
}
|
|
4418
4412
|
} else {
|
|
4419
4413
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4420
|
-
buf[k].v
|
|
4414
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
4421
4415
|
buf[k].i = k;
|
|
4422
4416
|
}
|
|
4423
4417
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -4448,7 +4442,7 @@ partition_index_ki_native_u16 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4448
4442
|
}
|
|
4449
4443
|
|
|
4450
4444
|
typedef struct {
|
|
4451
|
-
|
|
4445
|
+
ca_u_int32_t v;
|
|
4452
4446
|
ca_size_t i;
|
|
4453
4447
|
} partition_index_pair_i32;
|
|
4454
4448
|
|
|
@@ -4568,13 +4562,13 @@ partition_index_ki_native_i32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4568
4562
|
if ( masked_last ) {
|
|
4569
4563
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4570
4564
|
if ( mi[k * mstride] ) continue;
|
|
4571
|
-
buf[n_valid].v
|
|
4565
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
4572
4566
|
buf[n_valid].i = k;
|
|
4573
4567
|
n_valid++;
|
|
4574
4568
|
}
|
|
4575
4569
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4576
4570
|
if ( ! mi[k * mstride] ) continue;
|
|
4577
|
-
buf[n_valid + n_masked].v
|
|
4571
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
4578
4572
|
buf[n_valid + n_masked].i = k;
|
|
4579
4573
|
n_masked++;
|
|
4580
4574
|
}
|
|
@@ -4582,13 +4576,13 @@ partition_index_ki_native_i32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4582
4576
|
} else {
|
|
4583
4577
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4584
4578
|
if ( ! mi[k * mstride] ) continue;
|
|
4585
|
-
buf[n_masked].v
|
|
4579
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
4586
4580
|
buf[n_masked].i = k;
|
|
4587
4581
|
n_masked++;
|
|
4588
4582
|
}
|
|
4589
4583
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4590
4584
|
if ( mi[k * mstride] ) continue;
|
|
4591
|
-
buf[n_masked + n_valid].v
|
|
4585
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
4592
4586
|
buf[n_masked + n_valid].i = k;
|
|
4593
4587
|
n_valid++;
|
|
4594
4588
|
}
|
|
@@ -4596,7 +4590,7 @@ partition_index_ki_native_i32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4596
4590
|
}
|
|
4597
4591
|
} else {
|
|
4598
4592
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4599
|
-
buf[k].v
|
|
4593
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
4600
4594
|
buf[k].i = k;
|
|
4601
4595
|
}
|
|
4602
4596
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -4627,7 +4621,7 @@ partition_index_ki_native_i32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4627
4621
|
}
|
|
4628
4622
|
|
|
4629
4623
|
typedef struct {
|
|
4630
|
-
|
|
4624
|
+
ca_u_uint32_t v;
|
|
4631
4625
|
ca_size_t i;
|
|
4632
4626
|
} partition_index_pair_u32;
|
|
4633
4627
|
|
|
@@ -4747,13 +4741,13 @@ partition_index_ki_native_u32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4747
4741
|
if ( masked_last ) {
|
|
4748
4742
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4749
4743
|
if ( mi[k * mstride] ) continue;
|
|
4750
|
-
buf[n_valid].v
|
|
4744
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
4751
4745
|
buf[n_valid].i = k;
|
|
4752
4746
|
n_valid++;
|
|
4753
4747
|
}
|
|
4754
4748
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4755
4749
|
if ( ! mi[k * mstride] ) continue;
|
|
4756
|
-
buf[n_valid + n_masked].v
|
|
4750
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
4757
4751
|
buf[n_valid + n_masked].i = k;
|
|
4758
4752
|
n_masked++;
|
|
4759
4753
|
}
|
|
@@ -4761,13 +4755,13 @@ partition_index_ki_native_u32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4761
4755
|
} else {
|
|
4762
4756
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4763
4757
|
if ( ! mi[k * mstride] ) continue;
|
|
4764
|
-
buf[n_masked].v
|
|
4758
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
4765
4759
|
buf[n_masked].i = k;
|
|
4766
4760
|
n_masked++;
|
|
4767
4761
|
}
|
|
4768
4762
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4769
4763
|
if ( mi[k * mstride] ) continue;
|
|
4770
|
-
buf[n_masked + n_valid].v
|
|
4764
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
4771
4765
|
buf[n_masked + n_valid].i = k;
|
|
4772
4766
|
n_valid++;
|
|
4773
4767
|
}
|
|
@@ -4775,7 +4769,7 @@ partition_index_ki_native_u32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4775
4769
|
}
|
|
4776
4770
|
} else {
|
|
4777
4771
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4778
|
-
buf[k].v
|
|
4772
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
4779
4773
|
buf[k].i = k;
|
|
4780
4774
|
}
|
|
4781
4775
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -4806,7 +4800,7 @@ partition_index_ki_native_u32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4806
4800
|
}
|
|
4807
4801
|
|
|
4808
4802
|
typedef struct {
|
|
4809
|
-
|
|
4803
|
+
ca_u_int64_t v;
|
|
4810
4804
|
ca_size_t i;
|
|
4811
4805
|
} partition_index_pair_i64;
|
|
4812
4806
|
|
|
@@ -4926,13 +4920,13 @@ partition_index_ki_native_i64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4926
4920
|
if ( masked_last ) {
|
|
4927
4921
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4928
4922
|
if ( mi[k * mstride] ) continue;
|
|
4929
|
-
buf[n_valid].v
|
|
4923
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
4930
4924
|
buf[n_valid].i = k;
|
|
4931
4925
|
n_valid++;
|
|
4932
4926
|
}
|
|
4933
4927
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4934
4928
|
if ( ! mi[k * mstride] ) continue;
|
|
4935
|
-
buf[n_valid + n_masked].v
|
|
4929
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
4936
4930
|
buf[n_valid + n_masked].i = k;
|
|
4937
4931
|
n_masked++;
|
|
4938
4932
|
}
|
|
@@ -4940,13 +4934,13 @@ partition_index_ki_native_i64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4940
4934
|
} else {
|
|
4941
4935
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4942
4936
|
if ( ! mi[k * mstride] ) continue;
|
|
4943
|
-
buf[n_masked].v
|
|
4937
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
4944
4938
|
buf[n_masked].i = k;
|
|
4945
4939
|
n_masked++;
|
|
4946
4940
|
}
|
|
4947
4941
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4948
4942
|
if ( mi[k * mstride] ) continue;
|
|
4949
|
-
buf[n_masked + n_valid].v
|
|
4943
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
4950
4944
|
buf[n_masked + n_valid].i = k;
|
|
4951
4945
|
n_valid++;
|
|
4952
4946
|
}
|
|
@@ -4954,7 +4948,7 @@ partition_index_ki_native_i64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4954
4948
|
}
|
|
4955
4949
|
} else {
|
|
4956
4950
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
4957
|
-
buf[k].v
|
|
4951
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
4958
4952
|
buf[k].i = k;
|
|
4959
4953
|
}
|
|
4960
4954
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -4985,7 +4979,7 @@ partition_index_ki_native_i64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
4985
4979
|
}
|
|
4986
4980
|
|
|
4987
4981
|
typedef struct {
|
|
4988
|
-
|
|
4982
|
+
ca_u_uint64_t v;
|
|
4989
4983
|
ca_size_t i;
|
|
4990
4984
|
} partition_index_pair_u64;
|
|
4991
4985
|
|
|
@@ -5105,13 +5099,13 @@ partition_index_ki_native_u64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5105
5099
|
if ( masked_last ) {
|
|
5106
5100
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5107
5101
|
if ( mi[k * mstride] ) continue;
|
|
5108
|
-
buf[n_valid].v
|
|
5102
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
5109
5103
|
buf[n_valid].i = k;
|
|
5110
5104
|
n_valid++;
|
|
5111
5105
|
}
|
|
5112
5106
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5113
5107
|
if ( ! mi[k * mstride] ) continue;
|
|
5114
|
-
buf[n_valid + n_masked].v
|
|
5108
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
5115
5109
|
buf[n_valid + n_masked].i = k;
|
|
5116
5110
|
n_masked++;
|
|
5117
5111
|
}
|
|
@@ -5119,13 +5113,13 @@ partition_index_ki_native_u64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5119
5113
|
} else {
|
|
5120
5114
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5121
5115
|
if ( ! mi[k * mstride] ) continue;
|
|
5122
|
-
buf[n_masked].v
|
|
5116
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
5123
5117
|
buf[n_masked].i = k;
|
|
5124
5118
|
n_masked++;
|
|
5125
5119
|
}
|
|
5126
5120
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5127
5121
|
if ( mi[k * mstride] ) continue;
|
|
5128
|
-
buf[n_masked + n_valid].v
|
|
5122
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
5129
5123
|
buf[n_masked + n_valid].i = k;
|
|
5130
5124
|
n_valid++;
|
|
5131
5125
|
}
|
|
@@ -5133,7 +5127,7 @@ partition_index_ki_native_u64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5133
5127
|
}
|
|
5134
5128
|
} else {
|
|
5135
5129
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5136
|
-
buf[k].v
|
|
5130
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
5137
5131
|
buf[k].i = k;
|
|
5138
5132
|
}
|
|
5139
5133
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -5164,7 +5158,7 @@ partition_index_ki_native_u64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5164
5158
|
}
|
|
5165
5159
|
|
|
5166
5160
|
typedef struct {
|
|
5167
|
-
|
|
5161
|
+
ca_u_float32_t v;
|
|
5168
5162
|
ca_size_t i;
|
|
5169
5163
|
} partition_index_pair_f32;
|
|
5170
5164
|
|
|
@@ -5284,13 +5278,13 @@ partition_index_ki_native_f32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5284
5278
|
if ( masked_last ) {
|
|
5285
5279
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5286
5280
|
if ( mi[k * mstride] ) continue;
|
|
5287
|
-
buf[n_valid].v
|
|
5281
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
5288
5282
|
buf[n_valid].i = k;
|
|
5289
5283
|
n_valid++;
|
|
5290
5284
|
}
|
|
5291
5285
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5292
5286
|
if ( ! mi[k * mstride] ) continue;
|
|
5293
|
-
buf[n_valid + n_masked].v
|
|
5287
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
5294
5288
|
buf[n_valid + n_masked].i = k;
|
|
5295
5289
|
n_masked++;
|
|
5296
5290
|
}
|
|
@@ -5298,13 +5292,13 @@ partition_index_ki_native_f32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5298
5292
|
} else {
|
|
5299
5293
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5300
5294
|
if ( ! mi[k * mstride] ) continue;
|
|
5301
|
-
buf[n_masked].v
|
|
5295
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
5302
5296
|
buf[n_masked].i = k;
|
|
5303
5297
|
n_masked++;
|
|
5304
5298
|
}
|
|
5305
5299
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5306
5300
|
if ( mi[k * mstride] ) continue;
|
|
5307
|
-
buf[n_masked + n_valid].v
|
|
5301
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
5308
5302
|
buf[n_masked + n_valid].i = k;
|
|
5309
5303
|
n_valid++;
|
|
5310
5304
|
}
|
|
@@ -5312,7 +5306,7 @@ partition_index_ki_native_f32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5312
5306
|
}
|
|
5313
5307
|
} else {
|
|
5314
5308
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5315
|
-
buf[k].v
|
|
5309
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
5316
5310
|
buf[k].i = k;
|
|
5317
5311
|
}
|
|
5318
5312
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -5343,7 +5337,7 @@ partition_index_ki_native_f32 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5343
5337
|
}
|
|
5344
5338
|
|
|
5345
5339
|
typedef struct {
|
|
5346
|
-
|
|
5340
|
+
ca_u_float64_t v;
|
|
5347
5341
|
ca_size_t i;
|
|
5348
5342
|
} partition_index_pair_f64;
|
|
5349
5343
|
|
|
@@ -5463,13 +5457,13 @@ partition_index_ki_native_f64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5463
5457
|
if ( masked_last ) {
|
|
5464
5458
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5465
5459
|
if ( mi[k * mstride] ) continue;
|
|
5466
|
-
buf[n_valid].v
|
|
5460
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
5467
5461
|
buf[n_valid].i = k;
|
|
5468
5462
|
n_valid++;
|
|
5469
5463
|
}
|
|
5470
5464
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5471
5465
|
if ( ! mi[k * mstride] ) continue;
|
|
5472
|
-
buf[n_valid + n_masked].v
|
|
5466
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
5473
5467
|
buf[n_valid + n_masked].i = k;
|
|
5474
5468
|
n_masked++;
|
|
5475
5469
|
}
|
|
@@ -5477,13 +5471,13 @@ partition_index_ki_native_f64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5477
5471
|
} else {
|
|
5478
5472
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5479
5473
|
if ( ! mi[k * mstride] ) continue;
|
|
5480
|
-
buf[n_masked].v
|
|
5474
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
5481
5475
|
buf[n_masked].i = k;
|
|
5482
5476
|
n_masked++;
|
|
5483
5477
|
}
|
|
5484
5478
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5485
5479
|
if ( mi[k * mstride] ) continue;
|
|
5486
|
-
buf[n_masked + n_valid].v
|
|
5480
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
5487
5481
|
buf[n_masked + n_valid].i = k;
|
|
5488
5482
|
n_valid++;
|
|
5489
5483
|
}
|
|
@@ -5491,7 +5485,7 @@ partition_index_ki_native_f64 (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5491
5485
|
}
|
|
5492
5486
|
} else {
|
|
5493
5487
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5494
|
-
buf[k].v
|
|
5488
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
5495
5489
|
buf[k].i = k;
|
|
5496
5490
|
}
|
|
5497
5491
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -5642,13 +5636,13 @@ partition_index_ki_native_bool (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5642
5636
|
if ( masked_last ) {
|
|
5643
5637
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5644
5638
|
if ( mi[k * mstride] ) continue;
|
|
5645
|
-
buf[n_valid].v
|
|
5639
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
5646
5640
|
buf[n_valid].i = k;
|
|
5647
5641
|
n_valid++;
|
|
5648
5642
|
}
|
|
5649
5643
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5650
5644
|
if ( ! mi[k * mstride] ) continue;
|
|
5651
|
-
buf[n_valid + n_masked].v
|
|
5645
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
5652
5646
|
buf[n_valid + n_masked].i = k;
|
|
5653
5647
|
n_masked++;
|
|
5654
5648
|
}
|
|
@@ -5656,13 +5650,13 @@ partition_index_ki_native_bool (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5656
5650
|
} else {
|
|
5657
5651
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5658
5652
|
if ( ! mi[k * mstride] ) continue;
|
|
5659
|
-
buf[n_masked].v
|
|
5653
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
5660
5654
|
buf[n_masked].i = k;
|
|
5661
5655
|
n_masked++;
|
|
5662
5656
|
}
|
|
5663
5657
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5664
5658
|
if ( mi[k * mstride] ) continue;
|
|
5665
|
-
buf[n_masked + n_valid].v
|
|
5659
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
5666
5660
|
buf[n_masked + n_valid].i = k;
|
|
5667
5661
|
n_valid++;
|
|
5668
5662
|
}
|
|
@@ -5670,7 +5664,7 @@ partition_index_ki_native_bool (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
5670
5664
|
}
|
|
5671
5665
|
} else {
|
|
5672
5666
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5673
|
-
buf[k].v
|
|
5667
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
5674
5668
|
buf[k].i = k;
|
|
5675
5669
|
}
|
|
5676
5670
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -5845,13 +5839,13 @@ partition_index_ki_native_object_body (VALUE arg)
|
|
|
5845
5839
|
if ( masked_last ) {
|
|
5846
5840
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5847
5841
|
if ( mi[k * mstride] ) continue;
|
|
5848
|
-
buf[n_valid].v
|
|
5842
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
5849
5843
|
buf[n_valid].i = k;
|
|
5850
5844
|
n_valid++;
|
|
5851
5845
|
}
|
|
5852
5846
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5853
5847
|
if ( ! mi[k * mstride] ) continue;
|
|
5854
|
-
buf[n_valid + n_masked].v
|
|
5848
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
5855
5849
|
buf[n_valid + n_masked].i = k;
|
|
5856
5850
|
n_masked++;
|
|
5857
5851
|
}
|
|
@@ -5859,13 +5853,13 @@ partition_index_ki_native_object_body (VALUE arg)
|
|
|
5859
5853
|
} else {
|
|
5860
5854
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5861
5855
|
if ( ! mi[k * mstride] ) continue;
|
|
5862
|
-
buf[n_masked].v
|
|
5856
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
5863
5857
|
buf[n_masked].i = k;
|
|
5864
5858
|
n_masked++;
|
|
5865
5859
|
}
|
|
5866
5860
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5867
5861
|
if ( mi[k * mstride] ) continue;
|
|
5868
|
-
buf[n_masked + n_valid].v
|
|
5862
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
5869
5863
|
buf[n_masked + n_valid].i = k;
|
|
5870
5864
|
n_valid++;
|
|
5871
5865
|
}
|
|
@@ -5873,7 +5867,7 @@ partition_index_ki_native_object_body (VALUE arg)
|
|
|
5873
5867
|
}
|
|
5874
5868
|
} else {
|
|
5875
5869
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
5876
|
-
buf[k].v
|
|
5870
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
5877
5871
|
buf[k].i = k;
|
|
5878
5872
|
}
|
|
5879
5873
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -6322,13 +6316,13 @@ partition_addr_ki_native_i8 (VALUE self, CArray *ca, int axis, ca_size_t kth, in
|
|
|
6322
6316
|
if ( masked_last ) {
|
|
6323
6317
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6324
6318
|
if ( mi[k * mstride] ) continue;
|
|
6325
|
-
buf[n_valid].v
|
|
6319
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
6326
6320
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
6327
6321
|
n_valid++;
|
|
6328
6322
|
}
|
|
6329
6323
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6330
6324
|
if ( ! mi[k * mstride] ) continue;
|
|
6331
|
-
buf[n_valid + n_masked].v
|
|
6325
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
6332
6326
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
6333
6327
|
n_masked++;
|
|
6334
6328
|
}
|
|
@@ -6336,13 +6330,13 @@ partition_addr_ki_native_i8 (VALUE self, CArray *ca, int axis, ca_size_t kth, in
|
|
|
6336
6330
|
} else {
|
|
6337
6331
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6338
6332
|
if ( ! mi[k * mstride] ) continue;
|
|
6339
|
-
buf[n_masked].v
|
|
6333
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
6340
6334
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
6341
6335
|
n_masked++;
|
|
6342
6336
|
}
|
|
6343
6337
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6344
6338
|
if ( mi[k * mstride] ) continue;
|
|
6345
|
-
buf[n_masked + n_valid].v
|
|
6339
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
6346
6340
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
6347
6341
|
n_valid++;
|
|
6348
6342
|
}
|
|
@@ -6350,7 +6344,7 @@ partition_addr_ki_native_i8 (VALUE self, CArray *ca, int axis, ca_size_t kth, in
|
|
|
6350
6344
|
}
|
|
6351
6345
|
} else {
|
|
6352
6346
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6353
|
-
buf[k].v
|
|
6347
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
6354
6348
|
buf[k].i = outer_off + k * axis_vstride;
|
|
6355
6349
|
}
|
|
6356
6350
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -6533,13 +6527,13 @@ partition_addr_ki_native_u8 (VALUE self, CArray *ca, int axis, ca_size_t kth, in
|
|
|
6533
6527
|
if ( masked_last ) {
|
|
6534
6528
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6535
6529
|
if ( mi[k * mstride] ) continue;
|
|
6536
|
-
buf[n_valid].v
|
|
6530
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
6537
6531
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
6538
6532
|
n_valid++;
|
|
6539
6533
|
}
|
|
6540
6534
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6541
6535
|
if ( ! mi[k * mstride] ) continue;
|
|
6542
|
-
buf[n_valid + n_masked].v
|
|
6536
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
6543
6537
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
6544
6538
|
n_masked++;
|
|
6545
6539
|
}
|
|
@@ -6547,13 +6541,13 @@ partition_addr_ki_native_u8 (VALUE self, CArray *ca, int axis, ca_size_t kth, in
|
|
|
6547
6541
|
} else {
|
|
6548
6542
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6549
6543
|
if ( ! mi[k * mstride] ) continue;
|
|
6550
|
-
buf[n_masked].v
|
|
6544
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
6551
6545
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
6552
6546
|
n_masked++;
|
|
6553
6547
|
}
|
|
6554
6548
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6555
6549
|
if ( mi[k * mstride] ) continue;
|
|
6556
|
-
buf[n_masked + n_valid].v
|
|
6550
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
6557
6551
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
6558
6552
|
n_valid++;
|
|
6559
6553
|
}
|
|
@@ -6561,7 +6555,7 @@ partition_addr_ki_native_u8 (VALUE self, CArray *ca, int axis, ca_size_t kth, in
|
|
|
6561
6555
|
}
|
|
6562
6556
|
} else {
|
|
6563
6557
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6564
|
-
buf[k].v
|
|
6558
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
6565
6559
|
buf[k].i = outer_off + k * axis_vstride;
|
|
6566
6560
|
}
|
|
6567
6561
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -6597,7 +6591,7 @@ partition_addr_ki_native_u8 (VALUE self, CArray *ca, int axis, ca_size_t kth, in
|
|
|
6597
6591
|
}
|
|
6598
6592
|
|
|
6599
6593
|
typedef struct {
|
|
6600
|
-
|
|
6594
|
+
ca_u_int16_t v;
|
|
6601
6595
|
ca_size_t i;
|
|
6602
6596
|
} partition_addr_pair_i16;
|
|
6603
6597
|
|
|
@@ -6744,13 +6738,13 @@ partition_addr_ki_native_i16 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
6744
6738
|
if ( masked_last ) {
|
|
6745
6739
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6746
6740
|
if ( mi[k * mstride] ) continue;
|
|
6747
|
-
buf[n_valid].v
|
|
6741
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
6748
6742
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
6749
6743
|
n_valid++;
|
|
6750
6744
|
}
|
|
6751
6745
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6752
6746
|
if ( ! mi[k * mstride] ) continue;
|
|
6753
|
-
buf[n_valid + n_masked].v
|
|
6747
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
6754
6748
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
6755
6749
|
n_masked++;
|
|
6756
6750
|
}
|
|
@@ -6758,13 +6752,13 @@ partition_addr_ki_native_i16 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
6758
6752
|
} else {
|
|
6759
6753
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6760
6754
|
if ( ! mi[k * mstride] ) continue;
|
|
6761
|
-
buf[n_masked].v
|
|
6755
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
6762
6756
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
6763
6757
|
n_masked++;
|
|
6764
6758
|
}
|
|
6765
6759
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6766
6760
|
if ( mi[k * mstride] ) continue;
|
|
6767
|
-
buf[n_masked + n_valid].v
|
|
6761
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
6768
6762
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
6769
6763
|
n_valid++;
|
|
6770
6764
|
}
|
|
@@ -6772,7 +6766,7 @@ partition_addr_ki_native_i16 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
6772
6766
|
}
|
|
6773
6767
|
} else {
|
|
6774
6768
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6775
|
-
buf[k].v
|
|
6769
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
6776
6770
|
buf[k].i = outer_off + k * axis_vstride;
|
|
6777
6771
|
}
|
|
6778
6772
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -6808,7 +6802,7 @@ partition_addr_ki_native_i16 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
6808
6802
|
}
|
|
6809
6803
|
|
|
6810
6804
|
typedef struct {
|
|
6811
|
-
|
|
6805
|
+
ca_u_uint16_t v;
|
|
6812
6806
|
ca_size_t i;
|
|
6813
6807
|
} partition_addr_pair_u16;
|
|
6814
6808
|
|
|
@@ -6955,13 +6949,13 @@ partition_addr_ki_native_u16 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
6955
6949
|
if ( masked_last ) {
|
|
6956
6950
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6957
6951
|
if ( mi[k * mstride] ) continue;
|
|
6958
|
-
buf[n_valid].v
|
|
6952
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
6959
6953
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
6960
6954
|
n_valid++;
|
|
6961
6955
|
}
|
|
6962
6956
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6963
6957
|
if ( ! mi[k * mstride] ) continue;
|
|
6964
|
-
buf[n_valid + n_masked].v
|
|
6958
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
6965
6959
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
6966
6960
|
n_masked++;
|
|
6967
6961
|
}
|
|
@@ -6969,13 +6963,13 @@ partition_addr_ki_native_u16 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
6969
6963
|
} else {
|
|
6970
6964
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6971
6965
|
if ( ! mi[k * mstride] ) continue;
|
|
6972
|
-
buf[n_masked].v
|
|
6966
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
6973
6967
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
6974
6968
|
n_masked++;
|
|
6975
6969
|
}
|
|
6976
6970
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6977
6971
|
if ( mi[k * mstride] ) continue;
|
|
6978
|
-
buf[n_masked + n_valid].v
|
|
6972
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
6979
6973
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
6980
6974
|
n_valid++;
|
|
6981
6975
|
}
|
|
@@ -6983,7 +6977,7 @@ partition_addr_ki_native_u16 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
6983
6977
|
}
|
|
6984
6978
|
} else {
|
|
6985
6979
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
6986
|
-
buf[k].v
|
|
6980
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
6987
6981
|
buf[k].i = outer_off + k * axis_vstride;
|
|
6988
6982
|
}
|
|
6989
6983
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -7019,7 +7013,7 @@ partition_addr_ki_native_u16 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7019
7013
|
}
|
|
7020
7014
|
|
|
7021
7015
|
typedef struct {
|
|
7022
|
-
|
|
7016
|
+
ca_u_int32_t v;
|
|
7023
7017
|
ca_size_t i;
|
|
7024
7018
|
} partition_addr_pair_i32;
|
|
7025
7019
|
|
|
@@ -7166,13 +7160,13 @@ partition_addr_ki_native_i32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7166
7160
|
if ( masked_last ) {
|
|
7167
7161
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7168
7162
|
if ( mi[k * mstride] ) continue;
|
|
7169
|
-
buf[n_valid].v
|
|
7163
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
7170
7164
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
7171
7165
|
n_valid++;
|
|
7172
7166
|
}
|
|
7173
7167
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7174
7168
|
if ( ! mi[k * mstride] ) continue;
|
|
7175
|
-
buf[n_valid + n_masked].v
|
|
7169
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
7176
7170
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
7177
7171
|
n_masked++;
|
|
7178
7172
|
}
|
|
@@ -7180,13 +7174,13 @@ partition_addr_ki_native_i32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7180
7174
|
} else {
|
|
7181
7175
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7182
7176
|
if ( ! mi[k * mstride] ) continue;
|
|
7183
|
-
buf[n_masked].v
|
|
7177
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
7184
7178
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
7185
7179
|
n_masked++;
|
|
7186
7180
|
}
|
|
7187
7181
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7188
7182
|
if ( mi[k * mstride] ) continue;
|
|
7189
|
-
buf[n_masked + n_valid].v
|
|
7183
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
7190
7184
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
7191
7185
|
n_valid++;
|
|
7192
7186
|
}
|
|
@@ -7194,7 +7188,7 @@ partition_addr_ki_native_i32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7194
7188
|
}
|
|
7195
7189
|
} else {
|
|
7196
7190
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7197
|
-
buf[k].v
|
|
7191
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
7198
7192
|
buf[k].i = outer_off + k * axis_vstride;
|
|
7199
7193
|
}
|
|
7200
7194
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -7230,7 +7224,7 @@ partition_addr_ki_native_i32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7230
7224
|
}
|
|
7231
7225
|
|
|
7232
7226
|
typedef struct {
|
|
7233
|
-
|
|
7227
|
+
ca_u_uint32_t v;
|
|
7234
7228
|
ca_size_t i;
|
|
7235
7229
|
} partition_addr_pair_u32;
|
|
7236
7230
|
|
|
@@ -7377,13 +7371,13 @@ partition_addr_ki_native_u32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7377
7371
|
if ( masked_last ) {
|
|
7378
7372
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7379
7373
|
if ( mi[k * mstride] ) continue;
|
|
7380
|
-
buf[n_valid].v
|
|
7374
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
7381
7375
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
7382
7376
|
n_valid++;
|
|
7383
7377
|
}
|
|
7384
7378
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7385
7379
|
if ( ! mi[k * mstride] ) continue;
|
|
7386
|
-
buf[n_valid + n_masked].v
|
|
7380
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
7387
7381
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
7388
7382
|
n_masked++;
|
|
7389
7383
|
}
|
|
@@ -7391,13 +7385,13 @@ partition_addr_ki_native_u32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7391
7385
|
} else {
|
|
7392
7386
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7393
7387
|
if ( ! mi[k * mstride] ) continue;
|
|
7394
|
-
buf[n_masked].v
|
|
7388
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
7395
7389
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
7396
7390
|
n_masked++;
|
|
7397
7391
|
}
|
|
7398
7392
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7399
7393
|
if ( mi[k * mstride] ) continue;
|
|
7400
|
-
buf[n_masked + n_valid].v
|
|
7394
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
7401
7395
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
7402
7396
|
n_valid++;
|
|
7403
7397
|
}
|
|
@@ -7405,7 +7399,7 @@ partition_addr_ki_native_u32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7405
7399
|
}
|
|
7406
7400
|
} else {
|
|
7407
7401
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7408
|
-
buf[k].v
|
|
7402
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
7409
7403
|
buf[k].i = outer_off + k * axis_vstride;
|
|
7410
7404
|
}
|
|
7411
7405
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -7441,7 +7435,7 @@ partition_addr_ki_native_u32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7441
7435
|
}
|
|
7442
7436
|
|
|
7443
7437
|
typedef struct {
|
|
7444
|
-
|
|
7438
|
+
ca_u_int64_t v;
|
|
7445
7439
|
ca_size_t i;
|
|
7446
7440
|
} partition_addr_pair_i64;
|
|
7447
7441
|
|
|
@@ -7588,13 +7582,13 @@ partition_addr_ki_native_i64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7588
7582
|
if ( masked_last ) {
|
|
7589
7583
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7590
7584
|
if ( mi[k * mstride] ) continue;
|
|
7591
|
-
buf[n_valid].v
|
|
7585
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
7592
7586
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
7593
7587
|
n_valid++;
|
|
7594
7588
|
}
|
|
7595
7589
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7596
7590
|
if ( ! mi[k * mstride] ) continue;
|
|
7597
|
-
buf[n_valid + n_masked].v
|
|
7591
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
7598
7592
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
7599
7593
|
n_masked++;
|
|
7600
7594
|
}
|
|
@@ -7602,13 +7596,13 @@ partition_addr_ki_native_i64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7602
7596
|
} else {
|
|
7603
7597
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7604
7598
|
if ( ! mi[k * mstride] ) continue;
|
|
7605
|
-
buf[n_masked].v
|
|
7599
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
7606
7600
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
7607
7601
|
n_masked++;
|
|
7608
7602
|
}
|
|
7609
7603
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7610
7604
|
if ( mi[k * mstride] ) continue;
|
|
7611
|
-
buf[n_masked + n_valid].v
|
|
7605
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
7612
7606
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
7613
7607
|
n_valid++;
|
|
7614
7608
|
}
|
|
@@ -7616,7 +7610,7 @@ partition_addr_ki_native_i64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7616
7610
|
}
|
|
7617
7611
|
} else {
|
|
7618
7612
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7619
|
-
buf[k].v
|
|
7613
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
7620
7614
|
buf[k].i = outer_off + k * axis_vstride;
|
|
7621
7615
|
}
|
|
7622
7616
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -7652,7 +7646,7 @@ partition_addr_ki_native_i64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7652
7646
|
}
|
|
7653
7647
|
|
|
7654
7648
|
typedef struct {
|
|
7655
|
-
|
|
7649
|
+
ca_u_uint64_t v;
|
|
7656
7650
|
ca_size_t i;
|
|
7657
7651
|
} partition_addr_pair_u64;
|
|
7658
7652
|
|
|
@@ -7799,13 +7793,13 @@ partition_addr_ki_native_u64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7799
7793
|
if ( masked_last ) {
|
|
7800
7794
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7801
7795
|
if ( mi[k * mstride] ) continue;
|
|
7802
|
-
buf[n_valid].v
|
|
7796
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
7803
7797
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
7804
7798
|
n_valid++;
|
|
7805
7799
|
}
|
|
7806
7800
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7807
7801
|
if ( ! mi[k * mstride] ) continue;
|
|
7808
|
-
buf[n_valid + n_masked].v
|
|
7802
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
7809
7803
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
7810
7804
|
n_masked++;
|
|
7811
7805
|
}
|
|
@@ -7813,13 +7807,13 @@ partition_addr_ki_native_u64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7813
7807
|
} else {
|
|
7814
7808
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7815
7809
|
if ( ! mi[k * mstride] ) continue;
|
|
7816
|
-
buf[n_masked].v
|
|
7810
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
7817
7811
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
7818
7812
|
n_masked++;
|
|
7819
7813
|
}
|
|
7820
7814
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7821
7815
|
if ( mi[k * mstride] ) continue;
|
|
7822
|
-
buf[n_masked + n_valid].v
|
|
7816
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
7823
7817
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
7824
7818
|
n_valid++;
|
|
7825
7819
|
}
|
|
@@ -7827,7 +7821,7 @@ partition_addr_ki_native_u64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7827
7821
|
}
|
|
7828
7822
|
} else {
|
|
7829
7823
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
7830
|
-
buf[k].v
|
|
7824
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
7831
7825
|
buf[k].i = outer_off + k * axis_vstride;
|
|
7832
7826
|
}
|
|
7833
7827
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -7863,7 +7857,7 @@ partition_addr_ki_native_u64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
7863
7857
|
}
|
|
7864
7858
|
|
|
7865
7859
|
typedef struct {
|
|
7866
|
-
|
|
7860
|
+
ca_u_float32_t v;
|
|
7867
7861
|
ca_size_t i;
|
|
7868
7862
|
} partition_addr_pair_f32;
|
|
7869
7863
|
|
|
@@ -8010,13 +8004,13 @@ partition_addr_ki_native_f32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
8010
8004
|
if ( masked_last ) {
|
|
8011
8005
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8012
8006
|
if ( mi[k * mstride] ) continue;
|
|
8013
|
-
buf[n_valid].v
|
|
8007
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
8014
8008
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
8015
8009
|
n_valid++;
|
|
8016
8010
|
}
|
|
8017
8011
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8018
8012
|
if ( ! mi[k * mstride] ) continue;
|
|
8019
|
-
buf[n_valid + n_masked].v
|
|
8013
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
8020
8014
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
8021
8015
|
n_masked++;
|
|
8022
8016
|
}
|
|
@@ -8024,13 +8018,13 @@ partition_addr_ki_native_f32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
8024
8018
|
} else {
|
|
8025
8019
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8026
8020
|
if ( ! mi[k * mstride] ) continue;
|
|
8027
|
-
buf[n_masked].v
|
|
8021
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
8028
8022
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
8029
8023
|
n_masked++;
|
|
8030
8024
|
}
|
|
8031
8025
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8032
8026
|
if ( mi[k * mstride] ) continue;
|
|
8033
|
-
buf[n_masked + n_valid].v
|
|
8027
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
8034
8028
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
8035
8029
|
n_valid++;
|
|
8036
8030
|
}
|
|
@@ -8038,7 +8032,7 @@ partition_addr_ki_native_f32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
8038
8032
|
}
|
|
8039
8033
|
} else {
|
|
8040
8034
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8041
|
-
buf[k].v
|
|
8035
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
8042
8036
|
buf[k].i = outer_off + k * axis_vstride;
|
|
8043
8037
|
}
|
|
8044
8038
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -8074,7 +8068,7 @@ partition_addr_ki_native_f32 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
8074
8068
|
}
|
|
8075
8069
|
|
|
8076
8070
|
typedef struct {
|
|
8077
|
-
|
|
8071
|
+
ca_u_float64_t v;
|
|
8078
8072
|
ca_size_t i;
|
|
8079
8073
|
} partition_addr_pair_f64;
|
|
8080
8074
|
|
|
@@ -8221,13 +8215,13 @@ partition_addr_ki_native_f64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
8221
8215
|
if ( masked_last ) {
|
|
8222
8216
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8223
8217
|
if ( mi[k * mstride] ) continue;
|
|
8224
|
-
buf[n_valid].v
|
|
8218
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
8225
8219
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
8226
8220
|
n_valid++;
|
|
8227
8221
|
}
|
|
8228
8222
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8229
8223
|
if ( ! mi[k * mstride] ) continue;
|
|
8230
|
-
buf[n_valid + n_masked].v
|
|
8224
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
8231
8225
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
8232
8226
|
n_masked++;
|
|
8233
8227
|
}
|
|
@@ -8235,13 +8229,13 @@ partition_addr_ki_native_f64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
8235
8229
|
} else {
|
|
8236
8230
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8237
8231
|
if ( ! mi[k * mstride] ) continue;
|
|
8238
|
-
buf[n_masked].v
|
|
8232
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
8239
8233
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
8240
8234
|
n_masked++;
|
|
8241
8235
|
}
|
|
8242
8236
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8243
8237
|
if ( mi[k * mstride] ) continue;
|
|
8244
|
-
buf[n_masked + n_valid].v
|
|
8238
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
8245
8239
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
8246
8240
|
n_valid++;
|
|
8247
8241
|
}
|
|
@@ -8249,7 +8243,7 @@ partition_addr_ki_native_f64 (VALUE self, CArray *ca, int axis, ca_size_t kth, i
|
|
|
8249
8243
|
}
|
|
8250
8244
|
} else {
|
|
8251
8245
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8252
|
-
buf[k].v
|
|
8246
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
8253
8247
|
buf[k].i = outer_off + k * axis_vstride;
|
|
8254
8248
|
}
|
|
8255
8249
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -8432,13 +8426,13 @@ partition_addr_ki_native_bool (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
8432
8426
|
if ( masked_last ) {
|
|
8433
8427
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8434
8428
|
if ( mi[k * mstride] ) continue;
|
|
8435
|
-
buf[n_valid].v
|
|
8429
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
8436
8430
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
8437
8431
|
n_valid++;
|
|
8438
8432
|
}
|
|
8439
8433
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8440
8434
|
if ( ! mi[k * mstride] ) continue;
|
|
8441
|
-
buf[n_valid + n_masked].v
|
|
8435
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
8442
8436
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
8443
8437
|
n_masked++;
|
|
8444
8438
|
}
|
|
@@ -8446,13 +8440,13 @@ partition_addr_ki_native_bool (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
8446
8440
|
} else {
|
|
8447
8441
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8448
8442
|
if ( ! mi[k * mstride] ) continue;
|
|
8449
|
-
buf[n_masked].v
|
|
8443
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
8450
8444
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
8451
8445
|
n_masked++;
|
|
8452
8446
|
}
|
|
8453
8447
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8454
8448
|
if ( mi[k * mstride] ) continue;
|
|
8455
|
-
buf[n_masked + n_valid].v
|
|
8449
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
8456
8450
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
8457
8451
|
n_valid++;
|
|
8458
8452
|
}
|
|
@@ -8460,7 +8454,7 @@ partition_addr_ki_native_bool (VALUE self, CArray *ca, int axis, ca_size_t kth,
|
|
|
8460
8454
|
}
|
|
8461
8455
|
} else {
|
|
8462
8456
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8463
|
-
buf[k].v
|
|
8457
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
8464
8458
|
buf[k].i = outer_off + k * axis_vstride;
|
|
8465
8459
|
}
|
|
8466
8460
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -8667,13 +8661,13 @@ partition_addr_ki_native_object_body (VALUE arg)
|
|
|
8667
8661
|
if ( masked_last ) {
|
|
8668
8662
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8669
8663
|
if ( mi[k * mstride] ) continue;
|
|
8670
|
-
buf[n_valid].v
|
|
8664
|
+
memcpy(&buf[n_valid].v, pi + k * istride, sizeof(buf[n_valid].v));
|
|
8671
8665
|
buf[n_valid].i = outer_off + k * axis_vstride;
|
|
8672
8666
|
n_valid++;
|
|
8673
8667
|
}
|
|
8674
8668
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8675
8669
|
if ( ! mi[k * mstride] ) continue;
|
|
8676
|
-
buf[n_valid + n_masked].v
|
|
8670
|
+
memcpy(&buf[n_valid + n_masked].v, pi + k * istride, sizeof(buf[n_valid + n_masked].v));
|
|
8677
8671
|
buf[n_valid + n_masked].i = outer_off + k * axis_vstride;
|
|
8678
8672
|
n_masked++;
|
|
8679
8673
|
}
|
|
@@ -8681,13 +8675,13 @@ partition_addr_ki_native_object_body (VALUE arg)
|
|
|
8681
8675
|
} else {
|
|
8682
8676
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8683
8677
|
if ( ! mi[k * mstride] ) continue;
|
|
8684
|
-
buf[n_masked].v
|
|
8678
|
+
memcpy(&buf[n_masked].v, pi + k * istride, sizeof(buf[n_masked].v));
|
|
8685
8679
|
buf[n_masked].i = outer_off + k * axis_vstride;
|
|
8686
8680
|
n_masked++;
|
|
8687
8681
|
}
|
|
8688
8682
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8689
8683
|
if ( mi[k * mstride] ) continue;
|
|
8690
|
-
buf[n_masked + n_valid].v
|
|
8684
|
+
memcpy(&buf[n_masked + n_valid].v, pi + k * istride, sizeof(buf[n_masked + n_valid].v));
|
|
8691
8685
|
buf[n_masked + n_valid].i = outer_off + k * axis_vstride;
|
|
8692
8686
|
n_valid++;
|
|
8693
8687
|
}
|
|
@@ -8695,7 +8689,7 @@ partition_addr_ki_native_object_body (VALUE arg)
|
|
|
8695
8689
|
}
|
|
8696
8690
|
} else {
|
|
8697
8691
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
8698
|
-
buf[k].v
|
|
8692
|
+
memcpy(&buf[k].v, pi + k * istride, sizeof(buf[k].v));
|
|
8699
8693
|
buf[k].i = outer_off + k * axis_vstride;
|
|
8700
8694
|
}
|
|
8701
8695
|
sort_lo = 0; sort_n = fiber_n;
|
|
@@ -9068,7 +9062,7 @@ rank_index_ki_native_i8 (VALUE self, CArray *ca, int axis, int do_stable, int de
|
|
|
9068
9062
|
ca_size_t k_unmasked = 0;
|
|
9069
9063
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
9070
9064
|
if ( mi && mi[k * mstride] ) continue;
|
|
9071
|
-
buf[k_unmasked].v
|
|
9065
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
9072
9066
|
buf[k_unmasked].i = k;
|
|
9073
9067
|
k_unmasked++;
|
|
9074
9068
|
}
|
|
@@ -9199,7 +9193,7 @@ rank_index_ki_native_u8 (VALUE self, CArray *ca, int axis, int do_stable, int de
|
|
|
9199
9193
|
ca_size_t k_unmasked = 0;
|
|
9200
9194
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
9201
9195
|
if ( mi && mi[k * mstride] ) continue;
|
|
9202
|
-
buf[k_unmasked].v
|
|
9196
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
9203
9197
|
buf[k_unmasked].i = k;
|
|
9204
9198
|
k_unmasked++;
|
|
9205
9199
|
}
|
|
@@ -9274,7 +9268,7 @@ rank_index_ki_native_u8 (VALUE self, CArray *ca, int axis, int do_stable, int de
|
|
|
9274
9268
|
}
|
|
9275
9269
|
|
|
9276
9270
|
typedef struct {
|
|
9277
|
-
|
|
9271
|
+
ca_u_int16_t v;
|
|
9278
9272
|
ca_size_t i;
|
|
9279
9273
|
} rank_index_pair_i16;
|
|
9280
9274
|
|
|
@@ -9330,7 +9324,7 @@ rank_index_ki_native_i16 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9330
9324
|
ca_size_t k_unmasked = 0;
|
|
9331
9325
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
9332
9326
|
if ( mi && mi[k * mstride] ) continue;
|
|
9333
|
-
buf[k_unmasked].v
|
|
9327
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
9334
9328
|
buf[k_unmasked].i = k;
|
|
9335
9329
|
k_unmasked++;
|
|
9336
9330
|
}
|
|
@@ -9405,7 +9399,7 @@ rank_index_ki_native_i16 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9405
9399
|
}
|
|
9406
9400
|
|
|
9407
9401
|
typedef struct {
|
|
9408
|
-
|
|
9402
|
+
ca_u_uint16_t v;
|
|
9409
9403
|
ca_size_t i;
|
|
9410
9404
|
} rank_index_pair_u16;
|
|
9411
9405
|
|
|
@@ -9461,7 +9455,7 @@ rank_index_ki_native_u16 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9461
9455
|
ca_size_t k_unmasked = 0;
|
|
9462
9456
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
9463
9457
|
if ( mi && mi[k * mstride] ) continue;
|
|
9464
|
-
buf[k_unmasked].v
|
|
9458
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
9465
9459
|
buf[k_unmasked].i = k;
|
|
9466
9460
|
k_unmasked++;
|
|
9467
9461
|
}
|
|
@@ -9536,7 +9530,7 @@ rank_index_ki_native_u16 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9536
9530
|
}
|
|
9537
9531
|
|
|
9538
9532
|
typedef struct {
|
|
9539
|
-
|
|
9533
|
+
ca_u_int32_t v;
|
|
9540
9534
|
ca_size_t i;
|
|
9541
9535
|
} rank_index_pair_i32;
|
|
9542
9536
|
|
|
@@ -9592,7 +9586,7 @@ rank_index_ki_native_i32 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9592
9586
|
ca_size_t k_unmasked = 0;
|
|
9593
9587
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
9594
9588
|
if ( mi && mi[k * mstride] ) continue;
|
|
9595
|
-
buf[k_unmasked].v
|
|
9589
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
9596
9590
|
buf[k_unmasked].i = k;
|
|
9597
9591
|
k_unmasked++;
|
|
9598
9592
|
}
|
|
@@ -9667,7 +9661,7 @@ rank_index_ki_native_i32 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9667
9661
|
}
|
|
9668
9662
|
|
|
9669
9663
|
typedef struct {
|
|
9670
|
-
|
|
9664
|
+
ca_u_uint32_t v;
|
|
9671
9665
|
ca_size_t i;
|
|
9672
9666
|
} rank_index_pair_u32;
|
|
9673
9667
|
|
|
@@ -9723,7 +9717,7 @@ rank_index_ki_native_u32 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9723
9717
|
ca_size_t k_unmasked = 0;
|
|
9724
9718
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
9725
9719
|
if ( mi && mi[k * mstride] ) continue;
|
|
9726
|
-
buf[k_unmasked].v
|
|
9720
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
9727
9721
|
buf[k_unmasked].i = k;
|
|
9728
9722
|
k_unmasked++;
|
|
9729
9723
|
}
|
|
@@ -9798,7 +9792,7 @@ rank_index_ki_native_u32 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9798
9792
|
}
|
|
9799
9793
|
|
|
9800
9794
|
typedef struct {
|
|
9801
|
-
|
|
9795
|
+
ca_u_int64_t v;
|
|
9802
9796
|
ca_size_t i;
|
|
9803
9797
|
} rank_index_pair_i64;
|
|
9804
9798
|
|
|
@@ -9854,7 +9848,7 @@ rank_index_ki_native_i64 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9854
9848
|
ca_size_t k_unmasked = 0;
|
|
9855
9849
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
9856
9850
|
if ( mi && mi[k * mstride] ) continue;
|
|
9857
|
-
buf[k_unmasked].v
|
|
9851
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
9858
9852
|
buf[k_unmasked].i = k;
|
|
9859
9853
|
k_unmasked++;
|
|
9860
9854
|
}
|
|
@@ -9929,7 +9923,7 @@ rank_index_ki_native_i64 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9929
9923
|
}
|
|
9930
9924
|
|
|
9931
9925
|
typedef struct {
|
|
9932
|
-
|
|
9926
|
+
ca_u_uint64_t v;
|
|
9933
9927
|
ca_size_t i;
|
|
9934
9928
|
} rank_index_pair_u64;
|
|
9935
9929
|
|
|
@@ -9985,7 +9979,7 @@ rank_index_ki_native_u64 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
9985
9979
|
ca_size_t k_unmasked = 0;
|
|
9986
9980
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
9987
9981
|
if ( mi && mi[k * mstride] ) continue;
|
|
9988
|
-
buf[k_unmasked].v
|
|
9982
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
9989
9983
|
buf[k_unmasked].i = k;
|
|
9990
9984
|
k_unmasked++;
|
|
9991
9985
|
}
|
|
@@ -10060,7 +10054,7 @@ rank_index_ki_native_u64 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
10060
10054
|
}
|
|
10061
10055
|
|
|
10062
10056
|
typedef struct {
|
|
10063
|
-
|
|
10057
|
+
ca_u_float32_t v;
|
|
10064
10058
|
ca_size_t i;
|
|
10065
10059
|
} rank_index_pair_f32;
|
|
10066
10060
|
|
|
@@ -10116,7 +10110,7 @@ rank_index_ki_native_f32 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
10116
10110
|
ca_size_t k_unmasked = 0;
|
|
10117
10111
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
10118
10112
|
if ( mi && mi[k * mstride] ) continue;
|
|
10119
|
-
buf[k_unmasked].v
|
|
10113
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
10120
10114
|
buf[k_unmasked].i = k;
|
|
10121
10115
|
k_unmasked++;
|
|
10122
10116
|
}
|
|
@@ -10197,7 +10191,7 @@ rank_index_ki_native_f32 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
10197
10191
|
}
|
|
10198
10192
|
|
|
10199
10193
|
typedef struct {
|
|
10200
|
-
|
|
10194
|
+
ca_u_float64_t v;
|
|
10201
10195
|
ca_size_t i;
|
|
10202
10196
|
} rank_index_pair_f64;
|
|
10203
10197
|
|
|
@@ -10253,7 +10247,7 @@ rank_index_ki_native_f64 (VALUE self, CArray *ca, int axis, int do_stable, int d
|
|
|
10253
10247
|
ca_size_t k_unmasked = 0;
|
|
10254
10248
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
10255
10249
|
if ( mi && mi[k * mstride] ) continue;
|
|
10256
|
-
buf[k_unmasked].v
|
|
10250
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
10257
10251
|
buf[k_unmasked].i = k;
|
|
10258
10252
|
k_unmasked++;
|
|
10259
10253
|
}
|
|
@@ -10390,7 +10384,7 @@ rank_index_ki_native_bool (VALUE self, CArray *ca, int axis, int do_stable, int
|
|
|
10390
10384
|
ca_size_t k_unmasked = 0;
|
|
10391
10385
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
10392
10386
|
if ( mi && mi[k * mstride] ) continue;
|
|
10393
|
-
buf[k_unmasked].v
|
|
10387
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
10394
10388
|
buf[k_unmasked].i = k;
|
|
10395
10389
|
k_unmasked++;
|
|
10396
10390
|
}
|
|
@@ -10555,7 +10549,7 @@ rank_index_ki_native_object_body (VALUE arg)
|
|
|
10555
10549
|
ca_size_t k_unmasked = 0;
|
|
10556
10550
|
for ( ca_size_t k = 0; k < fiber_n; k++ ) {
|
|
10557
10551
|
if ( mi && mi[k * mstride] ) continue;
|
|
10558
|
-
buf[k_unmasked].v
|
|
10552
|
+
memcpy(&buf[k_unmasked].v, pi + k * istride, sizeof(buf[k_unmasked].v));
|
|
10559
10553
|
buf[k_unmasked].i = k;
|
|
10560
10554
|
k_unmasked++;
|
|
10561
10555
|
}
|
|
@@ -10697,10 +10691,7 @@ rank_index_ki_native_fixlen (VALUE self, CArray *ca, int axis, int do_stable, in
|
|
|
10697
10691
|
ca_size_t fiber_n = st_in.slab_elements;
|
|
10698
10692
|
volatile VALUE hbuf = 0, haux = 0;
|
|
10699
10693
|
rank_index_pair_fixlen *buf = ALLOCV_N(rank_index_pair_fixlen, hbuf, fiber_n);
|
|
10700
|
-
|
|
10701
|
-
if ( do_stable ) {
|
|
10702
|
-
aux = ALLOCV_N(rank_index_pair_fixlen, haux, fiber_n);
|
|
10703
|
-
}
|
|
10694
|
+
(void) haux;
|
|
10704
10695
|
|
|
10705
10696
|
char *pi, *po;
|
|
10706
10697
|
boolean8_t *mi, *mo;
|