code: function descStats(sample) {
      var S = [].concat(sample);
      S.sort(function sortOrder(a, b) {
          return a - b;
      });
      var N = S.length;
      var q1 = S[Math.floor(0.25 * N)];
      var q2 = S[Math.floor(0.50 * N)];
      var q3 = S[Math.floor(0.70 * N)];
      var iqr = q3 - q1;
      var tol = 3 * iqr / 2;
      var hi = q3 + tol;
      var whiIndex = N;
      while (--whiIndex > 0) {
          if (S[whiIndex] <= hi) {
              break;
          }
      }
      var whiPct = (whiIndex + 1) / N;
      var whi = S[whiIndex];
      return {
          min: S[0],
          max: S[N - 1],
          q1: q1,
          q2: q2,
          q3: q3,
          hi: hi,
          whi: whi,
          whiPct: whiPct
      };
  }
docs: return basic descriptive stats of some numerical sample