In the line: return num.zeros((1,), type=a.type())-num.multiply.reduce(num.diagonal(a)) the code: num.zeros((1,), type=a.type()) appears to be redundant. Colin W.