[Jprogramming] Interger division, the faster one

Roy A. Crabtree roy.crabtree at gmail.com
Sun Oct 22 20:43:13 HKT 2006


On 10/22/06, Mike Day <mike_liz.day at tiscali.co.uk> wrote:
>
> Getting OT...
>
> Mea culpa (bis)!
>
> NB.
>    datatype 1r2
> rational


Certes.

int op int == rat for lower(op)==(max,min,plus,minus,mult,div);
could be for upper(op)==(exp,log,etc.)

    by carrying the op the same way rat does for mult/div ...
    you would need a more complex polyad structure than just (a/b):

     ((a/b)^(c/d)) == (a,b,c,d) ... or ((a,b), (c,d))


rat op rat == rat for all op in that case.

(Sounds like a Congressional disgustion on Paging...)

Mike
>
> Roy A. Crabtree wrote:
> > On 10/22/06, Mike Day <mike_liz.day at tiscali.co.uk> wrote:
> >>
> >> (T)ouch(e) !
> >>
> >> Me culpa. I hadn't realised - or checked - that
> >
> >
> > "Mea" (tua) culpa.  Certes?
> >
> >   integer quotient % integer divisor
> >> is always floating.
> >
> >
> > Sounds like an Enron argument.  Two rationals make a float.
> >
> > But why?
> >
> >
> > Qua non?
> >
> > For example, Dyalog APL retains an integer type for
> >> similar arguments:
> >>       #DR 17    @ short integer
> >> 83
> >>       #DR 548590 556138 1375147 @ long int
> >> 323
> >>       #DR 548590 556138 1375147 % 17
> >> 323
> >>
> >> mike
> >>
> >> Oleg Kobchenko wrote:
> >> > Well, that's not exactly an improvement
> >> >
> >> >    ts'x <.@% 17'
> >> > 0.19952 2.09723e7
> >> >    ts'x (([ - |~) % ]) 17'
> >> > 0.0545567 1.25841e7
> >> >
> >> >    ts'x % 17'
> >> > 0.0182892 8.38925e6
> >> >    ts'_4 (33 b.) x'
> >> > 0.00982667 4.1952e6
> >> >
> >> >    datatype x (([ - |~) % ]) 17
> >> > floating
> >> >
> >> > Maybe a method that represents interger
> >> > division in terms of binary shifts.
> >
> >
> > If J does not do it, you can; but would it be more efficient?
> >
> > Similar optimizations are inherently possible for direct rational
> > arithmetic,
> > and I suspect that if J does not use them, then usually to nearly always
> > it will be much less efficient to attempt to use them;
> >
> > these folks tend to hit it on the nose ...:
> >
> >    (ArB) op (CrD) == (op / reorder( A,B,C,D))
> >
> > (postpone  the operations and utilize binary equality testing or
> > factoring
> > to unify
> > and reduce later operations).
> >
> > Which blows up in time and space really fast.
> >
> >>
> >> >
> >> > Mike Day mike_liz.day at tiscali.co.uk wrote Sat Oct 21 16:18:53 HKT
> >> 2006
> >> >
> >> > FWIW, pending J6.02, this offers some improvement in
> >> > time and space:
> >> >    NB. in J 6.0.1
> >> >    NB. reduce x to an integer multiple of y before divide
> >> >    NB. does it work for -ve & +ve x
> >> >    (x-300000) (<.@% -: ([ - |~) % ]) 17
> >> > 1
> >> >    ts'x  <.@% 17'
> >> > 0.210536 2.09723e7
> >> >    ts'x (([ - |~) % ]) 17'
> >> > 0.0587469 1.25841e7
> >> >
> >> > I expect there's a better way still, and still in 6.01 !
> >
> >
> > Restate the  operations as tuple form to keep the arithmetic rational
> > at all
> > times;
> > this avoids division internally entirely, until/unless you ant to float:
> >
> >      ((a idiv b) idiv (c idiv d)) == (a imult d) idiv (b imult c)
> >
> > representable as:
> >
> >     ((a,b) / (c,d)) == ((a*d),(b*c))
> >
> > which is what I thought rational arithmetic was all about anyway;
> >
> >      so I am confused.
> >
> > SImilarly for all  other functors that have similar identities.
> >
> >>
> >> > Mike
> >> >
> >> > Roger Hui wrote:
> >> >
> >> >> Preliminary benchmarks:
> >> >>
> >> >> ts=: 6!:2 , 7!:2@]
> >> >> x=: 1e6 ?@$ 2e6
> >> >> ts 'Expression'
> >> >>
> >> >> Expression          J6.02x              J6.01            Factor
> >> >> x <.@% 512   0.0054822 4.19507e6  0.136416 2.09723e7   23.80 5.00
> >> >> x <.@% 17    0.0213073 4.19507e6  0.154837 2.09723e7    7.27 5.00
> >> >>
> >> >
> >> >
> >> > __________________________________________________
> >> > 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
> >> >
> >> >
> >> >
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> >>
> >
> >
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>



-- 
--
Roy A. Crabtree
UNC '76 gaa.lifer#11086

Room 209/207 Studio Plus
123 East McCullough Drive
Charlotte,7/209NC 28262-3306
336-340-1304 (office/home/cell/vmail)
704-510-0108x7489/7404 (voicemail residence)
[When you hear/read/see/feel what a yehudi plays/writes/sculpts/holds]
[(n)either violinist {Menuhin} (n)or writer {"The Yehudi Principle"} (n)or
molder (n)or older]
[you must strive/think/look/sense all of it, or you will miss the meanings
of it all]
roy.crabtree at alumni.unc.edu
roy.crabtree at gmail.com
crabtreeroya at yahoo.com

http://www.authorsden.com/royacrabtree
http://skyscraper.fortunecity.com/activex/720/resume/full.doc
--
(c) RAC/IP, ARE,PRO,PAST
(Copyright) Roy Andrew Crabtree/In Perpetuity
    All Rights/Reserved Explicitly
    Public Reuse Only
    Profits Always Safe Traded


More information about the Programming mailing list