Prime Numbers

Prime Numbers Prime Numbers

thales.doa.fmph.uniba.sk
from thales.doa.fmph.uniba.sk More from this publisher
10.12.2012 Views

9.8 Research problems 539 9.82. A certain prime suggested in [Craig-Wood 1998], namely p =2 64 − 2 32 +1, has advantageous properties in regard to CRT-based convolution. Investigate some of these advantages, for example by stating the possible signal lengths for number-theoretical transforms modulo p, exhibiting a small-magnitude element of order 64 (such elements might figure well into certain FFT structures), and so on. 9.83. Here is a surprising result: Length-8 cyclic convolution modulo a Mersenne prime can be done via only eleven multiplies. It is surprising because the Winograd bound would be 2 · 8 − 4 = 12 multiplies, as in Exercise 9.39. Of course, the resolution of this paradox is that the Mersenne mod changes the problem slightly. To reveal the phenomenon, first establish the existence of an 8-th root of unity in F p 2,withp being a Mersenne prime and the root being symbolically simple enough that DGTs can be performed without explicit integer multiplications. Then consider the length-8 DGT, used to cyclically convolve two integer signals x, y. Next, argue that the transforms X, Y have sufficient symmetry that the dyadic product X ∗Y requires two real multiplies and three complex multiplies. This is the requisite count of 11 muls. An open question is: Are there similar “violations” of the Winograd bound for lengths greater than eight? 9.84. Study the interesting observations of [Yagle 1995], who notes that matrix multiplication involving n×n matrices can be effected via a convolution of length n 3 . This is not especially surprising, since we cannot do an arbitrary length-n convolution faster than O(n ln n) operations. However, Yagle saw that the indicated convolution is sparse, and this leads to interesting developments, touching, even, on number-theoretical transforms.

Appendix BOOK PSEUDOCODE All algorithms in this book are written in a particular pseudocode form describable, perhaps, as a “fusion of English and C languages.” The motivations for our particular pseudocode design have been summarized in the Preface, where we have indicated our hope that this “mix” will enable all readers to understand, and programmers to code, the algorithms. Also in the Preface we indicated a network source for Mathematica implementations of the book algorithms. That having been said, the purpose of this Appendix is to provide not a rigorous compendium of instruction definitions, for that would require something like an entire treatise on syntactical rules as would be expected to appear in an off-the-shelf C reference. Instead, we give below some explicit examples of how certain pseudocode statements are to be interpreted. English, and comments For the more complicated mathematical manipulations within pseudocode, we elect for English description. Our basic technical motivation for allowing “English” pseudocode at certain junctures is evident in the following example. A statement in the C language if((n== floor(n)) && (j == floor(sqrt(j))*floor(sqrt(j)))) ..., which really means “if n is an integer and j is a square,” we might have cast in this book as if(n, √ j ∈ Z) ... That is, we have endeavored to put “chalkboard mathematics” within conditionals. We have also adopted a particular indentation paradigm. If we had allowed (which we have not) such English as: For all pseudoprimes in S, apply equation (X); Apply equation (Y); then, to the aspiring programmer, it might be ambiguous whether equation (Y) were to be applied for all pseudoprimes, or just once, after the loop on equation (X). So the way we wish such English to appear, assuming the case that equation (Y) is indeed applied only once after looping, is like so: For all pseudoprimes in S, apply equation (X); Apply equation (Y);

Appendix<br />

BOOK PSEUDOCODE<br />

All algorithms in this book are written in a particular pseudocode form<br />

describable, perhaps, as a “fusion of English and C languages.” The<br />

motivations for our particular pseudocode design have been summarized in<br />

the Preface, where we have indicated our hope that this “mix” will enable all<br />

readers to understand, and programmers to code, the algorithms. Also in the<br />

Preface we indicated a network source for Mathematica implementations of<br />

the book algorithms.<br />

That having been said, the purpose of this Appendix is to provide not<br />

a rigorous compendium of instruction definitions, for that would require<br />

something like an entire treatise on syntactical rules as would be expected<br />

to appear in an off-the-shelf C reference. Instead, we give below some explicit<br />

examples of how certain pseudocode statements are to be interpreted.<br />

English, and comments<br />

For the more complicated mathematical manipulations within pseudocode,<br />

we elect for English description. Our basic technical motivation for allowing<br />

“English” pseudocode at certain junctures is evident in the following example.<br />

A statement in the C language<br />

if((n== floor(n)) && (j == floor(sqrt(j))*floor(sqrt(j)))) ...,<br />

which really means “if n is an integer and j is a square,” we might have cast<br />

in this book as<br />

if(n, √ j ∈ Z) ...<br />

That is, we have endeavored to put “chalkboard mathematics” within<br />

conditionals. We have also adopted a particular indentation paradigm. If we<br />

had allowed (which we have not) such English as:<br />

For all pseudoprimes in S, apply equation (X); Apply equation (Y);<br />

then, to the aspiring programmer, it might be ambiguous whether equation<br />

(Y) were to be applied for all pseudoprimes, or just once, after the loop on<br />

equation (X). So the way we wish such English to appear, assuming the case<br />

that equation (Y) is indeed applied only once after looping, is like so:<br />

For all pseudoprimes in S, apply equation (X);<br />

Apply equation (Y);

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

Saved successfully!

Ooh no, something went wrong!