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;
    }
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 ; }
Gets an epsilon constant as advised by Andrei (2009).
See also, http://timvieira.github.io/blog/post/2014/02/10/gradient-vector-product/.