Yes, I knew about the enhancement (though did not
pay attention to integer argument and power of 2).
It is very impressive indeed.

I just wanted to put it in context: indeed division
is multiplication, thus multiplication may in the
same way benefit from rounding. In particular, should
definitely do so in space. But then any <[EMAIL PROTECTED] should
benefit in space.

One of the applications is operations in color space.
Related to it also is the problem that color is represented
as bytes in an integer (word), so what is the best way
to do optimal component-wise calculation?
 - 256 256 256 #. 0>.255<.<. ...calc... 256 256 256 #: cInt
 - (0>.255<.[:<. ...calc...)&.(a.i.) cChar


--- Roger Hui <[EMAIL PROTECTED]> wrote:

> 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
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to