Threshold Logic Circuits
Collection
Boolean gates, voting functions, modular arithmetic, and adders as threshold networks.
β’
269 items
β’
Updated
β’
1
4-bit parallel prefix OR operation. Computes running OR from MSB to each position. Used in leading-one detection and any-ones-above detection.
x3 x2 x1 x0
β β β β
βΌ βΌ βΌ βΌ
βββββ βββββ βββββ βββββ
βy3 β βy2 β βy1 β βy0 β
β>=1β β>=1β β>=1β β>=1β
βββββ βββββ βββββ βββββ
β β β β
βΌ βΌ βΌ βΌ
(x3) (x3|x2) (x3|x2|x1) (all)
prefix_or(x3, x2, x1, x0) -> (y3, y2, y1, y0)
y3 = x3
y2 = x3 OR x2
y1 = x3 OR x2 OR x1
y0 = x3 OR x2 OR x1 OR x0
Each output yi is the OR of all inputs from x3 down to xi.
| x3 x2 x1 x0 | y3 y2 y1 y0 | Meaning |
|---|---|---|
| 0 0 0 0 | 0 0 0 0 | All zeros |
| 0 0 0 1 | 0 0 0 1 | Only LSB set |
| 0 0 1 0 | 0 0 1 1 | First one at pos 1 |
| 0 1 0 0 | 0 1 1 1 | First one at pos 2 |
| 1 0 0 0 | 1 1 1 1 | First one at MSB |
| 1 1 1 1 | 1 1 1 1 | All ones |
| 1 0 1 0 | 1 1 1 1 | Mixed pattern |
Single-layer parallel implementation:
| Output | Condition | Weights | Bias |
|---|---|---|---|
| y3 | x3 >= 1 | [1,0,0,0] | -1 |
| y2 | x3 + x2 >= 1 | [1,1,0,0] | -1 |
| y1 | x3 + x2 + x1 >= 1 | [1,1,1,0] | -1 |
| y0 | x3 + x2 + x1 + x0 >= 1 | [1,1,1,1] | -1 |
All use bias -1 (fires when at least one relevant input is 1).
| Inputs | 4 |
| Outputs | 4 |
| Neurons | 4 |
| Layers | 1 |
| Parameters | 20 |
| Magnitude | 14 |
from safetensors.torch import load_file
import torch
w = load_file('model.safetensors')
def prefix_or(x3, x2, x1, x0):
inp = torch.tensor([float(x3), float(x2), float(x1), float(x0)])
y3 = int((inp @ w['y3.weight'].T + w['y3.bias'] >= 0).item())
y2 = int((inp @ w['y2.weight'].T + w['y2.bias'] >= 0).item())
y1 = int((inp @ w['y1.weight'].T + w['y1.bias'] >= 0).item())
y0 = int((inp @ w['y0.weight'].T + w['y0.bias'] >= 0).item())
return y3, y2, y1, y0
print(prefix_or(0, 0, 1, 0)) # (0, 0, 1, 1)
print(prefix_or(1, 0, 0, 0)) # (1, 1, 1, 1)
MIT