carray 3.0.4 → 3.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +438 -0
- data/README.md +1 -1
- data/carray.gemspec +3 -2
- data/ext/ca_array_pool.c +25 -1
- data/ext/ca_axis_dispatch.c +19 -20
- data/ext/ca_axis_group.c +1 -1
- data/ext/ca_categorical_iterator.c +34 -27
- data/ext/ca_compare.c +4 -4
- data/ext/ca_composite_dispatch.c +9 -9
- data/ext/ca_kernel_iterator.c +122 -237
- data/ext/ca_kernel_iterator.h +522 -337
- data/ext/ca_obj_array.c +69 -19
- data/ext/ca_obj_bincmp.c +10 -1
- data/ext/ca_obj_binop.c +11 -1
- data/ext/ca_obj_bitarray.c +5 -1
- data/ext/ca_obj_bitfield.c +60 -43
- data/ext/ca_obj_byte_swap.c +4 -1
- data/ext/ca_obj_const_string.c +15 -3
- data/ext/ca_obj_face.c +44 -1
- data/ext/ca_obj_fake.c +3 -1
- data/ext/ca_obj_field.c +13 -3
- data/ext/ca_obj_grid.c +219 -17
- data/ext/ca_obj_meld.c +69 -113
- data/ext/ca_obj_moncmp.c +9 -1
- data/ext/ca_obj_monop.c +86 -12
- data/ext/ca_obj_object.c +118 -32
- data/ext/ca_obj_record.c +3 -0
- data/ext/ca_obj_reduce.c +19 -1
- data/ext/ca_obj_refer.c +80 -26
- data/ext/ca_obj_remap.c +69 -10
- data/ext/ca_obj_roll.c +27 -6
- data/ext/ca_obj_select.c +38 -6
- data/ext/ca_obj_select_axis.c +1 -0
- data/ext/ca_obj_shift.c +32 -7
- data/ext/ca_obj_stack.c +311 -111
- data/ext/ca_obj_stride.c +159 -64
- data/ext/ca_obj_string.c +27 -2
- data/ext/ca_obj_tile.c +28 -7
- data/ext/ca_obj_transpose.c +8 -4
- data/ext/ca_obj_triop.c +12 -1
- data/ext/ca_obj_window.c +80 -50
- data/ext/ca_op_ipower.c +12 -12
- data/ext/ca_sort_kernels.h +6 -3
- data/ext/caframe_csv_reader.c +1 -1
- data/ext/carray.h +35 -1
- data/ext/carray_access.c +43 -67
- data/ext/carray_address_basis.c +134 -0
- data/ext/carray_attribute.c +32 -0
- data/ext/carray_broadcast.c +3 -4
- data/ext/carray_build_flags.h +1 -1
- data/ext/carray_cast.c +251 -93
- data/ext/carray_cast_func.rb +56 -26
- data/ext/carray_conversion.c +11 -7
- data/ext/carray_core.c +814 -72
- data/ext/carray_count.c +6 -0
- data/ext/carray_element.c +22 -13
- data/ext/carray_factorize.c +20 -20
- data/ext/carray_generate.c +8 -2
- data/ext/carray_histogram.c +26 -4
- data/ext/carray_index_classifier.c +4 -4
- data/ext/carray_internal.h +159 -12
- data/ext/carray_kernels_bincmp.c +2174 -170
- data/ext/carray_kernels_binop.c +25653 -5487
- data/ext/carray_kernels_init.c +8 -8
- data/ext/carray_kernels_moncmp.c +96 -96
- data/ext/carray_kernels_monop.c +12253 -5235
- data/ext/carray_kernels_reduce_aggregate.c +6150 -2423
- data/ext/carray_kernels_reduce_boolean.c +1533 -15
- data/ext/carray_kernels_reduce_cumulative.c +2442 -882
- data/ext/carray_kernels_reduce_extreme.c +5658 -1661
- data/ext/carray_kernels_reduce_variance.c +2534 -402
- data/ext/carray_kernels_scan.c +368 -368
- data/ext/carray_kernels_search.c +4551 -604
- data/ext/carray_kernels_sort.c +659 -751
- data/ext/carray_kernels_triop.c +114 -114
- data/ext/carray_key_windows.c +4 -0
- data/ext/carray_lazy.c +47 -0
- data/ext/carray_loop.c +1 -1
- data/ext/carray_mask.c +175 -161
- data/ext/carray_median_percentile.c +4 -4
- data/ext/carray_memory_view.c +15 -9
- data/ext/carray_operator.c +152 -49
- data/ext/carray_order.c +230 -10
- data/ext/carray_random.c +22 -19
- data/ext/carray_scatter.c +24 -7
- data/ext/carray_slab.c +128 -29
- data/ext/carray_sort.c +224 -16
- data/ext/carray_sort_kernel.c +5 -7
- data/ext/carray_struct.c +35 -43
- data/ext/carray_test.c +74 -19
- data/ext/carray_time_text.c +6 -4
- data/ext/carray_utils.c +63 -21
- data/ext/extconf.rb +11 -0
- data/ext/mkkernel.rb +546 -199
- data/ext/ruby_carray.c +4 -1
- data/ext/version.h +4 -4
- data/lib/carray/attribute.rb +42 -5
- data/lib/carray/autoload_carray.rb +3 -3
- data/lib/carray/autoload_method_extension.rb +5 -3
- data/lib/carray/axis_group.rb +13 -7
- data/lib/carray/basics.rb +28 -8
- data/lib/carray/block_iterator.rb +17 -3
- data/lib/carray/categorical.rb +35 -23
- data/lib/carray/categorical_iterator.rb +8 -8
- data/lib/carray/complex.rb +2 -2
- data/lib/carray/conditional.rb +3 -2
- data/lib/carray/const_string.rb +10 -0
- data/lib/carray/data_type_extension.rb +8 -1
- data/lib/carray/fixlen_string.rb +41 -2
- data/lib/carray/frame/column_verbs.rb +48 -16
- data/lib/carray/frame/concat.rb +17 -3
- data/lib/carray/frame/convert.rb +19 -0
- data/lib/carray/frame/csv_parser.rb +32 -32
- data/lib/carray/frame/describe.rb +4 -2
- data/lib/carray/frame/frame.rb +405 -85
- data/lib/carray/frame/group.rb +777 -64
- data/lib/carray/frame/io.rb +212 -72
- data/lib/carray/frame/join.rb +146 -37
- data/lib/carray/frame/records.rb +3 -3
- data/lib/carray/frame/reshape.rb +89 -11
- data/lib/carray/frame/sort.rb +57 -9
- data/lib/carray/frame/verbs.rb +384 -49
- data/lib/carray/frame/windows.rb +44 -6
- data/lib/carray/fuse_source.rb +31 -2
- data/lib/carray/inspect.rb +7 -2
- data/lib/carray/iterator.rb +32 -0
- data/lib/carray/lazy.rb +52 -8
- data/lib/carray/mask_gap_fill.rb +37 -17
- data/lib/carray/meld_reduce.rb +1 -1
- data/lib/carray/methods/choose.rb +3 -2
- data/lib/carray/methods/is_in.rb +8 -1
- data/lib/carray/methods/meshgrid.rb +3 -1
- data/lib/carray/runtime.rb +47 -8
- data/lib/carray/segment_iterator.rb +35 -16
- data/lib/carray/serialize.rb +53 -19
- data/lib/carray/stack.rb +33 -18
- data/lib/carray/string.rb +8 -0
- data/lib/carray/string_operation_extension.rb +13 -5
- data/lib/carray/struct_builder.rb +5 -3
- data/lib/carray/time.rb +112 -68
- data/lib/carray/window_iterator.rb +16 -4
- data/yard-stubs/ca_obj_array.rb +26 -1
- data/yard-stubs/ca_obj_transpose.rb +5 -4
- data/yard-stubs/carray_attribute.rb +3 -1
- data/yard-stubs/carray_cast.rb +10 -5
- data/yard-stubs/carray_conversion.rb +13 -3
- data/yard-stubs/carray_element.rb +7 -6
- data/yard-stubs/carray_mask.rb +28 -4
- data/yard-stubs/carray_math.rb +45 -20
- data/yard-stubs/carray_memory_view.rb +7 -0
- data/yard-stubs/carray_order.rb +100 -4
- data/yard-stubs/carray_scatter.rb +7 -5
- data/yard-stubs/carray_test.rb +7 -4
- metadata +18 -4
data/ext/carray_kernels_triop.c
CHANGED
|
@@ -120,9 +120,9 @@ ca_triop_fma_int16_t (ca_size_t n, boolean8_t *m,
|
|
|
120
120
|
char *ptr3, ca_size_t i3,
|
|
121
121
|
char *ptr4, ca_size_t i4)
|
|
122
122
|
{
|
|
123
|
-
|
|
124
|
-
*q3 = (
|
|
125
|
-
|
|
123
|
+
ca_u_int16_t *q1 = (ca_u_int16_t *) ptr1, *q2 = (ca_u_int16_t *) ptr2,
|
|
124
|
+
*q3 = (ca_u_int16_t *) ptr3, *q4 = (ca_u_int16_t *) ptr4;
|
|
125
|
+
ca_u_int16_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
126
126
|
ca_size_t k;
|
|
127
127
|
if ( m ) {
|
|
128
128
|
boolean8_t *pm;
|
|
@@ -154,9 +154,9 @@ ca_triop_fma_uint16_t (ca_size_t n, boolean8_t *m,
|
|
|
154
154
|
char *ptr3, ca_size_t i3,
|
|
155
155
|
char *ptr4, ca_size_t i4)
|
|
156
156
|
{
|
|
157
|
-
|
|
158
|
-
*q3 = (
|
|
159
|
-
|
|
157
|
+
ca_u_uint16_t *q1 = (ca_u_uint16_t *) ptr1, *q2 = (ca_u_uint16_t *) ptr2,
|
|
158
|
+
*q3 = (ca_u_uint16_t *) ptr3, *q4 = (ca_u_uint16_t *) ptr4;
|
|
159
|
+
ca_u_uint16_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
160
160
|
ca_size_t k;
|
|
161
161
|
if ( m ) {
|
|
162
162
|
boolean8_t *pm;
|
|
@@ -188,9 +188,9 @@ ca_triop_fma_int32_t (ca_size_t n, boolean8_t *m,
|
|
|
188
188
|
char *ptr3, ca_size_t i3,
|
|
189
189
|
char *ptr4, ca_size_t i4)
|
|
190
190
|
{
|
|
191
|
-
|
|
192
|
-
*q3 = (
|
|
193
|
-
|
|
191
|
+
ca_u_int32_t *q1 = (ca_u_int32_t *) ptr1, *q2 = (ca_u_int32_t *) ptr2,
|
|
192
|
+
*q3 = (ca_u_int32_t *) ptr3, *q4 = (ca_u_int32_t *) ptr4;
|
|
193
|
+
ca_u_int32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
194
194
|
ca_size_t k;
|
|
195
195
|
if ( m ) {
|
|
196
196
|
boolean8_t *pm;
|
|
@@ -222,9 +222,9 @@ ca_triop_fma_uint32_t (ca_size_t n, boolean8_t *m,
|
|
|
222
222
|
char *ptr3, ca_size_t i3,
|
|
223
223
|
char *ptr4, ca_size_t i4)
|
|
224
224
|
{
|
|
225
|
-
|
|
226
|
-
*q3 = (
|
|
227
|
-
|
|
225
|
+
ca_u_uint32_t *q1 = (ca_u_uint32_t *) ptr1, *q2 = (ca_u_uint32_t *) ptr2,
|
|
226
|
+
*q3 = (ca_u_uint32_t *) ptr3, *q4 = (ca_u_uint32_t *) ptr4;
|
|
227
|
+
ca_u_uint32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
228
228
|
ca_size_t k;
|
|
229
229
|
if ( m ) {
|
|
230
230
|
boolean8_t *pm;
|
|
@@ -256,9 +256,9 @@ ca_triop_fma_int64_t (ca_size_t n, boolean8_t *m,
|
|
|
256
256
|
char *ptr3, ca_size_t i3,
|
|
257
257
|
char *ptr4, ca_size_t i4)
|
|
258
258
|
{
|
|
259
|
-
|
|
260
|
-
*q3 = (
|
|
261
|
-
|
|
259
|
+
ca_u_int64_t *q1 = (ca_u_int64_t *) ptr1, *q2 = (ca_u_int64_t *) ptr2,
|
|
260
|
+
*q3 = (ca_u_int64_t *) ptr3, *q4 = (ca_u_int64_t *) ptr4;
|
|
261
|
+
ca_u_int64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
262
262
|
ca_size_t k;
|
|
263
263
|
if ( m ) {
|
|
264
264
|
boolean8_t *pm;
|
|
@@ -290,9 +290,9 @@ ca_triop_fma_uint64_t (ca_size_t n, boolean8_t *m,
|
|
|
290
290
|
char *ptr3, ca_size_t i3,
|
|
291
291
|
char *ptr4, ca_size_t i4)
|
|
292
292
|
{
|
|
293
|
-
|
|
294
|
-
*q3 = (
|
|
295
|
-
|
|
293
|
+
ca_u_uint64_t *q1 = (ca_u_uint64_t *) ptr1, *q2 = (ca_u_uint64_t *) ptr2,
|
|
294
|
+
*q3 = (ca_u_uint64_t *) ptr3, *q4 = (ca_u_uint64_t *) ptr4;
|
|
295
|
+
ca_u_uint64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
296
296
|
ca_size_t k;
|
|
297
297
|
if ( m ) {
|
|
298
298
|
boolean8_t *pm;
|
|
@@ -324,9 +324,9 @@ ca_triop_fma_float32_t (ca_size_t n, boolean8_t *m,
|
|
|
324
324
|
char *ptr3, ca_size_t i3,
|
|
325
325
|
char *ptr4, ca_size_t i4)
|
|
326
326
|
{
|
|
327
|
-
|
|
328
|
-
*q3 = (
|
|
329
|
-
|
|
327
|
+
ca_u_float32_t *q1 = (ca_u_float32_t *) ptr1, *q2 = (ca_u_float32_t *) ptr2,
|
|
328
|
+
*q3 = (ca_u_float32_t *) ptr3, *q4 = (ca_u_float32_t *) ptr4;
|
|
329
|
+
ca_u_float32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
330
330
|
ca_size_t k;
|
|
331
331
|
if ( m ) {
|
|
332
332
|
boolean8_t *pm;
|
|
@@ -358,9 +358,9 @@ ca_triop_fma_float64_t (ca_size_t n, boolean8_t *m,
|
|
|
358
358
|
char *ptr3, ca_size_t i3,
|
|
359
359
|
char *ptr4, ca_size_t i4)
|
|
360
360
|
{
|
|
361
|
-
|
|
362
|
-
*q3 = (
|
|
363
|
-
|
|
361
|
+
ca_u_float64_t *q1 = (ca_u_float64_t *) ptr1, *q2 = (ca_u_float64_t *) ptr2,
|
|
362
|
+
*q3 = (ca_u_float64_t *) ptr3, *q4 = (ca_u_float64_t *) ptr4;
|
|
363
|
+
ca_u_float64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
364
364
|
ca_size_t k;
|
|
365
365
|
if ( m ) {
|
|
366
366
|
boolean8_t *pm;
|
|
@@ -392,9 +392,9 @@ ca_triop_fma_cmplx64_t (ca_size_t n, boolean8_t *m,
|
|
|
392
392
|
char *ptr3, ca_size_t i3,
|
|
393
393
|
char *ptr4, ca_size_t i4)
|
|
394
394
|
{
|
|
395
|
-
|
|
396
|
-
*q3 = (
|
|
397
|
-
|
|
395
|
+
ca_u_cmplx64_t *q1 = (ca_u_cmplx64_t *) ptr1, *q2 = (ca_u_cmplx64_t *) ptr2,
|
|
396
|
+
*q3 = (ca_u_cmplx64_t *) ptr3, *q4 = (ca_u_cmplx64_t *) ptr4;
|
|
397
|
+
ca_u_cmplx64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
398
398
|
ca_size_t k;
|
|
399
399
|
if ( m ) {
|
|
400
400
|
boolean8_t *pm;
|
|
@@ -426,9 +426,9 @@ ca_triop_fma_cmplx128_t (ca_size_t n, boolean8_t *m,
|
|
|
426
426
|
char *ptr3, ca_size_t i3,
|
|
427
427
|
char *ptr4, ca_size_t i4)
|
|
428
428
|
{
|
|
429
|
-
|
|
430
|
-
*q3 = (
|
|
431
|
-
|
|
429
|
+
ca_u_cmplx128_t *q1 = (ca_u_cmplx128_t *) ptr1, *q2 = (ca_u_cmplx128_t *) ptr2,
|
|
430
|
+
*q3 = (ca_u_cmplx128_t *) ptr3, *q4 = (ca_u_cmplx128_t *) ptr4;
|
|
431
|
+
ca_u_cmplx128_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
432
432
|
ca_size_t k;
|
|
433
433
|
if ( m ) {
|
|
434
434
|
boolean8_t *pm;
|
|
@@ -591,9 +591,9 @@ ca_triop_fms_int16_t (ca_size_t n, boolean8_t *m,
|
|
|
591
591
|
char *ptr3, ca_size_t i3,
|
|
592
592
|
char *ptr4, ca_size_t i4)
|
|
593
593
|
{
|
|
594
|
-
|
|
595
|
-
*q3 = (
|
|
596
|
-
|
|
594
|
+
ca_u_int16_t *q1 = (ca_u_int16_t *) ptr1, *q2 = (ca_u_int16_t *) ptr2,
|
|
595
|
+
*q3 = (ca_u_int16_t *) ptr3, *q4 = (ca_u_int16_t *) ptr4;
|
|
596
|
+
ca_u_int16_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
597
597
|
ca_size_t k;
|
|
598
598
|
if ( m ) {
|
|
599
599
|
boolean8_t *pm;
|
|
@@ -625,9 +625,9 @@ ca_triop_fms_uint16_t (ca_size_t n, boolean8_t *m,
|
|
|
625
625
|
char *ptr3, ca_size_t i3,
|
|
626
626
|
char *ptr4, ca_size_t i4)
|
|
627
627
|
{
|
|
628
|
-
|
|
629
|
-
*q3 = (
|
|
630
|
-
|
|
628
|
+
ca_u_uint16_t *q1 = (ca_u_uint16_t *) ptr1, *q2 = (ca_u_uint16_t *) ptr2,
|
|
629
|
+
*q3 = (ca_u_uint16_t *) ptr3, *q4 = (ca_u_uint16_t *) ptr4;
|
|
630
|
+
ca_u_uint16_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
631
631
|
ca_size_t k;
|
|
632
632
|
if ( m ) {
|
|
633
633
|
boolean8_t *pm;
|
|
@@ -659,9 +659,9 @@ ca_triop_fms_int32_t (ca_size_t n, boolean8_t *m,
|
|
|
659
659
|
char *ptr3, ca_size_t i3,
|
|
660
660
|
char *ptr4, ca_size_t i4)
|
|
661
661
|
{
|
|
662
|
-
|
|
663
|
-
*q3 = (
|
|
664
|
-
|
|
662
|
+
ca_u_int32_t *q1 = (ca_u_int32_t *) ptr1, *q2 = (ca_u_int32_t *) ptr2,
|
|
663
|
+
*q3 = (ca_u_int32_t *) ptr3, *q4 = (ca_u_int32_t *) ptr4;
|
|
664
|
+
ca_u_int32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
665
665
|
ca_size_t k;
|
|
666
666
|
if ( m ) {
|
|
667
667
|
boolean8_t *pm;
|
|
@@ -693,9 +693,9 @@ ca_triop_fms_uint32_t (ca_size_t n, boolean8_t *m,
|
|
|
693
693
|
char *ptr3, ca_size_t i3,
|
|
694
694
|
char *ptr4, ca_size_t i4)
|
|
695
695
|
{
|
|
696
|
-
|
|
697
|
-
*q3 = (
|
|
698
|
-
|
|
696
|
+
ca_u_uint32_t *q1 = (ca_u_uint32_t *) ptr1, *q2 = (ca_u_uint32_t *) ptr2,
|
|
697
|
+
*q3 = (ca_u_uint32_t *) ptr3, *q4 = (ca_u_uint32_t *) ptr4;
|
|
698
|
+
ca_u_uint32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
699
699
|
ca_size_t k;
|
|
700
700
|
if ( m ) {
|
|
701
701
|
boolean8_t *pm;
|
|
@@ -727,9 +727,9 @@ ca_triop_fms_int64_t (ca_size_t n, boolean8_t *m,
|
|
|
727
727
|
char *ptr3, ca_size_t i3,
|
|
728
728
|
char *ptr4, ca_size_t i4)
|
|
729
729
|
{
|
|
730
|
-
|
|
731
|
-
*q3 = (
|
|
732
|
-
|
|
730
|
+
ca_u_int64_t *q1 = (ca_u_int64_t *) ptr1, *q2 = (ca_u_int64_t *) ptr2,
|
|
731
|
+
*q3 = (ca_u_int64_t *) ptr3, *q4 = (ca_u_int64_t *) ptr4;
|
|
732
|
+
ca_u_int64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
733
733
|
ca_size_t k;
|
|
734
734
|
if ( m ) {
|
|
735
735
|
boolean8_t *pm;
|
|
@@ -761,9 +761,9 @@ ca_triop_fms_uint64_t (ca_size_t n, boolean8_t *m,
|
|
|
761
761
|
char *ptr3, ca_size_t i3,
|
|
762
762
|
char *ptr4, ca_size_t i4)
|
|
763
763
|
{
|
|
764
|
-
|
|
765
|
-
*q3 = (
|
|
766
|
-
|
|
764
|
+
ca_u_uint64_t *q1 = (ca_u_uint64_t *) ptr1, *q2 = (ca_u_uint64_t *) ptr2,
|
|
765
|
+
*q3 = (ca_u_uint64_t *) ptr3, *q4 = (ca_u_uint64_t *) ptr4;
|
|
766
|
+
ca_u_uint64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
767
767
|
ca_size_t k;
|
|
768
768
|
if ( m ) {
|
|
769
769
|
boolean8_t *pm;
|
|
@@ -795,9 +795,9 @@ ca_triop_fms_float32_t (ca_size_t n, boolean8_t *m,
|
|
|
795
795
|
char *ptr3, ca_size_t i3,
|
|
796
796
|
char *ptr4, ca_size_t i4)
|
|
797
797
|
{
|
|
798
|
-
|
|
799
|
-
*q3 = (
|
|
800
|
-
|
|
798
|
+
ca_u_float32_t *q1 = (ca_u_float32_t *) ptr1, *q2 = (ca_u_float32_t *) ptr2,
|
|
799
|
+
*q3 = (ca_u_float32_t *) ptr3, *q4 = (ca_u_float32_t *) ptr4;
|
|
800
|
+
ca_u_float32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
801
801
|
ca_size_t k;
|
|
802
802
|
if ( m ) {
|
|
803
803
|
boolean8_t *pm;
|
|
@@ -829,9 +829,9 @@ ca_triop_fms_float64_t (ca_size_t n, boolean8_t *m,
|
|
|
829
829
|
char *ptr3, ca_size_t i3,
|
|
830
830
|
char *ptr4, ca_size_t i4)
|
|
831
831
|
{
|
|
832
|
-
|
|
833
|
-
*q3 = (
|
|
834
|
-
|
|
832
|
+
ca_u_float64_t *q1 = (ca_u_float64_t *) ptr1, *q2 = (ca_u_float64_t *) ptr2,
|
|
833
|
+
*q3 = (ca_u_float64_t *) ptr3, *q4 = (ca_u_float64_t *) ptr4;
|
|
834
|
+
ca_u_float64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
835
835
|
ca_size_t k;
|
|
836
836
|
if ( m ) {
|
|
837
837
|
boolean8_t *pm;
|
|
@@ -863,9 +863,9 @@ ca_triop_fms_cmplx64_t (ca_size_t n, boolean8_t *m,
|
|
|
863
863
|
char *ptr3, ca_size_t i3,
|
|
864
864
|
char *ptr4, ca_size_t i4)
|
|
865
865
|
{
|
|
866
|
-
|
|
867
|
-
*q3 = (
|
|
868
|
-
|
|
866
|
+
ca_u_cmplx64_t *q1 = (ca_u_cmplx64_t *) ptr1, *q2 = (ca_u_cmplx64_t *) ptr2,
|
|
867
|
+
*q3 = (ca_u_cmplx64_t *) ptr3, *q4 = (ca_u_cmplx64_t *) ptr4;
|
|
868
|
+
ca_u_cmplx64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
869
869
|
ca_size_t k;
|
|
870
870
|
if ( m ) {
|
|
871
871
|
boolean8_t *pm;
|
|
@@ -897,9 +897,9 @@ ca_triop_fms_cmplx128_t (ca_size_t n, boolean8_t *m,
|
|
|
897
897
|
char *ptr3, ca_size_t i3,
|
|
898
898
|
char *ptr4, ca_size_t i4)
|
|
899
899
|
{
|
|
900
|
-
|
|
901
|
-
*q3 = (
|
|
902
|
-
|
|
900
|
+
ca_u_cmplx128_t *q1 = (ca_u_cmplx128_t *) ptr1, *q2 = (ca_u_cmplx128_t *) ptr2,
|
|
901
|
+
*q3 = (ca_u_cmplx128_t *) ptr3, *q4 = (ca_u_cmplx128_t *) ptr4;
|
|
902
|
+
ca_u_cmplx128_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
903
903
|
ca_size_t k;
|
|
904
904
|
if ( m ) {
|
|
905
905
|
boolean8_t *pm;
|
|
@@ -1062,9 +1062,9 @@ ca_triop_clip_int16_t (ca_size_t n, boolean8_t *m,
|
|
|
1062
1062
|
char *ptr3, ca_size_t i3,
|
|
1063
1063
|
char *ptr4, ca_size_t i4)
|
|
1064
1064
|
{
|
|
1065
|
-
|
|
1066
|
-
*q3 = (
|
|
1067
|
-
|
|
1065
|
+
ca_u_int16_t *q1 = (ca_u_int16_t *) ptr1, *q2 = (ca_u_int16_t *) ptr2,
|
|
1066
|
+
*q3 = (ca_u_int16_t *) ptr3, *q4 = (ca_u_int16_t *) ptr4;
|
|
1067
|
+
ca_u_int16_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1068
1068
|
ca_size_t k;
|
|
1069
1069
|
if ( m ) {
|
|
1070
1070
|
boolean8_t *pm;
|
|
@@ -1096,9 +1096,9 @@ ca_triop_clip_uint16_t (ca_size_t n, boolean8_t *m,
|
|
|
1096
1096
|
char *ptr3, ca_size_t i3,
|
|
1097
1097
|
char *ptr4, ca_size_t i4)
|
|
1098
1098
|
{
|
|
1099
|
-
|
|
1100
|
-
*q3 = (
|
|
1101
|
-
|
|
1099
|
+
ca_u_uint16_t *q1 = (ca_u_uint16_t *) ptr1, *q2 = (ca_u_uint16_t *) ptr2,
|
|
1100
|
+
*q3 = (ca_u_uint16_t *) ptr3, *q4 = (ca_u_uint16_t *) ptr4;
|
|
1101
|
+
ca_u_uint16_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1102
1102
|
ca_size_t k;
|
|
1103
1103
|
if ( m ) {
|
|
1104
1104
|
boolean8_t *pm;
|
|
@@ -1130,9 +1130,9 @@ ca_triop_clip_int32_t (ca_size_t n, boolean8_t *m,
|
|
|
1130
1130
|
char *ptr3, ca_size_t i3,
|
|
1131
1131
|
char *ptr4, ca_size_t i4)
|
|
1132
1132
|
{
|
|
1133
|
-
|
|
1134
|
-
*q3 = (
|
|
1135
|
-
|
|
1133
|
+
ca_u_int32_t *q1 = (ca_u_int32_t *) ptr1, *q2 = (ca_u_int32_t *) ptr2,
|
|
1134
|
+
*q3 = (ca_u_int32_t *) ptr3, *q4 = (ca_u_int32_t *) ptr4;
|
|
1135
|
+
ca_u_int32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1136
1136
|
ca_size_t k;
|
|
1137
1137
|
if ( m ) {
|
|
1138
1138
|
boolean8_t *pm;
|
|
@@ -1164,9 +1164,9 @@ ca_triop_clip_uint32_t (ca_size_t n, boolean8_t *m,
|
|
|
1164
1164
|
char *ptr3, ca_size_t i3,
|
|
1165
1165
|
char *ptr4, ca_size_t i4)
|
|
1166
1166
|
{
|
|
1167
|
-
|
|
1168
|
-
*q3 = (
|
|
1169
|
-
|
|
1167
|
+
ca_u_uint32_t *q1 = (ca_u_uint32_t *) ptr1, *q2 = (ca_u_uint32_t *) ptr2,
|
|
1168
|
+
*q3 = (ca_u_uint32_t *) ptr3, *q4 = (ca_u_uint32_t *) ptr4;
|
|
1169
|
+
ca_u_uint32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1170
1170
|
ca_size_t k;
|
|
1171
1171
|
if ( m ) {
|
|
1172
1172
|
boolean8_t *pm;
|
|
@@ -1198,9 +1198,9 @@ ca_triop_clip_int64_t (ca_size_t n, boolean8_t *m,
|
|
|
1198
1198
|
char *ptr3, ca_size_t i3,
|
|
1199
1199
|
char *ptr4, ca_size_t i4)
|
|
1200
1200
|
{
|
|
1201
|
-
|
|
1202
|
-
*q3 = (
|
|
1203
|
-
|
|
1201
|
+
ca_u_int64_t *q1 = (ca_u_int64_t *) ptr1, *q2 = (ca_u_int64_t *) ptr2,
|
|
1202
|
+
*q3 = (ca_u_int64_t *) ptr3, *q4 = (ca_u_int64_t *) ptr4;
|
|
1203
|
+
ca_u_int64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1204
1204
|
ca_size_t k;
|
|
1205
1205
|
if ( m ) {
|
|
1206
1206
|
boolean8_t *pm;
|
|
@@ -1232,9 +1232,9 @@ ca_triop_clip_uint64_t (ca_size_t n, boolean8_t *m,
|
|
|
1232
1232
|
char *ptr3, ca_size_t i3,
|
|
1233
1233
|
char *ptr4, ca_size_t i4)
|
|
1234
1234
|
{
|
|
1235
|
-
|
|
1236
|
-
*q3 = (
|
|
1237
|
-
|
|
1235
|
+
ca_u_uint64_t *q1 = (ca_u_uint64_t *) ptr1, *q2 = (ca_u_uint64_t *) ptr2,
|
|
1236
|
+
*q3 = (ca_u_uint64_t *) ptr3, *q4 = (ca_u_uint64_t *) ptr4;
|
|
1237
|
+
ca_u_uint64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1238
1238
|
ca_size_t k;
|
|
1239
1239
|
if ( m ) {
|
|
1240
1240
|
boolean8_t *pm;
|
|
@@ -1266,9 +1266,9 @@ ca_triop_clip_float32_t (ca_size_t n, boolean8_t *m,
|
|
|
1266
1266
|
char *ptr3, ca_size_t i3,
|
|
1267
1267
|
char *ptr4, ca_size_t i4)
|
|
1268
1268
|
{
|
|
1269
|
-
|
|
1270
|
-
*q3 = (
|
|
1271
|
-
|
|
1269
|
+
ca_u_float32_t *q1 = (ca_u_float32_t *) ptr1, *q2 = (ca_u_float32_t *) ptr2,
|
|
1270
|
+
*q3 = (ca_u_float32_t *) ptr3, *q4 = (ca_u_float32_t *) ptr4;
|
|
1271
|
+
ca_u_float32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1272
1272
|
ca_size_t k;
|
|
1273
1273
|
if ( m ) {
|
|
1274
1274
|
boolean8_t *pm;
|
|
@@ -1300,9 +1300,9 @@ ca_triop_clip_float64_t (ca_size_t n, boolean8_t *m,
|
|
|
1300
1300
|
char *ptr3, ca_size_t i3,
|
|
1301
1301
|
char *ptr4, ca_size_t i4)
|
|
1302
1302
|
{
|
|
1303
|
-
|
|
1304
|
-
*q3 = (
|
|
1305
|
-
|
|
1303
|
+
ca_u_float64_t *q1 = (ca_u_float64_t *) ptr1, *q2 = (ca_u_float64_t *) ptr2,
|
|
1304
|
+
*q3 = (ca_u_float64_t *) ptr3, *q4 = (ca_u_float64_t *) ptr4;
|
|
1305
|
+
ca_u_float64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1306
1306
|
ca_size_t k;
|
|
1307
1307
|
if ( m ) {
|
|
1308
1308
|
boolean8_t *pm;
|
|
@@ -1462,9 +1462,9 @@ ca_triop_select_int16_t (ca_size_t n, boolean8_t *m,
|
|
|
1462
1462
|
char *ptr3, ca_size_t i3,
|
|
1463
1463
|
char *ptr4, ca_size_t i4)
|
|
1464
1464
|
{
|
|
1465
|
-
|
|
1466
|
-
*q3 = (
|
|
1467
|
-
|
|
1465
|
+
ca_u_int16_t *q1 = (ca_u_int16_t *) ptr1, *q2 = (ca_u_int16_t *) ptr2,
|
|
1466
|
+
*q3 = (ca_u_int16_t *) ptr3, *q4 = (ca_u_int16_t *) ptr4;
|
|
1467
|
+
ca_u_int16_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1468
1468
|
ca_size_t k;
|
|
1469
1469
|
if ( m ) {
|
|
1470
1470
|
boolean8_t *pm;
|
|
@@ -1496,9 +1496,9 @@ ca_triop_select_uint16_t (ca_size_t n, boolean8_t *m,
|
|
|
1496
1496
|
char *ptr3, ca_size_t i3,
|
|
1497
1497
|
char *ptr4, ca_size_t i4)
|
|
1498
1498
|
{
|
|
1499
|
-
|
|
1500
|
-
*q3 = (
|
|
1501
|
-
|
|
1499
|
+
ca_u_uint16_t *q1 = (ca_u_uint16_t *) ptr1, *q2 = (ca_u_uint16_t *) ptr2,
|
|
1500
|
+
*q3 = (ca_u_uint16_t *) ptr3, *q4 = (ca_u_uint16_t *) ptr4;
|
|
1501
|
+
ca_u_uint16_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1502
1502
|
ca_size_t k;
|
|
1503
1503
|
if ( m ) {
|
|
1504
1504
|
boolean8_t *pm;
|
|
@@ -1530,9 +1530,9 @@ ca_triop_select_int32_t (ca_size_t n, boolean8_t *m,
|
|
|
1530
1530
|
char *ptr3, ca_size_t i3,
|
|
1531
1531
|
char *ptr4, ca_size_t i4)
|
|
1532
1532
|
{
|
|
1533
|
-
|
|
1534
|
-
*q3 = (
|
|
1535
|
-
|
|
1533
|
+
ca_u_int32_t *q1 = (ca_u_int32_t *) ptr1, *q2 = (ca_u_int32_t *) ptr2,
|
|
1534
|
+
*q3 = (ca_u_int32_t *) ptr3, *q4 = (ca_u_int32_t *) ptr4;
|
|
1535
|
+
ca_u_int32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1536
1536
|
ca_size_t k;
|
|
1537
1537
|
if ( m ) {
|
|
1538
1538
|
boolean8_t *pm;
|
|
@@ -1564,9 +1564,9 @@ ca_triop_select_uint32_t (ca_size_t n, boolean8_t *m,
|
|
|
1564
1564
|
char *ptr3, ca_size_t i3,
|
|
1565
1565
|
char *ptr4, ca_size_t i4)
|
|
1566
1566
|
{
|
|
1567
|
-
|
|
1568
|
-
*q3 = (
|
|
1569
|
-
|
|
1567
|
+
ca_u_uint32_t *q1 = (ca_u_uint32_t *) ptr1, *q2 = (ca_u_uint32_t *) ptr2,
|
|
1568
|
+
*q3 = (ca_u_uint32_t *) ptr3, *q4 = (ca_u_uint32_t *) ptr4;
|
|
1569
|
+
ca_u_uint32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1570
1570
|
ca_size_t k;
|
|
1571
1571
|
if ( m ) {
|
|
1572
1572
|
boolean8_t *pm;
|
|
@@ -1598,9 +1598,9 @@ ca_triop_select_int64_t (ca_size_t n, boolean8_t *m,
|
|
|
1598
1598
|
char *ptr3, ca_size_t i3,
|
|
1599
1599
|
char *ptr4, ca_size_t i4)
|
|
1600
1600
|
{
|
|
1601
|
-
|
|
1602
|
-
*q3 = (
|
|
1603
|
-
|
|
1601
|
+
ca_u_int64_t *q1 = (ca_u_int64_t *) ptr1, *q2 = (ca_u_int64_t *) ptr2,
|
|
1602
|
+
*q3 = (ca_u_int64_t *) ptr3, *q4 = (ca_u_int64_t *) ptr4;
|
|
1603
|
+
ca_u_int64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1604
1604
|
ca_size_t k;
|
|
1605
1605
|
if ( m ) {
|
|
1606
1606
|
boolean8_t *pm;
|
|
@@ -1632,9 +1632,9 @@ ca_triop_select_uint64_t (ca_size_t n, boolean8_t *m,
|
|
|
1632
1632
|
char *ptr3, ca_size_t i3,
|
|
1633
1633
|
char *ptr4, ca_size_t i4)
|
|
1634
1634
|
{
|
|
1635
|
-
|
|
1636
|
-
*q3 = (
|
|
1637
|
-
|
|
1635
|
+
ca_u_uint64_t *q1 = (ca_u_uint64_t *) ptr1, *q2 = (ca_u_uint64_t *) ptr2,
|
|
1636
|
+
*q3 = (ca_u_uint64_t *) ptr3, *q4 = (ca_u_uint64_t *) ptr4;
|
|
1637
|
+
ca_u_uint64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1638
1638
|
ca_size_t k;
|
|
1639
1639
|
if ( m ) {
|
|
1640
1640
|
boolean8_t *pm;
|
|
@@ -1666,9 +1666,9 @@ ca_triop_select_float32_t (ca_size_t n, boolean8_t *m,
|
|
|
1666
1666
|
char *ptr3, ca_size_t i3,
|
|
1667
1667
|
char *ptr4, ca_size_t i4)
|
|
1668
1668
|
{
|
|
1669
|
-
|
|
1670
|
-
*q3 = (
|
|
1671
|
-
|
|
1669
|
+
ca_u_float32_t *q1 = (ca_u_float32_t *) ptr1, *q2 = (ca_u_float32_t *) ptr2,
|
|
1670
|
+
*q3 = (ca_u_float32_t *) ptr3, *q4 = (ca_u_float32_t *) ptr4;
|
|
1671
|
+
ca_u_float32_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1672
1672
|
ca_size_t k;
|
|
1673
1673
|
if ( m ) {
|
|
1674
1674
|
boolean8_t *pm;
|
|
@@ -1700,9 +1700,9 @@ ca_triop_select_float64_t (ca_size_t n, boolean8_t *m,
|
|
|
1700
1700
|
char *ptr3, ca_size_t i3,
|
|
1701
1701
|
char *ptr4, ca_size_t i4)
|
|
1702
1702
|
{
|
|
1703
|
-
|
|
1704
|
-
*q3 = (
|
|
1705
|
-
|
|
1703
|
+
ca_u_float64_t *q1 = (ca_u_float64_t *) ptr1, *q2 = (ca_u_float64_t *) ptr2,
|
|
1704
|
+
*q3 = (ca_u_float64_t *) ptr3, *q4 = (ca_u_float64_t *) ptr4;
|
|
1705
|
+
ca_u_float64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1706
1706
|
ca_size_t k;
|
|
1707
1707
|
if ( m ) {
|
|
1708
1708
|
boolean8_t *pm;
|
|
@@ -1734,9 +1734,9 @@ ca_triop_select_cmplx64_t (ca_size_t n, boolean8_t *m,
|
|
|
1734
1734
|
char *ptr3, ca_size_t i3,
|
|
1735
1735
|
char *ptr4, ca_size_t i4)
|
|
1736
1736
|
{
|
|
1737
|
-
|
|
1738
|
-
*q3 = (
|
|
1739
|
-
|
|
1737
|
+
ca_u_cmplx64_t *q1 = (ca_u_cmplx64_t *) ptr1, *q2 = (ca_u_cmplx64_t *) ptr2,
|
|
1738
|
+
*q3 = (ca_u_cmplx64_t *) ptr3, *q4 = (ca_u_cmplx64_t *) ptr4;
|
|
1739
|
+
ca_u_cmplx64_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1740
1740
|
ca_size_t k;
|
|
1741
1741
|
if ( m ) {
|
|
1742
1742
|
boolean8_t *pm;
|
|
@@ -1768,9 +1768,9 @@ ca_triop_select_cmplx128_t (ca_size_t n, boolean8_t *m,
|
|
|
1768
1768
|
char *ptr3, ca_size_t i3,
|
|
1769
1769
|
char *ptr4, ca_size_t i4)
|
|
1770
1770
|
{
|
|
1771
|
-
|
|
1772
|
-
*q3 = (
|
|
1773
|
-
|
|
1771
|
+
ca_u_cmplx128_t *q1 = (ca_u_cmplx128_t *) ptr1, *q2 = (ca_u_cmplx128_t *) ptr2,
|
|
1772
|
+
*q3 = (ca_u_cmplx128_t *) ptr3, *q4 = (ca_u_cmplx128_t *) ptr4;
|
|
1773
|
+
ca_u_cmplx128_t *p1 = q1, *p2 = q2, *p3 = q3, *p4 = q4;
|
|
1774
1774
|
ca_size_t k;
|
|
1775
1775
|
if ( m ) {
|
|
1776
1776
|
boolean8_t *pm;
|
data/ext/carray_key_windows.c
CHANGED
|
@@ -150,6 +150,10 @@ rb_ca_s_key_window_ranges (VALUE self, VALUE vkeys, VALUE vgroups,
|
|
|
150
150
|
( ck->data_type != CA_INT64 && ck->data_type != CA_FLOAT64 ) ) {
|
|
151
151
|
rb_raise(rb_eArgError, "__find_key_window_row_ranges__: unexpected arguments");
|
|
152
152
|
}
|
|
153
|
+
/* The completeness test takes the key difference modulo the interval. */
|
|
154
|
+
if ( !NIL_P(rinterval) && !(NUM2DBL(rinterval) > 0) ) {
|
|
155
|
+
rb_raise(rb_eArgError, "__find_key_window_row_ranges__: interval should be positive");
|
|
156
|
+
}
|
|
153
157
|
n = ck->elements;
|
|
154
158
|
grp = (const int64_t *) cg->ptr;
|
|
155
159
|
nout = n;
|
data/ext/carray_lazy.c
CHANGED
|
@@ -1084,6 +1084,53 @@ ca_lazy_settle_scalar (VALUE operand, int was_scalar)
|
|
|
1084
1084
|
return operand;
|
|
1085
1085
|
}
|
|
1086
1086
|
|
|
1087
|
+
typedef struct {
|
|
1088
|
+
ca_lazy_eval_fn eval;
|
|
1089
|
+
void *node;
|
|
1090
|
+
const ca_lazy_req_t *req;
|
|
1091
|
+
void *data;
|
|
1092
|
+
int dir;
|
|
1093
|
+
} ca_lazy_eval_args_t;
|
|
1094
|
+
|
|
1095
|
+
static VALUE
|
|
1096
|
+
ca_lazy_eval_body (VALUE varg)
|
|
1097
|
+
{
|
|
1098
|
+
ca_lazy_eval_args_t *a = (ca_lazy_eval_args_t *) varg;
|
|
1099
|
+
a->eval(a->node, a->req, a->data, a->dir);
|
|
1100
|
+
/* A cell computed as an expression over a node being evaluated (x + 1
|
|
1101
|
+
for a cell holding x) stays lazy, and comparing or computing it later
|
|
1102
|
+
evaluates the node again without end: refuse it here, while the node
|
|
1103
|
+
is still recorded. */
|
|
1104
|
+
if ( a->dir == CA_XFER_GET && ca_is_object_type((CArray *) a->node) ) {
|
|
1105
|
+
ca_refuse_cells_reaching_evaluation(a->req->n, (const VALUE *) a->data);
|
|
1106
|
+
}
|
|
1107
|
+
return Qnil;
|
|
1108
|
+
}
|
|
1109
|
+
|
|
1110
|
+
void
|
|
1111
|
+
ca_lazy_eval_recorded (void *node, int n, CArray **ops,
|
|
1112
|
+
int nchain, CArray **chain, ca_lazy_eval_fn eval,
|
|
1113
|
+
const ca_lazy_req_t *req, void *data, int dir)
|
|
1114
|
+
{
|
|
1115
|
+
CArray **rec;
|
|
1116
|
+
ca_lazy_eval_args_t a;
|
|
1117
|
+
int i, m = 0, object = ca_is_object_type((CArray *) node);
|
|
1118
|
+
for ( i = 0; i < n; i++ ) {
|
|
1119
|
+
if ( ops[i] && ca_is_object_type(ops[i]) ) object = 1;
|
|
1120
|
+
}
|
|
1121
|
+
if ( ! object ) {
|
|
1122
|
+
eval(node, req, data, dir);
|
|
1123
|
+
return;
|
|
1124
|
+
}
|
|
1125
|
+
rec = ALLOCA_N(CArray *, nchain + 1);
|
|
1126
|
+
rec[m++] = (CArray *) node;
|
|
1127
|
+
for ( i = 0; i < nchain; i++ ) {
|
|
1128
|
+
rec[m++] = chain[i];
|
|
1129
|
+
}
|
|
1130
|
+
a.eval = eval; a.node = node; a.req = req; a.data = data; a.dir = dir;
|
|
1131
|
+
ca_computing_run_nodes(m, rec, ca_lazy_eval_body, (VALUE) &a);
|
|
1132
|
+
}
|
|
1133
|
+
|
|
1087
1134
|
void
|
|
1088
1135
|
ca_lazy_req_pull (void *operand, const ca_lazy_req_t *req, void *buf, int dir)
|
|
1089
1136
|
{
|
data/ext/carray_loop.c
CHANGED
|
@@ -247,7 +247,7 @@ ca_map_bang_run (VALUE self, VALUE (*body)(VALUE), int mode)
|
|
|
247
247
|
c.self = self;
|
|
248
248
|
c.ridx = rb_ary_new2(c.ca->ndim);
|
|
249
249
|
c.mode = mode;
|
|
250
|
-
|
|
250
|
+
ca_attach_window_yielding(self, 1, &c.ca, "w", body, (VALUE) &c);
|
|
251
251
|
return self;
|
|
252
252
|
}
|
|
253
253
|
|