--- license: mit tags: - pytorch - safetensors - threshold-logic - neuromorphic - error-correction --- # threshold-hamming1511-encoder Hamming(15,11) encoder. Adds 4 parity bits to 11 data bits for single-error correction. ## Function encode(d1..d11) -> [p1, p2, d1, p4, d2, d3, d4, p8, d5, d6, d7, d8, d9, d10, d11] ## Bit Positions | Position | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |----------|---|---|---|---|---|---|---|---|---|----|----|----|----|----|----| | Bit | p1 | p2 | d1 | p4 | d2 | d3 | d4 | p8 | d5 | d6 | d7 | d8 | d9 | d10 | d11 | ## Parity Equations Each parity bit covers positions where its position number (in binary) has a 1 in that bit: - **p1** (bit 0): positions 1,3,5,7,9,11,13,15 -> XOR(d1,d2,d4,d5,d7,d9,d11) - **p2** (bit 1): positions 2,3,6,7,10,11,14,15 -> XOR(d1,d3,d4,d6,d7,d10,d11) - **p4** (bit 2): positions 4,5,6,7,12,13,14,15 -> XOR(d2,d3,d4,d8,d9,d10,d11) - **p8** (bit 3): positions 8,9,10,11,12,13,14,15 -> XOR(d5,d6,d7,d8,d9,d10,d11) ## Architecture Each parity bit requires a 7-way XOR, implemented as a tree of 2-way XORs: ``` XOR7(a,b,c,d,e,f,g) = XOR(XOR4(a,b,c,d), XOR3(e,f,g)) XOR4(a,b,c,d) = XOR(XOR(a,b), XOR(c,d)) XOR3(e,f,g) = XOR(XOR(e,f), g) ``` Each XOR2 requires 3 neurons (OR, NAND, AND). ## Parameters | | | |---|---| | Inputs | 11 | | Outputs | 15 | | Neurons | 86 | | Layers | 6 | | Parameters | 591 | | Magnitude | 272 | ## Error Correction When decoded, the receiver computes syndrome bits by XORing received bits at parity positions. The syndrome directly indicates the bit position of any single-bit error (0 = no error). ## Comparison to Hamming(7,4) | Code | Data | Parity | Total | Efficiency | |------|------|--------|-------|------------| | Hamming(7,4) | 4 | 3 | 7 | 57% | | Hamming(15,11) | 11 | 4 | 15 | 73% | Larger Hamming codes are more efficient but require more complex circuits. ## Usage ```python from safetensors.torch import load_file w = load_file('model.safetensors') # See model.py for reference implementation ``` ## License MIT