~ubuntu-branches/ubuntu/intrepid/ruby1.9/intrepid-updates

« back to all changes in this revision

Viewing changes to benchmark/bm_so_matrix.rb

  • Committer: Bazaar Package Importer
  • Author(s): akira yamada
  • Date: 2007-05-21 14:00:19 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070521140019-ui4zd0v80duktssk
Tags: 1.9.0+20070521-1
new upstream snapshot. (2006-07-21)  (Closes: #414856, #388344)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/ruby
 
2
# -*- mode: ruby -*-
 
3
# $Id: matrix-ruby.code,v 1.4 2004/11/13 07:42:14 bfulgham Exp $
 
4
# http://www.bagley.org/~doug/shootout/
 
5
 
 
6
n = 60 #Integer(ARGV.shift || 1)
 
7
 
 
8
size = 30
 
9
 
 
10
def mkmatrix(rows, cols)
 
11
    count = 1
 
12
    mx = Array.new(rows)
 
13
    (0 .. (rows - 1)).each do |bi|
 
14
        row = Array.new(cols, 0)
 
15
        (0 .. (cols - 1)).each do |j|
 
16
            row[j] = count
 
17
            count += 1
 
18
        end
 
19
        mx[bi] = row
 
20
    end
 
21
    mx
 
22
end
 
23
 
 
24
def mmult(rows, cols, m1, m2)
 
25
    m3 = Array.new(rows)
 
26
    (0 .. (rows - 1)).each do |bi|
 
27
        row = Array.new(cols, 0)
 
28
        (0 .. (cols - 1)).each do |j|
 
29
            val = 0
 
30
            (0 .. (cols - 1)).each do |k|
 
31
                val += m1.at(bi).at(k) * m2.at(k).at(j)
 
32
            end
 
33
            row[j] = val
 
34
        end
 
35
        m3[bi] = row
 
36
    end
 
37
    m3
 
38
end
 
39
 
 
40
m1 = mkmatrix(size, size)
 
41
m2 = mkmatrix(size, size)
 
42
mm = Array.new
 
43
n.times do
 
44
    mm = mmult(size, size, m1, m2)
 
45
end
 
46
# puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}"
 
47
 
 
48