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 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