Re: Using 'Module' inside 'Compile'
- To: mathgroup at smc.vnet.net
- Subject: [mg112174] Re: Using 'Module' inside 'Compile'
- From: Patrick Scheibe <pscheibe at trm.uni-leipzig.de>
- Date: Fri, 3 Sep 2010 06:09:50 -0400 (EDT)
Hi,
I assume when tmp is not used bevor, then it is *declared* and
*initialized* inside the if block like in C
f1() {
double x = 4.0;
if(3>2) {
double tmp = x;
printf("...",tmp);
}
printf("...",tmp);
}
so why don't you try
f1 = Compile[{}, Module[{x, temp = 0.0}, x = 4.;
If[3 > 2, temp = x; Print["temp in 'if' statement: ", temp]];
Print["temp outside 'if' statement: ", temp];];];
?
Cheers
Patrick
On Thu, 2010-09-02 at 02:31 -0400, Scott D. Kasen wrote:
> While I've worked with Mathematica for quite some time, I'm first
> learning the Compile function. Keeping it brief...
>
> Compile the function...
>
> f1 = Compile[{},
> Module[{x, temp},
> x = 4.;
> If[3 > 2, temp = x; Print["temp in 'if' statement: ", temp]];
> Print["temp outside 'if' statement: ", temp];
> ];
> ];
>
> Calling the function...
>
> f1[]
>
> Produces the following output:
>
> temp in 'if' statement: 4.
> temp outside 'if' statement: temp$3107
>
> First, why does the function create a new local variable temp$3107
> outside of the 'If' statement? Second, how can I bring the first value
> for "temp" outside of the if statement?
>
> Thanks in advance,
> Scott Kasen
>
>