carray 1.5.2 → 1.5.7
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 +56 -3
- data/README.md +34 -18
- data/Rakefile +1 -1
- data/TODO.md +5 -4
- data/carray.gemspec +10 -11
- 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_refer.c +6 -8
- data/ext/ca_obj_unbound_repeat.c +21 -52
- data/ext/carray.h +4 -0
- data/ext/carray_access.c +77 -45
- data/ext/carray_attribute.c +16 -1
- data/ext/carray_cast.c +1 -1
- data/ext/carray_conversion.c +8 -1
- data/ext/carray_core.c +22 -16
- data/ext/carray_generate.c +3 -3
- data/ext/carray_mask.c +12 -2
- data/ext/carray_math.rb +20 -2
- data/ext/carray_numeric.c +32 -51
- data/ext/carray_order.c +159 -0
- data/ext/carray_test.c +13 -0
- data/ext/carray_undef.c +0 -8
- data/ext/carray_utils.c +126 -47
- data/ext/extconf.rb +13 -1
- data/ext/mkmath.rb +1 -1
- data/ext/ruby_carray.c +8 -1
- data/ext/ruby_ccomplex.c +1 -1
- data/ext/version.h +4 -4
- data/lib/carray.rb +7 -9
- data/lib/carray/autoload.rb +0 -2
- data/lib/carray/basic.rb +3 -5
- data/lib/carray/broadcast.rb +78 -22
- data/lib/carray/compose.rb +34 -10
- data/lib/carray/construct.rb +36 -14
- 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 -17
- data/lib/carray/ordering.rb +1 -3
- 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/CAUnboudRepeat_spec.rb +24 -0
- data/spec/Features/feature_attributes_spec.rb +6 -6
- data/spec/Features/feature_boolean_spec.rb +15 -14
- data/spec/Features/feature_broadcast.rb +16 -0
- data/spec/Features/feature_cast_spec.rb +1 -1
- data/spec/Features/feature_mask_spec.rb +6 -0
- metadata +10 -11
data/lib/carray/testing.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/test.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
|
|
@@ -41,16 +39,13 @@ class CArray
|
|
41
39
|
|
42
40
|
# Returns the array eliminated all the duplicated elements.
|
43
41
|
def uniq
|
44
|
-
ary = to_a.uniq
|
42
|
+
ary = flatten.to_a.uniq
|
45
43
|
if has_mask?
|
46
44
|
ary.delete(UNDEF)
|
47
45
|
end
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
return CArray.new(data_type, [ary.length], :bytes=>bytes) { ary }
|
52
|
-
end
|
46
|
+
out = CArray.new(data_type, [ary.length], :bytes=>bytes) { ary }
|
47
|
+
out.data_class = data_class if has_data_class?
|
48
|
+
return out
|
53
49
|
end
|
54
50
|
|
55
|
-
|
56
51
|
end
|
data/lib/carray/time.rb
CHANGED
@@ -3,10 +3,8 @@
|
|
3
3
|
# carray/time.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
|
|
data/lib/carray/transform.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
|
|
@@ -96,5 +94,16 @@ class CArray
|
|
96
94
|
return self[:%,1]
|
97
95
|
end
|
98
96
|
|
97
|
+
# pulled
|
98
|
+
|
99
|
+
def pulled (*args)
|
100
|
+
idx = args.map{|s| s.nil? ? :% : s}
|
101
|
+
return self[*idx]
|
102
|
+
end
|
99
103
|
|
104
|
+
def pull (*args)
|
105
|
+
idx = args.map{|s| s.nil? ? :% : s}
|
106
|
+
return self[*idx].to_ca
|
107
|
+
end
|
108
|
+
|
100
109
|
end
|
data/misc/NOTE
CHANGED
@@ -1,42 +1,6 @@
|
|
1
1
|
Note for developper
|
2
2
|
===================
|
3
3
|
|
4
|
-
Make targets
|
5
|
-
------------
|
6
|
-
|
7
|
-
### create Makefile
|
8
|
-
|
9
|
-
ruby extconf.rb
|
10
|
-
|
11
|
-
### build extensions
|
12
|
-
|
13
|
-
make all
|
14
|
-
|
15
|
-
### install via RubyGems
|
16
|
-
|
17
|
-
make build-gem
|
18
|
-
make install-gem
|
19
|
-
make uninstall-gem ### for uninstall this version
|
20
|
-
|
21
|
-
### install via extconf.rb
|
22
|
-
|
23
|
-
ruby extconf.rb
|
24
|
-
make all
|
25
|
-
make install
|
26
|
-
|
27
|
-
### cleaning temporary files
|
28
|
-
|
29
|
-
make clean
|
30
|
-
make distclean
|
31
|
-
|
32
|
-
### create gem package
|
33
|
-
|
34
|
-
make package ### -> rake package
|
35
|
-
|
36
|
-
### run test
|
37
|
-
|
38
|
-
make test ### -> rake test
|
39
|
-
|
40
4
|
Utility scripts
|
41
5
|
---------------
|
42
6
|
|
@@ -53,8 +17,11 @@ Check Points for Debug
|
|
53
17
|
|
54
18
|
* 'elements' should be checked with double float number
|
55
19
|
|
56
|
-
*
|
57
|
-
|
20
|
+
* One of the following methods should be called before ca->mask refered
|
21
|
+
+ ca_attach
|
22
|
+
+ ca_has_mask
|
23
|
+
+ ca_update_mask
|
24
|
+
+ ca_create_mask
|
58
25
|
|
59
26
|
* Avoid the exposition of raw VALUE data in object array
|
60
27
|
|
@@ -71,3 +38,14 @@ OpenMP
|
|
71
38
|
------
|
72
39
|
|
73
40
|
* '--with-cc="gcc -fopenmp"' ... and so on.
|
41
|
+
|
42
|
+
Range
|
43
|
+
-----
|
44
|
+
|
45
|
+
int rb_arithmetic_sequence_extract(VALUE, VALUE *, VALUE *, VALUE *, int *);
|
46
|
+
|
47
|
+
/* range.c */
|
48
|
+
#define RANGE_BEG(r) (RSTRUCT(r)->as.ary[0])
|
49
|
+
#define RANGE_END(r) (RSTRUCT(r)->as.ary[1])
|
50
|
+
#define RANGE_EXCL(r) (RSTRUCT(r)->as.ary[2])
|
51
|
+
|
@@ -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
|
@@ -255,19 +255,19 @@ describe "TestCArrayAttribute " do
|
|
255
255
|
a = CArray.int32(3,3)
|
256
256
|
is_asserted_by { true == a.valid_index?(2, 2) }
|
257
257
|
is_asserted_by { true == a.valid_index?(1, 1) }
|
258
|
-
is_asserted_by { true == a.valid_index?((-1), (-1)) }
|
259
|
-
is_asserted_by { true == a.valid_index?((-3), (-3)) }
|
258
|
+
# is_asserted_by { true == a.valid_index?((-1), (-1)) }
|
259
|
+
# is_asserted_by { true == a.valid_index?((-3), (-3)) }
|
260
260
|
|
261
261
|
is_asserted_by { true == a.valid_addr?(8) }
|
262
262
|
is_asserted_by { true == a.valid_addr?(4) }
|
263
|
-
is_asserted_by { true == a.valid_addr?((-4)) }
|
264
|
-
is_asserted_by { true == a.valid_addr?((-8)) }
|
263
|
+
# is_asserted_by { true == a.valid_addr?((-4)) }
|
264
|
+
# is_asserted_by { true == a.valid_addr?((-8)) }
|
265
265
|
|
266
266
|
is_asserted_by { false == a.valid_index?(1, 3) }
|
267
|
-
is_asserted_by { false == a.valid_index?((-4), 1) }
|
267
|
+
# is_asserted_by { false == a.valid_index?((-4), 1) }
|
268
268
|
|
269
269
|
is_asserted_by { false == a.valid_addr?(9) }
|
270
|
-
is_asserted_by { false == a.valid_addr?((-10)) }
|
270
|
+
# is_asserted_by { false == a.valid_addr?((-10)) }
|
271
271
|
end
|
272
272
|
|
273
273
|
example "same_shape?" do
|
@@ -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,29 +1,28 @@
|
|
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.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroki Motoyoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
\ the ability to access memory pointers of other objects, user-defined arrays,\n
|
20
|
-
\ and so on.\n"
|
13
|
+
description: |2
|
14
|
+
Ruby/CArray is an extension library for the multi-dimensional numerical array
|
15
|
+
class. The name "CArray" comes from the meaning of a wrapper to a numerical array
|
16
|
+
handled by the C language. CArray stores integers or floating-point numbers in
|
17
|
+
memory block and treats them collectively to ensure efficient performance.
|
18
|
+
Therefore, Ruby/CArray is suitable for numerical computation and data analysis.
|
21
19
|
email: ''
|
22
20
|
executables: []
|
23
21
|
extensions:
|
24
22
|
- ext/extconf.rb
|
25
23
|
extra_rdoc_files: []
|
26
24
|
files:
|
25
|
+
- ".yardopts"
|
27
26
|
- LICENSE
|
28
27
|
- NEWS.md
|
29
28
|
- README.md
|
@@ -222,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
221
|
- !ruby/object:Gem::Version
|
223
222
|
version: '0'
|
224
223
|
requirements: []
|
225
|
-
rubygems_version: 3.
|
224
|
+
rubygems_version: 3.1.2
|
226
225
|
signing_key:
|
227
226
|
specification_version: 4
|
228
227
|
summary: Multi-dimesional array class for Ruby
|