The invention will be more fully understood by reference to the following detailed description of the invention in conjunction with
When multiplying two numbers A and B in a fixed-point process, existing techniques select the number with the smaller magnitude and scale it up as much as possible. For example, if |A|>|B|, the existing technique would scale up the magnitude of B. To do this, the largest integer l is identified, such that
b=2
l
·B+ε
2
where l is a scaling factor, b is the rounded integer after scaling,
and most importantly b and A*b are in the range of └−2N-1,2N-1−1┘ (i.e., there is no underflow or overflow). Then,
whereby the rounding error is
The disadvantage of this known technique is that the scaling range is very limited, especially when one of the multipliers has a large magnitude, which leads to large rounding errors.
In contrast, the presently disclosed technique, or process, provides an optimal setting for scaling factors such that the rounding error is minimized. An analytic formula which minimizes the rounding error is now illustrated. Assume a and b are scaled values of A and B, i.e.,
a=2k·A+ε1, and
b=2l·B+ε2
where k,l are scaling factors (when k>0, it is scaling up; when k<0, it is scaling down), k+l is fixed, a,b are rounded integers after scaling, and
First,
whereby the rounding error is
which is approximately equal to
and a·b is in the fixed range of 2k+lA·B, it follows that when |a| and |b| are closer in value, then
gets smaller, and so does |−aε2−bε1|.
Thus, one would choose k and l, such that after scaling, the scaled values |a| and |b| are in the same range └2n,2n+1), for some integer n, then the rounding error from a·b is minimized.
With the above theoretical analysis, to derive appropriate settings which minimize the rounding error, an initial scaling factor pair (k0,l0) is defined, such that:
1. The input value is scaled up as much as possible (up to the boundary of overflow/underflow); and
2. After scaling, the two values |2k
Next, the scaling factor pair is finely tuned via increasing or decreasing each value by one such that:
1. There is no overflow/underflow;
2. The value is scaled up as much as possible; and
3. The rounding error is minimized.
The rounding error is computed by directly computing (either addition or multiplication) the values with and without scaling. Usually after three or four fine tunings, the appropriate settings which minimize the rounding error will be derived, i.e., when the rounding error could not be further reduced.
After all appropriate settings which minimize the rounding error for each multiplication are derived, the final output will be normalized to cancel out all scaling factors.
The foregoing method for reducing round-off error in fixed-point arithmetic can be implemented by a wide variety of computing hardware and software, including specially programmed general purpose computing systems, custom-designed computing hardware including application specific integrated circuits (ASICs), etc.
These and other embodiments of the invention illustrated above are intended by way of example and should not be viewed as limiting the scope of the disclosure or of the claims. The actual scope of the invention is to be limited solely by the scope and spirit of the following claims.