code: private static double getEpsilon(IntDoubleVector x, IntDoubleVector d) {
          double machineEpsilon = 2.2204460492503131e-16;
          double xInfNorm = DoubleArrays.infinityNorm(x.toNativeArray());
          double dInfNorm = DoubleArrays.infinityNorm(d.toNativeArray());
          return machineEpsilon * (1.0 + xInfNorm) / dInfNorm;
      }
docs: Gets an epsilon constant as advised by Andrei (2009).
  See also, http://timvieira.github.io/blog/post/2014/02/10/gradient-vector-product/.