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
The following commit(s) were added to refs/heads/master by this push:
new a968c2a Do not compute x = hz * W[iz] unless required.
a968c2a is described below
commit a968c2ad61676332e257f53f08f93660ccbb5670
Author: Alex Herbert <[email protected]>
AuthorDate: Sun Jul 4 21:26:50 2021 +0100
Do not compute x = hz * W[iz] unless required.
---
.../sampling/distribution/ZigguratNormalizedGaussianSampler.java | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git
a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSampler.java
b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSampler.java
index 7b62be8..ce39773 100644
---
a/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSampler.java
+++
b/commons-rng-sampling/src/main/java/org/apache/commons/rng/sampling/distribution/ZigguratNormalizedGaussianSampler.java
@@ -127,13 +127,11 @@ public class ZigguratNormalizedGaussianSampler
*/
private double fix(long hz,
int iz) {
- double x;
- double y;
-
- x = hz * W[iz];
if (iz == 0) {
// Base strip.
// This branch is called about 5.7624515E-4 times per sample.
+ double y;
+ double x;
do {
y = -Math.log(rng.nextDouble());
x = -Math.log(rng.nextDouble()) * ONE_OVER_R;
@@ -144,6 +142,7 @@ public class ZigguratNormalizedGaussianSampler
}
// Wedge of other strips.
// This branch is called about 0.027323 times per sample.
+ final double x = hz * W[iz];
if (F[iz] + rng.nextDouble() * (F[iz - 1] - F[iz]) < pdf(x)) {
return x;
}