private DoubleInterval nextNorm(DoubleIntervalCohoMatrix A_trans_base, Matrix x, Matrix y,double currNorm){
		try{
			DoubleIntervalMatrix pi = A_trans_base.getSolution(x);
			DoubleIntervalMatrix eta = A_trans_base.getSolution(y); 
			
			DoubleInterval newNorm = DoubleInterval.create(Double.MAX_VALUE);
			boolean nextQuad = true;
			double minNextNorm = currNorm+planeEps*Math.max(1,currNorm);//sin(planeEps)*sqrt{1+currNorm^2}
			for(int i=0;i<pi.length();i++){
				DoubleInterval pi_i = pi.V(i);
				DoubleInterval eta_i = eta.V(i);
				if(eta_i.less(0.0)){
					DoubleInterval Norm_i = pi_i.div(eta_i.negate());
					double norm_i = Math.max(0,Norm_i.x().doubleValue());//make sure it's non-negative. For the special case (1,0).
					//DOC What if Norm_i has greater interval? We use x() value for alpha.
					if(norm_i >= minNextNorm && norm_i < newNorm.x().doubleValue()){
						nextQuad = false;
						double e = Norm_i.hi().doubleValue()-norm_i;
						newNorm = DoubleInterval.create(norm_i-e,norm_i+e);//ususally it's Norm_i.
					}
				}
			}
			if(nextQuad||newNorm.x().doubleValue()>=1/planeEps)//if the angle is small then eps, turn to next quad.
				return null;
			return newNorm;//else
		}catch(SingularMatrixException e){
			throw new LPError("LPproject.nextNorm(): This should never happen when solve the optimal point.");
		}
	}