docs: private double computeLearningRate(int i) {
          if (gradAccum[i] < 0) {
              throw new RuntimeException("Gradient accumulator is < 0: " + gradAccum[i]);
          }
          if (updAccum[i] < 0) {
              throw new RuntimeException("Update accumulator is < 0: " + updAccum[i]);
          }
  
          double learningRate = Math.sqrt((updAccum[i] + prm.constantAddend) / (gradAccum[i] + prm.constantAddend));        
          assert !Double.isNaN(learningRate);
          // We shouldn't ever worry about infinities because of the constantAdded being > 0.
          assert !Double.isInfinite(learningRate);
          
          return learningRate;
      }