Method for reducing round-off error in fixed-point arithmetic

Information

  • Patent Application
  • 20080034027
  • Publication Number
    20080034027
  • Date Filed
    August 01, 2006
    17 years ago
  • Date Published
    February 07, 2008
    16 years ago
Abstract
Round-off error in fixed-point arithmetic is minimized by changing the magnitudes of two multipliers simultaneously. The dynamic range of an intermediate output is thus maximized to increase computation precision. A much smaller round-off error, caused by fixed-point arithmetic, thus results.
Description

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The invention will be more fully understood by reference to the following detailed description of the invention in conjunction with FIG. 1, which illustrates a method for reducing round-off error in fixed-point arithmetic, according to the presently disclosed invention.





DETAILED DESCRIPTION OF THE INVENTION

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,








-

1
2




ɛ
2



1
2


,




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,







A
·
B

=


A
·


b
-

ɛ
2



2
l



=



A
·
b


2
l


-


A
·

ɛ
2



2
l








whereby the rounding error is








A
·

ɛ
2



2
l


.




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








-

1
2




ɛ
1


,


ɛ
2




1
2

.






First,







A
·
B

=



a
-

ɛ
1



2
k


·


b
-

ɛ
2



2
l










A
·
B

=



a
·
b


2

k
+
l



+




-
a







ɛ
2


-

b






ɛ
1


+


ɛ
1



ɛ
2




2

k
+
I








whereby the rounding error is










-
a







ɛ
2


-

b






ɛ
1


+


ɛ
1



ɛ
2




2

k
+
I



,




which is approximately equal to










-
a







ɛ
2


-

b






ɛ
1




2

k
+
1



.




Since k+l is fixed, rounding error is minimized by minimizing −aε2−bε1. As










-
a







ɛ
2


-

b






ɛ
1










a


+


b



2





and a·b is in the fixed range of 2k+lA·B, it follows that when |a| and |b| are closer in value, then









a


+


b



2




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 |2k0·A| and |2l0·B| are as close to each other as possible.


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.

Claims
  • 1. A method for reducing round-off error in a fixed-point arithmetic operation involving two operands A, B, the fixed-point arithmetic operation having predefined overflow and underflow boundaries for the scaled operands, operand A having a scaled value a defined by 2k·A+ε1 and operand B having a scaled value b defined by 2l·B+ε2, where (k,l) are scaling factors and
  • 2. The method of claim 1, where the rounding error for each operand is determined by comparing each operand to the scaled value for a given scaling factor value.
  • 3. The method of claim 1, wherein the rounding error for each operand is minimized when the absolute value of each of the scaled values, |a| and |b|, are both in the range └2n,2n+1) for some integer n.