Fast Walsh–Hadamard transform
In-game article clicks load inline without leaving the challenge.


In computational mathematics, the Hadamard ordered fast Walsh–Hadamard transform (FWHTh) is an efficient algorithm to compute the Walsh–Hadamard transform (WHT). A naive implementation of the WHT of order n = 2 m {\displaystyle n=2^{m}} would have a computational complexity of O(n 2 {\displaystyle n^{2}}). The FWHTh requires only n log n {\displaystyle n\log n} additions or subtractions.
The FWHTh is a divide-and-conquer algorithm that recursively breaks down a WHT of size n {\displaystyle n} into two smaller WHTs of size n / 2 {\displaystyle n/2}. This implementation follows the recursive definition of the 2 m × 2 m {\displaystyle 2^{m}\times 2^{m}} Hadamard matrix H m {\displaystyle H_{m}}:
H m = 1 2 ( H m − 1 H m − 1 H m − 1 − H m − 1 ) . {\displaystyle H_{m}={\frac {1}{\sqrt {2}}}{\begin{pmatrix}H_{m-1}&H_{m-1}\\H_{m-1}&-H_{m-1}\end{pmatrix}}.}
The 1 / 2 {\displaystyle 1/{\sqrt {2}}} normalization factors for each stage may be grouped together or even omitted.
The sequency-ordered, also known as Walsh-ordered, fast Walsh–Hadamard transform, FWHTw, is obtained by computing the FWHTh as above, and then rearranging the outputs.
A simple fast nonrecursive implementation of the Walsh–Hadamard transform follows from decomposition of the Hadamard transform matrix as H m = A m {\displaystyle H_{m}=A^{m}}, where A is m-th root of H m {\displaystyle H_{m}}.
Python example code
See also
External links
- Charles Constantine Gumas,