CharlesCNorton
Add Hamming(15,11) encoder threshold circuit
7310771
import torch
from safetensors.torch import load_file
def load_model(path='model.safetensors'):
return load_file(path)
def parity7(bits):
"""7-bit XOR (parity)."""
result = 0
for b in bits:
result ^= b
return result
def hamming1511_encode_ref(d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11):
"""Reference encoder (not using threshold weights)."""
p1 = parity7([d1, d2, d4, d5, d7, d9, d11])
p2 = parity7([d1, d3, d4, d6, d7, d10, d11])
p4 = parity7([d2, d3, d4, d8, d9, d10, d11])
p8 = parity7([d5, d6, d7, d8, d9, d10, d11])
return [p1, p2, d1, p4, d2, d3, d4, p8, d5, d6, d7, d8, d9, d10, d11]
if __name__ == '__main__':
print('Hamming(15,11) Encoder')
print('11 data bits -> 15 coded bits (4 parity + 11 data)')
print()
print('Bit positions: p1,p2,d1,p4,d2,d3,d4,p8,d5,d6,d7,d8,d9,d10,d11')
print()
print('Examples:')
for i in range(8):
bits = [(i >> j) & 1 for j in range(11)]
encoded = hamming1511_encode_ref(*bits)
data_str = ''.join(map(str, bits))
enc_str = ''.join(map(str, encoded))
print(f' {data_str} -> {enc_str}')