make sure it works for left and right preconditioning