[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Gridding options

"J.D. Smith" <jdsmith@astro.cornell.edu> writes:

> Ben Tupper wrote:
> > (Sorry, JD, it does have loopity-loops.  You can flick a worm into the
> > air... but that doesn't mean it knows how to fly!  I'm still trying to
> > figure out what .....
> > 
> ****************************************
> tt=total(a[(((dy=((di=lindgen(((n=nx<ny)),nx+ny-1)))/n))*(nx gt ny?1:nx)+ $
>               (nx gt ny?1:-1)*((dx=di mod n))*(nx-1))>0<(nx*ny-1)]* $
>            (dy ge dx AND (dy-dx) lt nx>ny),1)
> ****************************************
> > 
> > means.   Maybe I need to drink less/more coffee. )
> It's written in an ancient IDL runic language lost in the dark ages (1993). 
> Simply run it on an array "a" after defining the dimensions "nx" and "ny" and
> all will be clear.

Another disadvantage to vectorizing with very large arrays is that IDL
has to generate the indices for the array dynamically.  This can
consume a lot of memory (sometimes more than the array itself, if it's
a byte or int array!).  The expression, lindgen((nx<ny), nx+ny-1),
[some deleted] is the giveaway that JD had to essentially create a
whole new array even bigger than the original.  Still, it's a pretty
impressive computation.

Todd, did you compare the run time?


Craig B. Markwardt, Ph.D.         EMAIL:    craigmnet@cow.physics.wisc.edu
Astrophysics, IDL, Finance, Derivatives | Remove "net" for better response