11d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke#!/usr/bin/python
21d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke
31d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkedef gen(x, y):
41d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke    origtype = "mat" + str(x)
51d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke    trantype = "mat" + str(y)
61d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke    if x != y:
71d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke        origtype = origtype + "x" + str(y)
81d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke        trantype = trantype + "x" + str(x)
91d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke    print trantype + " transpose(" + origtype + " m)\n{"
101d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke    print "    " + trantype + " t;"
111d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke
121d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke    # The obvious implementation of transpose
131d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke    for i in range(x):
141d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke        for j in range(y):
151d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke            print "    t[" + str(j) + "][" + str(i) + "] =",
161d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke            print "m[" + str(i) + "][" + str(j) + "];"
171d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke    print "    return t;\n}"
181d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunke
191d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkeprint "#version 120"
201d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkegen(2,2)
211d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkegen(2,3) # mat2x3 means 2 columns, 3 rows
221d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkegen(2,4)
231d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkegen(3,2)
241d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkegen(3,3)
251d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkegen(3,4)
261d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkegen(4,2)
271d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkegen(4,3)
281d0e07c42007d1dbab1d582b9ae211e186fcdcddKenneth Graunkegen(4,4)
29