Web pages of Theo Kortekaas

The Schönhage Strassen Algoritme (SSA)

Multiplying large numbers

In science (mathematics), but also in practice (cryptography), there are sometimes situations where calculations must be made with large to very large numbers. The result should then be completely accurate. Therefore, one can not make use of software like Excel or Office Calc. We need special software that provides the ability to do calculations with large numbers. (We are talking about numbers with thousands or sometimes millions of decimal digits). Multiplications with that size of numbers can take much time, even on fast computers. In order to speed up this kind of calculations, new mathematical methods (algorithms) have been conceived. The Schönhage Strassen Algoritme (SSA) is one such algorithm. Much information about SSA is available on the internet. But unfortunately that information is often sketchy, incomplete or inaccurate. Sometimes SSA is explained using complex mathematical formulas. Yet there seems to be a need for a simple explanation of the mechanics of SSA and information on how to implement SSA in a simple way. The document Multiplying large numbers and the Schönhage Strassen Algoritme is an attempt to meet this need and provides an example implementation of SSA in C++. This document is now available in an English version as well as in a Dutch version.

Testprogram SSA

The squaring function according to the SSA algorithm is tested with thisWindows SSA Testprogram With a new version of this program numbers of different sizes are squared with four different methods: Classic way; the Karatsuba method; the Toom/Cook algorithm and the SSA algorithm. The results are compared with each other: any difference is reported. Furthermore the execution times (in number of computer clock cycles) of the four different methods are measured and reported.