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 6n = 60 #Integer(ARGV.shift || 1) 7 8size = 40 9 10def 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 22end 23 24def 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 38end 39 40m1 = mkmatrix(size, size) 41m2 = mkmatrix(size, size) 42mm = Array.new 43n.times do 44 mm = mmult(size, size, m1, m2) 45end 46# puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}" 47 48 49