mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	These settings are now covered by .dir-locals.el. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66584 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			1,004 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			1,004 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
#!/usr/bin/ruby
 | 
						|
# -*- Ruby -*-
 | 
						|
# $Id: matrix-ruby.code,v 1.4 2004/11/13 07:42:14 bfulgham Exp $
 | 
						|
# http://www.bagley.org/~doug/shootout/
 | 
						|
 | 
						|
n = 60 #Integer(ARGV.shift || 1)
 | 
						|
 | 
						|
size = 40
 | 
						|
 | 
						|
def mkmatrix(rows, cols)
 | 
						|
    count = 1
 | 
						|
    mx = Array.new(rows)
 | 
						|
    (0 .. (rows - 1)).each do |bi|
 | 
						|
        row = Array.new(cols, 0)
 | 
						|
        (0 .. (cols - 1)).each do |j|
 | 
						|
            row[j] = count
 | 
						|
            count += 1
 | 
						|
        end
 | 
						|
        mx[bi] = row
 | 
						|
    end
 | 
						|
    mx
 | 
						|
end
 | 
						|
 | 
						|
def mmult(rows, cols, m1, m2)
 | 
						|
    m3 = Array.new(rows)
 | 
						|
    (0 .. (rows - 1)).each do |bi|
 | 
						|
        row = Array.new(cols, 0)
 | 
						|
        (0 .. (cols - 1)).each do |j|
 | 
						|
            val = 0
 | 
						|
            (0 .. (cols - 1)).each do |k|
 | 
						|
                val += m1.at(bi).at(k) * m2.at(k).at(j)
 | 
						|
            end
 | 
						|
            row[j] = val
 | 
						|
        end
 | 
						|
        m3[bi] = row
 | 
						|
    end
 | 
						|
    m3
 | 
						|
end
 | 
						|
 | 
						|
m1 = mkmatrix(size, size)
 | 
						|
m2 = mkmatrix(size, size)
 | 
						|
mm = Array.new
 | 
						|
n.times do
 | 
						|
    mm = mmult(size, size, m1, m2)
 | 
						|
end
 | 
						|
# puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}"
 | 
						|
 | 
						|
 |