metadata
license: mit
tags:
- pytorch
- safetensors
- threshold-logic
- neuromorphic
threshold-min2
Minimum of two 2-bit unsigned integers.
Function
min2(a, b) = min(a, b) where a, b are 2-bit unsigned integers (0-3)
Inputs: a1, a0, b1, b0 (MSB first) Outputs: m1, m0 = binary representation of min(a, b)
Truth Table
| a | b | min |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 2 | 0 |
| 0 | 3 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
| 1 | 2 | 1 |
| 1 | 3 | 1 |
| 2 | 0 | 0 |
| 2 | 1 | 1 |
| 2 | 2 | 2 |
| 2 | 3 | 2 |
| 3 | 0 | 0 |
| 3 | 1 | 1 |
| 3 | 2 | 2 |
| 3 | 3 | 3 |
Architecture
7-layer circuit:
- Layer 1: Bit comparisons and passthrough (10 neurons)
- Layer 2: Equality detection (9 neurons)
- Layer 3: Partial comparison (8 neurons)
- Layer 4: Full a > b and a == b (6 neurons)
- Layer 5: a <= b computation (5 neurons)
- Layer 6: MUX selection (4 neurons)
- Layer 7: Final OR (2 neurons)
Parameters
| Inputs | 4 |
| Outputs | 2 |
| Neurons | 44 |
| Layers | 7 |
| Parameters | 186 |
| Magnitude | 95 |
Usage
from safetensors.torch import load_file
import torch
w = load_file('model.safetensors')
# Use model.py for full implementation
from model import min2, load_model
w = load_model()
m1, m0 = min2(1, 0, 0, 1, w) # min(2, 1) = 1
print(2*m1 + m0) # 1
License
MIT