numo-narray 0.9.1.8 → 0.9.2.1

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: 8fa143017e2eef49ea51ac9ce4c71ec9fee0c1e09cce0f815fd169f66d1e8459
4
+ data.tar.gz: 53f301c9d8f89952519737493395335bfdfebfa59bc58f30d6cb123c1e107f05
5
5
  SHA512:
6
- metadata.gz: 58ef93f8200db87e99012b56bd7f8ccf22cb97abc77b1596e16a855f509fab498e33859b78f6b9626347ed83769eeb9011a7d59a93b3a8527131cad657b58d17
7
- data.tar.gz: ac72e280b35ee08eb3b9faf5880355ccdeb4f39d521ba3f9d6067e96102e55561433eff16ed0b0b512da63057dca18d8eb6d72a4687a6d75321e5c29068c70fd
6
+ metadata.gz: da177dd756e6ad67ee4ef6ed9a25fcd6eff0f05e49bae4420415fc9ea898d3e79a80bf961ab89827a477870d2b6b2366a92ef84c0214a9368adc2791a998bbde
7
+ data.tar.gz: 81da9f43ba39fa0593a32117b8a2fc1fef861b7af197fb7783bf33b4dc16bbae15986e06a9448b3dfd5830b35cfbbe6442d8023d405049c227765e3dc2d0848e
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # Numo::NArray
2
-
3
- [![Binder](http://mybinder.org/badge.svg)](http://mybinder.org/repo/ruby-numo/numo-narray)
4
- [![Build Status](https://travis-ci.org/ruby-numo/numo-narray.svg?branch=master)](https://travis-ci.org/ruby-numo/numo-narray)
2
+ [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/ruby-numo/numo-narray/HEAD?filepath=100-narray-exercises.ipynb)
3
+ [![Build Status](https://github.com/ruby-numo/numo-narray/workflows/build/badge.svg)](https://github.com/ruby-numo/numo-narray/actions)
5
4
 
6
5
  [GitHub](https://github.com/ruby-numo/numo-narray)
7
6
  | [RubyGems](https://rubygems.org/gems/numo-narray)
@@ -64,20 +63,24 @@ An example
64
63
  => 15
65
64
  ```
66
65
 
67
- For more examples, check out this [narray version of 100 numpy exercises](https://github.com/ruby-numo/numo-narray/wiki/100-narray-exercises) (and the [IRuby Notebook](https://github.com/ruby-numo/numo-narray/blob/master/100-narray-exercises.ipynb)).
66
+ For more examples, check out the **narray version of 100 numpy exercises**.
67
+ - [Wiki version](https://github.com/ruby-numo/numo-narray/wiki/100-narray-exercises) of the 100 exercises
68
+ - [Reproducible version](https://mybinder.org/v2/gh/ruby-numo/numo-narray/HEAD?filepath=100-narray-exercises.ipynb) of the 100 exercises (With this, you can try narray without creating an environment locally.)
68
69
 
69
70
  ## Development
70
71
 
71
72
  ### Build
72
73
 
73
74
  ```shell
74
- ruby setup.rb
75
+ git clone https://github.com/ruby-numo/numo-narray
76
+ cd numo-narray
77
+ bundle install
78
+ bundle exec rake compile
75
79
  ```
76
80
 
77
81
  ### Run tests
78
82
 
79
83
  ```shell
80
- bundle install
81
84
  bundle exec rake test
82
85
  ```
83
86
 
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')
@@ -358,7 +358,7 @@ na_composition3_ary(VALUE ary, VALUE *ptype, VALUE *pshape, VALUE *pnary)
358
358
  VALUE dtype, dshape;
359
359
 
360
360
  mdai = na_mdai_alloc(ary);
361
- vmdai = TypedData_Wrap_Struct(rb_cData, &mdai_data_type, (void*)mdai);
361
+ vmdai = TypedData_Wrap_Struct(rb_cObject, &mdai_data_type, (void*)mdai);
362
362
  if ( na_mdai_investigate(mdai, 1) ) {
363
363
  // empty
364
364
  dtype = update_type(ptype, numo_cInt32);
@@ -606,7 +606,7 @@ na_ary_composition_for_struct(VALUE nstruct, VALUE ary)
606
606
 
607
607
  mdai = na_mdai_alloc(ary);
608
608
  mdai->na_type = nstruct;
609
- vmdai = TypedData_Wrap_Struct(rb_cData, &mdai_data_type, (void*)mdai);
609
+ vmdai = TypedData_Wrap_Struct(rb_cObject, &mdai_data_type, (void*)mdai);
610
610
  na_mdai_for_struct(mdai, 0);
611
611
  nc = na_compose_alloc();
612
612
  vnc = WrapCompose(nc);
@@ -6,17 +6,17 @@ set class_alias: nil
6
6
  set class_var: "cT"
7
7
  set ctype: "BIT_DIGIT"
8
8
 
9
- set has_math: false
10
- set is_bit: true
11
- set is_int: false
12
- set is_unsigned: true
13
- set is_float: false
14
- set is_complex: false
15
- set is_object: false
16
- set is_real: false
17
- set is_comparable: false
9
+ set has_math: false
10
+ set is_bit: true
11
+ set is_int: false
12
+ set is_unsigned: true
13
+ set is_float: false
14
+ set is_complex: false
15
+ set is_object: false
16
+ set is_real: false
17
+ set is_comparable: false
18
18
  set is_double_precision: false
19
- set need_align: false
19
+ set need_align: false
20
20
 
21
21
  upcast_rb "Integer"
22
22
  upcast_rb "Float", "DFloat"
@@ -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"
@@ -94,7 +94,11 @@ static VALUE
94
94
  return <%=c_func%>_self(argc, argv, self);
95
95
  } else {
96
96
  v = rb_funcall(klass, id_cast, 1, self);
97
+ //<% if Gem::Version.create(RUBY_VERSION) < Gem::Version.create('2.7.0') %>
97
98
  return rb_funcall2(v, rb_intern("<%=name%>"), argc, argv);
99
+ //<% else %>
100
+ return rb_funcallv_kw(v, rb_intern("<%=name%>"), argc, argv, RB_PASS_CALLED_KEYWORDS);
101
+ //<% end %>
98
102
  }
99
103
  //<% end %>
100
104
  }
@@ -87,7 +87,7 @@ static const rb_data_type_t <%=type_name%>_data_type = {
87
87
  {0, <%=type_name%>_free, <%=type_name%>_memsize,},
88
88
  &na_data_type,
89
89
  &<%=type_name%>_info,
90
- 0, // flags
90
+ RUBY_TYPED_FROZEN_SHAREABLE, // flags
91
91
  };
92
92
 
93
93
  <% end %>
@@ -14,6 +14,7 @@
14
14
  rb_hash_aset(hCast, rb_cArray, cT);
15
15
  <% for x in upcast %>
16
16
  <%= x %><% end %>
17
+ rb_obj_freeze(hCast);
17
18
 
18
19
  <% @children.each do |m| %>
19
20
  <%= m.init_def %><% end %>
@@ -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;
@@ -1531,7 +1531,7 @@ static VALUE na_inplace( VALUE self );
1531
1531
  /*
1532
1532
  Load marshal data.
1533
1533
  @overload marshal_load(data)
1534
- @params [Array] Array containing marshal data.
1534
+ @param [Array] Array containing marshal data.
1535
1535
  @return [nil]
1536
1536
  */
1537
1537
  static VALUE
@@ -1989,6 +1989,10 @@ na_equal(VALUE self, volatile VALUE other)
1989
1989
  void
1990
1990
  Init_narray()
1991
1991
  {
1992
+ #ifdef HAVE_RB_EXT_RACTOR_SAFE
1993
+ rb_ext_ractor_safe(true);
1994
+ #endif
1995
+
1992
1996
  mNumo = rb_define_module("Numo");
1993
1997
 
1994
1998
  /*
@@ -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.2.1"
17
+ #define NARRAY_VERSION_CODE 921
18
18
 
19
19
  #include <math.h>
20
20
  #include "numo/compat.h"
@@ -450,6 +450,12 @@ typedef unsigned int BIT_DIGIT;
450
450
  #include "numo/ndloop.h"
451
451
  #include "numo/intern.h"
452
452
 
453
+ // for Ractor support code
454
+ #ifndef HAVE_RB_EXT_RACTOR_SAFE
455
+ # undef RUBY_TYPED_FROZEN_SHAREABLE
456
+ # define RUBY_TYPED_FROZEN_SHAREABLE 0
457
+ #endif
458
+
453
459
  #if defined(__cplusplus)
454
460
  #if 0
455
461
  { /* satisfy cc-mode */
@@ -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 ) \
@@ -117,7 +117,7 @@ static inline dtype c_from_dcomplex(dcomplex x) {
117
117
  #define m_acosh(x) c_acosh(x)
118
118
  #define m_atanh(x) c_atanh(x)
119
119
  #define m_hypot(x,y) c_hypot(x,y)
120
- #define m_sinc(x) c_div(c_sin(x),x)
120
+ #define m_sinc(x) ((REAL(x)==0 && IMAG(x)==0) ? (c_new(1,0)):(c_div(c_sin(x),x)))
121
121
 
122
122
  #define m_sum_init INT2FIX(0)
123
123
  #define m_mulsum_init INT2FIX(0)
@@ -110,7 +110,7 @@ extern double pow(double, double);
110
110
  #define m_atanh(x) atanh(x)
111
111
  #define m_atan2(x,y) atan2(x,y)
112
112
  #define m_hypot(x,y) hypot(x,y)
113
- #define m_sinc(x) (sin(x)/(x))
113
+ #define m_sinc(x) (((x)==0) ? 1.0:(sin(x)/(x)))
114
114
 
115
115
  #define m_erf(x) erf(x)
116
116
  #define m_erfc(x) erfc(x)
@@ -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)
data/lib/numo/narray.rb CHANGED
@@ -1,2 +1,2 @@
1
- require "numo/narray.so"
1
+ require "numo/narray.#{RUBY_PLATFORM.include?('darwin') ? 'bundle' : 'so'}"
2
2
  require "numo/narray/extra"
data/numo-narray.gemspec CHANGED
@@ -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) }
@@ -29,10 +29,11 @@ Gem::Specification.new do |spec|
29
29
  spec.extensions = ["ext/numo/narray/extconf.rb"]
30
30
 
31
31
  if RUBY_VERSION < '2.3' # Ruby 2.2.x
32
- spec.add_development_dependency "bundler", "~> 1.3"
32
+ spec.add_development_dependency "bundler", "~> 1.3", "< 1.14.0"
33
33
  else
34
- spec.add_development_dependency "bundler", "~> 2.0"
34
+ spec.add_development_dependency "bundler", ">= 2.2.33"
35
35
  end
36
36
  spec.add_development_dependency "rake", ">= 12.3.3"
37
- spec.add_development_dependency "test-unit", "~> 3.0"
37
+ spec.add_development_dependency "rake-compiler", "~> 1.1"
38
+ spec.add_development_dependency "test-unit"
38
39
  end
metadata CHANGED
@@ -1,29 +1,29 @@
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.2.1
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: 2022-08-20 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: '2.0'
19
+ version: 2.2.33
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: '2.0'
26
+ version: 2.2.33
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,19 +39,33 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 12.3.3
41
41
  - !ruby/object:Gem::Dependency
42
- name: test-unit
42
+ name: rake-compiler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '1.1'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '1.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: test-unit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  description: Numo::NArray - New NArray class library in Ruby/Numo.
56
70
  email:
57
71
  - masa16.tanaka@gmail.com
@@ -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