code: public double[] presolve(double[] x){
  		if(x.length != originalN){
  			throw new IllegalArgumentException("wrong array dimension: " + x.length);
  		}
  		double[] presolvedX = Arrays.copyOf(x, x.length);
  		for(int i=0; i<presolvingStack.size(); i++){
  			presolvingStack.get(i).preSolve(presolvedX);
  		}
  		double[] ret = new double[presolvedN];
  		int cntPosition = 0;
  		for(int i=0; i<presolvedX.length; i++){
  			if(indipendentVariables[i]){
  				ret[cntPosition] = presolvedX[i];
  				cntPosition++;
  			}
  		}
  		if(this.T != null){
  			//rescaling has been done: x = T.x1
  			for(int i=0; i<ret.length; i++){
  				ret[i] = ret[i] / T.getQuick(i);
  			}
  		}
  		return ret;
  	}
docs: From the full x, gives back its presolved elements.