MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

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
> 
> 



  • Prev by Date: Re: 2 dimensional engineering problem
  • Next by Date: Re: coordinates in LogLogPlots
  • Previous by thread: Using 'Module' inside 'Compile'
  • Next by thread: Another question on ParallelDo