carray 1.5.2 → 1.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +32 -0
- data/NEWS.md +26 -3
- data/Rakefile +1 -1
- data/TODO.md +5 -4
- data/carray.gemspec +7 -5
- data/ext/ca_obj_bitarray.c +4 -7
- data/ext/ca_obj_bitfield.c +3 -5
- data/ext/ca_obj_block.c +1 -6
- data/ext/ca_obj_unbound_repeat.c +21 -52
- data/ext/carray_attribute.c +16 -1
- data/ext/carray_core.c +22 -16
- data/ext/carray_math.rb +20 -2
- data/ext/carray_numeric.c +32 -51
- data/ext/carray_test.c +9 -0
- data/ext/carray_undef.c +0 -8
- data/ext/version.h +4 -4
- data/lib/carray.rb +1 -3
- data/lib/carray/autoload.rb +0 -2
- data/lib/carray/basic.rb +1 -3
- data/lib/carray/broadcast.rb +58 -21
- data/lib/carray/compose.rb +34 -10
- data/lib/carray/construct.rb +1 -3
- 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 +2 -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 -3
- data/lib/carray/ordering.rb +1 -3
- data/lib/carray/serialize.rb +22 -13
- 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 +1 -3
- data/spec/Classes/CAUnboudRepeat_spec.rb +24 -0
- data/spec/Features/feature_boolean_spec.rb +15 -14
- data/spec/Features/feature_broadcast.rb +16 -0
- data/spec/Features/feature_mask_spec.rb +6 -0
- metadata +12 -10
@@ -19,6 +19,20 @@ describe "CAUnboundRepeat" do
|
|
19
19
|
|
20
20
|
end
|
21
21
|
|
22
|
+
example "ref" do
|
23
|
+
a = CA_INT(0..2)[:*,nil]
|
24
|
+
is_asserted_by { a[0] == 0 }
|
25
|
+
is_asserted_by { a[1] == 1 }
|
26
|
+
is_asserted_by { a[2] == 2 }
|
27
|
+
is_asserted_by { a.bind(3,3) == CA_INT([[0,1,2],
|
28
|
+
[0,1,2],
|
29
|
+
[0,1,2]]) }
|
30
|
+
is_asserted_by { a[0,0] == 0 }
|
31
|
+
is_asserted_by { a[0,1] == 1 }
|
32
|
+
is_asserted_by { a[0,2] == 2 }
|
33
|
+
is_asserted_by { a.to_a == [[0,1,2]] }
|
34
|
+
end
|
35
|
+
|
22
36
|
example "bind" do
|
23
37
|
|
24
38
|
a = CA_INT([1,2,3])
|
@@ -75,4 +89,14 @@ describe "CAUnboundRepeat" do
|
|
75
89
|
is_asserted_by { a[:*,nil][:*,nil,nil].shape == [1,1,3] }
|
76
90
|
end
|
77
91
|
|
92
|
+
example "extra * in arithmetic operation" do
|
93
|
+
a = CA_INT(1..3)
|
94
|
+
b = CA_INT(1..3)
|
95
|
+
aa = a[:*,:*,nil]
|
96
|
+
bb = b[:*,nil,:*]
|
97
|
+
is_asserted_by { aa.bind_with(bb) == a[3,:%][:*,nil,nil] }
|
98
|
+
is_asserted_by { aa + bb == (a[3,:%]+b[:%,3])[:*,nil,nil] }
|
99
|
+
end
|
100
|
+
|
101
|
+
|
78
102
|
end
|
@@ -75,23 +75,24 @@ describe "TestBooleanType " do
|
|
75
75
|
|
76
76
|
end
|
77
77
|
|
78
|
-
example "
|
78
|
+
example "boolean_bit_operation_with_non_boolean_integer_type" do
|
79
79
|
|
80
|
-
a =
|
81
|
-
b =
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
expect { e0 & b }.not_to raise_error
|
87
|
-
expect { e0 | b }.not_to raise_error
|
88
|
-
expect { e0 ^ b }.not_to raise_error
|
89
|
-
# ---
|
90
|
-
expect { b & e0 }.not_to raise_error
|
91
|
-
expect { b | e0 }.not_to raise_error
|
92
|
-
expect { b ^ e0 }.not_to raise_error
|
80
|
+
a = CA_BOOLEAN([1,1,1,1])
|
81
|
+
b = CA_INT([0,1,2,3])
|
82
|
+
|
83
|
+
is_asserted_by { a & b == CA_INT([0, 1, 0, 1]) }
|
84
|
+
is_asserted_by { a | b == CA_INT([1, 1, 3, 3]) }
|
85
|
+
is_asserted_by { a ^ b == CA_INT([1, 0, 3, 2]) }
|
93
86
|
|
94
87
|
end
|
95
88
|
|
89
|
+
example "boolean_arithmetic_operation" do
|
90
|
+
a = CA_BOOLEAN([1,1,0,0])
|
91
|
+
b = CA_INT( [0,1,1,0])
|
92
|
+
|
93
|
+
expect { a + a }.to raise_error(CArray::DataTypeError)
|
94
|
+
|
95
|
+
is_asserted_by { a + b == CA_INT([1, 2, 1, 0]) }
|
96
|
+
end
|
96
97
|
|
97
98
|
end
|
@@ -97,4 +97,20 @@ describe "CArray.broadcast" do
|
|
97
97
|
is_asserted_by { cc == c }
|
98
98
|
end
|
99
99
|
|
100
|
+
example "extension of dimension" do
|
101
|
+
a = CA_INT([[1,2,3],[4,5,6]])
|
102
|
+
|
103
|
+
is_asserted_by { a.broadcast_to(1,2,1,3) == CA_INT([[[[ 1, 2, 3 ]],
|
104
|
+
[[ 4, 5, 6 ]]]]) }
|
105
|
+
|
106
|
+
is_asserted_by { a.reshape(2,1,3).broadcast_to(1,2,1,3) == CA_INT([[[[ 1, 2, 3 ]],
|
107
|
+
[[ 4, 5, 6 ]]]]) }
|
108
|
+
|
109
|
+
is_asserted_by { a.reshape(1,2,3).broadcast_to(1,2,1,3) == CA_INT([[[[ 1, 2, 3 ]],
|
110
|
+
[[ 4, 5, 6 ]]]]) }
|
111
|
+
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
|
100
116
|
end
|
@@ -199,6 +199,12 @@ describe "Feature: Masking" do
|
|
199
199
|
example "count_not_masked" do
|
200
200
|
# test_basic_featrues
|
201
201
|
end
|
202
|
+
|
203
|
+
example "compare with UNDEF" do
|
204
|
+
a = CA_INT([1,UNDEF,2])
|
205
|
+
is_asserted_by { a.eq(UNDEF) == a.is_masked }
|
206
|
+
is_asserted_by { a.ne(UNDEF) == a.is_not_masked }
|
207
|
+
end
|
202
208
|
|
203
209
|
example "unmask" do
|
204
210
|
# ---
|
metadata
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carray
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroki Motoyoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: " Ruby/CArray is an extension library for the multi-dimensional
|
14
|
-
class.\n CArray can store integers and floating point numbers to perform
|
15
|
-
\
|
16
|
-
data\n analysis. Ruby/CArray has different features from other
|
17
|
-
array\n libraries (narray, numo-narray, nmatrix), such as element-
|
18
|
-
\n creation of reference arrays that can reflect changes to the referent,
|
19
|
-
\
|
13
|
+
description: " Ruby/CArray is an extension library for the multi-dimensional numerical
|
14
|
+
array class.\n CArray can store integers and floating point numbers to perform
|
15
|
+
calculations\n efficiently. Therefore, Ruby/CArray is suitable for numerical
|
16
|
+
computation and data\n analysis. Ruby/CArray has different features from other
|
17
|
+
multidimensional array\n libraries (narray, numo-narray, nmatrix), such as element-wise
|
18
|
+
masks, \n creation of reference arrays that can reflect changes to the referent,
|
19
|
+
\n the ability to access memory pointers of other objects, user-defined arrays,\n
|
20
20
|
\ and so on.\n"
|
21
21
|
email: ''
|
22
22
|
executables: []
|
@@ -24,6 +24,7 @@ extensions:
|
|
24
24
|
- ext/extconf.rb
|
25
25
|
extra_rdoc_files: []
|
26
26
|
files:
|
27
|
+
- ".yardopts"
|
27
28
|
- LICENSE
|
28
29
|
- NEWS.md
|
29
30
|
- README.md
|
@@ -222,7 +223,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
223
|
- !ruby/object:Gem::Version
|
223
224
|
version: '0'
|
224
225
|
requirements: []
|
225
|
-
|
226
|
+
rubyforge_project:
|
227
|
+
rubygems_version: 2.7.7
|
226
228
|
signing_key:
|
227
229
|
specification_version: 4
|
228
230
|
summary: Multi-dimesional array class for Ruby
|