# Parallel Algorithm for Multiplying Integer Polynomials and Integers

• Andrzej Chmielowiec
Chapter
Part of the Lecture Notes in Electrical Engineering book series (LNEE, volume 229)

## Abstract

This chapter aims to develop and analyze an effective parallel algorithm for multiplying integer polynomials and integers. Multiplying integer polynomials is of fundamental importance when generating parameters for public key cryptosystems, whereas their effective implementation translates directly into the speed of such algorithms in practical applications. The algorithm has been designed specifically to accelerate the process of generating modular polynomials, but due to its good numerical properties it may surely be used to multiply integers. The basic idea behind this new method was to adapt it to parallel computing. Nowadays, it is a very important property, as it allows us to fully exploit the computing power offered by modern processors. The combination of the Chinese Remainder Theorem and the Fast Fourier Transform made it possible to develop a highly effective multiplication method. Under certain conditions our integer polynomial multiplication method is asymptotically faster than the algorithm based on Fast Fourier Transform when applied to multiply both: polynomials and their coefficients. Undoubtedly, this result is the major theoretical conclusion of this chapter.

## Keywords

CRT Fast multiplication FFT multiplication Integer multiplication Multiplication algorithm Parallel multiplication Polynomial multiplication

## References

1. 1.
Charles D, Lauter K (2005) Computing modular polynomials. J Comput Math 8:195–204Google Scholar
2. 2.
Chmielowiec A (2012) Fast, parallel algorithm for multiplying polynomials with integer coefficients. Lecture notes in engineering and computer science: Proceedings of the world congress on engineering WCE 2012, 4–6 July 2012 UK, London, pp 1136–1140Google Scholar
3. 3.
Cormen TH, Leiserson CE, Rivest RL, Stein C (2003) Introduction to algorithms. MIT Press, New YorkGoogle Scholar
4. 4.
Crandall R, Fagin B (1994) Discrete weighted transforms and large integer arithmetic. Maths Comput 62:305–324Google Scholar
5. 5.
Crandall R, Pomerance C (2001) Prime Numbers— a computational perspective. Springer, New YorkGoogle Scholar
6. 6.
Enge A (2009) Computing modular polynomials in quasi-linear time. Math Comp 78:1809–1824Google Scholar
7. 7.
Garcia L (2005) Can Schönhage multiplication speed up the RSA encryption or decryption?. University of Technology, DarmstadtGoogle Scholar
8. 8.
Gorlatch S (1998) Programming with divide-and-conquer skeletons: a case study of FFT. J Supercomput 12:85–97Google Scholar
9. 9.
Grama A, Gupta A, Karypis G, Kumar V (2003) Introduction to parallel computing. Addison Wesley, LondonGoogle Scholar
10. 10.
Harvey D (2009) A cache-friendly truncated FFT. Theor Comput Sci 410:2649–2658
11. 11.
12. 12.
Müller V (1995) Ein Algorithmus zur Bestimmung der Punktzahlen elliptischer Kurven über endlichen Körpern der Charakteristik grösser drei. Ph.D. Thesis, Universität des SaarlandesGoogle Scholar
13. 13.
Nussbaumer HJ (1980) Fast polynomial transform algorithms for digital convolution. IEEE Trans Acoust Speech Signal Process 28(2):205–215
14. 14.
Schönchage A (1982) Asymptotically fast algorithms for the numerical multiplication and division of polynomials with complex coefficients. Lecture notes in computer science, vol 144. Springer, Berlin, pp 3–15Google Scholar
15. 15.
Schönhage A, Strassen V (1971) Schnelle multiplikation grosser zahlen. Computing 7:281–292
16. 16.
Takahashi D, Kanada Y (2000) High-performance radix-2, 3 and 5 parallel 1-D complex FFT algorithms for distributed-memory parallel computers. J Supercomput 15:207–228
17. 17.
Van der Hoeven J (2004) The truncated Fourier transform and applications. ISSAC 2004 ACM, pp 290–296Google Scholar
18. 18.
Van der Hoeven J (2005) Notes on the truncated Fourier transform. Unpublished, avaliable on http://www.math.u-psud.fr/vdhoeven/