code: @Override
  	public double calculatePhase1InitialFeasiblePoint(double[] originalNotFeasiblePoint, double tolerance){
  		double s = -Double.MAX_VALUE;
  		RealVector x = new ArrayRealVector(originalNotFeasiblePoint); 
  		for(int i=0; i<socpConstraintParametersList.size(); i++){
   			SOCPConstraintParameters param = socpConstraintParametersList.get(i);
   			RealMatrix A = param.getA();
   			RealVector b = param.getB();
   			RealVector c = param.getC();
   			double d = param.getD();
   			s = Math.max(s, (A.operate(x).subtract(b).getNorm() - (c.dotProduct(x)+d))*Math.pow(tolerance,-0.5));
  		}
  		if(Double.compare(0., s)==0){
  			//for the point to be feasible, we must have s<0.
  			//s==0 is an ambiguous value the is better to avoid
  			s = 2 * tolerance;
  		}
  		return s;
  	}
docs: Calculates the initial value for the s parameter in Phase I.
  Return s = max(||Ai.x+bi|| - (ci.x+di))
  @see "S.Boyd and L.Vandenberghe, Convex Optimization, 11.6.2"