* transcode.c (trans_open_i): check the result of rb_transcoding_open.
[ruby-svn.git] / benchmark / bm_so_matrix.rb
blob0f274ad06c75813ddec512cab904b137dca45cdf
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/
6 n = 60 #Integer(ARGV.shift || 1)
8 size = 30
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
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
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]}"