
The Schönhage–Strassen algorithm is an asymptotically fast
multiplication algorithm
A multiplication algorithm is an algorithm (or method) to multiplication, multiply two numbers. Depending on the size of the numbers, different algorithms are more efficient than others. Numerous algorithms are known and there has been much resea ...
for large
integer
An integer is the number zero (0), a positive natural number (1, 2, 3, ...), or the negation of a positive natural number (−1, −2, −3, ...). The negations or additive inverses of the positive natural numbers are referred to as negative in ...
s, published by
Arnold Schönhage
Arnold Schönhage (born 1 December 1934 in Lockhausen, now Bad Salzuflen) is a German mathematician and computer scientist.
Schönhage was professor at the Rheinische Friedrich-Wilhelms-Universität, Bonn, and also in Tübingen and Konstanz.
...
and
Volker Strassen in 1971.
It works by recursively applying
fast Fourier transform
A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT). A Fourier transform converts a signal from its original domain (often time or space) to a representation in ...
(FFT) over
the integers modulo . The run-time
bit complexity
The bit is the most basic unit of information in computing and digital communication. The name is a portmanteau of binary digit. The bit represents a logical state with one of two possible values. These values are most commonly represented as ...
to multiply two -digit numbers using the algorithm is
in
big notation.
The Schönhage–Strassen algorithm was the
asymptotically fastest multiplication method known from 1971 until 2007. It is asymptotically faster than older methods such as
Karatsuba and
Toom–Cook multiplication
Toom–Cook, sometimes known as Toom-3, named after Andrei Toom, who introduced the new algorithm with its low complexity, and Stephen Cook, who cleaned the description of it, is a multiplication algorithm for large integers.
Given two large in ...
, and starts to outperform them in practice for numbers beyond about 10,000 to 100,000 decimal digits. In 2007, Martin Fürer published
an algorithm with faster asymptotic complexity. In 2019, David Harvey and
Joris van der Hoeven demonstrated that multi-digit multiplication has theoretical
complexity; however, their algorithm has constant factors which make it impossibly slow for any conceivable practical problem (see
galactic algorithm).
Applications of the Schönhage–Strassen algorithm include large computations done for their own sake such as the
Great Internet Mersenne Prime Search
The Great Internet Mersenne Prime Search (GIMPS) is a collaborative project of volunteers who use freely available software to search for Mersenne prime numbers.
GIMPS was founded in 1996 by George Woltman, who also wrote the Prime95 client and ...
and
approximations of , as well as practical applications such as
Lenstra elliptic curve factorization via
Kronecker substitution, which reduces polynomial multiplication to integer multiplication.
Description
This section has a simplified version of the algorithm, showing how to compute the product
of two natural numbers
, modulo a number of the form
, where
is some fixed number. The integers
are to be divided into
blocks of
bits, so in practical implementations, it is important to strike the right balance between the parameters
. In any case, this algorithm will provide a way to multiply two positive integers, provided
is chosen so that
.
Let
be the number of bits in the signals
and
, where
is a power of two. Divide the signals
and
into
blocks of
bits each, storing the resulting blocks as arrays
(whose entries we shall consider for simplicity as arbitrary precision integers).
We now select a modulus for the Fourier transform, as follows. Let
be such that
. Also put
, and regard the elements of the arrays
as (arbitrary precision) integers modulo
. Observe that since
, the modulus is large enough to accommodate any carries that can result from multiplying
and
. Thus, the product
(modulo
) can be calculated by evaluating the convolution of
. Also, with
, we have
, and so
is a primitive
th root of unity modulo
.
We now take the discrete Fourier transform of the arrays
in the ring
, using the root of unity
for the Fourier basis, giving the transformed arrays
. Because
is a power of two, this can be achieved in logarithmic time using a
fast Fourier transform
A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT). A Fourier transform converts a signal from its original domain (often time or space) to a representation in ...
.
Let
(pointwise product), and compute the inverse transform
of the array
, again using the root of unity
. The array
is now the convolution of the arrays
. Finally, the product
is given by evaluating
This basic algorithm can be improved in several ways. Firstly, it is not necessary to store the digits of
to arbitrary precision, but rather only up to
bits, which gives a more efficient machine representation of the arrays
. Secondly, it is clear that the multiplications in the forward transforms are simple bit shifts. With some care, it is also possible to compute the inverse transform using only shifts. Taking care, it is thus possible to eliminate any true multiplications from the algorithm except for where the pointwise product
is evaluated. It is therefore advantageous to select the parameters
so that this pointwise product can be performed efficiently, either because it is a single machine word or using some optimized algorithm for multiplying integers of a (ideally small) number of words. Selecting the parameters
is thus an important area for further optimization of the method.
Details
Every number in base B, can be written as a polynomial:
:
Furthermore, multiplication of two numbers could be thought of as a product of two polynomials:
:
Because, for
:
,
we have a convolution.
By using FFT (
fast Fourier transform
A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT). A Fourier transform converts a signal from its original domain (often time or space) to a representation in ...
), used in the original version rather than NTT (
Number-theoretic transform
In mathematics, the discrete Fourier transform over a ring generalizes the discrete Fourier transform (DFT), of a function whose values are commonly complex numbers, over an arbitrary ring.
Definition
Let be any ring, let n\geq 1 be an integer, ...
), with convolution rule; we get
:
That is;
, where
is the corresponding coefficient in Fourier space. This can also be written as:
.
We have the same coefficients due to linearity under the Fourier transform, and because these polynomials
only consist of one unique term per coefficient:
:
and
:
Convolution rule:
We have reduced our convolution problem
to product problem, through FFT.
By finding the FFT of the
polynomial interpolation
In numerical analysis, polynomial interpolation is the interpolation of a given data set by the polynomial of lowest possible degree that passes through the points in the dataset.
Given a set of data points (x_0,y_0), \ldots, (x_n,y_n), with no ...
of each
, one can determine the desired coefficients.
This algorithm uses the
divide-and-conquer method to divide the problem into subproblems.
Convolution under mod ''N''
:
, where
.
By letting:
:
and
where
is the n
th root, one sees that:
:
This mean, one can use weight
, and then multiply with
after.
Instead of using weight, as
, in first step of recursion (when
), one can calculate:
:
In a normal FFT which operates over complex numbers, one would use:
:
:
However, FFT can also be used as a NTT (
number theoretic transformation) in Schönhage–Strassen. This means that we have to use to generate numbers in a finite field (for example
).
A root of unity under a finite field , is an element a such that
or
. For example , where is a
prime number
A prime number (or a prime) is a natural number greater than 1 that is not a Product (mathematics), product of two smaller natural numbers. A natural number greater than 1 that is not prime is called a composite number. For example, 5 is prime ...
,
gives
.
Notice that
in
and
in
. For these candidates,
under its finite field, and therefore act the way we want .
Same FFT algorithms can still be used, though, as long as is a
root of unity
In mathematics, a root of unity is any complex number that yields 1 when exponentiation, raised to some positive integer power . Roots of unity are used in many branches of mathematics, and are especially important in number theory, the theory ...
of a finite field.
To find FFT/NTT transform, we do the following:
:
First product gives contribution to
, for each . Second gives contribution to
, due to
mod
.
To do the inverse:
:
or
depending whether data needs to be normalized.
One multiplies by
to normalize FFT data into a specific range, where
, where is found using the
modular multiplicative inverse
In mathematics, particularly in the area of arithmetic, a modular multiplicative inverse of an integer is an integer such that the product is congruent to 1 with respect to the modulus .. In the standard notation of modular arithmetic this cong ...
.
Implementation details
Why ''N'' = 2 + 1 mod ''N''
In Schönhage–Strassen algorithm,
. This should be thought of as a binary tree, where one have values in
. By letting
, for each one can find all
, and group all
pairs into M different groups. Using
to group
pairs through convolution is a classical problem in algorithms.
Having this in mind,
help us to group
into
groups for each group of subtasks in depth in a tree with
Notice that
, for some L. This makes N a
Fermat number
In mathematics, a Fermat number, named after Pierre de Fermat (1601–1665), the first known to have studied them, is a natural number, positive integer of the form:F_ = 2^ + 1, where ''n'' is a non-negative integer. The first few Fermat numbers ...
. When doing mod
, we have a Fermat ring.
Because some Fermat numbers are Fermat primes, one can in some cases avoid calculations.
There are other ''N'' that could have been used, of course, with same prime number advantages. By letting
, one have the maximal number in a binary number with
bits.
is a Mersenne number, that in some cases is a Mersenne prime. It is a natural candidate against Fermat number
In search of another ''N''
Doing several mod calculations against different , can be helpful when it comes to solving integer product. By using the
Chinese remainder theorem
In mathematics, the Chinese remainder theorem states that if one knows the remainders of the Euclidean division of an integer ''n'' by several integers, then one can determine uniquely the remainder of the division of ''n'' by the product of thes ...
, after splitting into smaller different types of , one can find the answer of multiplication
Fermat numbers and Mersenne numbers are just two types of numbers, in something called generalized Fermat Mersenne number (GSM); with formula:
:
:
In this formula,
is a Fermat number, and
is a Mersenne number.
This formula can be used to generate sets of equations, that can be used in CRT (Chinese remainder theorem):
:
, where is a number such that there exists an where
, assuming
Furthermore;
, where is an element that generates elements in
in a cyclic manner.
If
, where
, then
.
How to choose ''K'' for a specific ''N''
The following formula is helpful, finding a proper (number of groups to divide bits into) given bit size by calculating efficiency :
is bit size (the one used in
) at outermost level. gives
groups of bits, where
.
is found through and by finding the smallest , such that
If one assume efficiency above 50%,
and is very small compared to rest of formula; one get
:
This means: When something is very effective; is bound above by
or asymptotically bound above by
Pseudocode
Following algorithm, the standard Modular Schönhage-Strassen Multiplication algorithm (with some optimizations), is found in overview through
* T3MUL = Toom–Cook multiplication
* SMUL = Schönhage–Strassen multiplication
* Evaluate = FFT/IFFT
Further study
For implemantion details, one can read the book ''Prime Numbers: A Computational Perspective''.
[R. Crandall & C. Pomerance. ''Prime Numbers – A Computational Perspective''. Second Edition, Springer, 2005. Section 9.5.6: Schönhage method, p. 502. ] This variant differs somewhat from Schönhage's original method in that it exploits the
discrete weighted transform
Discrete may refer to:
*Discrete particle or quantum in physics, for example in quantum theory
*Discrete device, an electronic component with just one circuit element, either passive or active, other than an integrated circuit
*Discrete group, a g ...
to perform
negacyclic convolution In mathematics, negacyclic convolution is a convolution
In mathematics (in particular, functional analysis), convolution is a operation (mathematics), mathematical operation on two function (mathematics), functions f and g that produces a third ...
s more efficiently. Another source for detailed information is
Knuth's ''
The Art of Computer Programming
''The Art of Computer Programming'' (''TAOCP'') is a comprehensive multi-volume monograph written by the computer scientist Donald Knuth presenting programming algorithms and their analysis. it consists of published volumes 1, 2, 3, 4A, and 4 ...
''.
Optimizations
This section explains a number of important practical optimizations, when implementing Schönhage–Strassen.
Use of other multiplications algorithm, inside algorithm
Below a certain cutoff point, it's more efficient to use other multiplication algorithms, such as
Toom–Cook multiplication
Toom–Cook, sometimes known as Toom-3, named after Andrei Toom, who introduced the new algorithm with its low complexity, and Stephen Cook, who cleaned the description of it, is a multiplication algorithm for large integers.
Given two large in ...
.
Square root of 2 trick
The idea is to use
as a
root of unity
In mathematics, a root of unity is any complex number that yields 1 when exponentiation, raised to some positive integer power . Roots of unity are used in many branches of mathematics, and are especially important in number theory, the theory ...
of order
in finite field
( it is a solution to equation
), when weighting values in NTT (number theoretic transformation) approach. It has been shown to save 10% in integer multiplication time.
Granlund's trick
By letting
, one can compute
and
in combination with CRT (Chinese Remainder Theorem) to
find exact values of multiplication
.
References
{{DEFAULTSORT:Schonhage-Strassen Algorithm
Computer arithmetic algorithms
Multiplication