code: public static Matrix reduce(Matrix source) {
  		Matrix response = Matrix.Factory.zeros(source.getRowCount(), 1);
  		for (int row = 0; row < source.getRowCount(); ++row) {
  			response.setAsDouble(row, row, 0);
  		}
  		return source.getRowCount() == source.getColumnCount() ? Ginv.reduce(source, response)
  				: response;
  	}
docs: Mathematical operator to reduce the bandwidth of a HusoMatrix. The
  HusoMatrix must be a square HusoMatrix or no operations are performed.
  
  This method reduces a sparse HusoMatrix and returns the numbering of
  nodes to achieve this banding. It may be advantageous to run this twice,
  though sample cases haven't shown the need. Rows are numbered beginning
  with 0. The return HusoMatrix is a vector with what should be used as the
  new numbering to achieve minimum banding.
  
  Each node in a typical finite-element grid is connected to surrounding
  nodes which are connected back to this node. This routine was designed
  with this requirement in mind. It may work where a node is connected to
  an adjacent node that is not connected back to this node... and this is
  quite possible when the grid is on a sphere and the connections are
  determined based on initial headings or bearings.
  
  @return the vector indicating the numbering required to achieve a minimum
  banding