| | --- |
| | license: mit |
| | tags: |
| | - pytorch |
| | - safetensors |
| | - threshold-logic |
| | - neuromorphic |
| | --- |
| | |
| | # threshold-ffs4 |
| |
|
| | 4-bit find first set (priority encoder). Returns 1-indexed position of the least significant set bit. |
| |
|
| | ## Function |
| |
|
| | ffs4(a3, a2, a1, a0) = position of first (least significant) 1 bit, 0 if no bits set |
| |
|
| | ## Truth Table (selected rows) |
| |
|
| | | Input | First bit | Output (y2,y1,y0) | |
| | |-------|-----------|-------------------| |
| | | 0000 | none | 000 (0) | |
| | | 0001 | bit 0 | 001 (1) | |
| | | 0010 | bit 1 | 010 (2) | |
| | | 0011 | bit 0 | 001 (1) | |
| | | 0100 | bit 2 | 011 (3) | |
| | | 1000 | bit 3 | 100 (4) | |
| | | 1010 | bit 1 | 010 (2) | |
| |
|
| | ## Architecture |
| |
|
| | ``` |
| | Layer 1: Priority detection |
| | has0 = a0 (bit 0 is set) |
| | has1_first = a1 AND NOT(a0) |
| | has2_first = a2 AND NOT(a1) AND NOT(a0) |
| | has3_first = a3 AND NOT(a2) AND NOT(a1) AND NOT(a0) |
| | |
| | Layer 2: Binary encoding |
| | y0 = has0 OR has2_first (ffs is 1 or 3) |
| | y1 = has1_first OR has2_first (ffs is 2 or 3) |
| | y2 = has3_first (ffs is 4) |
| | ``` |
| |
|
| | ## Parameters |
| |
|
| | | | | |
| | |---|---| |
| | | Inputs | 4 | |
| | | Outputs | 3 | |
| | | Neurons | 7 | |
| | | Layers | 2 | |
| | | Parameters | 35 | |
| | | Magnitude | 22 | |
| |
|
| | ## Usage |
| |
|
| | ```python |
| | from safetensors.torch import load_file |
| | # See model.py for full implementation |
| | |
| | # ffs4(1, 0, 1, 0) = [0, 1, 0] = 2 (bit 1 is first set) |
| | # ffs4(0, 0, 0, 1) = [0, 0, 1] = 1 (bit 0 is first set) |
| | ``` |
| |
|
| | ## License |
| |
|
| | MIT |
| |
|