narray 0.6.0.1 → 0.6.0.3

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.
@@ -1,3 +1,18 @@
1
+ 2012-12-07 geoffyoungs
2
+
3
+ * narray.c (na_check_class_narray):
4
+ Use ruby methods to check class ancestors,
5
+ instead of m_tbl directly
6
+ * ver 0.6.0.2
7
+
8
+ 2012-09-20 Masahiro TANAKA <masa16.tanaka@gmail.com>
9
+
10
+ * lib/narray_ext.rb (reverse,rot90): new method
11
+
12
+ 2012-09-01 ohai
13
+
14
+ * lib/narray_ext.rb: Change NMath#recip into a module function.
15
+
1
16
  2011-08-29 Masahiro TANAKA <masa16.tanaka@gmail.com>
2
17
 
3
18
  * narray.c (na_alloc_struct): check array size (zero/negative).
@@ -86,6 +86,11 @@ Replacing Elements -- Same rule as slicing
86
86
  a[0..2,0..3] = b[0..2,1] Storing repetitively
87
87
  ( a[0,0]=b[0,1],..,a[0,3]=b[0,1] )
88
88
 
89
+ Delete row/columns -- Complement of slice
90
+
91
+ self.delete_at(...) Arguments are the same as the [] and slice methods
92
+ see https://github.com/masa16/narray/issues/5
93
+
89
94
  Filling values
90
95
  self.indgen!([start[,step]]) Generate index;
91
96
  Set values from 'start' with 'step' increment
@@ -196,6 +201,10 @@ Reference to another NArray
196
201
  self.reshape(size,...) same as self.refer.reshape!
197
202
  self.newdim(dim,...) same as self.refer.newdim!
198
203
 
204
+ Reverse and Rotate
205
+ self.reverse([dim,...]) Reverse array at axes
206
+ self.rot90([k]) Rotate array by 90 degrees k times
207
+
199
208
  Type conversion
200
209
  self.floor Return integer NArray whose elements processed 'floor'
201
210
  self.ceil
@@ -75,6 +75,11 @@
75
75
  a[0..2,0..3] = b[0..2,1] 繰り返し代入。
76
76
  ( a[0,0]=b[0,1],..,a[0,3]=b[0,1] )
77
77
 
78
+ 行・列の削除 -- インデックス取り出しの逆
79
+
80
+ self.delete_at(...) 引数はインデクス参照と同じ。
81
+ 参照: https://github.com/masa16/narray/issues/5
82
+
78
83
  値のセット。
79
84
  self.indgen!([start[,step]]) startからstepづつ増加した値をセット。
80
85
  self.fill!(value) すべての要素にvalueをセット。
@@ -181,6 +186,10 @@
181
186
  self.reshape(size,...) self.refer.reshape! と同様。
182
187
  self.newdim(dim,...) self.refer.newdim! と同様。
183
188
 
189
+ 反転・回転
190
+ self.reverse([dim,...]) 指定した次元を逆順にする
191
+ self.rot90([k]) 2次元配列の90度の回転をk回行う
192
+
184
193
  型変換
185
194
  self.floor selfより小さい最大の整数を返す。
186
195
  self.ceil selfより大きい最小の整数を返す。
@@ -78,7 +78,7 @@ class NArray
78
78
  when Array
79
79
  x = (0...n).to_a
80
80
  x -= a.map do |j|
81
- raise IndexError, "contains non-integer" unless Interger===j
81
+ raise IndexError, "contains non-integer" unless Integer===j
82
82
  (j<0) ? n+j : j
83
83
  end
84
84
  else
@@ -208,6 +208,42 @@ class NArray
208
208
  self
209
209
  end
210
210
 
211
+ def reverse(*ranks)
212
+ if self.rank==0
213
+ return self.dup
214
+ elsif ranks.size==0
215
+ idx = (0...self.rank).map{-1..0}
216
+ else
217
+ idx = [true]*self.rank
218
+ ranks.each do |i|
219
+ if !i.kind_of?(Integer)
220
+ raise ArgumentError, "Argument must be Integer"
221
+ end
222
+ if i >= self.rank
223
+ raise ArgumentError, "dimension(%s) out of range"%[i]
224
+ end
225
+ idx[i] = -1..0
226
+ end
227
+ end
228
+ self[*idx]
229
+ end
230
+
231
+ def rot90(n_times=1)
232
+ if self.rank < 2
233
+ raise "must be >= 2 dimensional array"
234
+ end
235
+ case n_times%4
236
+ when 0
237
+ self.dup
238
+ when 1
239
+ self.transpose(1,0).reverse(0)
240
+ when 2
241
+ self.reverse(0,1)
242
+ when 3
243
+ self.transpose(1,0).reverse(1)
244
+ end
245
+ end
246
+
211
247
  #SFloatOne = NArray.sfloat(1).fill!(1)
212
248
  end
213
249
 
@@ -272,6 +308,7 @@ module NMath
272
308
  ((x-xm)*(y-ym)).sum(*ranks) / (n-1)
273
309
  end
274
310
 
311
+ module_function :recip
275
312
  module_function :csc,:sec,:cot,:csch,:sech,:coth
276
313
  module_function :acsc,:asec,:acot,:acsch,:asech,:acoth
277
314
  module_function :covariance
@@ -181,11 +181,10 @@ static void
181
181
  if (TYPE(v) != T_CLASS) {
182
182
  rb_raise(rb_eRuntimeError, "class required");
183
183
  }
184
- while (v) {
185
- if (v == cNArray || RCLASS(v)->m_tbl == RCLASS(cNArray)->m_tbl)
186
- return;
187
- v = RCLASS_SUPER(v);
188
- }
184
+
185
+ if(RTEST(rb_ary_includes(rb_mod_ancestors(v), cNArray)))
186
+ return;
187
+
189
188
  rb_raise(rb_eRuntimeError, "need NArray or its subclass");
190
189
  }
191
190
 
@@ -23,8 +23,8 @@
23
23
  # include <sys/types.h>
24
24
  #endif
25
25
 
26
- #define NARRAY_VERSION "0.6.0.1"
27
- #define NARRAY_VERSION_CODE 601
26
+ #define NARRAY_VERSION "0.6.0.2"
27
+ #define NARRAY_VERSION_CODE 602
28
28
 
29
29
  /*
30
30
  Data types used in NArray :
metadata CHANGED
@@ -1,27 +1,23 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: narray
3
- version: !ruby/object:Gem::Version
4
- version: 0.6.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0.3
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - Masahiro Tanaka
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2011-08-27
13
- default_executable:
12
+ date: 2012-12-26 00:00:00.000000000 Z
14
13
  dependencies: []
15
-
16
14
  description: Numerical N-dimensional Array class
17
15
  email: masa16.tanaka@gmail.com
18
16
  executables: []
19
-
20
- extensions:
17
+ extensions:
21
18
  - src/extconf.rb
22
19
  extra_rdoc_files: []
23
-
24
- files:
20
+ files:
25
21
  - src/ChangeLog
26
22
  - src/MANIFEST
27
23
  - src/README.en
@@ -44,33 +40,28 @@ files:
44
40
  - src/narray_local.h
45
41
  - src/lib/narray_ext.rb
46
42
  - src/lib/nmatrix.rb
47
- has_rdoc: false
48
43
  homepage: http://narray.rubyforge.org/
49
44
  licenses: []
50
-
51
45
  post_install_message:
52
46
  rdoc_options: []
53
-
54
- require_paths:
47
+ require_paths:
55
48
  - .
56
- required_ruby_version: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: "0"
61
- version:
62
- required_rubygems_version: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: "0"
67
- version:
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ! '>='
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
68
61
  requirements: []
69
-
70
62
  rubyforge_project: narray
71
- rubygems_version: 1.3.7
63
+ rubygems_version: 1.8.23
72
64
  signing_key:
73
65
  specification_version: 2
74
66
  summary: N-dimensional Numerical Array class for Ruby
75
67
  test_files: []
76
-