Re: How to avoid repeated recalculation of the same function

*To*: mathgroup at smc.vnet.net*Subject*: [mg132681] Re: How to avoid repeated recalculation of the same function*From*: psycho_dad <s.nesseris at gmail.com>*Date*: Sun, 4 May 2014 02:26:56 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*Delivered-to*: l-mathgroup@wolfram.com*Delivered-to*: mathgroup-outx@smc.vnet.net*Delivered-to*: mathgroup-newsendx@smc.vnet.net*References*: <ljvdcg$bal$1@smc.vnet.net>

Hey! Consider the behavior of the two functions f and f1 (I have added the Pause[2] to give the impression of a long calculation): f[x_]:=(Pause[2];x^2) f1[x_]:= f1[x]=(Pause[2];x^2) (Notice the f1[x_]:= f1[x] "trick" used above...) Now evaluate both of them: f[x] f1[x] both take a long time to evaluate the first time. Now repeat: f[x] f1[x] you will notice that f1[x] was done instantaneously! The reason is that Mathematica has included the value as part of the definition due to the f1[x_]:= f1[x] "trick", so it remembers it after it evaluates it once. There are also other ways to do what you want, eg hardcoding by hand the result for f[x] after you evaluate it once (assuming it it always the same) etc. Cheers