rendered paste bodyfrom numpy import matrixfrom numpy import dotfrom numpy import arraydef mult(a,b): c=a.copy() c[0][0]=dot(a[0][0],b[0][0])+dot(a[0][1],b[1][0]) c[0][1]=dot(a[0][0],b[0][1])+dot(a[0][1],b[1][1]) c[1][0]=dot(a[1][0],b[0][0])+dot(a[1][1],b[1][0]) c[1][1]=dot(a[1][0],b[0][1])+dot(a[1][1],b[1][1]) return c if __name__ == '__main__': a=array([[+1+2j,+3+4j], [-3+4j,+1-2j]]) b=array([[+4+3j,+2+1j], [-2+1j,+4-3j]]) c=array([[+5+4j,+1+2j], [-1+2j,+5-4j]]) d=array([[+6+7j,+4+2j], [-4+2j,+6-7j]]) i=array([[1,0],[0,1]]) z=array([[0,0],[0,0]]) A=array([[a,b],[c,d]]) B=array([[c,a],[b,c]]) C=array([[a,d],[a,c]]) I=array([[i,z],[z,i]]) print "j" print mult(A,mult(B,C))-mult(mult(A,B),C)