MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Conditionals -- what is "fastest" way to evaluate

On Dec 18, 2:19 am, "Coleman, Mark" <Mark.Cole... at>
> Greetings,
> I've built a simple function that calculates the distance between a pair
> of points on the Great Circle, e.g.., the distance between two addresses
> given their latitude-longitude coordinates. I need to apply this against
> very large lists of points, resulting in potentially tens or hundreds of
> millions of calculations. The input data that I am processing will list
> a point's location as (0,0) if for some reason the lat-long coordinate
> is not known (nb: this is a poor way to return a lat-long coordinate,
> but I am taking these as given from another processing system). For
> pairs of points where at least one of the arguments is (0,0), I'd like
> to skip the calculation and return an error code or a perhaps a value of
> infinity.
> I'm curious as to what is the fastest way to apply a conditional test in
> Mathematica under these circumstances? Is it a simple If[ ] statement, a "/;"
> construct, Boole, etc? I am happy to test out all of the alternatives,
> but many times some very ingenious solutions are presented on MathGroup,
> so I thought I'd pose the question. (note: I am presuming that is it
> faster to process a conditional test than to evaluate the underlying
> function)

I haven't actually tested this, but I believe that the fastest
solution would be a pure function (i.e. something like f = #^2&
instead of f[x_] = x^2) with an If[] test.  This ensure that the
function is compilable, and automatic compilation is possible.

You may want to read this presentation by Carl Woll:

I know that there is a webpage somewhere on the Wolfram site that
lists all the functions that work with Compile[], but I just can't
find it now!  Could someone please point to the right page?

  • Prev by Date: Re: FindRoot / Jacobian
  • Next by Date: Re: FileNameSetter button return state
  • Previous by thread: Conditionals -- what is "fastest" way to evaluate
  • Next by thread: LinearSolve[m, b] is not equivalent to LinearSolve[m][b]