# Multiplication

**Multiplication** is the process of calculating the result when a number a is added to itself b times. The result of a multiplication is called the product of a and b, and each of the numbers is called a factor of the product ab.

Multiplication is denoted a×b,(a)(b), or simply ab. The symbol '×' is known as the multiplication sign.

The result of multiplying no numbers (empty product) is always 1 (the multiplicative identity, see below). The most common occurences are in exponentiation ([math]a^0=1[/math]) and factorial (0!=1).

## Contents

## Multiplication properties

### Associative property

[math](x*y)z=x(y*z)[/math]

### Commutative property

[math]x*y=y*x[/math]

### Distributive property

[math]x(y+z)=xy+xz[/math]

### Identity element

[math]1x=x[/math]

### Multiplication by zero

[math]0x=0[/math]

## Multiplication algorithms

When the product fits in a variable supported by the programming language, or in a register when programming in assembler, the multiplication is trivial. However if the largest available register is *n* bits wide the factors can only be *n/2* bits wide each.

Otherwise there are several algorithms used to calculate products, depending on the size of the factors:

- Long multiplication: very fast for small factors, but slower than the other methods when the factors are large.
- Karatsuba multiplication: useful for numbers in the range of about 1000-10000 digits.
- Fourier transform multiplication: uses FFT to multiply extremely large numbers faster than the previous methods.
- Schöhage-Strassen: useful for numbers in the range of about 10000-40000+ digits.
- Färer: currently of theoretical interest only.