#!/usr/local/bin/python
# $Id: matrix.python,v 1.5 2001/05/09 01:24:52 doug Exp $
# http://www.bagley.org/~doug/shootout/
# This program based on the original from:
# "The What, Why, Who, and Where of Python" By Aaron R. Watters
# http://www.networkcomputing.com/unixworld/tutorial/005/005.html
# modified to pass rows and cols, and avoid matrix size checks
# and added one optimization to reduce subscripted references in
# inner loop.
import sys
size = 30
def mkmatrix(rows, cols):
count = 1
mx = [ None ] * rows
for i in range(rows):
mx[i] = [0] * cols
for j in range(cols):
mx[i][j] = count
count += 1
return mx
def mmult(rows, cols, m1, m2):
m3 = [ None ] * rows
for i in range( rows ):
m3[i] = [0] * cols
for j in range( cols ):
val = 0
for k in range( cols ):
val += m1[i][k] * m2[k][j]
m3[i][j] = val
return m3
def mxprint(m):
for i in range(size):
for j in range(size):
print m[i][j],
print ""
def main():
iter = int(sys.argv[1])
m1 = mkmatrix(size, size)
m2 = mkmatrix(size, size)
for i in xrange(iter):
mm = mmult(size, size, m1, m2)
print mm[0][0], mm[2][3], mm[3][2], mm[4][4]
main()