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

Reply via email to