OK, I get it.  My benchmarks were done on a machine 
with small RAM.  A right argument of i.1e5 removes
that as a factor, and I do get a factor of > 10 for EMA2.



----- Original Message -----
From: Xu Zuoqian <[EMAIL PROTECTED]>
Date: Sunday, March 9, 2008 18:22
Subject: Re: [Jprogramming] Is there a tacit version EMA?
To: Programming forum <[email protected]>

> Just retry,the result is stable.my j version is j64-602a,os is debian
> linux64,cpu is amd tl-58(dual core,1.8G).
> 
>    ts '0.1 EMA i.1e6'
> 2.918746 314334976
>      ts '0.1 EMA1 i.1e6'
> 3.898926 67112192
>      ts '0.1 EMA2 i.1e6'
> 0.321607 50333696
>    9!:14 ''
> j602/2008-03-03/16:45
> 
> 
> 
> 2008/3/10, Roger Hui <[EMAIL PROTECTED]>:
> > I can not reproduce your timings.  The following is what 
> I got:
> >
> >
> >  EMA=:((2 % [:>: #) $: ])  : (4 :'(((x * [) +  
> (-.x) * ])/\.)&.|. y')
> >
> > EMA1=:((<a:;1)&{)@:((([EMAIL PROTECTED] , (*/@[) + (1- [EMAIL PROTECTED]) * 
> {:@])/\.)&.|.)@:,.>  recur=:[ (] * [:+/\ [ % ]) [: */\ ]
> >  EMA2=:([EMAIL PROTECTED] , [ * [EMAIL PROTECTED]) recur (1, (<:@[EMAIL 
> > PROTECTED]) $ [EMAIL PROTECTED])
> >
> >    ts=: 6!:2 , 7!:[EMAIL PROTECTED]
> >
> >    ts '0.1 EMA i.1e6'
> >  3.74642 1.61362e8
> >    ts '0.1 EMA1 i.1e6'
> >  4.75599 6.29162e7
> >    ts '0.1 EMA2 i.1e6'
> >  2.41342 4.61384e7
> >
> >  EMA2 is faster, but not by a factor of 10.
> >
> >
> >
> >
> >  ----- Original Message -----
> >  From: Xu Zuoqian <[EMAIL PROTECTED]>
> >  Date: Saturday, March 8, 2008 20:34
> >  Subject: Re: [Jprogramming] Is there a tacit version EMA?
> >  To: Programming forum <[email protected]>
> >
> >
> > > Oh,Mike,your solution is so beautiful!
> >  >
> >  > recur=:[ (] * [:+/\ [ % ]) [: */\ ]
> >  > EMA2=:([EMAIL PROTECTED] , [ * [EMAIL PROTECTED]) recur (1, (<:@[EMAIL 
> > PROTECTED]) $ [EMAIL PROTECTED])
> >  >
> >  > (0.1&EMA -: 0.1&EMA2) p:i.10
> >  > 1
> >  >
> >  >     6!:2 '0.1&EMA i.1e6'
> >  > 2.80876
> >  >
> >  >     6!:2 '0.1&EMA1 i.1e6'
> >  > 3.781998
> >  >
> >  >     6!:2 '0.1&EMA2 i.1e6'
> >  > 0.314285
> >  >
> >  > 2008/3/9, Mike Powell <[EMAIL PROTECTED]>:
> >  > > Xu,
> >  > >
> >  > >  Your EMA question is related to algorithms for 
> linear>  > recurrence>  relations. There is a much 
> loved algorithm
> >  > (probably because it's
> >  > >  usually found to be lean and mean) that I first
> >  > encountered at IP
> >  > >  Sharp in a newsletter quiz. We used it all 
> over the place,
> >  > >  particularly wherever a present value or 
> discounted cash
> >  > flow was in
> >  > >  play. Where it came from before that, I know 
> not. It
> >  > goes like this.
> >  > >
> >  > >  If you have a linear recurrence relation of 
> the form:
> >  > >
> >  > >  r[0] is m[0] times a[0]
> >  > >  r[i] is a[i] + m[i] times r[i-
> >  > 
> 1]          (i >0)
> >  > >
> >  > >  then this can be calculated in vector 
> languages in the
> >  > following way:
> >  > >
> >  > >  a recur m;t
> >  > >  t is timesscan m
> >  > >  r is t times plusscan a div t
> >  > >
> >  > >  I'd be most interested to see a J algorithm 
> for this,
> >  > particularly a
> >  > >  tacit one. I note that we have a reflexive 
> piece (t) and
> >  > that there
> >  > >  may be an opportunity for an inverse (* and %).
> >  > >
> >  > >  As far as the EMA is concerned, I suggest Xu's 
> original>  > requirement is
> >  > >  solved with:
> >  > >
> >  > >  (y[0] , k times 1 drop y) recur (length y) 
> replicate 1 - k
> >  > >
> >  > >
> >  > >  Mike Powell
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to