1. A method for generating a first plurality of output data values by transforming a plurality of input data values using a computer, the first plurality of output data values approximating a second plurality of output data values, the second plurality of output data values generated by applying a linear transform to the plurality of input data values, the method comprising at least one step, the step being one of the following: rearranging at least one data value in a plurality of current input data values; negating at least one data value in the plurality of current input data values; modifying at least one data value in the plurality of current input data values, each modified data value generated by applying a linear combination of unmodified values in the plurality of input data values to the at least one data value, the linear combination comprised of an integer generated in a reproducible manner, the integer being from one of a group consisting of a rounded integer and a converted integer; and a step which is equivalent to a successive combination of one or more steps of the preceding three types.