|
|
---
|
|
|
license: mit
|
|
|
tags:
|
|
|
- pytorch
|
|
|
- safetensors
|
|
|
- threshold-logic
|
|
|
- neuromorphic
|
|
|
- comparison
|
|
|
---
|
|
|
|
|
|
# threshold-equal
|
|
|
|
|
|
8-bit equality comparator. Returns 1 if a = b, 0 otherwise.
|
|
|
|
|
|
## Circuit
|
|
|
|
|
|
```
|
|
|
a0 b0 a1 b1 a2 b2 a3 b3 a4 b4 a5 b5 a6 b6 a7 b7
|
|
|
β β β β β β β β β β β β β β β β
|
|
|
ββ¬ββ ββ¬ββ ββ¬ββ ββ¬ββ ββ¬ββ ββ¬ββ ββ¬ββ ββ¬ββ
|
|
|
βΌ βΌ βΌ βΌ βΌ βΌ βΌ βΌ
|
|
|
βββββ βββββ βββββ βββββ βββββ βββββ βββββ βββββ
|
|
|
βXORβ βXORβ βXORβ βXORβ βXORβ βXORβ βXORβ βXORβ L1-2
|
|
|
βββββ βββββ βββββ βββββ βββββ βββββ βββββ βββββ
|
|
|
β β β β β β β β
|
|
|
βββββββββ΄ββββββββ΄ββββββββ΄ββββ¬ββββ΄ββββββββ΄ββββββββ΄ββββββββ
|
|
|
βΌ
|
|
|
βββββββββββ
|
|
|
β NOR β L3
|
|
|
β w: -1Γ8 β
|
|
|
β b: 0 β
|
|
|
βββββββββββ
|
|
|
β
|
|
|
βΌ
|
|
|
(a = b)
|
|
|
```
|
|
|
|
|
|
## Mechanism
|
|
|
|
|
|
1. **XOR each bit pair**: XOR(a_i, b_i) = 1 if bits differ, 0 if same
|
|
|
2. **NOR all XORs**: Fires only when all XORs are 0 (all bits match)
|
|
|
|
|
|
The NOR gate acts as a "zero detector" - it fires when all its inputs are silent.
|
|
|
|
|
|
## XOR Structure (each)
|
|
|
|
|
|
```
|
|
|
a b
|
|
|
β β
|
|
|
βββ¬ββ€
|
|
|
β β β
|
|
|
βΌ β βΌ
|
|
|
βββββββββββββ
|
|
|
β OR βββNANDβ
|
|
|
βββββββββββββ
|
|
|
β β β
|
|
|
βββΌββ
|
|
|
βΌ
|
|
|
ββββββββ
|
|
|
β AND β
|
|
|
ββββββββ
|
|
|
β
|
|
|
βΌ
|
|
|
XOR out
|
|
|
```
|
|
|
|
|
|
## Truth Table (sample)
|
|
|
|
|
|
| a | b | a = b |
|
|
|
|---|---|-------|
|
|
|
| 0 | 0 | 1 |
|
|
|
| 0 | 1 | 0 |
|
|
|
| 127 | 127 | 1 |
|
|
|
| 127 | 128 | 0 |
|
|
|
| 255 | 255 | 1 |
|
|
|
| 255 | 0 | 0 |
|
|
|
| 100 | 100 | 1 |
|
|
|
|
|
|
## Architecture
|
|
|
|
|
|
| Component | Neurons | Parameters |
|
|
|
|-----------|---------|------------|
|
|
|
| XOR Γ 8 | 24 | 72 |
|
|
|
| NOR | 1 | 9 |
|
|
|
| **Total** | **25** | **81** |
|
|
|
|
|
|
**Layers: 3** (XOR: 2, NOR: 1)
|
|
|
|
|
|
## Comparison Family
|
|
|
|
|
|
| Circuit | Condition | Implementation |
|
|
|
|---------|-----------|----------------|
|
|
|
| LessThan | a < b | borrow_out of (a - b) |
|
|
|
| **Equal** | a = b | NOR of all XOR bits |
|
|
|
| GreaterThan | a > b | LessThan(b, a) |
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
```python
|
|
|
from safetensors.torch import load_file
|
|
|
|
|
|
w = load_file('model.safetensors')
|
|
|
|
|
|
def equal(a, b):
|
|
|
"""a, b: 8-bit lists [a0..a7] (LSB first)
|
|
|
Returns: 1 if a == b, 0 otherwise"""
|
|
|
# See model.py for full implementation
|
|
|
pass
|
|
|
|
|
|
# Example: 127 == 127?
|
|
|
a = [(127 >> i) & 1 for i in range(8)]
|
|
|
b = [(127 >> i) & 1 for i in range(8)]
|
|
|
result = equal(a, b) # Returns 1
|
|
|
```
|
|
|
|
|
|
## Files
|
|
|
|
|
|
```
|
|
|
threshold-equal/
|
|
|
βββ model.safetensors
|
|
|
βββ model.py
|
|
|
βββ config.json
|
|
|
βββ README.md
|
|
|
```
|
|
|
|
|
|
## License
|
|
|
|
|
|
MIT
|
|
|
|