10.12.2012 Views

Prime Numbers

Prime Numbers

Prime Numbers

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

9.5 Large-integer multiplication 501<br />

is a way to find immediately an element of suitable order, thanks to the<br />

following result of [Creutzburg and Tasche 1989]:<br />

Theorem 9.5.21 (Creutzburg and Tasche). Let p =2 q − 1 be a Mersenne<br />

prime with q odd. Then<br />

is an element of order 2 q+1 in F ∗ p 2.<br />

g =2 2q−2<br />

+ i(−3) 2q−2<br />

These observations lead to the following integer convolution algorithm, in<br />

which we indicate the enhancements that can be invoked to reduce the<br />

complex arithmetic. In particular, we exploit the fact that integer signals<br />

are real, so the imaginary components of their elements vanish in the field,<br />

and thus the transform lengths are halved:<br />

Algorithm 9.5.22 (Convolution via DGT (Crandall)). Given two signals<br />

x, y each of length N =2 k ≥ 2 and whose elements are integers in the interval<br />

[0,M], this algorithm returns the integer convolution x × y. The method used is<br />

convolution via “discrete Galois transform” (DGT).<br />

1. [Initialize]<br />

Choose a Mersenne prime p =2q − 1 such that p>NM2 and q>k;<br />

Use Theorem 9.5.21 to find an element g of order 2q+1 ;<br />

h = g2q+2−k; // h is now an element of order N/2.<br />

2. [Fold signals to halve their lengths]<br />

x = <br />

x2j + ix2j+1 , j =0,...,N/2− 1;<br />

y = <br />

y2j + iy2j+1 , j =0,...,N/2− 1;<br />

3. [Length-N/2 transforms]<br />

X = DFT(x); // Via, say, split-radix FFT (mod p), rooth.<br />

Y = DFT(y);<br />

4. [Special dyadic product]<br />

for(0 ≤ k

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!