numo-narray 0.9.1.3 → 0.9.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +5 -4
- data/ext/numo/narray/data.c +21 -0
- data/ext/numo/narray/gen/tmpl_bit/mask.c +27 -7
- data/ext/numo/narray/narray.c +34 -0
- data/ext/numo/narray/numo/narray.h +2 -2
- data/numo-narray.gemspec +6 -2
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aba2ab60aae2fbf24973f75a9b17c9f35bd7fec15c58e110b6711a62773b2de0
|
4
|
+
data.tar.gz: feae74cc5b9d5dfbe238f78f60b22f017a4558b241fe772b0615ac3fa0c80b68
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7af93ba0ac1b6732fa9bbe22f72572ecdd8c9142861c0a12ca9124eb2094fef512923ce6040a52576c835ebde4b9a697af973e68c97a9703430f92ad5d6442b
|
7
|
+
data.tar.gz: b413079a3a924e698b074183d462397bd306bad255e619d1e58b52c623c175d93ca5ad72dbf17a84becc21172f10cc0cba4ea6c5d8c291cc706e20e0ff867d2e
|
data/Rakefile
CHANGED
@@ -68,13 +68,14 @@ namespace :release do
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
+
rescue LoadError
|
72
|
+
end
|
73
|
+
|
71
74
|
require 'rake/testtask'
|
72
75
|
Rake::TestTask.new(:test) do |t|
|
73
76
|
t.libs << "test"
|
74
77
|
t.libs << "lib"
|
75
|
-
t.verbose =
|
78
|
+
t.verbose = false
|
79
|
+
t.warning = false
|
76
80
|
t.test_files = FileList['test/**/*_test.rb']
|
77
81
|
end
|
78
|
-
|
79
|
-
rescue LoadError
|
80
|
-
end
|
data/ext/numo/narray/data.c
CHANGED
@@ -393,6 +393,10 @@ na_reshape_bang(int argc, VALUE *argv, VALUE self)
|
|
393
393
|
{
|
394
394
|
size_t *shape;
|
395
395
|
narray_t *na;
|
396
|
+
narray_view_t *na2;
|
397
|
+
ssize_t stride;
|
398
|
+
stridx_t *stridx;
|
399
|
+
int i;
|
396
400
|
|
397
401
|
if (na_check_contiguous(self)==Qfalse) {
|
398
402
|
rb_raise(rb_eStandardError, "cannot change shape of non-contiguous NArray");
|
@@ -401,6 +405,23 @@ na_reshape_bang(int argc, VALUE *argv, VALUE self)
|
|
401
405
|
na_check_reshape(argc, argv, self, shape);
|
402
406
|
|
403
407
|
GetNArray(self, na);
|
408
|
+
if (na->type == NARRAY_VIEW_T) {
|
409
|
+
GetNArrayView(self, na2);
|
410
|
+
if (na->ndim < argc) {
|
411
|
+
stridx = ALLOC_N(stridx_t,argc);
|
412
|
+
} else {
|
413
|
+
stridx = na2->stridx;
|
414
|
+
}
|
415
|
+
stride = SDX_GET_STRIDE(na2->stridx[na->ndim-1]);
|
416
|
+
for (i=argc; i--;) {
|
417
|
+
SDX_SET_STRIDE(stridx[i],stride);
|
418
|
+
stride *= shape[i];
|
419
|
+
}
|
420
|
+
if (stridx != na2->stridx) {
|
421
|
+
xfree(na2->stridx);
|
422
|
+
na2->stridx = stridx;
|
423
|
+
}
|
424
|
+
}
|
404
425
|
na_setup_shape(na, argc, shape);
|
405
426
|
return self;
|
406
427
|
}
|
@@ -75,6 +75,10 @@ static void
|
|
75
75
|
#define cIndex numo_cInt32
|
76
76
|
#endif
|
77
77
|
|
78
|
+
static void shape_error() {
|
79
|
+
rb_raise(nary_eShapeError,"mask and masked arrays must have the same shape");
|
80
|
+
}
|
81
|
+
|
78
82
|
/*
|
79
83
|
Return subarray of argument masked with self bit array.
|
80
84
|
@overload <%=op_map%>(array)
|
@@ -84,17 +88,33 @@ static void
|
|
84
88
|
static VALUE
|
85
89
|
<%=c_func(1)%>(VALUE mask, VALUE val)
|
86
90
|
{
|
87
|
-
|
91
|
+
int i;
|
92
|
+
VALUE idx_1, view;
|
88
93
|
narray_data_t *nidx;
|
89
|
-
narray_view_t *nv;
|
90
|
-
narray_t *na;
|
91
|
-
narray_view_t *na1;
|
94
|
+
narray_view_t *nv, *nv_val;
|
95
|
+
narray_t *na, *na_mask;
|
92
96
|
stridx_t stridx0;
|
93
97
|
size_t n_1;
|
94
98
|
where_opt_t g;
|
95
99
|
ndfunc_arg_in_t ain[2] = {{cT,0},{Qnil,0}};
|
96
100
|
ndfunc_t ndf = {<%=c_iter%>, FULL_LOOP, 2, 0, ain, 0};
|
97
101
|
|
102
|
+
// cast val to NArray
|
103
|
+
if (!rb_obj_is_kind_of(val, numo_cNArray)) {
|
104
|
+
val = rb_funcall(numo_cNArray, id_cast, 1, val);
|
105
|
+
}
|
106
|
+
// shapes of mask and val must be same
|
107
|
+
GetNArray(val, na);
|
108
|
+
GetNArray(mask, na_mask);
|
109
|
+
if (na_mask->ndim != na->ndim) {
|
110
|
+
shape_error();
|
111
|
+
}
|
112
|
+
for (i=0; i<na->ndim; i++) {
|
113
|
+
if (na_mask->shape[i] != na->shape[i]) {
|
114
|
+
shape_error();
|
115
|
+
}
|
116
|
+
}
|
117
|
+
|
98
118
|
n_1 = NUM2SIZET(<%=find_tmpl("count_true").c_func%>(0, NULL, mask));
|
99
119
|
idx_1 = nary_new(cIndex, 1, &n_1);
|
100
120
|
g.count = 0;
|
@@ -110,19 +130,19 @@ static VALUE
|
|
110
130
|
GetNArrayData(idx_1,nidx);
|
111
131
|
SDX_SET_INDEX(stridx0,(size_t*)nidx->ptr);
|
112
132
|
nidx->ptr = NULL;
|
133
|
+
RB_GC_GUARD(idx_1);
|
113
134
|
|
114
135
|
nv->stridx = ALLOC_N(stridx_t,1);
|
115
136
|
nv->stridx[0] = stridx0;
|
116
137
|
nv->offset = 0;
|
117
138
|
|
118
|
-
GetNArray(val, na);
|
119
139
|
switch(NA_TYPE(na)) {
|
120
140
|
case NARRAY_DATA_T:
|
121
141
|
nv->data = val;
|
122
142
|
break;
|
123
143
|
case NARRAY_VIEW_T:
|
124
|
-
GetNArrayView(val,
|
125
|
-
nv->data =
|
144
|
+
GetNArrayView(val, nv_val);
|
145
|
+
nv->data = nv_val->data;
|
126
146
|
break;
|
127
147
|
default:
|
128
148
|
rb_raise(rb_eRuntimeError,"invalid NA_TYPE: %d",NA_TYPE(na));
|
data/ext/numo/narray/narray.c
CHANGED
@@ -922,6 +922,39 @@ na_check_contiguous(VALUE self)
|
|
922
922
|
return Qfalse;
|
923
923
|
}
|
924
924
|
|
925
|
+
VALUE
|
926
|
+
na_check_fortran_contiguous(VALUE self)
|
927
|
+
{
|
928
|
+
int i;
|
929
|
+
ssize_t st0;
|
930
|
+
narray_t *na;
|
931
|
+
|
932
|
+
switch(RNARRAY_TYPE(self)) {
|
933
|
+
case NARRAY_DATA_T:
|
934
|
+
case NARRAY_FILEMAP_T:
|
935
|
+
return Qfalse;
|
936
|
+
case NARRAY_VIEW_T:
|
937
|
+
GetNArray(self,na);
|
938
|
+
|
939
|
+
// not contiguous if it has index
|
940
|
+
for (i=0; i < NA_NDIM(na); i++) {
|
941
|
+
if (NA_IS_INDEX_AT(na,i))
|
942
|
+
return Qfalse;
|
943
|
+
}
|
944
|
+
|
945
|
+
// check f-contiguous
|
946
|
+
st0 = nary_element_stride(self); // elmsz
|
947
|
+
for (i=0; i < NA_NDIM(na); i++) {
|
948
|
+
if (NA_SHAPE(na)[i] == 1)
|
949
|
+
continue;
|
950
|
+
if (NA_STRIDE_AT(na, i) != st0)
|
951
|
+
return Qfalse;
|
952
|
+
st0 *= NA_SHAPE(na)[i];
|
953
|
+
}
|
954
|
+
}
|
955
|
+
return Qtrue;
|
956
|
+
}
|
957
|
+
|
925
958
|
//----------------------------------------------------------------------
|
926
959
|
|
927
960
|
/*
|
@@ -1904,6 +1937,7 @@ Init_narray()
|
|
1904
1937
|
rb_define_method(cNArray, "debug_info", nary_debug_info, 0);
|
1905
1938
|
|
1906
1939
|
rb_define_method(cNArray, "contiguous?", na_check_contiguous, 0);
|
1940
|
+
rb_define_method(cNArray, "fortran_contiguous?", na_check_fortran_contiguous, 0);
|
1907
1941
|
|
1908
1942
|
rb_define_method(cNArray, "view", na_make_view, 0);
|
1909
1943
|
rb_define_method(cNArray, "expand_dims", na_expand_dims, 1);
|
data/numo-narray.gemspec
CHANGED
@@ -28,8 +28,12 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.require_paths = ["lib"]
|
29
29
|
spec.extensions = ["ext/numo/narray/extconf.rb"]
|
30
30
|
|
31
|
-
spec.add_development_dependency "bundler"
|
32
|
-
|
31
|
+
spec.add_development_dependency "bundler"
|
32
|
+
if RUBY_VERSION <'2.2' # Ruby 2.1.x
|
33
|
+
spec.add_development_dependency "rake", "<= 10.5", ">=10.1.1"
|
34
|
+
else
|
35
|
+
spec.add_development_dependency "rake"
|
36
|
+
end
|
33
37
|
spec.add_development_dependency "test-unit"
|
34
38
|
spec.add_development_dependency 'rake-compiler', "~> 1.0", ">= 1.0.1"
|
35
39
|
spec.add_development_dependency "rake-compiler-dock", "~> 0"
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: numo-narray
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.1.
|
4
|
+
version: 0.9.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masahiro TANAKA
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -264,8 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
264
264
|
- !ruby/object:Gem::Version
|
265
265
|
version: '0'
|
266
266
|
requirements: []
|
267
|
-
|
268
|
-
rubygems_version: 2.7.3
|
267
|
+
rubygems_version: 3.0.1
|
269
268
|
signing_key:
|
270
269
|
specification_version: 4
|
271
270
|
summary: alpha release of Numo::NArray - New NArray class library in Ruby/Numo (NUmerical
|