Multiplication as a convolution
As a brief aside, we will touch on a rather interesting side topic: the relation between integer multiplication and convolutions As an example, let us consider the following multiplication: .
In this case, we might line up the numbers, like so:
Here, each column represents another power of 10, such that in the number 123, there is 1 100, 2 10s, and 3 1s. So let us use a similar notation to perform the convolution, by reversing the second set of numbers and moving it to the right, performing an element-wise multiplication at each step:
For these operations, any blank space should be considered a . In the end, we will have a new set of numbers:
Now all that is left is to perform the carrying operation by moving any number in the 10s digit to its left-bound neighbor. For example, the numbers or 58. For these numbers,
Which give us , the correct answer for integer multiplication. I am not suggesting that we teach elementary school students to learn convolutions, but I do feel this is an interesting fact that most people do not know: integer multiplication can be performed with a convolution.
This will be discussed in further detail when we talk about the Schonhage-Strassen algorithm, which uses this fact to perform multiplications for incredibly large integers.
License
Text
The text of this chapter was written by James Schloss and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.
Pull Requests
After initial licensing (#560), the following pull requests have modified the text or graphics of this chapter:
- none