docs: function(init, step, stop) {
           var prev, curr, done, reps;
  
           curr = init;
           reps = utils.maxSteps;
           if (stop === 0) { return curr; }
           done = typeof stop === 'function' ?
                  stop
                : stop > 0 ? function() { stop -= 1; return stop === 0; }
                           : function() { return utils.relativelyCloseTo(curr, prev, 1e-13); };
           while (reps > 0 && !done() && !isNaN(curr)) {
              reps -= 1;
              prev = curr;
              curr = step();
           }
           if (isNaN(curr)) { console.log('repeat returned NaN'); }
           if (reps === 0) {
              console.log('repeat terminated after too many repetitions');
           }
           return curr;
        }