epitools 0.5.31 → 0.5.32

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
  SHA1:
3
- metadata.gz: a5e37455ce36afd3a7cb73f380868b578559ad94
4
- data.tar.gz: 8e76e98be9a930e15e0dedf8ae17311fc292aa6d
3
+ metadata.gz: c0b663423844dcefe3e743a90a86cbcaab0ab460
4
+ data.tar.gz: 9a874aa31d99c415751afaed0b29542ae520cf1d
5
5
  SHA512:
6
- metadata.gz: d26e9c55fe26a3bd6450b7a8f5be8d4dc9386e40cc859ab539043793f3ac683384de944238dfcbdfe4d9de9841279a24be4cc7921c1159663eab109329bec5d0
7
- data.tar.gz: 18bf8b39c8458f5215a3a5abe54c79e8336923e9c7dc11c93f328ba66da9d5873de81fb1ff9985836566795408694572c5c35e622ac7e122dba64cf37d433f32
6
+ metadata.gz: 1509cff967e02c20eaa9779f8608f86c3d97ffd7f84d8d1910dc492b6d0ff5eacbb655ba7af647f9dfb4b5cbdcf484f07336714344f61b22d9d7afb8bedc47a2
7
+ data.tar.gz: 06244532a2aa98d81bb1b1d6a243e2dc09e4855e8b04a5af4d71a537cf27d5fec0bddef7fc6e766c46e1ed07fd3fd6abbb314ac0546215d702a7dca29ca264ab
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.31
1
+ 0.5.32
@@ -18,7 +18,7 @@ autoload :Find, 'find'
18
18
  autoload :Benchmark, 'benchmark'
19
19
  autoload :Tracer, 'tracer'
20
20
  autoload :CSV, 'csv'
21
- autoload :Matrix, 'matrix'
21
+ autoload :Matrix, 'epitools/core_ext/matrix'
22
22
 
23
23
  module Digest
24
24
  autoload :SHA1, 'digest/sha1'
@@ -0,0 +1,73 @@
1
+ require 'matrix'
2
+
3
+ #
4
+ # Matrix extensions
5
+ #
6
+ class Matrix
7
+
8
+ alias_class_method :zeros, :zero
9
+ alias_class_method :zeroes, :zero
10
+
11
+ #
12
+ # Create a matrix of the specified size full of random numbers.
13
+ #
14
+ def self.random(*dims)
15
+ build(*dims) { rand }
16
+ end
17
+
18
+
19
+ #
20
+ # The size of the matrix, returned as `[rows, columns]`.
21
+ #
22
+ def size
23
+ [row_size, column_size]
24
+ end
25
+
26
+ #
27
+ # Print the matrix to the STDOUT.
28
+ #
29
+ def print(header=true, separator=" ")
30
+ max_width = map {|num| num.to_s.size }.max
31
+
32
+ case first
33
+ when Integer
34
+ justify = :rjust
35
+ when Float
36
+ justify = :ljust
37
+ else
38
+ raise "Unknown matrix element type: #{first.class}"
39
+ end
40
+
41
+ # print it!
42
+ puts "#{size.join("x")} matrix:" if header
43
+
44
+ rows.each do |row|
45
+ puts " " + row.map { |n| n.to_s.send(justify, max_width) }.join(separator)
46
+ end
47
+
48
+ puts
49
+ end
50
+
51
+ alias_method :draw, :print
52
+
53
+ #
54
+ # Allow mathematical operations (*, /, +, -) with a regular number on the right side.
55
+ #
56
+ # eg: Matrix.zero(3) + 5
57
+ #
58
+ %w[* / + -].each do |op|
59
+ class_eval %{
60
+ def #{op}(other)
61
+ case other
62
+ when Fixnum, Float
63
+ map { |e| e #{op} other }
64
+ else
65
+ super(other)
66
+ end
67
+ end
68
+ }
69
+ end
70
+
71
+ public :[]=
72
+
73
+ end
@@ -243,74 +243,6 @@ module ObjectSpace
243
243
 
244
244
  end
245
245
 
246
-
247
- #
248
- # Matrix extensions
249
- #
250
- class Matrix
251
-
252
- #
253
- # Create a matrix of the specified size full of random numbers.
254
- #
255
- def self.random(*dims)
256
- build(*dims) { rand }
257
- end
258
-
259
-
260
- #
261
- # The size of the matrix, returned as `[rows, columns]`.
262
- #
263
- def size
264
- [row_size, column_size]
265
- end
266
-
267
- #
268
- # Print the matrix to the STDOUT.
269
- #
270
- def print(header=true, separator=" ")
271
- max_width = map {|num| num.to_s.size }.max
272
-
273
- case first
274
- when Integer
275
- justify = :rjust
276
- when Float
277
- justify = :ljust
278
- else
279
- raise "Unknown matrix element type: #{first.class}"
280
- end
281
-
282
- # print it!
283
- puts "#{size.join("x")} matrix:" if header
284
-
285
- rows.each do |row|
286
- puts " " + row.map { |n| n.to_s.send(justify, max_width) }.join(separator)
287
- end
288
-
289
- puts
290
- end
291
-
292
- alias_method :draw, :print
293
-
294
- #
295
- # Allow mathematical operations (*, /, +, -) with a regular number on the right side.
296
- #
297
- # eg: Matrix.zero(3) + 5
298
- #
299
- %w[* / + -].each do |op|
300
- class_eval %{
301
- def #{op}(other)
302
- case other
303
- when Fixnum, Float
304
- map { |e| e #{op} other }
305
- else
306
- super(other)
307
- end
308
- end
309
- }
310
- end
311
-
312
- end
313
-
314
246
  #
315
247
  # Flush standard input's buffer.
316
248
  #
@@ -645,6 +645,14 @@ describe Matrix do
645
645
  (m / 2.0).to_a.should == [[0.5,1,1.5]]
646
646
  end
647
647
 
648
+ it "lets you set things" do
649
+ m = Matrix.zeros(1,3)
650
+ m.to_a.should == [[0,0,0]]
651
+ m[0,0].should == 0
652
+ m[0,2] = 5
653
+ m.to_a.should == [[0,0,5]]
654
+ end
655
+
648
656
  end
649
657
 
650
658
  describe "truthiness" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epitools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.31
4
+ version: 0.5.32
5
5
  platform: ruby
6
6
  authors:
7
7
  - epitron
@@ -53,6 +53,7 @@ files:
53
53
  - lib/epitools/core_ext/array.rb
54
54
  - lib/epitools/core_ext/enumerable.rb
55
55
  - lib/epitools/core_ext/hash.rb
56
+ - lib/epitools/core_ext/matrix.rb
56
57
  - lib/epitools/core_ext/misc.rb
57
58
  - lib/epitools/core_ext/numbers.rb
58
59
  - lib/epitools/core_ext/object.rb