carray 1.5.1 → 1.5.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/.yardopts +32 -0
- data/{LICENSES → LICENSE} +0 -0
- data/NEWS.md +83 -0
- data/README.md +34 -18
- data/Rakefile +1 -1
- data/TODO.md +17 -0
- data/carray.gemspec +10 -7
- data/ext/ca_iter_block.c +3 -5
- data/ext/ca_iter_dimension.c +4 -5
- data/ext/ca_iter_window.c +2 -4
- data/ext/ca_obj_array.c +394 -124
- data/ext/ca_obj_bitarray.c +6 -11
- data/ext/ca_obj_bitfield.c +5 -9
- data/ext/ca_obj_block.c +5 -12
- data/ext/ca_obj_fake.c +3 -5
- data/ext/ca_obj_farray.c +3 -5
- data/ext/ca_obj_field.c +15 -17
- data/ext/ca_obj_grid.c +5 -6
- data/ext/ca_obj_mapping.c +2 -4
- data/ext/ca_obj_object.c +3 -5
- data/ext/ca_obj_reduce.c +2 -4
- data/ext/ca_obj_refer.c +11 -15
- data/ext/ca_obj_repeat.c +2 -4
- data/ext/ca_obj_select.c +2 -4
- data/ext/ca_obj_shift.c +3 -5
- data/ext/ca_obj_transpose.c +3 -5
- data/ext/ca_obj_unbound_repeat.c +68 -122
- data/ext/ca_obj_window.c +7 -9
- data/ext/carray.h +17 -8
- data/ext/carray_access.c +183 -58
- data/ext/carray_attribute.c +151 -197
- data/ext/carray_call_cfunc.c +1 -3
- data/ext/carray_cast.c +345 -144
- data/ext/carray_cast_func.rb +1 -2
- data/ext/carray_class.c +28 -36
- data/ext/carray_conversion.c +56 -59
- data/ext/carray_copy.c +16 -32
- data/ext/carray_core.c +73 -60
- data/ext/carray_element.c +25 -44
- data/ext/carray_generate.c +74 -53
- data/ext/carray_iterator.c +13 -15
- data/ext/carray_loop.c +53 -82
- data/ext/carray_mask.c +99 -119
- data/ext/carray_math.rb +28 -12
- data/ext/carray_mathfunc.c +1 -3
- data/ext/carray_numeric.c +42 -45
- data/ext/carray_operator.c +45 -32
- data/ext/carray_order.c +231 -65
- data/ext/carray_sort_addr.c +14 -21
- data/ext/carray_stat.c +1 -3
- data/ext/carray_stat_proc.rb +2 -4
- data/ext/carray_test.c +41 -30
- data/ext/carray_undef.c +1 -11
- data/ext/carray_utils.c +138 -51
- data/ext/extconf.rb +14 -2
- data/ext/mkmath.rb +2 -2
- data/ext/ruby_carray.c +15 -7
- data/ext/ruby_ccomplex.c +2 -4
- data/ext/ruby_float_func.c +1 -3
- data/ext/version.h +5 -7
- data/lib/carray.rb +9 -9
- data/lib/carray/autoload.rb +0 -2
- data/lib/carray/autoload/autoload_gem_numo_narray.rb +6 -6
- data/lib/carray/basic.rb +1 -3
- data/lib/carray/broadcast.rb +101 -0
- data/lib/carray/compose.rb +34 -10
- data/lib/carray/construct.rb +57 -18
- data/lib/carray/info.rb +1 -3
- data/lib/carray/inspect.rb +3 -5
- data/lib/carray/io/imagemagick.rb +1 -3
- data/lib/carray/iterator.rb +3 -3
- data/lib/carray/mask.rb +18 -7
- data/lib/carray/math.rb +4 -6
- data/lib/carray/math/histogram.rb +1 -3
- data/lib/carray/math/recurrence.rb +1 -3
- data/lib/carray/mkmf.rb +1 -3
- data/lib/carray/object/ca_obj_iterator.rb +1 -3
- data/lib/carray/object/ca_obj_link.rb +1 -3
- data/lib/carray/object/ca_obj_pack.rb +1 -3
- data/lib/carray/obsolete.rb +1 -17
- data/lib/carray/ordering.rb +29 -5
- data/lib/carray/serialize.rb +34 -25
- data/lib/carray/string.rb +1 -3
- data/lib/carray/struct.rb +3 -5
- data/lib/carray/testing.rb +5 -10
- data/lib/carray/time.rb +1 -3
- data/lib/carray/transform.rb +12 -3
- data/misc/NOTE +16 -38
- data/spec/Classes/CABitfield_spec.rb +58 -0
- data/spec/Classes/CABlockIterator_spec.rb +114 -0
- data/spec/Classes/CABlock_spec.rb +205 -0
- data/spec/Classes/CAField_spec.rb +39 -0
- data/spec/Classes/CAGrid_spec.rb +75 -0
- data/spec/Classes/CAMap_spec.rb +0 -0
- data/{test/test_CAMapping.rb → spec/Classes/CAMapping_spec.rb} +35 -36
- data/spec/Classes/CAObject_attribute_spec.rb +33 -0
- data/spec/Classes/CAObject_spec.rb +33 -0
- data/spec/Classes/CARefer_spec.rb +93 -0
- data/spec/Classes/CARepeat_spec.rb +65 -0
- data/spec/Classes/CASelect_spec.rb +22 -0
- data/spec/Classes/CAShift_spec.rb +16 -0
- data/spec/Classes/CAStruct_spec.rb +71 -0
- data/{test/test_CATranspose.rb → spec/Classes/CATranspose_spec.rb} +20 -21
- data/spec/Classes/CAUnboudRepeat_spec.rb +102 -0
- data/spec/Classes/CAWindow_spec.rb +54 -0
- data/spec/Classes/CAWrap_spec.rb +8 -0
- data/{test/test_CArray.rb → spec/Classes/CArray_spec.rb} +48 -92
- data/spec/Classes/CScalar_spec.rb +55 -0
- data/spec/Features/feature_130_spec.rb +19 -0
- data/spec/Features/feature_attributes_spec.rb +280 -0
- data/spec/Features/feature_boolean_spec.rb +98 -0
- data/spec/Features/feature_broadcast.rb +116 -0
- data/spec/Features/feature_cast_function.rb +19 -0
- data/spec/Features/feature_cast_spec.rb +33 -0
- data/spec/Features/feature_class_spec.rb +84 -0
- data/spec/Features/feature_complex_spec.rb +42 -0
- data/{test/test_composite.rb → spec/Features/feature_composite_spec.rb} +17 -18
- data/spec/Features/feature_convert_spec.rb +46 -0
- data/spec/Features/feature_copy_spec.rb +123 -0
- data/spec/Features/feature_creation_spec.rb +84 -0
- data/spec/Features/feature_element_spec.rb +144 -0
- data/spec/Features/feature_extream_spec.rb +54 -0
- data/spec/Features/feature_generate_spec.rb +74 -0
- data/spec/Features/feature_index_spec.rb +69 -0
- data/spec/Features/feature_mask_spec.rb +580 -0
- data/spec/Features/feature_math_spec.rb +97 -0
- data/spec/Features/feature_order_spec.rb +146 -0
- data/spec/Features/feature_ref_store_spec.rb +209 -0
- data/spec/Features/feature_serialization_spec.rb +125 -0
- data/spec/Features/feature_stat_spec.rb +397 -0
- data/spec/Features/feature_virtual_spec.rb +48 -0
- data/spec/Features/method_eq_spec.rb +81 -0
- data/spec/Features/method_is_nan_spec.rb +12 -0
- data/spec/Features/method_map_spec.rb +54 -0
- data/spec/Features/method_max_with.rb +20 -0
- data/spec/Features/method_min_with.rb +19 -0
- data/spec/Features/method_ne_spec.rb +18 -0
- data/spec/Features/method_project_spec.rb +188 -0
- data/spec/Features/method_ref_spec.rb +27 -0
- data/spec/Features/method_round_spec.rb +11 -0
- data/spec/Features/method_s_linspace_spec.rb +48 -0
- data/spec/Features/method_s_span_spec.rb +14 -0
- data/spec/Features/method_seq_spec.rb +47 -0
- data/spec/Features/method_sort_with.rb +43 -0
- data/spec/Features/method_sorted_with.rb +29 -0
- data/spec/Features/method_span_spec.rb +42 -0
- data/spec/Features/method_wrap_readonly_spec.rb +43 -0
- data/{test → spec/UnitTest}/test_CAVirtual.rb +0 -0
- data/spec/spec_all.rb +0 -1
- data/utils/convert_test.rb +73 -0
- data/utils/{extract_rdoc.rb → extract_yard.rb} +7 -12
- metadata +74 -58
- data/spec/CABlockIterator/CABlockIterator_spec.rb +0 -113
- data/spec/CArray/bug/store_spec.rb +0 -27
- data/spec/CArray/index/repeat_spec.rb +0 -10
- data/spec/CArray/method/eq_spec.rb +0 -80
- data/spec/CArray/method/is_nan_spec.rb +0 -12
- data/spec/CArray/method/ne_spec.rb +0 -18
- data/spec/CArray/method/round_spec.rb +0 -11
- data/spec/CArray/object/_attribute_spec.rb +0 -32
- data/spec/CArray/object/s_new_spec.rb +0 -31
- data/spec/CArray/serialize/Serialization_spec.rb +0 -89
- data/test/test_130.rb +0 -23
- data/test/test_ALL.rb +0 -49
- data/test/test_CABitfield.rb +0 -59
- data/test/test_CABlock.rb +0 -208
- data/test/test_CAField.rb +0 -40
- data/test/test_CAGrid.rb +0 -76
- data/test/test_CAMmap.rb +0 -11
- data/test/test_CARefer.rb +0 -94
- data/test/test_CARepeat.rb +0 -66
- data/test/test_CASelect.rb +0 -23
- data/test/test_CAShift.rb +0 -17
- data/test/test_CAWindow.rb +0 -55
- data/test/test_CAWrap.rb +0 -9
- data/test/test_CComplex.rb +0 -83
- data/test/test_CScalar.rb +0 -91
- data/test/test_attribute.rb +0 -281
- data/test/test_block_iterator.rb +0 -17
- data/test/test_boolean.rb +0 -99
- data/test/test_cast.rb +0 -33
- data/test/test_class.rb +0 -85
- data/test/test_complex.rb +0 -43
- data/test/test_convert.rb +0 -79
- data/test/test_copy.rb +0 -141
- data/test/test_creation.rb +0 -85
- data/test/test_element.rb +0 -146
- data/test/test_extream.rb +0 -55
- data/test/test_generate.rb +0 -75
- data/test/test_index.rb +0 -71
- data/test/test_mask.rb +0 -578
- data/test/test_math.rb +0 -98
- data/test/test_order.rb +0 -147
- data/test/test_ref_store.rb +0 -211
- data/test/test_stat.rb +0 -406
- data/test/test_struct.rb +0 -72
- data/test/test_virtual.rb +0 -49
data/ext/extconf.rb
CHANGED
@@ -135,11 +135,23 @@ end
|
|
135
135
|
# --- check tgmath.h
|
136
136
|
|
137
137
|
have_header("tgmath.h")
|
138
|
+
have_func("atan2", "math.h")
|
139
|
+
have_func("hypot", "math.h")
|
140
|
+
have_func("lgamma", "math.h")
|
141
|
+
have_func("expm1", "math.h")
|
138
142
|
|
139
143
|
# --- check mergesort routine
|
140
144
|
|
141
145
|
have_func("mergesort", "stdlib.h")
|
142
146
|
|
147
|
+
# --- check mergesort routine
|
148
|
+
|
149
|
+
have_func("strptime", "time.h")
|
150
|
+
|
151
|
+
# --- check raneg object
|
152
|
+
|
153
|
+
have_func("rb_arithmetic_sequence_extract")
|
154
|
+
|
143
155
|
# --- setup install files
|
144
156
|
|
145
157
|
$INSTALLFILES = []
|
@@ -153,7 +165,7 @@ $INSTALLFILES << ['carray_config.h', '$(archdir)']
|
|
153
165
|
#
|
154
166
|
|
155
167
|
if /cygwin|mingw/ =~ RUBY_PLATFORM
|
156
|
-
sitearchdir =
|
168
|
+
sitearchdir = RbConfig::CONFIG["sitearchdir"]
|
157
169
|
$DLDFLAGS << " -L#{sitearchdir} -Wl,--out-implib=libcarray.a "
|
158
170
|
unless File.exist? "libcarray.a"
|
159
171
|
$TOUCHED_LIBCARRAY_A = true
|
@@ -219,7 +231,7 @@ carray_stat_proc.c: carray_stat_proc.rb
|
|
219
231
|
carray_math.c: carray_math.rb
|
220
232
|
${RUBY} carray_math.rb
|
221
233
|
|
222
|
-
|
234
|
+
yard:
|
223
235
|
sh utils/create_rdoc.sh
|
224
236
|
|
225
237
|
clean-generated:
|
data/ext/mkmath.rb
CHANGED
@@ -305,7 +305,7 @@ static VALUE rb_ca_#{name}_bang (VALUE self, VALUE other)
|
|
305
305
|
}
|
306
306
|
end
|
307
307
|
METHODS << %{
|
308
|
-
rb_define_method(rb_cCArray, "#{
|
308
|
+
rb_define_method(rb_cCArray, "#{name}!", rb_ca_#{name}_bang, 1);
|
309
309
|
}
|
310
310
|
|
311
311
|
end
|
@@ -385,7 +385,7 @@ ca_moncmp_#{name}_#{type} (ca_size_t n, boolean8_t *m, char *ptr1, ca_size_t i1,
|
|
385
385
|
io.puts "};"
|
386
386
|
io.puts
|
387
387
|
io.print %{
|
388
|
-
static VALUE rb_ca_#{name} (VALUE self
|
388
|
+
static VALUE rb_ca_#{name} (VALUE self)
|
389
389
|
{ return rb_ca_call_moncmp(self, ca_moncmp_#{name}); }
|
390
390
|
}
|
391
391
|
DEFINITIONS << io.string
|
data/ext/ruby_carray.c
CHANGED
@@ -3,16 +3,16 @@
|
|
3
3
|
ruby_carray.c
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
13
11
|
#include "carray.h"
|
14
12
|
#include "version.h"
|
15
13
|
|
14
|
+
VALUE rb_cArithSeq;
|
15
|
+
|
16
16
|
VALUE rb_eCADataTypeError;
|
17
17
|
VALUE rb_mCA;
|
18
18
|
|
@@ -72,13 +72,14 @@ void Init_ca_iter_window ();
|
|
72
72
|
|
73
73
|
void Init_carray_mathfunc ();
|
74
74
|
|
75
|
-
|
76
75
|
void
|
77
76
|
Init_carray_ext ()
|
78
77
|
{
|
79
78
|
|
80
79
|
/* Classes and Modules */
|
81
80
|
|
81
|
+
rb_cArithSeq = rb_const_get(rb_cEnumerator, rb_intern("ArithmeticSequence"));
|
82
|
+
|
82
83
|
/* -- CArray class -- */
|
83
84
|
|
84
85
|
rb_cCArray = rb_define_class("CArray", rb_cObject);
|
@@ -97,7 +98,7 @@ Init_carray_ext ()
|
|
97
98
|
rb_eCADataTypeError =
|
98
99
|
rb_define_class_under(rb_cCArray, "DataTypeError", rb_eStandardError);
|
99
100
|
|
100
|
-
/*
|
101
|
+
/* yard:
|
101
102
|
class CArray::DataTypeError # :nodoc:
|
102
103
|
end
|
103
104
|
*/
|
@@ -111,7 +112,7 @@ Init_carray_ext ()
|
|
111
112
|
|
112
113
|
/* -- version -- */
|
113
114
|
|
114
|
-
/*
|
115
|
+
/* yard:
|
115
116
|
class CArray
|
116
117
|
VERSION = nil # :nodoc:
|
117
118
|
VERSION_CODE = nil # :nodoc:
|
@@ -122,11 +123,17 @@ Init_carray_ext ()
|
|
122
123
|
end
|
123
124
|
*/
|
124
125
|
|
126
|
+
/* @private */
|
125
127
|
rb_define_const(rb_cCArray, "VERSION", rb_str_new2(CA_VERSION));
|
128
|
+
/* @private */
|
126
129
|
rb_define_const(rb_cCArray, "VERSION_CODE", INT2NUM(CA_VERSION_CODE));
|
130
|
+
/* @private */
|
127
131
|
rb_define_const(rb_cCArray, "VERSION_MAJOR", INT2NUM(CA_VERSION_MAJOR));
|
132
|
+
/* @private */
|
128
133
|
rb_define_const(rb_cCArray, "VERSION_MINOR", INT2NUM(CA_VERSION_MINOR));
|
134
|
+
/* @private */
|
129
135
|
rb_define_const(rb_cCArray, "VERSION_TEENY", INT2NUM(CA_VERSION_TEENY));
|
136
|
+
/* @private */
|
130
137
|
rb_define_const(rb_cCArray, "VERSION_DATE", rb_str_new2(CA_VERSION_DATE));
|
131
138
|
|
132
139
|
/* -- system -- */
|
@@ -135,8 +142,10 @@ Init_carray_ext ()
|
|
135
142
|
rb_define_const(rb_cObject, "CA_NIL", CA_NIL);
|
136
143
|
|
137
144
|
#ifdef HAVE_COMPLEX_H
|
145
|
+
/* @private */
|
138
146
|
rb_define_const(rb_cCArray, "HAVE_COMPLEX", Qtrue);
|
139
147
|
#else
|
148
|
+
/* @private */
|
140
149
|
rb_define_const(rb_cCArray, "HAVE_COMPLEX", Qfalse);
|
141
150
|
#endif
|
142
151
|
|
@@ -169,7 +178,6 @@ Init_carray_ext ()
|
|
169
178
|
rb_define_const(rb_cObject, "CA_DCOMPLEX", INT2NUM(CA_DCOMPLEX));
|
170
179
|
rb_define_const(rb_cObject, "CA_SIZE", INT2NUM(CA_SIZE));
|
171
180
|
|
172
|
-
|
173
181
|
rb_define_const(rb_cObject, "CA_ALIGN_VOIDP", INT2NUM(CA_ALIGN_VOIDP));
|
174
182
|
rb_define_const(rb_cObject, "CA_ALIGN_FIXLEN", INT2NUM(CA_ALIGN_INT8));
|
175
183
|
rb_define_const(rb_cObject, "CA_ALIGN_BOOLEAN", INT2NUM(CA_ALIGN_INT8));
|
data/ext/ruby_ccomplex.c
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
ruby_ccomplex.c
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
@@ -462,7 +460,7 @@ Init_ccomplex ()
|
|
462
460
|
rb_define_method(rb_cCComplex, "coerce", rb_cc_coerce, 1);
|
463
461
|
|
464
462
|
rb_define_method(rb_cCComplex, "==", rb_cc_equal, 1);
|
465
|
-
rb_define_method(rb_cCComplex, "-@", rb_cc_uminus,
|
463
|
+
rb_define_method(rb_cCComplex, "-@", rb_cc_uminus, 0);
|
466
464
|
rb_define_method(rb_cCComplex, "+", rb_cc_plus, 1);
|
467
465
|
rb_define_method(rb_cCComplex, "-", rb_cc_minus, 1);
|
468
466
|
rb_define_method(rb_cCComplex, "*", rb_cc_asterisk, 1);
|
data/ext/ruby_float_func.c
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
ruby_numeric.c
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
data/ext/version.h
CHANGED
@@ -3,16 +3,14 @@
|
|
3
3
|
version.h
|
4
4
|
|
5
5
|
This file is part of Ruby/CArray extension library.
|
6
|
-
You can redistribute it and/or modify it under the terms of
|
7
|
-
the Ruby Licence.
|
8
6
|
|
9
|
-
Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
|
11
9
|
---------------------------------------------------------------------------- */
|
12
10
|
|
13
|
-
#define CA_VERSION "1.5.
|
14
|
-
#define CA_VERSION_CODE
|
11
|
+
#define CA_VERSION "1.5.6"
|
12
|
+
#define CA_VERSION_CODE 156
|
15
13
|
#define CA_VERSION_MAJOR 1
|
16
14
|
#define CA_VERSION_MINOR 5
|
17
|
-
#define CA_VERSION_TEENY
|
18
|
-
#define CA_VERSION_DATE "
|
15
|
+
#define CA_VERSION_TEENY 6
|
16
|
+
#define CA_VERSION_DATE "2021/02/25"
|
data/lib/carray.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# lib/carray.rb
|
4
4
|
#
|
5
5
|
# This file is part of Ruby/CArray extension library.
|
6
|
-
# You can redistribute it and/or modify it under the terms of
|
7
|
-
# the Ruby Licence.
|
8
6
|
#
|
9
|
-
# Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
# Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
#
|
11
9
|
# ----------------------------------------------------------------------------
|
12
10
|
|
@@ -32,6 +30,7 @@ require 'carray/transform'
|
|
32
30
|
require 'carray/convert'
|
33
31
|
require 'carray/testing'
|
34
32
|
require 'carray/ordering'
|
33
|
+
require 'carray/broadcast'
|
35
34
|
|
36
35
|
require 'carray/math'
|
37
36
|
require 'carray/iterator'
|
@@ -46,6 +45,7 @@ require 'carray/obsolete'
|
|
46
45
|
# autoload
|
47
46
|
|
48
47
|
unless $CARRAY_NO_AUTOLOAD
|
48
|
+
|
49
49
|
require 'carray/autoload'
|
50
50
|
require 'carray/autoload/autoload_base'
|
51
51
|
require 'carray/autoload/autoload_io_imagemagick'
|
@@ -59,12 +59,12 @@ unless $CARRAY_NO_AUTOLOAD
|
|
59
59
|
require 'carray/autoload/autoload_gem_gnuplot'
|
60
60
|
require 'carray/autoload/autoload_gem_narray'
|
61
61
|
require 'carray/autoload/autoload_gem_numo_narray'
|
62
|
-
require 'carray/autoload/autoload_gem_io_csv'
|
63
|
-
require 'carray/autoload/autoload_gem_io_sqlite3'
|
64
|
-
require 'carray/autoload/autoload_gem_rmagick'
|
65
|
-
require 'carray/autoload/autoload_gem_cairo'
|
66
|
-
require 'carray/autoload/autoload_gem_opencv'
|
67
|
-
require 'carray/autoload/autoload_gem_ffi'
|
62
|
+
# require 'carray/autoload/autoload_gem_io_csv'
|
63
|
+
# require 'carray/autoload/autoload_gem_io_sqlite3'
|
64
|
+
# require 'carray/autoload/autoload_gem_rmagick'
|
65
|
+
# require 'carray/autoload/autoload_gem_cairo'
|
66
|
+
# require 'carray/autoload/autoload_gem_opencv'
|
67
|
+
# require 'carray/autoload/autoload_gem_ffi'
|
68
68
|
|
69
69
|
undef autoload_method
|
70
70
|
end
|
data/lib/carray/autoload.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
class CArray
|
2
|
-
autoload_method :to_numo,
|
3
|
-
autoload_method :numo,
|
4
|
-
autoload_method "self.as_numo",
|
2
|
+
autoload_method :to_numo, "carray-numo-narray"
|
3
|
+
autoload_method :numo, "carray-numo-narray"
|
4
|
+
autoload_method "self.as_numo", "carray-numo-narray"
|
5
5
|
autoload_method "self.as_numo!", "carray-numo-narray"
|
6
|
-
autoload_method :as_numo,
|
7
|
-
autoload_method :as_numo!,
|
6
|
+
autoload_method :as_numo, "carray-numo-narray"
|
7
|
+
autoload_method :as_numo!, "carray-numo-narray"
|
8
8
|
end
|
9
9
|
|
10
10
|
module Numo
|
11
11
|
class NArray
|
12
12
|
autoload_method :to_ca, "carray-numo-narray"
|
13
|
-
autoload_method :ca,
|
13
|
+
autoload_method :ca, "carray-numo-narray"
|
14
14
|
end
|
15
15
|
end
|
data/lib/carray/basic.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/basic.rb
|
4
4
|
#
|
5
5
|
# This file is part of Ruby/CArray extension library.
|
6
|
-
# You can redistribute it and/or modify it under the terms of
|
7
|
-
# the Ruby Licence.
|
8
6
|
#
|
9
|
-
# Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
# Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
#
|
11
9
|
# ----------------------------------------------------------------------------
|
12
10
|
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# ----------------------------------------------------------------------------
|
2
|
+
#
|
3
|
+
# carray/broadcast.rb
|
4
|
+
#
|
5
|
+
# This file is part of Ruby/CArray extension library.
|
6
|
+
#
|
7
|
+
# Copyright (C) 2005-2020 Hiroki Motoyoshi
|
8
|
+
#
|
9
|
+
# ----------------------------------------------------------------------------
|
10
|
+
|
11
|
+
class CArray
|
12
|
+
|
13
|
+
def broadcast_to (*newdim)
|
14
|
+
|
15
|
+
if newdim.size < ndim
|
16
|
+
raise "(Broadcasting) can't broadcast to #{newdim.inspect} because too small rank is specified"
|
17
|
+
end
|
18
|
+
|
19
|
+
#
|
20
|
+
# Try to build unbound repeat index (includes :*)
|
21
|
+
# with broadcasting rule in Numpy.
|
22
|
+
#
|
23
|
+
repdim = []
|
24
|
+
shape = []
|
25
|
+
|
26
|
+
srcdim = dim.dup
|
27
|
+
dstdim = newdim.dup
|
28
|
+
sd = srcdim.pop
|
29
|
+
dd = dstdim.pop
|
30
|
+
while dd
|
31
|
+
if sd == dd
|
32
|
+
repdim.unshift nil
|
33
|
+
shape.unshift(dd)
|
34
|
+
sd = srcdim.pop
|
35
|
+
elsif dd == 1
|
36
|
+
repdim.unshift :*
|
37
|
+
elsif sd == 1
|
38
|
+
repdim.unshift :*
|
39
|
+
sd = srcdim.pop
|
40
|
+
else
|
41
|
+
raise "(Broadcasting) can't broadcast to #{newdim.inspect} "
|
42
|
+
end
|
43
|
+
dd = dstdim.pop
|
44
|
+
end
|
45
|
+
|
46
|
+
#
|
47
|
+
# Call Unbound repeat's bind
|
48
|
+
#
|
49
|
+
return self.reshape(*shape)[*repdim].bind(*newdim) if repdim.include?(:*)
|
50
|
+
|
51
|
+
self
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
class CScalar
|
57
|
+
|
58
|
+
def broadcast_to (*newdim)
|
59
|
+
out = CArray.new(data_type, newdim, bytes: bytes)
|
60
|
+
out[] = self
|
61
|
+
out
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
class CAUnboundRepeat
|
67
|
+
|
68
|
+
alias broadcast_to bind
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
def CArray.broadcast (*argv, expand_scalar: false, &block)
|
73
|
+
|
74
|
+
sel = argv.select { |arg| arg.is_a?(CArray) }
|
75
|
+
return argv if sel.empty?
|
76
|
+
|
77
|
+
dim = []
|
78
|
+
ndim = sel.map(&:ndim).max
|
79
|
+
ndim.times do |k|
|
80
|
+
dim[k] = sel.map { |arg| arg.dim[k] || 1 }.max
|
81
|
+
end
|
82
|
+
|
83
|
+
if not expand_scalar
|
84
|
+
list = argv.map { |arg|
|
85
|
+
case arg
|
86
|
+
when CScalar
|
87
|
+
arg
|
88
|
+
when CArray
|
89
|
+
arg.broadcast_to(*dim)
|
90
|
+
else
|
91
|
+
arg
|
92
|
+
end
|
93
|
+
}
|
94
|
+
else
|
95
|
+
list = argv.map { |arg| arg.is_a?(CArray) ? arg.broadcast_to(*dim) : arg }
|
96
|
+
end
|
97
|
+
|
98
|
+
return block.call(*list) if block
|
99
|
+
return list
|
100
|
+
end
|
101
|
+
|
data/lib/carray/compose.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/composition.rb
|
4
4
|
#
|
5
5
|
# This file is part of Ruby/CArray extension library.
|
6
|
-
# You can redistribute it and/or modify it under the terms of
|
7
|
-
# the Ruby Licence.
|
8
6
|
#
|
9
|
-
# Copyright (C) 2005 Hiroki Motoyoshi
|
7
|
+
# Copyright (C) 2005-2020 Hiroki Motoyoshi
|
10
8
|
#
|
11
9
|
# ----------------------------------------------------------------------------
|
12
10
|
|
@@ -34,6 +32,7 @@ class CArray
|
|
34
32
|
end
|
35
33
|
end
|
36
34
|
out = CArray.new(data_type, newdim, &block)
|
35
|
+
out.data_class = data_class if has_data_class?
|
37
36
|
if out.has_mask?
|
38
37
|
out.mask.paste(offset, self.false)
|
39
38
|
end
|
@@ -63,6 +62,7 @@ class CArray
|
|
63
62
|
grids[i][offset[i]..-1].seq!(offset[i]+bsize[i])
|
64
63
|
end
|
65
64
|
out = CArray.new(data_type, newdim)
|
65
|
+
out.data_class = data_class if has_data_class?
|
66
66
|
if block_given?
|
67
67
|
sel = out.true
|
68
68
|
sel[*grids] = 0
|
@@ -114,7 +114,14 @@ class CArray
|
|
114
114
|
return self[*grids].to_ca
|
115
115
|
end
|
116
116
|
|
117
|
-
def self.combine (data_type, tdim, list, at = 0)
|
117
|
+
def self.combine (data_type, tdim, list, at = 0, bytes: nil)
|
118
|
+
if CArray.data_class?(data_type)
|
119
|
+
data_class = data_type
|
120
|
+
data_type = :fixlen
|
121
|
+
bytes = data_class::DATA_SIZE
|
122
|
+
else
|
123
|
+
data_class = nil
|
124
|
+
end
|
118
125
|
has_fill_value = false
|
119
126
|
if block_given?
|
120
127
|
fill_value = yield
|
@@ -168,6 +175,7 @@ class CArray
|
|
168
175
|
else
|
169
176
|
obj = CArray.new(data_type, newdim)
|
170
177
|
end
|
178
|
+
out.data_class = data_class if data_class
|
171
179
|
idx = newdim.map{0}
|
172
180
|
block.each_with_index do |item, tidx|
|
173
181
|
(at...at+tndim).each_with_index do |d,i|
|
@@ -178,11 +186,18 @@ class CArray
|
|
178
186
|
obj
|
179
187
|
end
|
180
188
|
|
181
|
-
def self.bind (data_type, list, at = 0)
|
182
|
-
return CArray.combine(data_type, [list.size], list, at)
|
189
|
+
def self.bind (data_type, list, at = 0, bytes: nil)
|
190
|
+
return CArray.combine(data_type, [list.size], list, at, bytes: bytes)
|
183
191
|
end
|
184
192
|
|
185
|
-
def self.composite (data_type, tdim, list, at = 0)
|
193
|
+
def self.composite (data_type, tdim, list, at = 0, bytes: nil)
|
194
|
+
if CArray.data_class?(data_type)
|
195
|
+
data_class = data_type
|
196
|
+
data_type = :fixlen
|
197
|
+
bytes = data_class::DATA_SIZE
|
198
|
+
else
|
199
|
+
data_class = nil
|
200
|
+
end
|
186
201
|
if not tdim.is_a?(Array) or tdim.size == 0
|
187
202
|
raise "invalid tiling dimension"
|
188
203
|
end
|
@@ -213,7 +228,8 @@ class CArray
|
|
213
228
|
end
|
214
229
|
newdim = dim.clone
|
215
230
|
newdim[at,0] = tdim
|
216
|
-
obj = CArray.new(data_type, newdim)
|
231
|
+
obj = CArray.new(data_type, newdim, bytes: bytes)
|
232
|
+
out.data_class = data_class if data_class
|
217
233
|
idx = Array.new(ndim+tndim) { nil }
|
218
234
|
CArray.each_index(*tdim) do |*tidx|
|
219
235
|
idx[at,tndim] = tidx
|
@@ -222,13 +238,21 @@ class CArray
|
|
222
238
|
obj
|
223
239
|
end
|
224
240
|
|
225
|
-
def self.merge (data_type, list, at = -1)
|
226
|
-
return CArray.composite(data_type, [list.size], list, at)
|
241
|
+
def self.merge (data_type, list, at = -1, bytes: nil)
|
242
|
+
return CArray.composite(data_type, [list.size], list, at, bytes: bytes)
|
227
243
|
end
|
228
244
|
|
229
245
|
def self.join (*argv)
|
230
246
|
# get options
|
231
247
|
case argv.first
|
248
|
+
when Class
|
249
|
+
if CArray.data_class?(argv.first)
|
250
|
+
data_class = argv.shift
|
251
|
+
data_type = "fixlen"
|
252
|
+
bytes = data_class::DATA_SIZE
|
253
|
+
else
|
254
|
+
raise "#{argv.first} can not to be a data_class for CArray"
|
255
|
+
end
|
232
256
|
when Integer, Symbol, String
|
233
257
|
type, = *CArray.guess_type_and_bytes(argv.shift, 0)
|
234
258
|
else
|