numru-narray 1.0.1 → 1.0.2

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
  SHA1:
3
- metadata.gz: db92ba9962254a39883414ae302128af4deab214
4
- data.tar.gz: 9645b05469adef3bbe09ff30ddf48ddcabdbbb38
3
+ metadata.gz: 245218221c00f1e210e6743a9dab4c1baf277791
4
+ data.tar.gz: d18efa11c4da83b5b1de3e59146c9c245d8ecd32
5
5
  SHA512:
6
- metadata.gz: c5244ca52d8ebf5e0f0d9750b02ee0e91f960d2eab18c3645e52f21787f53fa47ce7d548bc97476e11c6f5b04bf4c0e076b5dc9be4ffb9ae8a7389342adcfc32
7
- data.tar.gz: e463b1c0303f4e40f6d09892b45005796f173afc05ec6e4f1e463238a00541b33fd1293fab5f83b5e23f800303080ffc5cc3397341969cc4017ec54cb3ea356d
6
+ metadata.gz: 6222fdcaa4d98cb07714873c7c0002d701e86b35f2184125d995b59cc6539c4bb615568bb67e16b970420c885defd615a75963861a2a9fd557c4fd2db36f9703
7
+ data.tar.gz: cb5f9c61d30a56279a301da5051a8a15af9c05917b36371b42263dbb2540d93391f66f5a8d26c9a517038ca02f8124d605a0053318f7f54734b182d8c3008938
data/ChangeLog CHANGED
@@ -1,3 +1,59 @@
1
+ 2016-02-15 Seiya Nishizawa <seiya@gfd-dennou.org>
2
+
3
+ * fixed wrong integer type in the lu solver
4
+
5
+ 2016-02-15 Seiya Nishizawa <seiya@gfd-dennou.org>
6
+
7
+ * fixed wrong type
8
+
9
+ 2016-02-15 Seiya Nishizawa <seiya@gfd-dennou.org>
10
+
11
+ * add "include NumRu" to the benchmark scripts
12
+
13
+ 2016-02-15 Seiya Nishizawa <seiya@gfd-dennou.org>
14
+
15
+ * enable #to_s_refer for ruby >= 1.9
16
+
17
+ 2016-02-14 Seiya Nishizawa <seiya@gfd-dennou.org>
18
+
19
+ * use #to_s for #to_s_refer for ruby < 2.2
20
+
21
+ 2016-02-13 Seiya Nishizawa <seiya@gfd-dennou.org>
22
+
23
+ * update README
24
+
25
+ 2016-02-13 Seiya Nishizawa <seiya@gfd-dennou.org>
26
+
27
+ * update mkmath.rb (na_math.c was overwrited)
28
+
29
+ 2016-02-13 Seiya Nishizawa <seiya@gfd-dennou.org>
30
+
31
+ * update tests
32
+
33
+ 2016-02-13 Seiya Nishizawa <seiya@gfd-dennou.org>
34
+
35
+ * add "include NumRu" to the test files
36
+
37
+ 2016-02-13 Seiya Nishizawa <seiya@gfd-dennou.org>
38
+
39
+ * add Gemfile file
40
+
41
+ 2016-02-13 Seiya Nishizawa <seiya@gfd-dennou.org>
42
+
43
+ * add travis setting
44
+
45
+ 2016-02-13 Seiya Nishizawa <seiya@gfd-dennou.org>
46
+
47
+ * add NumRu::NArray#to_s_refer method (same as #to_s but not dup data)
48
+
49
+ 2016-02-12 Seiya Nishizawa <seiya@gfd-dennou.org>
50
+
51
+ * remove narray.gemspec
52
+
53
+ 2016-02-12 Seiya Nishizawa <seiya@gfd-dennou.org>
54
+
55
+ * update ChangeLog
56
+
1
57
  2016-02-12 Seiya Nishizawa <seiya@gfd-dennou.org>
2
58
 
3
59
  * update version
data/README CHANGED
@@ -11,11 +11,14 @@
11
11
 
12
12
  * Installation
13
13
 
14
- + Compile & Install NumRu NArray
14
+ + Install NumRu NArray
15
15
 
16
- ruby extconf.rb
17
- make
18
- make install
16
+ % gem install numru-narray
17
+
18
+ + Compile (if you do not want to via gem)
19
+
20
+ % bundle install
21
+ % bundle exec rake compile
19
22
 
20
23
  + For OpenMP support
21
24
 
@@ -30,7 +33,7 @@
30
33
  * Run
31
34
 
32
35
  + load library
33
- require 'narray'
36
+ require 'numru/narray'
34
37
 
35
38
  + enable OpenMP
36
39
 
@@ -120,4 +120,4 @@ have_type("uint64_t", header)
120
120
  $objs = srcs.collect{|i| i+".o"}
121
121
 
122
122
  create_conf_h("narray_config.h")
123
- create_makefile("numru/narray/narray")
123
+ create_makefile("numru/narray")
@@ -775,10 +775,10 @@ print <<EOM
775
775
 
776
776
 
777
777
  /* Initialization of NMath module */
778
- void Init_nmath(void)
778
+ void Init_nmath(VALUE mNumRu)
779
779
  {
780
780
  /* define ExtMath module */
781
- rb_mNMath = rb_define_module("NMath");
781
+ rb_mNMath = rb_define_module_under(mNumRu, "NMath");
782
782
 
783
783
  /* methods */
784
784
  EOM
@@ -381,6 +381,7 @@ static int
381
381
  else
382
382
  rb_raise(rb_eRuntimeError, "Array size mismatch: %zd != %zd at %i-th dim",
383
383
  ary_sz, itr_sz, i);
384
+ return -1;
384
385
  }
385
386
 
386
387
 
@@ -1035,7 +1036,7 @@ static int
1035
1036
  r = NUM2SHAPE(v);
1036
1037
  if (r<0) r += rankc; /* negative for from end */
1037
1038
  if (r<0 || r>=rankc)
1038
- rb_raise(rb_eArgError, "rank %ld out of range", r);
1039
+ rb_raise(rb_eArgError, "rank %zd out of range", r);
1039
1040
  if (flag)
1040
1041
  rankv[c] = r;
1041
1042
  else
@@ -375,7 +375,7 @@ na_lu_solve_func_body( int ni,
375
375
  na_shape_t i,k;
376
376
  na_funcset_t *f = &na_funcset[type];
377
377
  na_shape_t n = shape[1];
378
- int sz = na_sizeof[type];
378
+ na_shape_t sz = (na_shape_t) na_sizeof[type];
379
379
  na_shape_t xsz = shape[0] * sz;
380
380
  na_shape_t rowsz = sz * n;
381
381
  na_shape_t matsz = rowsz * n;
@@ -10,6 +10,7 @@
10
10
  */
11
11
  #define NARRAY_C
12
12
  #include <ruby.h>
13
+ #include "ruby/version.h"
13
14
  #include "narray.h"
14
15
  #include "narray_local.h"
15
16
 
@@ -657,6 +658,40 @@ static VALUE
657
658
  return rb_str_new(ary->ptr,ary->total*na_sizeof[ary->type]);
658
659
  }
659
660
 
661
+ /* method: to_s_refer -- convert the data contents to a binary string (not dup data) */
662
+ static VALUE
663
+ na_to_s_refer(VALUE self)
664
+ {
665
+ struct NARRAY *ary;
666
+ VALUE str;
667
+ GetNArray(self,ary);
668
+ if (NA_IsROBJ(ary))
669
+ rb_raise(rb_eTypeError,"cannot convert object-type NArray");
670
+ #if RUBY_API_VERSION_CODE >= 20200
671
+ str = rb_str_new_static(ary->ptr,ary->total*na_sizeof[ary->type]);
672
+ RB_OBJ_WRITE(str, &RSTRING(str)->as.heap.aux.shared, self);
673
+ FL_SET(str, ELTS_SHARED);
674
+ #elif RUBY_API_VERSION_CODE >= 10900
675
+ {
676
+ NEWOBJ(rstr, struct RString);
677
+ str = (VALUE)rstr;
678
+ }
679
+ OBJSETUP(str, rb_cString, T_STRING);
680
+ FL_SET(str, FL_USER1);
681
+ RBASIC(str)->flags &= ~RSTRING_EMBED_LEN_MASK;
682
+ RBASIC(str)->flags |= (0L << RSTRING_EMBED_LEN_SHIFT);
683
+ RSTRING(str)->as.heap.len = ary->total*na_sizeof[ary->type];
684
+ RSTRING(str)->as.heap.ptr = ary->ptr;
685
+ RSTRING(str)->as.heap.aux.capa = RSTRING(str)->as.heap.len;
686
+ RSTRING(str)->as.heap.aux.shared = self;
687
+ FL_SET(str, ELTS_SHARED);
688
+ #else
689
+ str = rb_str_new(ary->ptr,ary->total*na_sizeof[ary->type]);
690
+ rb_warn("#to_s is used for #to_s_refer for ruby < 1.9 (%d.%d.%d)", RUBY_API_VERSION_MAJOR, RUBY_API_VERSION_MINOR, RUBY_API_VERSION_TEENY);
691
+ #endif
692
+ return rb_obj_freeze(str);
693
+ }
694
+
660
695
 
661
696
  /* method: to_binary -- convert the data contents to a BYTE type NArray */
662
697
  static VALUE
@@ -1264,6 +1299,7 @@ void
1264
1299
  rb_define_alias(cNArray, "map", "collect");
1265
1300
  rb_define_alias(cNArray, "map!", "collect!");
1266
1301
  rb_define_method(cNArray, "to_s", na_to_s, 0);
1302
+ rb_define_method(cNArray, "to_s_refer", na_to_s_refer, 0);
1267
1303
  rb_define_method(cNArray, "to_f", na_to_float, 0);
1268
1304
  rb_define_method(cNArray, "to_i", na_to_integer, 0);
1269
1305
  rb_define_method(cNArray, "to_type", na_to_type, 1);
@@ -27,8 +27,8 @@
27
27
  #define NARRAY_VERSION "0.6.0.8"
28
28
  #define NARRAY_VERSION_CODE 608
29
29
 
30
- #define NUMRU_NARRAY_VERSION "1.0.1"
31
- #define NUMRU_NARRAY_VERSION_CODE 101
30
+ #define NUMRU_NARRAY_VERSION "1.0.2"
31
+ #define NUMRU_NARRAY_VERSION_CODE 102
32
32
 
33
33
  /* big memory support */
34
34
  #define NARRAY_BIGMEM 1
@@ -10,11 +10,11 @@ class NumRu::NArray
10
10
 
11
11
  def self.cast(array,type=nil)
12
12
  case array
13
- when NArray
13
+ when NumRu::NArray
14
14
  when Array
15
- array = NArray.to_na(array)
15
+ array = NumRu::NArray.to_na(array)
16
16
  else
17
- raise ArgumentError, "1st argument must be NArray or Array"
17
+ raise ArgumentError, "1st argument must be NumRu::NArray or Array"
18
18
  end
19
19
  type = array.typecode if type.nil?
20
20
  shape = array.shape
@@ -24,13 +24,13 @@ class NumRu::NArray
24
24
  end
25
25
 
26
26
  def integer?
27
- self.typecode==NArray::BYTE ||
28
- self.typecode==NArray::SINT ||
29
- self.typecode==NArray::LINT
27
+ self.typecode==NumRu::NArray::BYTE ||
28
+ self.typecode==NumRu::NArray::SINT ||
29
+ self.typecode==NumRu::NArray::LINT
30
30
  end
31
31
  def complex?
32
- self.typecode==NArray::DCOMPLEX ||
33
- self.typecode==NArray::SCOMPLEX
32
+ self.typecode==NumRu::NArray::DCOMPLEX ||
33
+ self.typecode==NumRu::NArray::SCOMPLEX
34
34
  end
35
35
 
36
36
  def all?
@@ -46,7 +46,7 @@ class NumRu::NArray
46
46
  end
47
47
 
48
48
  def ==(other)
49
- other.kind_of?(NArray) &&
49
+ other.kind_of?(NumRu::NArray) &&
50
50
  shape == other.shape &&
51
51
  eq(other).all?
52
52
  end
@@ -56,7 +56,7 @@ class NumRu::NArray
56
56
  typecode == other.typecode &&
57
57
  shape == other.shape &&
58
58
  case typecode
59
- when NArray::OBJECT
59
+ when NumRu::NArray::OBJECT
60
60
  to_a.eql? other.to_a
61
61
  else
62
62
  to_s.eql? other.to_s
@@ -65,7 +65,7 @@ class NumRu::NArray
65
65
 
66
66
  def hash
67
67
  case typecode
68
- when NArray::OBJECT
68
+ when NumRu::NArray::OBJECT
69
69
  [self.class, to_a].hash
70
70
  else
71
71
  [self.class, typecode, shape, to_s].hash
@@ -130,56 +130,56 @@ class NumRu::NArray
130
130
  # Statistics
131
131
  def mean(*ranks)
132
132
  if integer?
133
- a = self.to_type(NArray::DFLOAT)
133
+ a = self.to_type(NumRu::NArray::DFLOAT)
134
134
  else
135
135
  a = self
136
136
  end
137
- a = NArray.ref(a)
137
+ a = NumRu::NArray.ref(a)
138
138
  a.sum(*ranks) / (rank_total(*ranks))
139
139
  end
140
140
 
141
141
  def stddev(*ranks)
142
142
  if integer?
143
- a = self.to_type(NArray::DFLOAT)
143
+ a = self.to_type(NumRu::NArray::DFLOAT)
144
144
  else
145
145
  a = self
146
146
  end
147
- a = NArray.ref(a)
147
+ a = NumRu::NArray.ref(a)
148
148
  n = rank_total(*ranks)
149
149
  if complex?
150
- NMath::sqrt( (( a-a.accum(*ranks).div!(n) ).abs**2).sum(*ranks)/(n-1) )
150
+ NumRu::NMath::sqrt( (( a-a.accum(*ranks).div!(n) ).abs**2).sum(*ranks)/(n-1) )
151
151
  else
152
- NMath::sqrt( (( a-a.accum(*ranks).div!(n) )**2).sum(*ranks)/(n-1) )
152
+ NumRu::NMath::sqrt( (( a-a.accum(*ranks).div!(n) )**2).sum(*ranks)/(n-1) )
153
153
  end
154
154
  end
155
155
 
156
156
  def rms(*ranks)
157
157
  if integer?
158
- a = self.to_type(NArray::DFLOAT)
158
+ a = self.to_type(NumRu::NArray::DFLOAT)
159
159
  else
160
160
  a = self
161
161
  end
162
- a = NArray.ref(a)
162
+ a = NumRu::NArray.ref(a)
163
163
  n = rank_total(*ranks)
164
164
  if complex?
165
- NMath::sqrt( (a.abs**2).sum(*ranks)/n )
165
+ NumRu::NMath::sqrt( (a.abs**2).sum(*ranks)/n )
166
166
  else
167
- NMath::sqrt( (a**2).sum(*ranks)/n )
167
+ NumRu::NMath::sqrt( (a**2).sum(*ranks)/n )
168
168
  end
169
169
  end
170
170
 
171
171
  def rmsdev(*ranks)
172
172
  if integer?
173
- a = self.to_type(NArray::DFLOAT)
173
+ a = self.to_type(NumRu::NArray::DFLOAT)
174
174
  else
175
175
  a = self
176
176
  end
177
- a = NArray.ref(a)
177
+ a = NumRu::NArray.ref(a)
178
178
  n = rank_total(*ranks)
179
179
  if complex?
180
- NMath::sqrt( (( a-a.accum(*ranks).div!(n) ).abs**2).sum(*ranks)/n )
180
+ NumRu::NMath::sqrt( (( a-a.accum(*ranks).div!(n) ).abs**2).sum(*ranks)/n )
181
181
  else
182
- NMath::sqrt( (( a-a.accum(*ranks).div!(n) )**2).sum(*ranks)/n )
182
+ NumRu::NMath::sqrt( (( a-a.accum(*ranks).div!(n) )**2).sum(*ranks)/n )
183
183
  end
184
184
  end
185
185
 
@@ -205,16 +205,16 @@ class NumRu::NArray
205
205
  when FLOAT
206
206
  when SFLOAT
207
207
  else
208
- raise TypeError, "NArray type must be (S)FLOAT or (S)COMPLEX."
208
+ raise TypeError, "NumRu::NArray type must be (S)FLOAT or (S)COMPLEX."
209
209
  end
210
- rr = NArray.new(type,size)
211
- xx = NArray.new(type,size)
210
+ rr = NumRu::NArray.new(type,size)
211
+ xx = NumRu::NArray.new(type,size)
212
212
  i = 0
213
213
  while i < size
214
214
  n = size-i
215
215
  m = ((n+Math::sqrt(n))*1.27).to_i
216
- x = NArray.new(type,m).random!(1) * 2 - 1
217
- y = NArray.new(type,m).random!(1) * 2 - 1
216
+ x = NumRu::NArray.new(type,m).random!(1) * 2 - 1
217
+ y = NumRu::NArray.new(type,m).random!(1) * 2 - 1
218
218
  r = x**2 + y**2
219
219
  idx = (r<1).where
220
220
  idx = idx[0...n] if idx.size > n
@@ -225,7 +225,7 @@ class NumRu::NArray
225
225
  end
226
226
  end
227
227
  # Box-Muller transform
228
- rr = ( xx * NMath::sqrt( -2 * NMath::log(rr) / rr ) )
228
+ rr = ( xx * NumRu::NMath::sqrt( -2 * NumRu::NMath::log(rr) / rr ) )
229
229
  # finish
230
230
  rr.reshape!(*self.shape) if self.rank > 1
231
231
  rr = rr.to_type(self.typecode) if type!=self.typecode
@@ -278,7 +278,7 @@ class NumRu::NArray
278
278
  end
279
279
  end
280
280
 
281
- #SFloatOne = NArray.sfloat(1).fill!(1)
281
+ #SFloatOne = NumRu::NArray.sfloat(1).fill!(1)
282
282
  end
283
283
 
284
284
 
@@ -332,10 +332,10 @@ module NumRu::NMath
332
332
 
333
333
  # Statistics
334
334
  def covariance(x,y,*ranks)
335
- x = NArray.to_na(x) unless x.kind_of?(NArray)
336
- x = x.to_type(NArray::DFLOAT) if x.integer?
337
- y = NArray.to_na(y) unless y.kind_of?(NArray)
338
- y = y.to_type(NArray::DFLOAT) if y.integer?
335
+ x = NumRu::NArray.to_na(x) unless x.kind_of?(NumRu::NArray)
336
+ x = x.to_type(NumRu::NArray::DFLOAT) if x.integer?
337
+ y = NumRu::NArray.to_na(y) unless y.kind_of?(NumRu::NArray)
338
+ y = y.to_type(NumRu::NArray::DFLOAT) if y.integer?
339
339
  n = x.rank_total(*ranks)
340
340
  xm = x.accum(*ranks).div!(n)
341
341
  ym = y.accum(*ranks).div!(n)
data/lib/numru/nmatrix.rb CHANGED
@@ -10,70 +10,70 @@ class NumRu::NMatrix < NumRu::NArray
10
10
 
11
11
  def +(other)
12
12
  case other
13
- when NMatrix
14
- return super(NArray.refer(other))
15
- when NArray
16
- unless other.instance_of?(NArray)
13
+ when NumRu::NMatrix
14
+ return super(NumRu::NArray.refer(other))
15
+ when NumRu::NArray
16
+ unless other.instance_of?(NumRu::NArray)
17
17
  return other.coerce_rev( self, :+ )
18
18
  end
19
19
  end
20
- raise TypeError,"Illegal operation: NMatrix + %s" % other.class
20
+ raise TypeError,"Illegal operation: NumRu::NMatrix + %s" % other.class
21
21
  end
22
22
 
23
23
  def -(other)
24
24
  case other
25
- when NMatrix
26
- return super(NArray.refer(other))
27
- when NArray
28
- unless other.instance_of?(NArray)
25
+ when NumRu::NMatrix
26
+ return super(NumRu::NArray.refer(other))
27
+ when NumRu::NArray
28
+ unless other.instance_of?(NumRu::NArray)
29
29
  return other.coerce_rev( self, :- )
30
30
  end
31
31
  end
32
- raise TypeError,"Illegal operation: NMatrix - %s" % other.class
32
+ raise TypeError,"Illegal operation: NumRu::NMatrix - %s" % other.class
33
33
  end
34
34
 
35
35
  def *(other)
36
36
  case other
37
- when NMatrix
38
- NMatrix.mul_add( NArray.refer(self).newdim!(0),other.newdim(2), 1 )
39
- #NMatrix.mul_add( NArray.refer(self).newdim!(0),
37
+ when NumRu::NMatrix
38
+ NumRu::NMatrix.mul_add( NumRu::NArray.refer(self).newdim!(0),other.newdim(2), 1 )
39
+ #NumRu::NMatrix.mul_add( NumRu::NArray.refer(self).newdim!(0),
40
40
  # other.transpose(1,0).newdim!(2), 0 )
41
- when NVector
42
- NVector.mul_add( NArray.refer(self), other.newdim(1), 0 )
43
- when NArray
44
- if other.instance_of?(NArray)
45
- NMatrix.mul( NArray.refer(self), other.newdim(0,0) )
41
+ when NumRu::NVector
42
+ NumRu::NVector.mul_add( NumRu::NArray.refer(self), other.newdim(1), 0 )
43
+ when NumRu::NArray
44
+ if other.instance_of?(NumRu::NArray)
45
+ NumRu::NMatrix.mul( NumRu::NArray.refer(self), other.newdim(0,0) )
46
46
  else
47
47
  other.coerce_rev( self, :* )
48
48
  end
49
49
  when Numeric
50
50
  super
51
- #NMatrix.mul( NArray.refer(self), other )
51
+ #NumRu::NMatrix.mul( NumRu::NArray.refer(self), other )
52
52
  when Array
53
- NMatrix.mul( self, NArray[*other].newdim!(0,0) )
53
+ NumRu::NMatrix.mul( self, NumRu::NArray[*other].newdim!(0,0) )
54
54
  else
55
- raise TypeError,"Illegal operation: NMatrix * %s" % other.class
55
+ raise TypeError,"Illegal operation: NumRu::NMatrix * %s" % other.class
56
56
  end
57
57
  end
58
58
 
59
59
  def /(other)
60
60
  case other
61
- when NMatrix
61
+ when NumRu::NMatrix
62
62
  other.lu.solve(self)
63
- when NVector
64
- raise TypeError,"Illegal operation: NMatrix / %s" % other.class
65
- when NArray
66
- if other.instance_of?(NArray)
67
- NMatrix.div( NArray.refer(self), other.newdim(0,0) )
63
+ when NumRu::NVector
64
+ raise TypeError,"Illegal operation: NumRu::NMatrix / %s" % other.class
65
+ when NumRu::NArray
66
+ if other.instance_of?(NumRu::NArray)
67
+ NumRu::NMatrix.div( NumRu::NArray.refer(self), other.newdim(0,0) )
68
68
  else
69
69
  other.coerce_rev( self, :/ )
70
70
  end
71
71
  when Numeric
72
- NMatrix.div( NArray.refer(self), other )
72
+ NumRu::NMatrix.div( NumRu::NArray.refer(self), other )
73
73
  when Array
74
- NMatrix.div( self, NArray[*other].newdim!(0,0) )
74
+ NumRu::NMatrix.div( self, NumRu::NArray[*other].newdim!(0,0) )
75
75
  else
76
- raise TypeError,"Illegal operation: NMatrix / %s" % other.class
76
+ raise TypeError,"Illegal operation: NumRu::NMatrix / %s" % other.class
77
77
  end
78
78
  end
79
79
 
@@ -91,33 +91,33 @@ class NumRu::NMatrix < NumRu::NArray
91
91
  (2..n).each{ m *= self }
92
92
  m
93
93
  else
94
- raise TypeError,"Illegal operation: NMatrix ** %s" % other.class
94
+ raise TypeError,"Illegal operation: NumRu::NMatrix ** %s" % other.class
95
95
  end
96
96
  end
97
97
 
98
98
  def coerce_rev(other,id)
99
99
  case id
100
100
  when :*
101
- if other.instance_of?(NArray)
102
- return NMatrix.mul( other.newdim(0,0), self )
101
+ if other.instance_of?(NumRu::NArray)
102
+ return NumRu::NMatrix.mul( other.newdim(0,0), self )
103
103
  end
104
- if other.instance_of?(NArrayScalar)
105
- return NMatrix.mul( other.newdim(0), self )
104
+ if other.instance_of?(NumRu::NArrayScalar)
105
+ return NumRu::NMatrix.mul( other.newdim(0), self )
106
106
  end
107
107
  when :/
108
- if other.instance_of?(NArray)
109
- return NMatrix.mul( other.newdim(0,0), self.inverse )
108
+ if other.instance_of?(NumRu::NArray)
109
+ return NumRu::NMatrix.mul( other.newdim(0,0), self.inverse )
110
110
  end
111
- if other.instance_of?(NArrayScalar)
112
- return NMatrix.mul( other.newdim(0), self.inverse )
111
+ if other.instance_of?(NumRu::NArrayScalar)
112
+ return NumRu::NMatrix.mul( other.newdim(0), self.inverse )
113
113
  end
114
114
  end
115
- raise TypeError,"Illegal operation: %s %s NMatrix" %
115
+ raise TypeError,"Illegal operation: %s %s NumRu::NMatrix" %
116
116
  [other.class, id.id2name]
117
117
  end
118
118
 
119
119
  def inverse
120
- self.lu.solve( NMatrix.new(self.typecode, *self.shape).fill!(0).unit )
120
+ self.lu.solve( NumRu::NMatrix.new(self.typecode, *self.shape).fill!(0).unit )
121
121
  end
122
122
 
123
123
  def transpose(*arg)
@@ -130,12 +130,12 @@ class NumRu::NMatrix < NumRu::NArray
130
130
 
131
131
  def diagonal!(val=1)
132
132
  shp = self.shape
133
- idx = NArray.int(shp[0..1].min).indgen! * (shp[0]+1)
133
+ idx = NumRu::NArray.int(shp[0..1].min).indgen! * (shp[0]+1)
134
134
  ref = reshape(shp[0]*shp[1],true)
135
135
  if val.kind_of?(Numeric)
136
136
  ref[idx,true] = val
137
137
  else
138
- val = NArray.to_na(val)
138
+ val = NumRu::NArray.to_na(val)
139
139
  raise ArgumentError, "must be 1-d array" if val.dim!=1
140
140
  ref[idx,true] = val.newdim!(-1)
141
141
  end
@@ -152,74 +152,74 @@ class NumRu::NMatrix < NumRu::NArray
152
152
  alias identity unit
153
153
  alias I unit
154
154
 
155
- end # class NMatrix
155
+ end # class NumRu::NMatrix
156
156
 
157
157
 
158
158
  #
159
- # ------ NVector ------
159
+ # ------ NumRu::NVector ------
160
160
  #
161
161
  class NumRu::NVector < NumRu::NArray
162
162
  CLASS_DIMENSION = 1
163
163
 
164
164
  def +(other)
165
165
  case other
166
- when NVector
167
- return super(NArray.refer(other))
168
- when NArray
169
- unless other.instance_of?(NArray)
166
+ when NumRu::NVector
167
+ return super(NumRu::NArray.refer(other))
168
+ when NumRu::NArray
169
+ unless other.instance_of?(NumRu::NArray)
170
170
  return other.coerce_rev( self, :+ )
171
171
  end
172
172
  end
173
- raise TypeError,"Illegal operation: NVector + %s" % other.class
173
+ raise TypeError,"Illegal operation: NumRu::NVector + %s" % other.class
174
174
  end
175
175
 
176
176
  def -(other)
177
177
  case other
178
- when NVector
179
- return super(NArray.refer(other))
180
- when NArray
181
- unless other.instance_of?(NArray)
178
+ when NumRu::NVector
179
+ return super(NumRu::NArray.refer(other))
180
+ when NumRu::NArray
181
+ unless other.instance_of?(NumRu::NArray)
182
182
  return other.coerce_rev( self, :- )
183
183
  end
184
184
  end
185
- raise TypeError,"Illegal operation: NVector - %s" % other.class
185
+ raise TypeError,"Illegal operation: NumRu::NVector - %s" % other.class
186
186
  end
187
187
 
188
188
  def *(other)
189
189
  case other
190
- when NMatrix
191
- NVector.mul_add( NArray.refer(self).newdim!(0), other, 1 )
192
- when NVector
193
- NArray.mul_add( NArray.refer(self), other, 0 ) # inner product
194
- when NArray
195
- if other.instance_of?(NArray)
196
- NVector.mul( NArray.refer(self), other.newdim(0) )
190
+ when NumRu::NMatrix
191
+ NumRu::NVector.mul_add( NumRu::NArray.refer(self).newdim!(0), other, 1 )
192
+ when NumRu::NVector
193
+ NumRu::NArray.mul_add( NumRu::NArray.refer(self), other, 0 ) # inner product
194
+ when NumRu::NArray
195
+ if other.instance_of?(NumRu::NArray)
196
+ NumRu::NVector.mul( NumRu::NArray.refer(self), other.newdim(0) )
197
197
  else
198
198
  other.coerce_rev( self, :* )
199
199
  end
200
200
  when Numeric
201
- NVector.mul( NArray.refer(self), other )
201
+ NumRu::NVector.mul( NumRu::NArray.refer(self), other )
202
202
  else
203
- raise TypeError,"Illegal operation: NVector * %s" % other.class
203
+ raise TypeError,"Illegal operation: NumRu::NVector * %s" % other.class
204
204
  end
205
205
  end
206
206
 
207
207
  def /(other)
208
208
  case other
209
- when NMatrix
209
+ when NumRu::NMatrix
210
210
  other.lu.solve(self)
211
- when NVector
212
- raise TypeError,"Illegal operation: NVector / %s" % other.class
213
- when NArray
214
- if other.instance_of?(NArray)
215
- NVector.div( NArray.refer(self), other.newdim(0) )
211
+ when NumRu::NVector
212
+ raise TypeError,"Illegal operation: NumRu::NVector / %s" % other.class
213
+ when NumRu::NArray
214
+ if other.instance_of?(NumRu::NArray)
215
+ NumRu::NVector.div( NumRu::NArray.refer(self), other.newdim(0) )
216
216
  else
217
217
  other.coerce_rev( self, :/ )
218
218
  end
219
219
  when Numeric
220
- NVector.div( NArray.refer(self), other )
220
+ NumRu::NVector.div( NumRu::NArray.refer(self), other )
221
221
  else
222
- raise TypeError,"Illegal operation: NVector / %s" % other.class
222
+ raise TypeError,"Illegal operation: NumRu::NVector / %s" % other.class
223
223
  end
224
224
  end
225
225
 
@@ -234,15 +234,15 @@ class NumRu::NVector < NumRu::NArray
234
234
  def coerce_rev(other,id)
235
235
  case id
236
236
  when :*
237
- if other.instance_of?(NArray)
238
- return NVector.mul( other.newdim(0), self )
237
+ if other.instance_of?(NumRu::NArray)
238
+ return NumRu::NVector.mul( other.newdim(0), self )
239
239
  end
240
- if other.instance_of?(NArrayScalar)
241
- return NVector.mul( other, self )
240
+ if other.instance_of?(NumRu::NArrayScalar)
241
+ return NumRu::NVector.mul( other, self )
242
242
  end
243
243
  end
244
- raise TypeError,"Illegal operation: %s %s NVector" %
244
+ raise TypeError,"Illegal operation: %s %s NumRu::NVector" %
245
245
  [other.class, id.id2name]
246
246
  end
247
247
 
248
- end # class NVector
248
+ end # class NumRu::NVector
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numru-narray
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seiya Nishizawa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-12 00:00:00.000000000 Z
11
+ date: 2016-02-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: NArray with big memory support
14
14
  email: seiya@gfd-dennou.org