docs: public static Vec solveCGNR(double eps, Matrix A, Vec x, Vec b)
      {
          if(A.rows() != b.length())
              throw new ArithmeticException("Dimensions do not agree for Matrix A and Vector b");
          else if(A.cols() != x.length())
              throw new ArithmeticException("Dimensions do not agree for Matrix A and Vector x");
          
          //TODO write a version that does not explicityly form the transpose matrix
          Matrix At = A.transpose();
          Matrix AtA = At.multiply(A);
          Vec AtB = At.multiply(b);
          
          return solve(eps, AtA, x, AtB);
      }