Advice on Compile

*To*: mathgroup at smc.vnet.net*Subject*: [mg112441] Advice on Compile*From*: "Niels R. Walet" <niels.walet at manchester.ac.uk>*Date*: Wed, 15 Sep 2010 20:02:35 -0400 (EDT)

I am trying to write the following code (simplified, Mathematica 7.0.2) setZu[subs_] := Block[{Zmint}, Zmint = Evaluate[EFRp[q] /. subs]; Clear[Zmn]; Zmn = Compile[{{k, _Real}}, NIntegrate[Evaluate[Zmint], {q, 0, k}]];] I call setZu[EFRp -> Function[{q}, q^2/(1 + q^2)^2]] and than Zmn[1.] gives an error (because Zmint has not been expanded). Of course I can move the assigment on Zmint within the compile, but it leads to ugly code, and I am not sure how efficient the compile is (does it do the substitution every time, or is it "compiled out"?). In real life the integrals I calculate are extremely expensive, and give me the coefficients for an ODE I try to solve, so extreme efficiency would be appreciated: I want to compile the expression with the substitution done, not the substitution process itself. Any light on this issue would be appreciated. Niels -- Prof. Niels R. Walet Phone: +44(0)1613063693 School of Physics and Astronomy Fax: +44(0)1613064303 The University of Manchester Mobile: +44(0)7905438934 Manchester, M13 9PL, UK room 7.7, Schuster Building email: Niels.Walet at manchester.ac.uk web: http://www.theory.physics.manchester.ac.uk/~mccsnrw