Integer division and remainder are supported by
special code in J6.02.  See help/release/intdivrem.htm
The special code only applies if both arguments are integers.
Don't blame   255<[EMAIL PROTECTED] float   for being slow but instead
credit   255<[EMAIL PROTECTED] integer   for being fast.



----- Original Message -----
From: Oleg Kobchenko <[EMAIL PROTECTED]>
Date: Friday, November 9, 2007 5:00
Subject: [Jbeta] integer-valued multiply vs divide
To: Beta forum <[email protected]>

> Yes, but not in integer-valued multiply vs divide in j602:
> 
>    ts=: 0j8 0 ": 6!:2 , 7!:[EMAIL PROTECTED]
>    
>    ts '255 % a'   [ a=. 1+i.1000
> 0.00002207 8896
>    ts '255 * b'   [ b=. %1+i.1000
> 0.00001145 8896
>    
>    ts '255 <[EMAIL PROTECTED] a'   [ a=. 
> 1+i.1000   NB. Very nice!
> 0.00002123 4928
>    ts '255 <[EMAIL PROTECTED] b'   [ b=. 
> %1+i.1000  NB. Why?!
> 0.00006062 13120
>    
>    ts '<. 255 % a'   [ a=. 1+i.1000
> 0.00007124 12992
>    ts '<. 255 * b'   [ b=. %1+i.1000
> 0.00006006 12992
>    
>    (255 <[EMAIL PROTECTED] a) -: (255 <[EMAIL PROTECTED] b)
> 1
> 
> There is no cure
> 
>    ts '255 (<[EMAIL PROTECTED]) 
> b'       [ b=. %1+i.1000
> 0.00008996 21632
>    ts '255 (<[EMAIL PROTECTED] <[EMAIL PROTECTED]) b'   [ b=. %1+i.1000
> 0.00060343 9472
>    ts '255 (<[EMAIL PROTECTED] <.@:%) b'  [ b=. %1+i.1000
> 0.00008185 13568
> 
> 
> --- Roger Hui <[EMAIL PROTECTED]> wrote:
> 
> > The numerical difference comes from %&(%:2) vs. (%:0.5)&*
> > 
> >    nx=: i:5j2000
> >    >./ | (%&(%:2) - (%:0.5)&*) nx
> > 8.88178e_16
> > 
> > This is a fetish that I have had since my summer student days.
> > I remember Lib chastising me for caring about the difference
> > in time between y%2 and 0.5*y. (I knew the multiply machine
> > instruction was faster than the divide machine instruction 
> from 
> > the S/360 Principles of Operations.)
> >  
> > 
> > 
> > ----- Original Message -----
> > From: Joey K Tuttle <[EMAIL PROTECTED]>
> > Date: Thursday, November 8, 2007 12:35
> > Subject: Re: [Jprogramming] speed of matrix*vector operation.
> > To: Programming forum <[EMAIL PROTECTED]>
> > 
> > > At 11:56  -0800 2007/11/08, Roger Hui wrote:
> > > >  > There isn't a built in function that
> > > >>  j uses to generate normal distributions, and 
> writing an 
> > > equivalent>>  to MatLab randn() would be an interesting 
> exercise.> > >
> > > >  >From http://www.jsoftware.com/jwiki/Essays/Normal_CDF
> > > >erf   =: (1 H. 1.5)@*: * 2p_0.5&* % ^@:*:
> > > >n01cdf=: -: @ >: @ erf @ %&(%:2)
> > > >
> > > >Whence an approximation to randn:
> > > >ny=: n01cdf nx=: i:5j2000
> > > >randn=: nx {~ ny I. [EMAIL PROTECTED]&0
> > > >
> > > 
> > > Lovely! In praise for DOJ, erf and n01cdf are given on the
> > > H. page (although I didn't immediately think to look there :)
> > > 
> > > There are a couple of subtle differences from the ones above,
> > > DOJ doesn't include the, apparently redundant, parens of your
> > > erf and n01cdf differs a bit, but their results are very close
> > > with no greater than 4.996e_16 difference in your example.
> > > 
> > > In any case, thanks for the exposition -- certainly in the
> > > case of timing the original inner product, the generation of
> > > the random normal distributions should be excluded from the
> > > timing (as they were in MatLab).
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to