]> git.kaiwu.me - klib.git/commitdiff
minor change
authorHeng Li <lh3@live.co.uk>
Sun, 15 Jan 2012 03:59:30 +0000 (22:59 -0500)
committerHeng Li <lh3@live.co.uk>
Sun, 15 Jan 2012 03:59:30 +0000 (22:59 -0500)
krand.c

diff --git a/krand.c b/krand.c
index 09cb893f55f0d6620d29ebe65a8d0478b0a5d510..b46f8c3167a4bb3ee30d2a2784d2027f008bdd20 100644 (file)
--- a/krand.c
+++ b/krand.c
 
 struct _krand_t {
        int mti;
-       krint64_t mt[KR_NN], mag01[2];
+       krint64_t mt[KR_NN];
 };
 
 static void kr_srand0(krint64_t seed, krand_t *kr)
 {
-       kr->mag01[0] = 0; kr->mag01[1] = 0xB5026F5AA96619E9ULL;
        kr->mt[0] = seed;
        for (kr->mti = 1; kr->mti < KR_NN; ++kr->mti) 
                kr->mt[kr->mti] = 6364136223846793005ULL * (kr->mt[kr->mti - 1] ^ (kr->mt[kr->mti - 1] >> 62)) + kr->mti;
@@ -39,19 +38,20 @@ krand_t *kr_srand(krint64_t seed)
 krint64_t kr_rand(krand_t *kr)
 {
        krint64_t x;
+       static const krint64_t mag01[2] = { 0, 0xB5026F5AA96619E9ULL };
     if (kr->mti >= KR_NN) {
                int i;
                if (kr->mti == KR_NN + 1) kr_srand0(5489ULL, kr);
         for (i = 0; i < KR_NN - KR_MM; ++i) {
             x = (kr->mt[i] & KR_UM) | (kr->mt[i+1] & KR_LM);
-            kr->mt[i] = kr->mt[i + KR_MM] ^ (x>>1) ^ kr->mag01[(int)(x&1)];
+            kr->mt[i] = kr->mt[i + KR_MM] ^ (x>>1) ^ mag01[(int)(x&1)];
         }
         for (; i < KR_NN - 1; ++i) {
             x = (kr->mt[i] & KR_UM) | (kr->mt[i+1] & KR_LM);
-            kr->mt[i] = kr->mt[i + (KR_MM - KR_NN)] ^ (x>>1) ^ kr->mag01[(int)(x&1)];
+            kr->mt[i] = kr->mt[i + (KR_MM - KR_NN)] ^ (x>>1) ^ mag01[(int)(x&1)];
         }
         x = (kr->mt[KR_NN - 1] & KR_UM) | (kr->mt[0] & KR_LM);
-        kr->mt[KR_NN - 1] = kr->mt[KR_MM - 1] ^ (x>>1) ^ kr->mag01[(int)(x&1)];
+        kr->mt[KR_NN - 1] = kr->mt[KR_MM - 1] ^ (x>>1) ^ mag01[(int)(x&1)];
         kr->mti = 0;
     }
     x = kr->mt[kr->mti++];