--- license: mit tags: - pytorch - safetensors - threshold-logic - neuromorphic --- # threshold-clz4 4-bit count leading zeros. ## Function clz4(a3, a2, a1, a0) = number of leading zeros from MSB ## Truth Table (selected rows) | Input | First 1 | CLZ | Output | |-------|---------|-----|--------| | 1xxx | bit 3 | 0 | 000 | | 01xx | bit 2 | 1 | 001 | | 001x | bit 1 | 2 | 010 | | 0001 | bit 0 | 3 | 011 | | 0000 | none | 4 | 100 | ## Architecture ``` Layer 1: Priority detection from MSB has3 = a3 (MSB is set, clz=0) has2_first = a2 AND NOT(a3) (clz=1) has1_first = a1 AND NOT(a2) AND NOT(a3) (clz=2) has0_first = a0 AND NOT(a1) AND NOT(a2) AND NOT(a3) (clz=3) all_zero = NOT(any bit) (clz=4) Layer 2: Binary encoding y0 = has2_first OR has0_first (clz is 1 or 3) y1 = has1_first OR has0_first (clz is 2 or 3) y2 = all_zero (clz is 4) ``` ## Parameters | | | |---|---| | Inputs | 4 | | Outputs | 3 | | Neurons | 8 | | Layers | 2 | | Parameters | 39 | | Magnitude | 26 | ## Usage ```python from safetensors.torch import load_file # See model.py for full implementation # clz4(1, 0, 0, 0) = [0, 0, 0] = 0 (MSB is set) # clz4(0, 0, 1, 0) = [0, 1, 0] = 2 (two leading zeros) # clz4(0, 0, 0, 0) = [1, 0, 0] = 4 (all zeros) ``` ## License MIT