function [x, iterations, residual_norms] = ...
	 gauss_seidel(A, b, x0, tolerance, max_iterations)

  if (nargin < 4)
    tolerance = 1e-10;
  end

  if (nargin < 5)
    max_iterations = intmax();
  end

  omega = 1;

  if (nargout > 2)
    [x, iterations, residual_norms] = ...
      successive_over_relaxation(omega, A, b, x0, tolerance, max_iterations);
  else
    [x, iterations] = ...
      successive_over_relaxation(omega, A, b, x0, tolerance, max_iterations);
  end
end
