I think a more persuasive test to show the presence or absence of the bug is to roll over one million times something like
>./ ? 1e7 # 2 1e7 1 >./ ?. 1e7 # 2 1e7 1 Чт, 17 дек 2015, Joe Bogner написал(а): > Sorry - I meant to add as a test case.... New code on 64-bit bit > > JVERSION > Engine: j701/2011-02-23/15:25 > Library: 7.01.045 > Platform: Win 64 > Installer: unknown > InstallPath: c:/users/joe bogner/downloads/jsrc/build > > ?. 16 # 2 2 2 16 > 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 1 0 0 > 0 > 1 1 1 1 0 1 0 0 4 14 3 1 6 14 10 15 13 5 6 2 14 0 5 14 > > JVERSION > Engine: j803/2014-10-19-11:11:11 > Library: 8.03.13 > Platform: Win 32 > Installer: J803 install > InstallPath: c:/users/joe bogner/downloads/j803_win32 > ?. 16 # 2 2 2 16 > 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 > 0 > 1 1 1 0 0 1 1 1 13 12 13 4 9 15 5 9 6 3 9 1 2 11 1 8 > > JVERSION > Engine: j803/2014-10-19-11:11:11 > Library: 8.04.13 > Qt IDE: 1.4.6/5.4.2 > Platform: Win 64 > Installer: J804 install > InstallPath: c:/users/joe bogner/j64-804 > ?. 16 # 2 2 2 16 > 0 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 > 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 > > > On Thu, Dec 17, 2015 at 10:56 PM, Joe Bogner <[email protected]> wrote: > > looks like the problem likes in > > https://github.com/openj/core/blob/18fd23bbdc2f50770eb3047e978cd5e4e3b47039/vrand.c#L726 > > > > It looks like it checks to see if the first number in the list is 2 > > and if so, it uses the roll2 implementation > > > > RZ(w=vi(w)); m=*AV(w); > > if( 2==m)RZ(z=roll2 (w,&b)); > > > > It also appears to be a 64-bit bug > > > > 32-bit: > > > > ?. 16 # 2 2 2 16 > > 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 > > 1 1 1 1 0 1 1 1 0 0 1 1 1 13 12 13 4 9 15 5 9 6 3 9 1 2 11 1 8 > > > > 64-bit > > ?. 16 # 2 2 2 16 > > 0 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 > > 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 > > > > The simplest 'fix' would be to disable the roll 2 optimization by > > commenting it out, but that may not be ideal since presumably it was > > put in place for a reason to speed up random booleans on large arrays. > > The next fix would be to check to see if all numbers in the ravel are > > 2 and only then use roll2. The last, probably more complicated fix > > would be to support 2 and other numbers in roll2 safely in 64-bit, but > > even that is pretty simple > > > > > > just copy and paste the block of shifts (since there is only 8), to > > add 8 more for 64-bit... need to do this for the random and fixed seed > > part > > > > }else for(j=0;j<q;++j){ > > t=NEXT; > > if(!(2==*v++&&2==*v++&&2==*v++&&2==*v++))R mark; *zv++=mk&t; t>>=1; > > if(!(2==*v++&&2==*v++&&2==*v++&&2==*v++))R mark; *zv++=mk&t; t>>=1; > > if(!(2==*v++&&2==*v++&&2==*v++&&2==*v++))R mark; *zv++=mk&t; t>>=1; > > if(!(2==*v++&&2==*v++&&2==*v++&&2==*v++))R mark; *zv++=mk&t; t>>=1; > > if(!(2==*v++&&2==*v++&&2==*v++&&2==*v++))R mark; *zv++=mk&t; t>>=1; > > if(!(2==*v++&&2==*v++&&2==*v++&&2==*v++))R mark; *zv++=mk&t; t>>=1; > > if(!(2==*v++&&2==*v++&&2==*v++&&2==*v++))R mark; *zv++=mk&t; t>>=1; > > if(!(2==*v++&&2==*v++&&2==*v++&&2==*v++))R mark; *zv++=mk&t; > > > > //start new code > > #if SY_64 > > t>>=1; > > if(!(2==*v++&&2==*v++&&2==*v++&&2==*v++))R mark; *zv++=mk&t; t>>=1; > > if (!(2 == *v++ && 2 == *v++ && 2 == *v++ && 2 == *v++))R mark; > > *zv++ = mk&t; t >>= 1; > > if (!(2 == *v++ && 2 == *v++ && 2 == *v++ && 2 == *v++))R mark; > > *zv++ = mk&t; t >>= 1; > > if (!(2 == *v++ && 2 == *v++ && 2 == *v++ && 2 == *v++))R mark; > > *zv++ = mk&t; t >>= 1; > > if (!(2 == *v++ && 2 == *v++ && 2 == *v++ && 2 == *v++))R mark; > > *zv++ = mk&t; t >>= 1; > > if (!(2 == *v++ && 2 == *v++ && 2 == *v++ && 2 == *v++))R mark; > > *zv++ = mk&t; t >>= 1; > > if (!(2 == *v++ && 2 == *v++ && 2 == *v++ && 2 == *v++))R mark; > > *zv++ = mk&t; t >>= 1; > > if (!(2 == *v++ && 2 == *v++ && 2 == *v++ && 2 == *v++))R mark; *zv++ = > > mk&t; > > #endif > > } > > > > On Thu, Dec 17, 2015 at 10:29 PM, Linda A Alvord > > <[email protected]> wrote: > >> These are the results you should get in a fresh version of JHS or jqt. If > >> you use ?. you will insure repeated exact results in a session. In all > >> cases > >> the length of the list is 64 elements so there should be enough 2's. > >> > >> ?. 16 # 2 2 2 16 > >> 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 > >> 1 0 1 1 1 0 0 1 1 1 13 12 13 4 9 15 5 9 6 3 9 1 2 11 1 8 > >> ?. 16 # 3 2 2 16 > >> 0 2 2 1 2 0 2 1 1 2 0 2 1 1 1 2 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 > >> 1 1 1 0 1 1 1 0 0 1 13 11 13 12 13 4 9 15 5 9 6 3 9 1 2 11 > >> ?. 16 # 16 2 2 2 > >> 2 11 15 4 6 7 4 1 4 2 6 14 1 14 7 12 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 > >> 1 > >> 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 > >> > >> $?. 16 # 2 2 2 16 > >> 64 > >> $?. 16 # 3 2 2 16 > >> 64 > >> $?. 16 # 16 2 2 2 > >> 64 > >> > >> Linda > >> > >> -----Original Message----- > >> From: [email protected] > >> [mailto:[email protected]] On Behalf Of 'Pascal > >> Jasmin' via Programming > >> Sent: Thursday, December 17, 2015 12:41 PM > >> To: [email protected] > >> Subject: Re: [Jprogramming] bug in ? > >> > >> ?. 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 > >> 2 2 2 2 2 2 2 2 2 2 2 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 > >> 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 > >> 0 1 1 1 1 0 0 1 1 1 8 9 6 8 14 7 12 9 1 15 2 15 3 13 3 > >> > >> ?. 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 > >> 2 > >> 2 2 2 2 2 2 2 2 2 2 2 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 > >> 0 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 > >> 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 > >> > >> > >> one less leading 2 in first example. 47 leading 2s, correct result. 48 > >> leading 2s and everything is 2. > >> > >> > >> ----- Original Message ----- > >> From: Raul Miller <[email protected]> > >> To: Programming forum <[email protected]> > >> Sent: Thursday, December 17, 2015 12:28 PM > >> Subject: Re: [Jprogramming] bug in ? > >> > >> Consider > >> ?.2 2 2 32 > >> 0 1 0 18 > >> > >> Thanks, > >> > >> -- > >> Raul > >> > >> > >> On Thu, Dec 17, 2015 at 12:13 PM, 'Pascal Jasmin' via Programming > >> <[email protected]> wrote: > >>> > >>> > >>> > >>> ?. 16 # 2 2 2 16 > >>> > >>> > >>> result is same as > >>> > >>> ?. 16 # 2 2 2 2 > >>> > >>> ignores the request for 0-15 range random numbers. > >>> > >>> > >>> ----- Original Message ----- > >>> From: Raul Miller <[email protected]> > >>> To: Programming forum <[email protected]> > >>> Sent: Thursday, December 17, 2015 12:10 PM > >>> Subject: Re: [Jprogramming] bug in ? > >>> > >>> On Thu, Dec 17, 2015 at 11:49 AM, 'Pascal Jasmin' via Programming > >>> <[email protected]> wrote: > >>>> ?. 16 # 2 2 2 16 > >>>> 0 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 > >> 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 > >>>> > >>>> > >>>> ?. 16 # 3 2 2 16 > >>>> 0 2 1 0 2 1 1 1 2 1 0 2 1 2 1 2 1 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 > >> 1 0 0 0 1 1 1 1 0 1 0 8 4 14 3 1 6 14 10 15 13 5 6 2 14 0 5 > >>>> > >>>> The last 16 numbers in the first example should match the 2nd. > >>> > >>> Why do you say that? > >>> > >>> Thanks, > >>> > >>> -- > >>> Raul > >>> > >>> > >>> > >>> ---------------------------------------------------------------------- > >>> For information about J forums see http://www.jsoftware.com/forums.htm > >> > >> > >> > >>> ---------------------------------------------------------------------- > >>> For information about J forums see http://www.jsoftware.com/forums.htm > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > >> > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm -- regards, ==================================================== GPG key 1024D/4434BAB3 2008-08-24 gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
