On 10/22/06, Mike Day <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED] 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) (<[EMAIL PROTECTED] -: ([ - |~) % ]) 17
> 1
>    ts'x  <[EMAIL PROTECTED] 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!:[EMAIL PROTECTED]
>> x=: 1e6 [EMAIL PROTECTED] 2e6
>> ts 'Expression'
>>
>> Expression          J6.02x              J6.01            Factor
>> x <[EMAIL PROTECTED] 512   0.0054822 4.19507e6  0.136416 2.09723e7   23.80 
5.00
>> x <[EMAIL PROTECTED] 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




--
--
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]
[EMAIL PROTECTED]
[EMAIL PROTECTED]
[EMAIL PROTECTED]

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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to