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_conversion.c
CHANGED
|
@@ -30,14 +30,14 @@
|
|
|
30
30
|
/* Leaf macro: data type-specialized inner loop. Produces `n` VALUE objects
|
|
31
31
|
from a contig ptr base + element width, storing into `dst` (Ruby Array). */
|
|
32
32
|
#define TO_A_LEAF_LOOP(T, TO_VALUE) do { \
|
|
33
|
-
const T *src = (const T *) base; \
|
|
33
|
+
const CA_U(T) *src = (const CA_U(T) *) base; \
|
|
34
34
|
for (li = 0; li < n; li++) { \
|
|
35
35
|
rb_ary_store(dst, li, TO_VALUE(src[li])); \
|
|
36
36
|
} \
|
|
37
37
|
} while (0)
|
|
38
38
|
|
|
39
39
|
#define TO_A_LEAF_LOOP_MASKED(T, TO_VALUE) do { \
|
|
40
|
-
const T *src = (const T *) base; \
|
|
40
|
+
const CA_U(T) *src = (const CA_U(T) *) base; \
|
|
41
41
|
for (li = 0; li < n; li++) { \
|
|
42
42
|
rb_ary_store(dst, li, mask[li] ? CA_UNDEF : TO_VALUE(src[li])); \
|
|
43
43
|
} \
|
|
@@ -369,7 +369,8 @@ rb_ca_convert (int argc, VALUE *argv, VALUE self)
|
|
|
369
369
|
|
|
370
370
|
list[0] = c.ca;
|
|
371
371
|
list[1] = c.co;
|
|
372
|
-
|
|
372
|
+
ca_attach_window_yielding(rb_assoc_new(self, obj), 2, list, "rw",
|
|
373
|
+
ca_convert_body, (VALUE) &c);
|
|
373
374
|
|
|
374
375
|
return obj;
|
|
375
376
|
}
|
|
@@ -417,9 +418,11 @@ rb_ca_dump_binary (int argc, VALUE *argv, VALUE self)
|
|
|
417
418
|
ca_size_t total = ca_length(ca);
|
|
418
419
|
GetOpenFile(io, iop);
|
|
419
420
|
rb_io_check_writable(iop);
|
|
420
|
-
if ( ca_is_entity(ca) ) {
|
|
421
|
+
if ( ca_is_entity(ca) && ca->ptr ) {
|
|
421
422
|
/* Owned ca->ptr: write through the IO buffer machinery so peak
|
|
422
|
-
stays at ca_length instead of doubling via a Ruby String.
|
|
423
|
+
stays at ca_length instead of doubling via a Ruby String. An
|
|
424
|
+
entity that leaves ptr NULL at rest (a CASource) takes the
|
|
425
|
+
gather below. */
|
|
423
426
|
ssize_t n = rb_io_bufwrite(io, ca->ptr, (size_t) total);
|
|
424
427
|
if ( n < 0 || (ca_size_t) n != total ) {
|
|
425
428
|
rb_raise(rb_eRuntimeError,
|
|
@@ -428,7 +431,8 @@ rb_ca_dump_binary (int argc, VALUE *argv, VALUE self)
|
|
|
428
431
|
}
|
|
429
432
|
}
|
|
430
433
|
else {
|
|
431
|
-
/* View: no chunked gather API, so
|
|
434
|
+
/* View, or entity without a ptr: no chunked gather API, so
|
|
435
|
+
materialise into one buffer. */
|
|
432
436
|
volatile VALUE buf = rb_str_new(NULL, total);
|
|
433
437
|
ca_copy_data(ca, RSTRING_PTR(buf));
|
|
434
438
|
rb_io_write(io, buf);
|
|
@@ -545,7 +549,7 @@ rb_ca_load_binary (VALUE self, VALUE io)
|
|
|
545
549
|
}
|
|
546
550
|
|
|
547
551
|
/* The double nearest to the shortest decimal that reads back as x, the
|
|
548
|
-
float32 value, as
|
|
552
|
+
float32 value, as read_csv reads text into float32: strtod, then the cast
|
|
549
553
|
to float. Its digits are those of the decimal (at most 9, which a double
|
|
550
554
|
holds), so Float#to_s writes them. */
|
|
551
555
|
static double
|