Update ZigguaratSampler concave epsilon for the exponential.
This should be equal to approximately 9.2%. The previous value was
approximately 5.6% resulting in fast acceptance too often for overhangs.
diff --git a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/sampling/distribution/ZigguratSamplerPerformance.java b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/sampling/distribution/ZigguratSamplerPerformance.java
index da961d5..a0812c8 100644
--- a/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/sampling/distribution/ZigguratSamplerPerformance.java
+++ b/commons-rng-examples/examples-jmh/src/main/java/org/apache/commons/rng/examples/jmh/sampling/distribution/ZigguratSamplerPerformance.java
@@ -2166,8 +2166,8 @@
static class ModifiedZigguratExponentialSampler implements ContinuousSampler {
/** Maximum i value for early exit. */
protected static final int I_MAX = 252;
- /** Maximum distance value for early exit. */
- protected static final long IE_MAX = 513303011048449570L;
+ /** Maximum distance value for early exit. Equal to approximately 0.0926 scaled by 2^63. */
+ protected static final long IE_MAX = 853965788476313646L;
/** Beginning of tail. */
protected static final double X_0 = 7.569274694148063;
@@ -2858,8 +2858,8 @@
static class ModifiedZigguratExponentialSampler512 implements ContinuousSampler {
/** Maximum i value for early exit. */
protected static final int I_MAX = 508;
- /** Maximum distance value for early exit. */
- protected static final long IE_MAX = 507874389497522840L;
+ /** Maximum distance value for early exit. Equal to approximately 0.0919 scaled by 2^63. */
+ protected static final long IE_MAX = 847415790149374212L;
/** Beginning of tail. */
protected static final double X_0 = 8.362025281328359;
diff --git a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratSampler.java b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratSampler.java
index 641ab79..7885360 100644
--- a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratSampler.java
+++ b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratSampler.java
@@ -121,8 +121,8 @@
public static class Exponential extends ZigguratSampler {
/** Maximum i value for early exit. */
private static final int I_MAX = 252;
- /** Maximum distance value for early exit. */
- private static final long IE_MAX = 513303011048449570L;
+ /** Maximum distance value for early exit. Equal to approximately 0.0926 scaled by 2^63. */
+ private static final long IE_MAX = 853965788476313646L;
/** Beginning of tail. */
private static final double X_0 = 7.569274694148063;