backward substitution moved to MatrixUtils