Re: Compile and Total
- To: mathgroup at smc.vnet.net
- Subject: [mg120262] Re: Compile and Total
- From: Patrick Scheibe <pscheibe at trm.uni-leipzig.de>
- Date: Fri, 15 Jul 2011 05:06:00 -0400 (EDT)
- References: <201107150120.VAA23682@smc.vnet.net>
Hi, > Yet it is not something about my user function as h[x_] := x/Total[x] works: No, it does not work. Look at h[x_] := x/Total[x] hC = Compile[{{x, _Real, 1}}, h[x]] Needs["CompiledFunctionTools`"] CompilePrint[hC] and you see that there is a line MainEvaluate[ Hold[h][ T(R1)0]] which means you compiled function makes a callback to the kernel to evaluate h. To solve the problem either use the CompilationOptions value "InlineExternalDefinitions" (see doc CompilationOptions) or just put your x/Total[x] inside the compiled function. Hope this helps. Cheers Patrick > h[x_] := x/Total[x] > hC = Compile[{{x, _Real, 1}}, h[x]] > CompiledFunction[{x}, h[x], -Compiled Code-] > > hC[data] > {0.0181818, 0.0363636, 0.0545455, 0.0727273, 0.0909091, 0.109091, > 0.127273, 0.145455, 0.163636, 0.181818} > > It's not something about Total[] as I get the same results with Apply[Plus, > x] instead. > > Any comments or insight will be extremely gratefully received. > > Best, > Neil. >
- References:
- Compile and Total
- From: Neil Stewart <neil.stewart@warwick.ac.uk>
- Compile and Total