adding a gauss-jordan impl