numo-narray 0.9.1.8 → 0.9.2.1

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