-- $Id: matrix.lua,v 1.2 2001/01/13 14:47:43 doug Exp $
-- http://www.bagley.org/~doug/shootout/
-- with help from Roberto Ierusalimschy
local n = tonumber((arg and arg[1]) or 1)
local size = 30
function mkmatrix(rows, cols)
local count = 1
local mx = {}
for i=0,(rows - 1) do
local row = {}
for j=0,(cols - 1) do
row[j] = count
count = count + 1
end
mx[i] = row
end
return(mx)
end
function mmult(rows, cols, m1, m2)
local m3 = {}
for i=0,(rows-1) do
m3[i] = {}
for j=0,(cols-1) do
local rowj = 0
for k=0,(cols-1) do
rowj = rowj + m1[i][k] * m2[k][j]
end
m3[i][j] = rowj
end
end
return(m3)
end
local m1 = mkmatrix(size, size)
local m2 = mkmatrix(size, size)
for i=1,n do
mm = mmult(size, size, m1, m2)
end
write(format("%d %d %d %d\n", mm[0][0], mm[2][3], mm[3][2], mm[4][4]))