Threshold Logic Circuits
Collection
Boolean gates, voting functions, modular arithmetic, and adders as threshold networks.
β’
153 items
β’
Updated
β’
1
Adds two 1-bit inputs, producing sum and carry. The building block for all multi-bit adders.
a b
β β
βββββ¬ββββ€
β β β
βΌ β βΌ
βββββββββββββββββ
β OR βββ NAND β
βββββββββββββββββ
β β β
βββββΌββββ
βΌ a b
ββββββββ β β
β AND β βββ¬ββ
ββββββββ βΌ
β ββββββββ
βΌ β AND β
sum ββββββββ
β
βΌ
carry
The sum output uses XOR (2 layers), the carry uses AND (1 layer).
| a | b | sum | carry |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 |
Binary: a + b = (carry Γ 2) + sum
| Output | Function | Neurons | Layers |
|---|---|---|---|
| sum | XOR(a, b) | 3 | 2 |
| carry | AND(a, b) | 1 | 1 |
Total: 4 neurons, 12 parameters
The half adder computes a + b where a, b β {0, 1}:
The carry represents the 2s place.
from safetensors.torch import load_file
import torch
w = load_file('model.safetensors')
def half_adder(a, b):
inp = torch.tensor([float(a), float(b)])
# XOR for sum
or_out = int((inp @ w['xor.layer1.or.weight'] + w['xor.layer1.or.bias']).sum() >= 0)
nand_out = int((inp @ w['xor.layer1.nand.weight'] + w['xor.layer1.nand.bias']).sum() >= 0)
xor_inp = torch.tensor([float(or_out), float(nand_out)])
sum_out = int((xor_inp @ w['xor.layer2.weight'] + w['xor.layer2.bias']).sum() >= 0)
# AND for carry
carry_out = int((inp @ w['carry.weight'] + w['carry.bias']).sum() >= 0)
return sum_out, carry_out
threshold-halfadder/
βββ model.safetensors
βββ model.py
βββ config.json
βββ README.md
MIT