aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-07-21 14:12:19 +0200
committerThomas White <taw@physics.org>2021-07-21 15:34:33 +0200
commitd45d3e765011f99bd84bf52872590a4d8ff89ac7 (patch)
treea352a27520fd70dcc789177aae233e8da286db68
parent7e5536832b22036a634a74e16073b4762a416e29 (diff)
Fix random_partiality()
-rw-r--r--libcrystfel/src/geometry.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/libcrystfel/src/geometry.c b/libcrystfel/src/geometry.c
index e847711d..ff6d14c7 100644
--- a/libcrystfel/src/geometry.c
+++ b/libcrystfel/src/geometry.c
@@ -194,47 +194,46 @@ double gaussian_fraction(double rlow, double rhigh, double R)
}
+static void reseed(gsl_rng *rng)
+{
+ unsigned long int seed = gsl_rng_get(rng);
+ gsl_rng_set(rng, seed);
+}
+
+
static double random_partiality(signed int h, signed int k, signed int l,
int serial)
{
gsl_rng *rng = gsl_rng_alloc(gsl_rng_mt19937);
- unsigned long int seed;
double p;
int i;
gsl_rng_set(rng, serial);
- seed = gsl_rng_get(rng);
- gsl_rng_set(rng, seed);
+ reseed(rng);
for ( i=0; i<abs(h)+1; i++ ) {
- seed = gsl_rng_get(rng);
+ gsl_rng_get(rng);
}
- gsl_rng_set(rng, seed);
+ reseed(rng);
if ( h >= 0 ) {
- seed = gsl_rng_get(rng);
+ reseed(rng);
}
- seed = gsl_rng_get(rng);
- gsl_rng_set(rng, seed);
for ( i=0; i<abs(k)+1; i++ ) {
- seed = gsl_rng_get(rng);
+ gsl_rng_get(rng);
}
- gsl_rng_set(rng, seed);
+ reseed(rng);
if ( k >= 0 ) {
- seed = gsl_rng_get(rng);
+ reseed(rng);
}
- seed = gsl_rng_get(rng);
- gsl_rng_set(rng, seed);
for ( i=0; i<abs(l)+1; i++ ) {
- seed = gsl_rng_get(rng);
+ gsl_rng_get(rng);
}
- gsl_rng_set(rng, seed);
+ reseed(rng);
if ( l >= 0 ) {
- seed = gsl_rng_get(rng);
+ reseed(rng);
}
- seed = gsl_rng_get(rng);
- gsl_rng_set(rng, seed);
p = gsl_rng_uniform(rng);
gsl_rng_free(rng);