code: public void setzMax(double zMax)
      {
          if(Double.isInfinite(zMax) || Double.isNaN(zMax) || zMax <= 0)
              throw new ArithmeticException("Invalid penalty given: " + zMax);
          this.zMax = zMax;
      }
docs: Sets the penalty bound for miss-classification of results. This also provides
  numerical stability to the algorithm. The results are not sensitive to this
  value. The recommended value range is in [2, 4]
  
  @param zMax the penalty bound
  @throws ArithmeticException if the value is not in (0, {@link Double#MAX_VALUE}]