### 15.1 Multiplication

NxN limb multiplications and squares are done using one of seven algorithms, as the size N increases.

> Algorithm | Threshold
> Basecase | (none)
> Karatsuba | `MUL_TOOM22_THRESHOLD`
> Toom-3 | `MUL_TOOM33_THRESHOLD`
> Toom-4 | `MUL_TOOM44_THRESHOLD`
> Toom-6.5 | `MUL_TOOM6H_THRESHOLD`
> Toom-8.5 | `MUL_TOOM8H_THRESHOLD`
> FFT | `MUL_FFT_THRESHOLD`

Similarly for squaring, with the `SQR` thresholds.

NxM multiplications of operands with different sizes above `MUL_TOOM22_THRESHOLD` are currently done by special Toom-inspired algorithms or directly with FFT, depending on operand size (see Unbalanced Multiplication).