code: @Override
  	public double calculatePhase1InitialFeasiblePoint(double[] originalNotFeasiblePoint, double tolerance){
  		RealMatrix F = this.buildS(originalNotFeasiblePoint).scalarMultiply(-1);
  		RealMatrix S = F.scalarMultiply(-1);
  		try{
  			new CholeskyDecomposition(S);
  			//already feasible
  			return -1;
  		}catch(NonPositiveDefiniteMatrixException ee){
  			//it does NOT mean that F is negative, it can be not definite
  			EigenDecomposition eFact = new EigenDecomposition(F);
  			double[] eValues = eFact.getRealEigenvalues();
  			double minEigenValue = eValues[Utils.getMinIndex(DoubleFactory1D.dense.make(eValues))];
  			return  -Math.min(minEigenValue * Math.pow(tolerance, -0.5), 0.);
  		}
  	}
docs: Calculates the initial value for the s parameter in Phase I.
  Return s so that F(x)-s.I is negative definite
  @see "S.Boyd and L.Vandenberghe, Convex Optimization, 11.6.2"
  @see "S.Boyd and L.Vandenberghe, Semidefinite programming, 6.1"