fix subtle bug with complex matrix multiply