I work a lot on Mathematica and sometimes I need to optimize my computations by using compiled functions. Now I'm making numerical integrations and I'm trying to compile the functions involved to make everything faster. I'm having basically the fallowing issue which explain by it self:
gCC = Compile[{{x, _Real}}, x^2];
fCC = Compile[{{R, _Real}},
NIntegrate[gCC[x + y]*Boole[x^2 + y^2 < R^2], {x, -R, R}, {y, -R, R}]
];
Then when I use the function fCC I get the fallowing error:
fCC[2.1]
CompiledFunction::cfsa: Argument x+y at position 1 should be a machine-size real number. >>
30.549
How can I solve this? Regards.
NIntegrate[]is not compilable. – J. M.'s missing motivation Mar 30 '16 at 10:29Compile. It might be useful in this situation. Also theCompileoptions for inlining might apply. – Daniel Lichtblau Mar 30 '16 at 11:28NIntegrate[ gCC[x + y]*Boole[x^2 + y^2 < 2.1^2], {x, -2.1, 2.1}, {y, -2.1, 2.1}]it gives the same error, so the issue is not with the definition offCC– Jason B. Mar 30 '16 at 11:47gCC = Compile[{{x, _Real}}, x^2]; gCC2[x_?NumericQ] := gCC[x]; fCC = Compile[{{R, _Real}}, NIntegrate[ gCC2[x + y]*Boole[x^2 + y^2 < R^2], {x, -R, R}, {y, -R, R}]]; fCC[2.1]– Jason B. Mar 30 '16 at 11:49