epitools 0.5.31 → 0.5.32

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