def Hadamard(k): H = Matrix(1,1) H[0,0] = 1 for i in range(k): m = 2**i newH = Matrix(2*m, 2*m) newH[:m, :m] = H newH[:m, m:] = H newH[m:, :m] = H newH[m:, m:] = -H H = newH return H