Re: Help on compiling a function
- To: mathgroup at smc.vnet.net
- Subject: [mg115709] Re: Help on compiling a function
- From: Ramiro <ramiro.barrantes at gmail.com>
- Date: Wed, 19 Jan 2011 05:24:06 -0500 (EST)
- References: <iguiqe$8sv$1@smc.vnet.net> <ih16da$jkp$1@smc.vnet.net>
Thanks so much, this was the answer exactly. Just a small clarification: I have been going through the compiler documenttaion. If I do On[ Compile::noinfo] I get the following: example1 = Compile[{{n, _Real, 1}, {a, _Real}, {b, _Real}, {t, _Real, 1}}, Block[{tn = Total[n]}, b^a*Exp[LogGamma[tn + a] - (Total[LogGamma[n + 1]] + LogGamma[a]) + Total[n*Log[t]] - (tn + a)*Log[Total[t] + b]]]]; example1[{97.6203, 8.4788, 21.4204, 46.1755}, 1, 1, {39.9342, 7.5820, 5.8656, 10.0553}] // AbsoluteTiming Compile::noinfo: No information is available for compilation of LogGamma[Compile`$3]. The compiler will use an external evaluation and make assumptions about the return type. >> Compile::noinfo: No information is available for compilation of LogGamma[n+1]. The compiler will use an external evaluation and make assumptions about the return type. >> Compile::noinfo: No information is available for compilation of LogGamma[a]. The compiler will use an external evaluation and make assumptions about the return type. >> {0.000087, 1.06265*10^-11} But if I add the corresponding information about LogGamma and Total, the function performs a bit slower: In[109]:= Clear[example1]; example1 = Compile[{{n, _Real, 1}, {a, _Real}, {b, _Real}, {t, _Real, 1}}, Block[{tn = Total[n]}, b^a*Exp[LogGamma[tn + a] - (Total[LogGamma[n + 1]] + LogGamma[a]) + Total[n*Log[t]] - (tn + a)* Log[Total[t] + b]]], {{LogGamma[_], _Real}, {Total[_], _Real}}]; example1[{97.6203, 8.4788, 21.4204, 46.1755}, 1, 1, {39.9342, 7.5820, 5.8656, 10.0553}] // AbsoluteTiming Out[110]= {0.000141, 1.06265*10^-11} Why is this? Thanks to everyone for their help again, Ramiro
- Follow-Ups:
- Re: Help on compiling a function
- From: Oliver Ruebenkoenig <ruebenko@wolfram.com>
- Re: Help on compiling a function