System.err.println("rows=" + rows);
public lprec (int nrows, int ncolumns){  int i, nsum;    nsum=nrows+ncolumns;  if(rows < 0 || columns < 0)    System.err.print("rows < 0 or columns < 0");  lp_name = new String("unnamed");  active=FALSE;  verbose=FALSE;  print_duals=FALSE;  print_sol=FALSE;  debug=FALSE;  print_at_invert=FALSE;  trace=FALSE;  rows=nrows;  System.err.println("rows=" + rows);  columns=ncolumns;  sum=nsum;  rows_alloc=rows;  columns_alloc=columns;  sum_alloc=sum;  names_used=FALSE;  obj_bound=DEF_INFINITE;  infinite=DEF_INFINITE;  epsilon=DEF_EPSILON;  epsb=DEF_EPSB;  epsd=DEF_EPSD;  epsel=DEF_EPSEL;  non_zeros=0;  mat_alloc=1;  mat = new matrec[mat_alloc];  for (i = 0; i < mat_alloc; i++)    mat[i] = new matrec(0, 0);  col_no = new int[mat_alloc];  for (i = 0; i < mat_alloc; i++)    col_no[i] = 0;  col_end = new int[columns + 1];  for (i = 0; i < columns + 1; i++)    col_end[i] = 0;  row_end = new int[rows + 1];  for (i = 0; i < rows + 1; i++)    row_end[i] = 0;  row_end_valid=FALSE;  orig_rh = new double[rows + 1];  for (i = 0; i < rows + 1; i++)    orig_rh[i] = 0;  rh = new double[rows + 1];  for (i = 0; i < rows + 1; i++)    rh[i] = 0;  rhs = new double[rows + 1];  for (i = 0; i < rows + 1; i++)    rhs[i] = 0;  must_be_int = new short[sum + 1];  for (i = 0; i < sum + 1; i++)    must_be_int[i]=FALSE;  orig_upbo = new double[sum + 1];  for(i = 0; i <= sum; i++)    orig_upbo[i]=infinite;  upbo = new double[sum + 1];  for (i = 0; i < sum + 1; i++)    upbo[i] = 0;  orig_lowbo = new double[sum + 1];  for (i = 0; i < sum + 1; i++)    orig_lowbo[i] = 0;  lowbo = new double[sum + 1];  for (i = 0; i < sum + 1; i++)    lowbo[i] = 0;  basis_valid=TRUE;  bas = new int[rows+1];  for (i = 0; i <= rows; i++)    bas[i] = 0;  basis = new short[sum + 1];  for (i = 0; i <= sum; i++)    basis[i] = 0;  lower = new short[sum + 1];  for(i = 0; i <= rows; i++)    {      bas[i]=i;      basis[i]=TRUE;    }  for(i = rows + 1; i <= sum; i++)    basis[i]=FALSE;  for(i = 0 ; i <= sum; i++)    lower[i]=TRUE;   eta_valid=TRUE;  eta_size=0;  eta_alloc=10000;  max_num_inv=DEFNUMINV;  nr_lagrange=0;  eta_value = new double[eta_alloc];  for (i = 0; i < eta_alloc; i++)    eta_value[i] = 0;  eta_row_nr = new int[eta_alloc];  for (i = 0; i < eta_alloc; i++)    eta_row_nr[i] = 0;  eta_col_end = new int[rows_alloc + max_num_inv];  for (i = 0; i < rows_alloc + max_num_inv; i++)    eta_col_end[i] = 0;  bb_rule=FIRST_NI;  break_at_int=FALSE;  break_value=0;  iter=0;  total_iter=0;  solution = new double[sum + 1];  for (i = 0; i <= sum; i++)    solution[i] = 0;  best_solution = new double[sum + 1];  for (i = 0; i <= sum; i++)    best_solution[i] = 0;  duals = new double[rows + 1];  for (i = 0; i <= rows; i++)    duals[i] = 0;  maximise = FALSE;  floor_first = TRUE;  scaling_used = FALSE;  columns_scaled = FALSE;  ch_sign = new short[rows + 1];  for(i = 0; i <= rows; i++)    ch_sign[i] = FALSE;  valid = FALSE; } // end of constructor from row and column