1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#!/usr/bin/python
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgdef gen(x, y):
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    origtype = "mat" + str(x)
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    trantype = "mat" + str(y)
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    if x != y:
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org        origtype = origtype + "x" + str(y)
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org        trantype = trantype + "x" + str(x)
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    print trantype + " transpose(" + origtype + " m)\n{"
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    print "    " + trantype + " t;"
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    # The obvious implementation of transpose
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    for i in range(x):
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org        for j in range(y):
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org            print "    t[" + str(j) + "][" + str(i) + "] =",
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org            print "m[" + str(i) + "][" + str(j) + "];"
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    print "    return t;\n}"
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgprint "#version 120"
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggen(2,2)
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggen(2,3) # mat2x3 means 2 columns, 3 rows
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggen(2,4)
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggen(3,2)
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggen(3,3)
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggen(3,4)
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggen(4,2)
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggen(4,3)
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orggen(4,4)
29