Conceptually, yes -- though there's more that can be done here.

In the context of 5 ? 2980293480239480239480239480239480239482039x
jtdeal defers to jtroll to generate the random values (and we generate
extra and then discard them). There's some efficiency gains to be had,
here.

In the context of jtroll, currently we're deferring to libgmp/mpir's
implementation of meisner twister.

FYI,

-- 
Raul

On Fri, Jun 16, 2023 at 9:16 AM Henry Rich <henryhr...@gmail.com> wrote:
>
> It deals multiple 64-bit values per random XNUM.
>
> Henry Rich
>
>
> On Fri, Jun 16, 2023, 1:57 PM bill lam <bbill....@gmail.com> wrote:
>
> > Just curious, if the underlying algorithm for random assume 32 or 64 bits,
> > how does it extend to xnum?
> >
> > On Fri, Jun 16, 2023, 12:14 AM Raul Miller <rauldmil...@gmail.com> wrote:
> >
> > > I've pushed a fix for j32.
> > >
> > > I should also note that collisions between random numbers seem rare
> > > when the count of the numbers is significantly less than the square
> > > root of the magnitude of the range of the numbers.
> > >
> > >    cols=: {{ x-#~.?x#y }}
> > >    {{y cols 0 0 10 p. y}}"0(10^i.6)
> > > 0 0 0 0 0 0
> > >
> > > Both the j64 and the j32 estimators (the value of h in jtdeal) could
> > > be better. For j64, the estimator is too high for XNUMs in particular.
> > > For j32, the estimator is probably too low when using deal to generate
> > > extremely long sequences of XNUMS.
> > >
> > > --
> > > Raul
> > >
> > > On Thu, Jun 15, 2023 at 11:11 AM Raul Miller <rauldmil...@gmail.com>
> > > wrote:
> > > >
> > > > Oh, right... thanks!
> > > >
> > > > (./clean.sh instead of make clean -- there's no Makefile in make2. I'm
> > > > rusty on this build system.)
> > > >
> > > > Thanks again,
> > > >
> > > > --
> > > > Raul
> > > >
> > > > On Thu, Jun 15, 2023 at 11:08 AM bill lam <bbill....@gmail.com> wrote:
> > > > >
> > > > > There are artifacts of 64 bit objects. I suspect you use your own
> > shell
> > > > > script instead of the make2/clean.sh to clean up.
> > > > >
> > > > >
> > > > > On Thu, 15 Jun 2023 at 10:58 PM Raul Miller <rauldmil...@gmail.com>
> > > wrote:
> > > > >
> > > > > > Or... I would like to think I'm working on it.
> > > > > >
> > > > > > Unfortunately, building and testing a j32 instance on linux 64 bit
> > os
> > > > > > is currently failing for me.
> > > > > >
> > > > > > I *think* that using the (make2) make clean, followed by setting
> > > > > > j64x=j32 and CFLAGS=-m32 (as exported environmental variables in my
> > > > > > shell) should be sufficient to build a 32 bit instance of J.
> > However,
> > > > > > currently when I try this, my build fails to link because of 64 bit
> > > > > > artifacts in the build:
> > > > > >
> > > > > > https://gist.github.com/rdm/b48b4be3a6e57aeb1f071d079aec6745
> > > > > >
> > > > > > Any ideas on how I should fix this?
> > > > > >
> > > > > > Thanks,
> > > > > >
> > > > > > --
> > > > > > Raul
> > > > > >
> > > > > >
> > > > > > On Thu, Jun 15, 2023 at 10:44 AM Raul Miller <
> > rauldmil...@gmail.com>
> > > > > > wrote:
> > > > > > >
> > > > > > > The test works on j32, the patch fails.
> > > > > > >
> > > > > > > Working on it now,
> > > > > > >
> > > > > > > Thanks,
> > > > > > >
> > > > > > > --
> > > > > > > Raul
> > > > > > >
> > > > > > > On Thu, Jun 15, 2023 at 10:30 AM bill lam <bbill....@gmail.com>
> > > wrote:
> > > > > > > >
> > > > > > > > github windows32 failed g600
> > > > > > > > 2023-06-15T14:17:26.0886637Z    63 < >./ 2 ^. 5 ?
> > > > > > > > 2980293480239480239480239480239480239482039x
> > > > > > > > 2023-06-15T14:17:26.0886679Z 0
> > > > > > > >
> > > > > > > > Does the patch or test work on J32?
> > > > > > > >
> > > > > > > >
> > > > > > > > On Thu, Jun 15, 2023 at 10:14 PM Raul Miller <
> > > rauldmil...@gmail.com>
> > > > > > wrote:
> > > > > > > >
> > > > > > > > > I've pushed a fix. The essence is
> > > > > > > > >
> > > https://github.com/jsoftware/jsource/blob/master/jsrc/vrand.c#L625
> > > > > > > > >
> > > > > > > > > It's been a while since I've concerned myself with the
> > details
> > > of
> > > > > > > > > array allocation, so I'd like to verify that AT(z)= XNUM is
> > > valid
> > > > > > when
> > > > > > > > > z is a freshly allocated (and unpopulated) INT array. (The
> > > > > > alternative
> > > > > > > > > would be to free z and allocate a fresh array for z.)
> > > > > > > > >
> > > > > > > > > Note also that J's estimate of the number of values which
> > need
> > > to be
> > > > > > > > > rolled here is a bit high. The value of h as calculated at
> > > > > > > > >
> > > https://github.com/jsoftware/jsource/blob/master/jsrc/vrand.c#L803
> > > > > > is
> > > > > > > > > 20 for the example where I need to deal 5 XNUMs. This is not
> > > > > > > > > incorrect, but it is an opportunity for an efficiency gain.
> > > > > > > > >
> > > > > > > > > Thanks,
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > > Raul
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Thu, Jun 15, 2023 at 9:21 AM Raul Miller <
> > > rauldmil...@gmail.com>
> > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > Good eye, I had overlooked that problem.
> > > > > > > > > >
> > > > > > > > > > That said, it's worth noting that 5 ? 1e99 runs into the
> > same
> > > > > > issue.
> > > > > > > > > > I'm not going to attempt a fix for that today. (But it's
> > > tempting
> > > > > > to
> > > > > > > > > > think about implementing that in a fashion which would
> > > provide a
> > > > > > > > > > distribution which is equivalent to that which would be
> > > provided by
> > > > > > > > > > (5 ?&.x: 1e99), once I have fixed this problem.)
> > > > > > > > > >
> > > > > > > > > > Anyways, I should have a fix up within a few hours.
> > > > > > > > > >
> > > > > > > > > > Thanks,
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > Raul
> > > > > > > > > >
> > > > > > > > > > On Thu, Jun 15, 2023 at 3:19 AM Henry Rich <
> > > henryhr...@gmail.com>
> > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > That isn't sufficient, is it?  The random numbers will be
> > > drawn
> > > > > > from i.
> > > > > > > > > > > IMAX, won't they?  If not, it's OK.
> > > > > > > > > > >
> > > > > > > > > > > hhr
> > > > > > > > > > >
> > > > > > > > > > > On Wed, Jun 14, 2023, 11:28 PM Raul Miller <
> > > > > > rauldmil...@gmail.com>
> > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > But that's not what i0() does:
> > > > > > > > > > > >
> > > > > > > > > > > > i0(1e99) returns IMAX
> > > > > > > > > > > >
> > > > > > > > > > > > Why should i0(x: 1e99) produce a domain error?
> > > > > > > > > > > >
> > > > > > > > > > > > Anyways, I've pushed a fix to jti0 for this issue.
> > > > > > > > > > > >
> > > > > > > > > > > > Please help me understand, if it's not acceptable.
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks,
> > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > Raul
> > > > > > > > > > > >
> > > > > > > > > > > > On Wed, Jun 14, 2023 at 4:46 PM Henry Rich <
> > > > > > henryhr...@gmail.com>
> > > > > > > > > wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > The i0 gives domain error if the argument exceeds
> > IMAX,
> > > > > > which is
> > > > > > > > > what you
> > > > > > > > > > > > > are seeing.   This looks like a bug to me.  I think
> > the
> > > > > > algorithm
> > > > > > > > > for
> > > > > > > > > > > > deal
> > > > > > > > > > > > > would work if you just called roll with the extended
> > > > > > arguments.
> > > > > > > > > Raul,
> > > > > > > > > > > > would
> > > > > > > > > > > > > you like to take that on?
> > > > > > > > > > > > >
> > > > > > > > > > > > > Henry Rich
> > > > > > > > > > > > >
> > > > > > > > > > > > > On Wed, Jun 14, 2023, 6:53 PM Raul Miller <
> > > > > > rauldmil...@gmail.com>
> > > > > > > > > wrote:
> > > > > > > > > > > > >
> > > > > > > > > > > > > > This error is coming from
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > #0  jtjsignal (jt=0x7ffff7fc0200, e=3) at
> > > > > > > > > ../../../../jsrc/d.c:361
> > > > > > > > > > > > > > #1  0x00007ffff34b131a in jtcvt () from
> > > > > > > > > > > > > >
> > > > > > > > >
> > > > > >
> > > /mnt/c/cygwin64/home/15712/jsoftware/jsource/bin/linux/j64avx2/libj.so
> > > > > > > > > > > > > > #2  0x00007ffff350173e in jtvi (jt=0x7ffff7fc0200,
> > > > > > w=0x4b4000) at
> > > > > > > > > > > > > > ../../../../jsrc/u.c:570
> > > > > > > > > > > > > > #3  0x00007ffff3501562 in jti0 (jt=0x7ffff7fc0200,
> > > > > > w=0x4b4000) at
> > > > > > > > > > > > > > ../../../../jsrc/u.c:238
> > > > > > > > > > > > > > #4  0x00007ffff36fa6a1 in jtdeal
> > (jt=0x7ffff7fc0200,
> > > > > > > > > a=0x7ffff3a3a680
> > > > > > > > > > > > > > <Bnum+1088>, w=0x4b4000,
> > > > > > > > > > > > > >     self=0x7ffff3a3b8c0 <primtab+2176>) at
> > > > > > > > > ../../../../jsrc/vrand.c:794
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > The issue seems to be the second i0 here
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >  RE(m=i0(a)); RE(c=n=i0(w));  // c starts as max#+1
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > In u.c, the comment on i0 is:
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > // Extract the integer value from w, return it.
> > Set
> > > error
> > > > > > if
> > > > > > > > > > > > > > non-integral or non-atomic.  Values whose abs >
> > IMAX
> > > are
> > > > > > > > > converted to
> > > > > > > > > > > > > > IMAX/-IMAX
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > I haven't yet figured out what's wrong with jti0 in
> > > this
> > > > > > > > > instance.
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > FYI,
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > --
> > > > > > > > > > > > > > Raul
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > On Wed, Jun 14, 2023 at 11:54 AM 'Veter Kamenev'
> > via
> > > Beta
> > > > > > > > > > > > > > <b...@jsoftware.com> wrote:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Hi!
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > 5 ? 2980293480239480239480239480239480239482039x
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > |domain error, executing dyad ?
> > > > > > > > > > > > > > > |y must be a positive integer
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > I read in NuVoc:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > y       range of random number
> > > > > > > > > > > > > > > 0       floating-point value in interval (0,1)
> > > > > > > > > > > > > > > 1       0 (always)
> > > > > > > > > > > > > > > 2       Boolean
> > > > > > > > > > > > > > >  >1     integer or extended integer from list i.y
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >
> > > https://code.jsoftware.com/wiki/Vocabulary/query#dyadic
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Best wishes,
> > > > > > > > > > > > > > > Veter
> > > > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > >
> > > > > >
> > > ----------------------------------------------------------------------
> > > > > > > > > > > > > > > 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
> > > > > > > > >
> > > > > > > >
> > > ----------------------------------------------------------------------
> > > > > > > > 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to