| 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}') | |