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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4081b1facf83501be82b2446c10bddefbf2e60530f1249074b880f7729968b4f
4
- data.tar.gz: 19b64cf6e4778f25f60f821a6454cc1b5d2e9dc12f60ecb9f3bfb928155e45db
3
+ metadata.gz: aba2ab60aae2fbf24973f75a9b17c9f35bd7fec15c58e110b6711a62773b2de0
4
+ data.tar.gz: feae74cc5b9d5dfbe238f78f60b22f017a4558b241fe772b0615ac3fa0c80b68
5
5
  SHA512:
6
- metadata.gz: a7e32c3a9b208bb23d83c8d4b2f96a7e646e7e9db5bb42c2eea81598b9fdd4072f452f7318f4b9c594152bc9587c596896f1f55d4d41c3cb48ced01b0e764a28
7
- data.tar.gz: b2686de4edbcbb35ff180c8a706f23f853740526249ac1f7c9729bd42fb34af5922eca9fd383a8cbea46ecc85280164a9346fbbc2f31fe4839a8bc15c7ccb8c3
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 = true
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
@@ -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
- volatile VALUE idx_1, view;
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, na1);
125
- nv->data = na1->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));
@@ -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);
@@ -13,8 +13,8 @@ extern "C" {
13
13
  #endif
14
14
  #endif
15
15
 
16
- #define NARRAY_VERSION "0.9.1.3"
17
- #define NARRAY_VERSION_CODE 913
16
+ #define NARRAY_VERSION "0.9.1.4"
17
+ #define NARRAY_VERSION_CODE 914
18
18
 
19
19
  #include <math.h>
20
20
  #include "numo/compat.h"
@@ -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", "~> 1.3"
32
- spec.add_development_dependency "rake", "~> 0"
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.3
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: 2018-08-14 00:00:00.000000000 Z
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: '1.3'
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: '1.3'
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
- rubyforge_project:
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