From: Ian Collins <ian-news@hotmail.com>
Subject: Re: KISS4691, a potentially top-ranked RNG.
Date: Mon, 02 May 2011 07:58:10 +1200
Date: 2011-05-02T07:58:10+12:00 [thread overview]
Message-ID: <925saiFj03U7@mid.individual.net> (raw)
In-Reply-To: <4dbd6e9c$0$12957$892e0abb@auth.newsreader.octanews.com>
On 05/ 2/11 03:31 AM, Thad Smith wrote:
>
> Here is a modification of the program with masking to produce correct results
> with any conforming C implementation. It truncates where when required. A good
> optimizer should eliminate the unneeded masking for 32-bit unsigned long.
Why oh why can't people just use fixed width types? What's the
obsession with unsigned long and masking?
Add
#include <stdint.h>
change all references to "unsigned long" to uint32_t, remove all
references to M32.
> static unsigned long xs = 521288629;
> static unsigned long xcng = 362436069;
> static unsigned long Q[4691];
> #define M32 0xffffffff
>
> unsigned long MWC(void)
> {
> static unsigned long c = 0;
> static unsigned long j = 4691;
> unsigned long t;
> unsigned long x;
> j = (j< 4690) ? j + 1 : 0;
> x = Q[j];
> t = ((x<< 13) + c)& M32;
> if (t< c) {
> c = (x>> 19) + 1;
> t = (t + x)& M32;
> } else {
> t = (t + x)& M32;
> c = (x>> 19) + (t< x);
> }
> return (Q[j] = t);
>
> }
>
> void initMWC(void)
> {
> unsigned long i;
> for (i = 0; i< sizeof Q / sizeof Q[0]; i++)
> Q[i] = ((xcng = 69069 * xcng + 123) + (xs = (xs ^ (xs<< 13))& M32,
> xs ^= (xs>> 17), xs ^= (xs<< 5)))& M32;
>
> }
>
> #ifdef UNIT_TEST
>
> #include<stdio.h>
>
> int main()
> {
> unsigned long i;
> unsigned long x;
>
> initMWC();
>
> printf("Does MWC result=3740121002 ?\n");
> for (i = 0; i< 1000000000; i++)
> x = MWC();
> printf("%27u\n", x);
>
> printf("Does KISS result=2224631993 ?\n");
> for (i = 0; i< 1000000000; i++)
> x = (MWC() + (xcng = 69069 * xcng + 123) + (xs = (xs ^ (xs<< 13))& M32,
> xs ^= (xs>> 17), xs ^= (xs<< 5)));
> printf("%27u\n", x);
> return 0;
> }
>
> #endif
>
>
>
--
Ian Collins
next prev parent reply other threads:[~2011-05-01 19:58 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4dae2a4b$0$55577$c30e37c6@exi-reader.telstra.net>
2011-04-28 1:14 ` KISS4691, a potentially top-ranked RNG robin
2011-04-28 11:42 ` e p chandler
2011-04-29 1:50 ` David Bernier
2011-04-29 2:09 ` Ian Collins
2011-04-29 3:01 ` Eric Sosman
2011-04-29 3:09 ` Ian Collins
2011-05-08 7:34 ` Uno
2011-05-11 5:38 ` Marni Zollinger
2011-04-29 6:15 ` nmm1
2011-04-29 3:16 ` David Bernier
2011-04-29 2:34 ` glen herrmannsfeldt
2011-04-29 7:04 ` Uno
2011-04-30 10:48 ` robin
2011-05-05 1:12 ` Uno
2011-04-29 15:13 ` Keith Thompson
2011-04-29 17:41 ` glen herrmannsfeldt
2011-04-29 19:53 ` Keith Thompson
2011-05-05 23:38 ` Michael Press
2011-04-29 22:45 ` Seebs
2011-04-30 4:36 ` Randy Brukardt
2011-04-29 22:43 ` Seebs
2011-04-29 9:43 ` robin
2011-05-01 15:31 ` Thad Smith
2011-05-01 19:58 ` Ian Collins [this message]
2011-05-02 0:01 ` James Kuyper
2011-05-02 0:42 ` Ian Collins
2011-05-02 2:34 ` James Kuyper
2011-05-02 2:50 ` glen herrmannsfeldt
2011-05-02 4:21 ` Thad Smith
2011-05-02 7:31 ` nmm1
2011-05-23 4:18 ` robin
2011-05-23 7:20 ` robin
2011-05-23 6:52 ` robin
2011-05-23 6:52 ` robin
2011-05-23 6:52 ` robin
2011-05-23 6:53 ` robin
2011-05-23 7:16 ` Georg Bauhaus
2011-06-28 7:19 ` robin
2011-06-28 8:44 ` Vinzent Hoefler
2011-06-28 9:19 ` Chris H
2011-06-28 9:14 ` Georg Bauhaus
2011-06-28 11:59 ` robin
2011-06-28 12:16 ` Chris H
2011-06-28 15:44 ` Peter Flass
2011-06-28 12:33 ` James Kuyper
2011-06-28 13:53 ` Georg Bauhaus
2011-06-28 22:39 ` Brian Salter-Duke
2011-06-28 12:32 ` James Kuyper
2011-06-28 13:03 ` Chris H
2011-06-28 14:25 ` James Kuyper
2011-06-28 15:01 ` Chris H
2011-06-29 0:20 ` James Kuyper
2011-06-29 8:38 ` Michael Press
2011-06-28 16:04 ` Joe Pfeiffer
2011-06-28 16:36 ` Chris H
2011-06-28 16:51 ` Joe Pfeiffer
2011-06-29 0:27 ` James Kuyper
2011-06-29 1:00 ` Joe Pfeiffer
2011-06-29 16:48 ` Phil Carmody
2011-06-28 16:52 ` Joe Pfeiffer
2011-06-28 17:06 ` David Bernier
2011-06-28 21:11 ` Gib Bogle
2011-06-29 4:47 ` Mart van de Wege
2011-07-02 6:49 ` Gib Bogle
2011-07-02 15:59 ` Mart van de Wege
2011-07-02 21:57 ` Gib Bogle
2011-06-29 7:36 ` nmm1
2011-06-29 9:58 ` Georg Bauhaus
[not found] <a82cebe3-cdb9-48af-8080-bca935eeb9b1@l14g2000yql.googlegroups.com>
2010-07-25 0:49 ` Gene
2010-07-26 2:50 ` robin
2010-07-27 5:46 ` robin
2010-07-30 10:46 ` Uno
2010-08-03 10:41 ` robin
2010-08-03 17:15 ` James Waldby
2010-08-03 17:35 ` Dann Corbit
2010-08-03 20:34 ` Peter Flass
2010-08-04 4:20 ` Uno
2010-08-04 8:31 ` robin
2010-08-04 7:56 ` robin
2010-08-05 21:07 ` Uno
2010-08-06 10:11 ` robin
2010-08-09 14:52 ` mecej4
[not found] ` <i2fir2$op4$1@speranza.aioe.org>
2010-07-27 10:19 ` robin
2010-07-30 8:33 ` Uno
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox