I was leading up to the possibility of a closed-form solution but Bo got
there while I was still winding up.

Just to finish the "better question" idea, with timings, we take a look at
how performance stats scale with increasing arguments for the rational
number inputs:

   ts &> '(i. nn) next 1 0x';'nn next@]^:(i.@[) 1 0x' [ nn=. 1e2
0.000214702 64768
0.000160513 90752
   ts &> '(i. nn) next 1 0x';'nn next@]^:(i.@[) 1 0x' [ nn=. 1e3
0.00413188  2.5193e6
0.00356003 2.79206e6
   ts &> '(i. nn) next 1 0x';'nn next@]^:(i.@[) 1 0x' [ nn=. 1e4
0.328623 2.03783e8
0.346591 2.06426e8
   ts &> '(i. nn) next 1 0x';'nn next@]^:(i.@[) 1 0x' [ nn=. 2e4
2.26308 8.06897e8
2.32999 8.12181e8
   NB. Seems to be O(n^2)

Comparing performance of generating the full set of results versus just the
last one,

   ts &> '(i. nn) next 1 0x';'nn next@]^:(i.@[) 1 0x' [ nn=. 2e4
2.07533 8.06897e8
2.02436 8.12181e8
   ts &> 'nn next 1 0x';'nn next@]^:( [) 1 0x' [ nn=. 2e4
0.845289 298752
0.753032 299392

This indicates that much of our (time) performance hit is probably coming
from the memory allocation itself, not the CPU load.


On Thu, Dec 20, 2012 at 11:16 AM, Bo Jacoby <bojac...@yahoo.dk> wrote:

>
>
>    next=:0 3+*&5
>    (next^:(i.9)) 1 0 NB. brute force solution
>      1      0
>      5      3
>     25     18
>    125     93
>    625    468
>   3125   2343
>  15625
>  11718
>  78125  58593
> 390625 292968
>
>    (,.3*4%~1-~])5^i.9 NB. closed form solution
>      1      0
>      5      3
>     25     18
>    125     93
>    625    468
>   3125   2343
>  15625
>  11718
>  78125  58593
> 390625 292968
>
>
>
>
>
>
>
> >________________________________
> > Fra: Roger Hui <rogerhui.can...@gmail.com>
> >Til: Programming forum <programm...@jsoftware.com>
> >Sendt: 16:07 torsdag den 20. december 2012
> >Emne: Re: [Jprogramming] arithmetic sequence
> >
> >In both versions of the code, if you give a single "exponent" n, the code
> >would produce a single answer for S(n).  Internally, it would keep a
> single
> >intermediate result.  If what it's doing is what you suspect (accuse! :-)
> >it of doing, you can verify it by using space=:7!:2
> >      space '10 next 1 0'
> >      space '20 next 1 0'
> >and look at the grow of the space consumption.
> >
> >BTW, since the function is extremely fast growing,
> >
> >   5^.2^1023
> >440.582
> >   441 next 1 0
> >1.76105e308 1.32079e308
> >   442 next 1 0
> >_ _
> >
> >If you are not interested in rational numbers, the function has only a few
> >possible answers.  If you are worried about time/space, one approach may
> be
> >to recompute a vector S of length 442 of all possible results, and then
> >define next=: {&S .
> >
> >
> >
> >On Thu, Dec 20, 2012 at 5:28 AM, alessandro codenotti <cod...@live.it
> >wrote:
> >
> >>
> >> I think I badly explained myself, or maybe i completely misunderstood
> the
> >> code:
> >>
> >> >      next=.5&(0 3 + *)
> >>
> >> the verb next simply applies the "multiply by five and add 3" to is
> right
> >> argument a number of times given by is left argument, right?
> >>
> >> >      (i. 20) next 1 0
> >>
> >> this instruction, first applies 0 times "next" to 1 0, then applies once
> >> "next" to 1 0, then applies twice "next" to 1 0, ... , then applies 20
> >> times "next" to 1 0, right?
> >>
> >> this mean that S(0) has been calculated 20 times, S(1) has been
> calculated
> >> 19 times, S(n) has been calculated 20-n times since every time the
> function
> >> next restarts from
> >> the first term (which is 1 0), right?
> >>
> >> What i mean is that with something like the following pseudo-code S(n)
> is
> >> calculated once avoiding a huge waste of time and memory:
> >>
> >> S(1)=1 0
> >> for i=2 to 20 do
> >>    S(i)=.3+5*S(i-1)
> >> end
> >>
> >> My question then was if the code:
> >>
> >> >      next=.0 3+*&5
> >> >      20 next@]^:(i.@[) 1 0
> >>
> >> has the same problem or not and, in case of a positive answer, how can i
> >> translate my pseudo-code in J avoiding an explicit loop.
> >>
> >> It may be that I completely misunderstood your code and the problem that
> >> is worring me doesn't exist at all but I'm really a beginner in J...
> >>
> >> Alessandro
> >>
> >>
> >>
> >>
> >>
> >> ----------------------------------------------------------------------
> >> 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
>



-- 
Devon McCormick, CFA
^me^ at acm.
org is my
preferred e-mail
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to