Translation

powered by

Computing (FOLDOC) dictionary

strength reduction

An optimisation where a function of some systematically

changing variable is calculated more efficiently by using

previous values of the function. In a procedural language

this would apply to an expression involving a loop variable

and in a declarative language it would apply to the argument

of a recursive function. E.g.

f x = ... (2**x) ... (f (x+1)) ...

==@#

f x = f' x (2**x)

where

f ' x z = ... z ... (f' (x+1) 2*z) ...

Here the expensive operation (2**x) has been replaced by the

cheaper 2*z in the recursive function f'. This maintains the

invariant that z = 2**x for any call to f'.