docs: function solveCurveX(x) {
          var t2 = x,
              derivative,
              x2;
  
          // https://trac.webkit.org/browser/trunk/Source/WebCore/platform/animation
          // First try a few iterations of Newton's method -- normally very fast.
          // http://en.wikipedia.org/wiki/Newton's_method
          for (var i = 0; i < 8; i++) {
              // f(t)-x=0
              x2 = sampleCurveX(t2) - x;
              if (Math.abs(x2) < ZERO_LIMIT) {
                  return t2;
              }
              derivative = sampleCurveDerivativeX(t2);
              // == 0, failure
              if (Math.abs(derivative) < ZERO_LIMIT) {
                  break;
              }
              t2 -= x2 / derivative;
          }
  
          // Fall back to the bisection method for reliability.
          // bisection
          // http://en.wikipedia.org/wiki/Bisection_method
          var t1 = 1,
              t0 = 0;
          t2 = x;
          while (t1 > t0) {
              x2 = sampleCurveX(t2) - x;
              if (Math.abs(x2) < ZERO_LIMIT) {
                  return t2;
              }
              if (x2 > 0) {
                  t1 = t2;
              } else {
                  t0 = t2;
              }
              t2 = (t1 + t0) / 2;
          }
  
          // Failure
          return t2;
      }