Hamming(7,4) encoder. Transforms 4 data bits into a 7-bit codeword with single-error correction capability.
d1 d2 d3 d4
│ │ │ │
├───┼───┼───┤
│ │ │ │
│ │ │ └────────────────────────────► c7 = d4
│ │ └───────────────────────► c6 = d3
│ └──────────────────► c5 = d2
└─────────────► c3 = d1
│ │ │ │
▼ ▼ │ ▼
┌───────────────┐
│ d1 XOR d2 XOR │──────► c1 = p1
│ d4 │
└───────────────┘
│ │ │
▼ ▼ ▼
┌───────────────┐
│ d1 XOR d3 XOR │──────► c2 = p2
│ d4 │
└───────────────┘
│ │ │
▼ ▼ ▼
┌───────────────┐
│ d2 XOR d3 XOR │──► c4 = p3
│ d4 │
└───────────────┘
Richard Hamming invented this code in 1950. It encodes 4 data bits into 7 bits such that any single-bit error can be detected and corrected.
Each parity bit requires a 3-input XOR. In threshold logic:
XOR(a,b,c) = XOR(XOR(a,b), c)
a b
│ │
└─┬─┘
▼
┌───────┐
│ XOR │ (2 layers)
└───────┘
│
│ c
└─┬─┘
▼
┌───────┐
│ XOR │ (2 more layers)
└───────┘
│
▼
XOR(a,b,c)
Total depth: 4 layers per parity. All three parities compute in parallel.
Data: 1011
p1 = 1 ⊕ 0 ⊕ 1 = 0
p2 = 1 ⊕ 1 ⊕ 1 = 1
p3 = 0 ⊕ 1 ⊕ 1 = 0
Codeword: 0110011
↑↑ ↑
p1p2p3
Note: Minimum Hamming distance between any two codewords is 3.
1from safetensors.torch import load_file
2
3w = load_file('model.safetensors')
4
5def hamming74_encode(d1, d2, d3, d4):
6 """Encode 4 data bits to 7-bit Hamming codeword"""
7 # See model.py for full implementation
8 pass
9
10# Encode data word 1011
11codeword = hamming74_encode(1, 0, 1, 1)
12# Returns [0, 1, 1, 0, 0, 1, 1]
threshold-hamming74encoder/
├── model.safetensors
├── model.py
├── config.json
└── README.md