numo-narray 0.9.1.8 → 0.9.1.9

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: 596c9ece21d3e9d75cf78a7b6d60b3fbda065a23718763bb3632cc8cae45fab6
4
- data.tar.gz: bf03dd10e983d362a233bab2ec356e6a68e9dc3e27edccdf40018e661a15fe87
3
+ metadata.gz: 2de0f542db4df78b97eecd077130fb8f3146191a229698512d487916a8a57ce0
4
+ data.tar.gz: 1452f989e4dc615c0e4f4b4891c9f44072431f9face27a602ce9b91286909cbf
5
5
  SHA512:
6
- metadata.gz: 58ef93f8200db87e99012b56bd7f8ccf22cb97abc77b1596e16a855f509fab498e33859b78f6b9626347ed83769eeb9011a7d59a93b3a8527131cad657b58d17
7
- data.tar.gz: ac72e280b35ee08eb3b9faf5880355ccdeb4f39d521ba3f9d6067e96102e55561433eff16ed0b0b512da63057dca18d8eb6d72a4687a6d75321e5c29068c70fd
6
+ metadata.gz: 23e67c8a70a95d69d25ad78561286eb56db63a0aa6465903ebbed1e076dfef6c4df4aa1ccd1d2f5ec40f4d02307c82c51b47c0da4cb48415c93bfdc6adaf4f27
7
+ data.tar.gz: 63847fb7e9173d0be70dc63be57ebbcb52a0dc6f52e613b7c9c69fab33f83920ba6b4b478156a18fa1fac0f6e08718713449441485149a6d9f178af7f2d87bdd
data/Rakefile CHANGED
@@ -17,3 +17,6 @@ Rake::TestTask.new(:test) do |t|
17
17
  t.warning = false
18
18
  t.test_files = FileList['test/**/*_test.rb']
19
19
  end
20
+
21
+ require 'rake/extensiontask'
22
+ Rake::ExtensionTask.new('numo/narray')
@@ -1,7 +1,4 @@
1
1
  def_id "cast"
2
- def_id "eq"
3
- def_id "ne"
4
- def_id "pow"
5
2
  def_id "mulsum"
6
3
  def_id "to_a"
7
4
  if is_complex
@@ -33,7 +30,6 @@ if is_object
33
30
  def_id "bit_xor"
34
31
  def_id "bit_not"
35
32
  def_id "abs"
36
- def_id "minus"
37
33
  def_id "reciprocal"
38
34
  def_id "square"
39
35
  def_id "floor"
@@ -43,6 +39,7 @@ if is_object
43
39
  def_id "nan?"
44
40
  def_id "infinite?"
45
41
  def_id "finite?"
42
+ def_id "-@","minus"
46
43
  def_id "==","eq"
47
44
  def_id "!=","ne"
48
45
  def_id ">" ,"gt"
@@ -50,6 +47,9 @@ if is_object
50
47
  def_id "<" ,"lt"
51
48
  def_id "<=","le"
52
49
  def_id "<=>","ufo"
50
+ else
51
+ def_id "eq"
52
+ def_id "ne"
53
53
  end
54
54
 
55
55
  if is_int && !is_object
@@ -180,7 +180,12 @@ if !is_complex
180
180
  binary2 "divmod"
181
181
  end
182
182
 
183
- pow
183
+
184
+ if !is_bit
185
+ pow
186
+ def_id "**","pow"
187
+ def_alias "pow","**"
188
+ end
184
189
 
185
190
  unary "minus", "-@"
186
191
  unary "reciprocal"
@@ -274,7 +279,7 @@ if is_float
274
279
  cond_unary "isfinite"
275
280
  end
276
281
 
277
- if is_int
282
+ if is_int && !is_object
278
283
  if is_unsigned
279
284
  accum "sum","u_int64_t","numo_cUInt64"
280
285
  accum "prod","u_int64_t","numo_cUInt64"
@@ -30,15 +30,6 @@ static VALUE
30
30
  }
31
31
  }
32
32
 
33
- if (rb_respond_to(obj,id_to_a)) {
34
- obj = rb_funcall(obj,id_to_a,0);
35
- if (TYPE(obj)!=T_ARRAY) {
36
- rb_raise(rb_eTypeError, "`to_a' did not return Array");
37
- }
38
- <%=store_array.c_func%>(self,obj);
39
- return self;
40
- }
41
-
42
33
  <% if is_object %>
43
34
  robject_store_numeric(self,obj);
44
35
  <% else %>
@@ -21,6 +21,12 @@ static void
21
21
  STORE_BIT_STEP(a3, p3, s3, idx3, x);
22
22
  }
23
23
  } else {
24
+ a1 += p1/NB;
25
+ p1 %= NB;
26
+ a2 += p2/NB;
27
+ p2 %= NB;
28
+ a3 += p3/NB;
29
+ p3 %= NB;
24
30
  o1 = p1-p3;
25
31
  o2 = p2-p3;
26
32
  l1 = NB+o1;
@@ -2,7 +2,7 @@ static void
2
2
  <%=c_iter%>(na_loop_t *const lp)
3
3
  {
4
4
  size_t n;
5
- size_t p1, p3;
5
+ ssize_t p1, p3;
6
6
  ssize_t s1, s3;
7
7
  size_t *idx1, *idx3;
8
8
  int o1, l1, r1, len;
@@ -18,6 +18,10 @@ static void
18
18
  STORE_BIT_STEP(a3, p3, s3, idx3, x);
19
19
  }
20
20
  } else {
21
+ a1 += p1/NB;
22
+ p1 %= NB;
23
+ a3 += p3/NB;
24
+ p3 %= NB;
21
25
  o1 = p1-p3;
22
26
  l1 = NB+o1;
23
27
  r1 = NB-o1;
@@ -26,7 +30,7 @@ static void
26
30
  if ((int)n<len) len=n;
27
31
  if (o1>=0) x = *a1>>o1;
28
32
  else x = *a1<<-o1;
29
- if (p1+len>NB) x |= *(a1+1)<<r1;
33
+ if (p1+len>(ssize_t)NB) x |= *(a1+1)<<r1;
30
34
  a1++;
31
35
  *a3 = (x & (SLB(len)<<p3)) | (*a3 & ~(SLB(len)<<p3));
32
36
  a3++;
@@ -20,6 +20,10 @@ static void
20
20
  STORE_BIT_STEP(a3, p3, s3, idx3, y);
21
21
  }
22
22
  } else {
23
+ a1 += p1/NB;
24
+ p1 %= NB;
25
+ a3 += p3/NB;
26
+ p3 %= NB;
23
27
  o1 = p1-p3;
24
28
  l1 = NB+o1;
25
29
  r1 = NB-o1;
@@ -1365,8 +1365,8 @@ nary_s_from_binary(int argc, VALUE *argv, VALUE type)
1365
1365
  break;
1366
1366
  case T_ARRAY:
1367
1367
  nd = RARRAY_LEN(vshape);
1368
- if (nd == 0 || nd > NA_MAX_DIMENSION) {
1369
- rb_raise(nary_eDimensionError,"too long or empty shape (%d)", nd);
1368
+ if (nd > NA_MAX_DIMENSION) {
1369
+ rb_raise(nary_eDimensionError,"shape exceeds max dimension");
1370
1370
  }
1371
1371
  shape = ALLOCA_N(size_t,nd);
1372
1372
  len = 1;
@@ -164,7 +164,7 @@ print_ndloop(na_md_loop_t *lp) {
164
164
  for (i=0; i<lp->user.ndim; i++) {
165
165
  printf(" &user.args[%d].iter[%d] = 0x%"SZF"x\n", j,i, (size_t)&lp->user.args[j].iter[i]);
166
166
  printf(" user.args[%d].iter[%d].pos = %"SZF"u\n", j,i, lp->user.args[j].iter[i].pos);
167
- printf(" user.args[%d].iter[%d].step = %"SZF"u\n", j,i, lp->user.args[j].iter[i].step);
167
+ printf(" user.args[%d].iter[%d].step = %"SZF"d\n", j,i, lp->user.args[j].iter[i].step);
168
168
  printf(" user.args[%d].iter[%d].idx = 0x%"SZF"x\n", j,i, (size_t)lp->user.args[j].iter[i].idx);
169
169
  }
170
170
  }
@@ -174,7 +174,7 @@ print_ndloop(na_md_loop_t *lp) {
174
174
  for (i=0; i<=nd; i++) {
175
175
  printf(" &xargs[%d].iter[%d] = 0x%"SZF"x\n", j,i, (size_t)&LITER(lp,i,j));
176
176
  printf(" xargs[%d].iter[%d].pos = %"SZF"u\n", j,i, LITER(lp,i,j).pos);
177
- printf(" xargs[%d].iter[%d].step = %"SZF"u\n", j,i, LITER(lp,i,j).step);
177
+ printf(" xargs[%d].iter[%d].step = %"SZF"d\n", j,i, LITER(lp,i,j).step);
178
178
  printf(" xargs[%d].iter[%d].idx = 0x%"SZF"x\n", j,i, (size_t)LITER(lp,i,j).idx);
179
179
  }
180
180
  printf(" xargs[%d].bufcp = 0x%"SZF"x\n", j, (size_t)lp->xargs[j].bufcp);
@@ -13,8 +13,8 @@ extern "C" {
13
13
  #endif
14
14
  #endif
15
15
 
16
- #define NARRAY_VERSION "0.9.1.8"
17
- #define NARRAY_VERSION_CODE 918
16
+ #define NARRAY_VERSION "0.9.1.9"
17
+ #define NARRAY_VERSION_CODE 919
18
18
 
19
19
  #include <math.h>
20
20
  #include "numo/compat.h"
@@ -36,19 +36,17 @@
36
36
 
37
37
  #define INIT_PTR_BIT( lp, i, ad, ps, st ) \
38
38
  { \
39
- ps = ((lp)->args[i].iter[0]).pos; \
40
- ad = (BIT_DIGIT*)(((lp)->args[i]).ptr) + ps/NB; \
41
- ps %= NB; \
42
- st = ((lp)->args[i].iter[0]).step; \
39
+ ps = ((lp)->args[i].iter[0]).pos; \
40
+ ad = (BIT_DIGIT*)(((lp)->args[i]).ptr); \
41
+ st = ((lp)->args[i].iter[0]).step; \
43
42
  }
44
43
 
45
44
  #define INIT_PTR_BIT_IDX( lp, i, ad, ps, st, id ) \
46
45
  { \
47
- ps = ((lp)->args[i].iter[0]).pos; \
48
- ad = (BIT_DIGIT*)(((lp)->args[i]).ptr) + ps/NB; \
49
- ps %= NB; \
50
- st = ((lp)->args[i].iter[0]).step; \
51
- id = ((lp)->args[i].iter[0]).idx; \
46
+ ps = ((lp)->args[i].iter[0]).pos; \
47
+ ad = (BIT_DIGIT*)(((lp)->args[i]).ptr); \
48
+ st = ((lp)->args[i].iter[0]).step; \
49
+ id = ((lp)->args[i].iter[0]).idx; \
52
50
  }
53
51
 
54
52
  #define GET_DATA( ptr, type, val ) \
@@ -813,7 +813,7 @@ nst_s_add_type(int argc, VALUE *argv, VALUE mod)
813
813
 
814
814
  #define NST_TYPEDEF(tpname,tpclass) \
815
815
  static VALUE \
816
- nst_s_##tpname(VALUE argc, VALUE *argv, VALUE mod) \
816
+ nst_s_##tpname(int argc, VALUE *argv, VALUE mod) \
817
817
  { nstruct_add_type(tpclass,argc,argv,mod); \
818
818
  return Qnil; \
819
819
  }
@@ -106,7 +106,19 @@ module Numo
106
106
 
107
107
  # Convert the argument to an narray if not an narray.
108
108
  def self.cast(a)
109
- a.kind_of?(NArray) ? a : NArray.array_type(a).cast(a)
109
+ case a
110
+ when NArray
111
+ a
112
+ when Array,Numeric
113
+ NArray.array_type(a).cast(a)
114
+ else
115
+ if a.respond_to?(:to_a)
116
+ a = a.to_a
117
+ NArray.array_type(a).cast(a)
118
+ else
119
+ raise TypeError,"invalid type for NArray"
120
+ end
121
+ end
110
122
  end
111
123
 
112
124
  def self.asarray(a)
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.summary = %q{alpha release of Numo::NArray - New NArray class library in Ruby/Numo (NUmerical MOdule)}
21
21
  spec.homepage = "https://github.com/ruby-numo/numo-narray"
22
22
  spec.license = "BSD-3-Clause"
23
- spec.required_ruby_version = '~> 2.2'
23
+ spec.required_ruby_version = '>= 2.2'
24
24
 
25
25
  spec.files = `git ls-files Gemfile README.md Rakefile lib ext numo-narray.gemspec spec`.split($/)
26
26
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -34,5 +34,6 @@ Gem::Specification.new do |spec|
34
34
  spec.add_development_dependency "bundler", "~> 2.0"
35
35
  end
36
36
  spec.add_development_dependency "rake", ">= 12.3.3"
37
+ spec.add_development_dependency "rake-compiler", "~> 1.1"
37
38
  spec.add_development_dependency "test-unit", "~> 3.0"
38
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numo-narray
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1.8
4
+ version: 0.9.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masahiro TANAKA
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-05 00:00:00.000000000 Z
11
+ date: 2020-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 12.3.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake-compiler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: test-unit
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -222,7 +236,7 @@ require_paths:
222
236
  - lib
223
237
  required_ruby_version: !ruby/object:Gem::Requirement
224
238
  requirements:
225
- - - "~>"
239
+ - - ">="
226
240
  - !ruby/object:Gem::Version
227
241
  version: '2.2'
228
242
  required_rubygems_version: !ruby/object:Gem::Requirement