| import torch | |
| from safetensors.torch import load_file | |
| def load_model(path='model.safetensors'): | |
| return load_file(path) | |
| def booth_recode_ref(y): | |
| """Reference Booth recoding for 4-bit value.""" | |
| bits = [(y >> i) & 1 for i in range(4)] | |
| prev = [0] + bits[:3] | |
| result = [] | |
| for i in range(4): | |
| add_i = (1 - bits[i]) & prev[i] | |
| sub_i = bits[i] & (1 - prev[i]) | |
| result.append((add_i, sub_i)) | |
| return result | |
| if __name__ == '__main__': | |
| print('Booth Radix-2 Recoder') | |
| print('Converts 4-bit multiplier to add/sub signals') | |
| print() | |
| print('Value | Recoding') | |
| for y in range(16): | |
| codes = booth_recode_ref(y) | |
| y_signed = y if y < 8 else y - 16 | |
| code_strs = ['+1' if a else ('-1' if s else ' 0') for a, s in codes] | |
| print(f' {y_signed:3d} | {" ".join(code_strs)}') | |