while((frow[row_nr] == FALSE || pcol[row_nr] == FALSE) && row_nr <= Rows)
while(row_nr <= Rows && (frow[row_nr] == FALSE || pcol[row_nr] == FALSE))
void invert(){  int    i, j, v, wk, numit, varnr, row_nr, colnr, varin;  double   theta;  double[]   pcol;  short[]  frow;  short[]  fcol;  int[]    rownum, col, row;  int[]    colnum;  if(Lp.print_at_invert != FALSE)     System.out.print("Start Invert iter " + Lp.iter + " eta_size " + Eta_size +		     " rhs[0] " + (-Rhs[0])+ " \n");  rownum = new int[Rows + 1];  for (i = 0; i <= Rows; i++)    rownum[i] = 0;  col = new int[Rows + 1];  for (i = 0; i <= Rows; i++)    col[i] = 0;  row = new int[Rows + 1];  for (i = 0; i <= Rows; i++)    row[i] = 0;  pcol = new double[Rows + 1];  for (i = 0; i <= Rows; i++)    pcol[i] = 0;  frow = new short[Rows + 1];  for(i = 0; i <= Rows; i++)    frow[i] = TRUE;  fcol = new short[Columns + 1];  for(i = 0; i < Columns; i++)    fcol[i] = FALSE;  colnum = new int[Columns + 1];  for(i = 0; i <= Columns; i++)    colnum[i] = 0;  for(i = 0; i <= Rows; i++)    if(Bas[i] > Rows)      fcol[Bas[i] - Rows - 1] = TRUE;    else      frow[Bas[i]] = FALSE;  for(i = 1; i <= Rows; i++)    if(frow[i] != FALSE)      for(j = Row_end[i - 1] + 1; j <= Row_end[i]; j++)	{	  wk = Col_no[j];	  if(fcol[wk - 1] != FALSE)	    {	      colnum[wk]++;	      rownum[i - 1]++;	    }	}  for(i = 1; i <= Rows; i++)    Bas[i] = i;  for(i = 1; i <= Rows; i++)    Basis[i] = TRUE;  for(i = 1; i <= Columns; i++)    Basis[i + Rows] = FALSE;  for(i = 0; i <= Rows; i++)    Rhs[i] = Rh[i];  for(i = 1; i <= Columns; i++)    {      varnr = Rows + i;      if(Lower[varnr] == FALSE)	{	  theta = Upbo[varnr];	  for(j = Col_end[i - 1]; j < Col_end[i]; j++)	    Rhs[Mat[j].row_nr] -= theta * Mat[j].value;	}    }  for(i = 1; i <= Rows; i++)    if(Lower[i] == FALSE)      Rhs[i] -= Upbo[i];  Eta_size = 0;  v = 0;  row_nr = 0;  Num_inv = 0;  numit = 0;  while(v < Rows)    {      row_nr++;      if(row_nr > Rows)	row_nr = 1;      v++;      if(rownum[row_nr - 1] == 1)	if(frow[row_nr] != FALSE)	  {	    v = 0;	    j = Row_end[row_nr - 1] + 1;	    while(fcol[Col_no[j] - 1] == FALSE)	      j++;	    colnr = Col_no[j];	    fcol[colnr - 1] = FALSE;	    colnum[colnr] = 0;	    for(j = Col_end[colnr - 1]; j < Col_end[colnr]; j++)	      if(frow[Mat[j].row_nr] != FALSE)		rownum[Mat[j].row_nr - 1]--;	    frow[row_nr] = FALSE;	    minoriteration(colnr, row_nr);	  }    }  v = 0;  colnr = 0;  while(v <Columns)    {      colnr++;      if(colnr > Columns)	colnr = 1;      v++;      if(colnum[colnr] == 1)	if(fcol[colnr - 1] != FALSE)	  {	    v = 0;	    j = Col_end[colnr - 1] + 1;	    while(frow[Mat[j - 1].row_nr] == FALSE)	      j++;	    row_nr = Mat[j - 1].row_nr;	    frow[row_nr] = FALSE;	    rownum[row_nr - 1] = 0;	    for(j = Row_end[row_nr - 1] + 1; j <= Row_end[row_nr]; j++)	      if(fcol[Col_no[j] - 1] != FALSE)		colnum[Col_no[j]]--;	    fcol[colnr - 1] = FALSE;	    numit++;	    col[numit - 1] = colnr;	    row[numit - 1] = row_nr;	  }    }  for(j = 1; j <= Columns; j++)    if(fcol[j - 1] != FALSE)      {	fcol[j - 1] = FALSE;	setpivcol(Lower[Rows + j], j + Rows, pcol);	row_nr = 1;	while((frow[row_nr] == FALSE || pcol[row_nr] == FALSE)		 && row_nr <= Rows)	  row_nr++; /* this sometimes sets row_nr to Rows + 1 and makes		       rhsmincol crash. Solved in 2.0? MB */        if(row_nr == Rows + 1)          System.err.print("Inverting failed");	frow[row_nr] = FALSE;        condensecol(row_nr, pcol);	theta = Rhs[row_nr] / (double) pcol[row_nr];	rhsmincol(theta, row_nr, Rows + j);	addetacol();      }  for(i = numit - 1; i >= 0; i--)    {      colnr = col[i];      row_nr = row[i];      varin = colnr + Rows;      for(j = 0; j <= Rows; j++)	pcol[j] = 0;      for(j = Col_end[colnr - 1]; j < Col_end[colnr]; j++)	pcol[Mat[j].row_nr] = Mat[j].value;      pcol[0] -= Extrad;      condensecol(row_nr, pcol);      theta = Rhs[row_nr] / (double) pcol[row_nr];      rhsmincol(theta, row_nr, varin);      addetacol();    }  for(i = 1; i <= Rows; i++)    Rhs[i] = Util.round(Rhs[i], Epsb);  if(Lp.print_at_invert != FALSE)     System.out.print("End Invert                eta_size " + Eta_size + " rhs[0] " +		     (-Rhs[0]) + "\n");   JustInverted = TRUE;  DoInvert = FALSE;} /* invert */