MathGroup Archive 2005

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

Search the Archive

compile / optimize

  • To: mathgroup at smc.vnet.net
  • Subject: [mg53745] compile / optimize
  • From: Frank Brand <frank.brand at t-online.de>
  • Date: Wed, 26 Jan 2005 04:36:22 -0500 (EST)
  • References: <comgvp$9hg$1@smc.vnet.net> <copavk$ps8$1@smc.vnet.net> <csl1pm$6ve$1@smc.vnet.net> <csnstt$4cr$1@smc.vnet.net> <ct4hka$b1g$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Thanks Paul,

but the special point I´m interesting in is if there is a possibility to 
generally optimize and perhaps compile the following function (maximal 
iteration number 12 substituted by n)

f[n_]=Module[{x = 0}, Do[x += Sin[t^2]/(1 + x), {n}]; x]]

?

Greetings
Frank


Paul Abbott wrote:
> In article <csnstt$4cr$1 at smc.vnet.net>,
>  "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de> wrote:
> 
> 
>>ff = Experimental`OptimizeExpression[
>>Module[{x = 0}, Do[x += Sin[t^2]/(1 + x), {12}]; x]]
>>
>>
>>myfun=Compile[{{t, _Real}}, Evaluate[ff]]
> 
> 
> However, using OptimizeExpression with Compile does not give any speed 
> up for the given problem. Compare the following timings:
> 
>   g = Nest[Function[t, (t + x/t)/2], x, 15];
> 
>   f1 = Compile[{{x, _Real}}, Evaluate[g]];
> 
>   First[Timing[vals1 = f1 /@ Range[0.1, 20., 0.001]; ]]
>   0.11 Second
> 
>   f2 = Compile[{{x, _Real}},
>     Evaluate[Experimental`OptimizeExpression[Evaluate[g]]]]; 
> 
>   First[Timing[vals2 = f2 /@ Range[0.1, 20., 0.001]; ]]   
>   0.1 Second
>   
>   vals1 == vals2
>   True
> 
> Cheers,
> Paul
> 
> 
>>"Frank Brand" <frank.brand at t-online.de> schrieb im Newsbeitrag 
>>news:csl1pm$6ve$1 at smc.vnet.net...
>>
>>>Dear mathgroup members,
>>>
>>>can anybody give me an advice how to generally
>>>
>>>1.optimize (using the optimization package "optimize.m") and after that
>>>2. compile pieces of code like
>>>
>>>Module[{t}, t = x; Do[t = (t + x/t)/2, {n}]; t]
> 
> 
> Note that this code is much clearer as
> 
>   Nest[Function[t, (t + x/t)/2], x, n]
> 
> And, of course, NewtonIteration is built-in (FindRoot).
> 
> 
>>>Applying the two-step approach to the code above with a given n (=15)
>>>there is a speed up ratio of 8500 compared with the original exprssion.
>>>
>>>Is it possible to apply this procedure to general expressions?
>>>
>>>Thanks in advance
>>>Frank
> 
> 


  • Prev by Date: Re: FromDigits[{135,21}] -> 1371 (??!!)
  • Next by Date: Re: Form of a linear equation
  • Previous by thread: Re: compile / optimize
  • Next by thread: Re: compile / optimize