[Date Index]
[Thread Index]
[Author Index]
Re: Compile
*To*: mathgroup at smc.vnet.net
*Subject*: [mg45349] Re: Compile
*From*: Bill Rowe <readnewsciv at earthlink.net>
*Date*: Fri, 2 Jan 2004 04:23:40 -0500 (EST)
*Sender*: owner-wri-mathgroup at wolfram.com
On 1/1/04 at 5:54 AM, dontsendhere@. (Maxim) wrote:
> If you tried to actually do some testing --
I did but did not try such odd code
> Module[{y := If[Print[x];NumericQ[x], x, 1]},
> Plot[x y, {x, 0, 1}, Compiled -> True]
> ]
The documentation specifically states only inline functions get compiled not user defined functions. So when you write code such as the above, you should expect things to be a bit unpredictable.
> you would notice that y is evaluated for each step Plot takes and it prints symbol x.
No, I don't think that is what is happening. I believe y is evaluated once to 1 since x is not numeric at the time y is evaluated. But since you have wrapped x in a Print statement what is compiled is a literal Print[x] followed by x which causes the symbol x to be printed each time the function x is sampled to be plotted.
If y were evaluated at each step, I would expect numeric values to be printed instead of the symbol x and a parabola which is exactly what you get if you choose Compiled->False in the above code.
> And of course, Compile doesn't evaluate its second argument -- do you really think that to execute
> Compile[{}, Print[x]] Print[x] should be evaluated?
I don't know why anyone would write code like this, but if they did why should they expect Print[x] not to be evaluated in this example?
--
To reply via email subtract one hundred and four
Prev by Date:
**Re: Printing "Alias" Definitions**
Next by Date:
**Re: Function interpolation**
Previous by thread:
**Re: Re: Compile**
Next by thread:
**Re: Compile**
| |