Ames Laboratory,
Department of Energy,
ISU,
Ames, Iowa
The conventional method for rotating a 2-vector (x, y) by
radians is to multiply it by a matrix of the form
to obtain
. This requires four multiplications and two additions. This operation is critical, for example, in the Fast Fourier Transform (FFT)
algorithm. If the rotation is to be done for many two-vectors, as it
is for the FFT, one regards the
and
values as constants
instead of as input variables. Therefore, it is legitimate to consider
precomputing alternative constants based on
but not consider the effort to do so in the operation count. Buneman [5]
discovered a trigonometric identity that accomplishes a two-vector rotation with three multiplications
and three additions, assuming zero cost for computing
:

The Search program described in this paper does not currently have any way of discovering this type of 'trick'. We do not yet see a 'brute force' approach likely to generate such tricks automatically.