Tobin's q

From formulasearchengine
Revision as of 23:26, 25 January 2014 by en>Bender235
Jump to navigation Jump to search

A residue number system (RNS) represents a large integer using a set of smaller integers, so that computation may be performed more efficiently. It relies on the Chinese remainder theorem of modular arithmetic for its operation, a mathematical idea from Sun Tsu Suan-Ching (Master Sun’s Arithmetic Manual) in the 4th century AD.

Defining a residue number system

A residue number system is defined by a set of N integer constants,

{m1, m2, m3, ... , mN },

referred to as the moduli. Let M be the least common multiple of all the mi.

Any arbitrary integer X smaller than M can be represented in the defined residue number system as a set of N smaller integers

{x1, x2, x3, ... , xN}

with

xi = X modulo mi

representing the residue class of X to that modulus.

Note that for maximum representational efficiency it is imperative that all the moduli are coprime; that is, no modulus may have a common factor with any other. M is then the product of all the mi.

For example RNS(4|2) has non-coprime moduli, resulting in the same representation for different values.[1]

 (3)decimal = (3|1)RNS(4|2)
 (7)decimal = (3|1)RNS(4|2)

Operations on RNS numbers

Once represented in RNS, many arithmetic operations can be efficiently performed on the encoded integer. For the following operations, consider two integers, A and B, represented by ai and bi in an RNS system defined by mi (for i from 0 ≤ iN).

Addition and subtraction

Addition (or subtraction) can be accomplished by simply adding (or subtracting) the small integer values, modulo their specific moduli. That is,

C=A±BmodM

can be calculated in RNS as

ci=ai±bimodmi

One has to check for overflow in these operations.

Multiplication

Multiplication can be accomplished in a manner similar to addition and subtraction. To calculate

C=ABmodM,

we can calculate:

ci=aibimodmi

Again overflows are possible.

Division

Division in residue number systems is problematic. A paper describing one possible algorithm is available at [1]. On the other hand, if B is coprime with M (that is bi0) then

C=AB1modM

can be easily calculated by

ci=aibi1modmi

where B1 is multiplicative inverse of B modulo M, and bi1 is multiplicative inverse of bi modulo mi.

Practical applications

RNS have applications in the field of digital computer arithmetic. By decomposing in this a large integer into a set of smaller integers, a large calculation can be performed as a series of smaller calculations that can be performed independently and in parallel.

Integer factorization

The RNS can improve efficiency of trial division. Let X=YZ a semiprime. Let m1=2,m2=3,m3=5, represent first N primes. Assume that Y>mN, Z>mN. Then xi=yizi, where xi0. The method of trial division is the method of exhaustion, and the RNS automatically eliminates all Y and Z such that yi=0 or zi=0, that is we only need to check

i=1N(mi1)=Mi=1N(11mi)

numbers below M. For example, N = 3, the RNS can automatically eliminate all numbers but

1,7,11,13,17,19,23,29 mod 30

or 73% of numbers. For N = 25 when mi are all prime numbers below 100, the RNS eliminates about 88% of numbers. One can see from the above formula the diminishing returns from the larger sets of moduli.

Associated mixed radix system

A number given by {x1,x2,x3,,xn} in the RNS can be naturally represented in the associated mixed radix system (AMRS)

X=i=1NxiMi1=x1+m1(x2+m2(+mN1xN)),

where

M0=1,Mi=j=1imj for i>0 and 0xi<mi.

Note that after conversion from the RNS to AMRS, the comparison of numbers becomes straightforward.

See also

References

  1. Parhami, Computer Arithmetic, Algorithms and Hardware Design