Solving systems of linear equations