code: public void setLearningRate(double learningRate)
      {
          //+- Inf case captured in >1 <= 0 case
          if(learningRate > 1 || learningRate <= 0 || Double.isNaN(learningRate))
              throw new ArithmeticException("Invalid learning rate");
          this.learningRate = learningRate;
      }
docs: Sets the learning rate of the algorithm. The GB version uses a learning
  rate of 1. SGB uses a learning rate in (0,1) to avoid overfitting. The
  learning rate is multiplied by the output of each weak learner to reduce
  its contribution.
  
  @param learningRate the multiplier to apply to the weak learners
  @throws ArithmeticException if the learning rate is not in the range (0, 1]