This is an automated email from the ASF dual-hosted git repository. aherbert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-rng.git
commit f092264615c5d81b6ff7f1a01ec6b64bb80eeb9e Author: aherbert <[email protected]> AuthorDate: Tue Aug 24 13:57:17 2021 +0100 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. --- .../jmh/sampling/distribution/ZigguratSamplerPerformance.java | 8 ++++---- .../apache/commons/rng/sampling/distribution/ZigguratSampler.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) 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 @@ public class ZigguratSamplerPerformance { 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 @@ public class ZigguratSamplerPerformance { 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 abstract class ZigguratSampler implements SharedStateContinuousSampler { 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;
