numo-narray 0.9.1.3 → 0.9.1.4
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/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
|