metadata
license: mit
tags:
- pytorch
- safetensors
- threshold-logic
- neuromorphic
- arithmetic
- bcd
threshold-bcd-adder
BCD (Binary-Coded Decimal) single-digit adder as threshold circuit. Adds two decimal digits (0-9) with carry.
Circuit
A[3:0] βββ (BCD digit 0-9)
B[3:0] βββΌβββΊ BCD Adder βββ¬βββΊ S[3:0] (BCD digit 0-9)
Cin βββ ββββΊ Cout (decimal carry)
Algorithm
1. Binary add: Z = A + B + Cin (4-bit result + carry)
2. Detect overflow: Z > 9 OR binary carry
3. If overflow: add 6 (0110) for correction
4. Decimal carry = overflow detected
Why Add 6?
BCD uses only values 0-9. When binary sum exceeds 9:
- 10 (1010) + 6 = 16 (10000) β 0 with carry
- 11 (1011) + 6 = 17 (10001) β 1 with carry
- etc.
Adding 6 skips the invalid codes A-F (10-15).
Truth Table (examples)
| A | B | Cin | S | Cout |
|---|---|---|---|---|
| 5 | 3 | 0 | 8 | 0 |
| 5 | 5 | 0 | 0 | 1 |
| 9 | 9 | 0 | 8 | 1 |
| 9 | 9 | 1 | 9 | 1 |
Architecture
| Stage | Component | Neurons |
|---|---|---|
| Binary add | 4 Full Adders | 28 |
| Detect >9 | AND, OR gates | 4 |
| Correction | 2 Half Adders + XOR | 11 |
Total: 43 neurons, 133 parameters, 5 layers
Applications
- Decimal arithmetic in calculators
- Financial calculations requiring exact decimal
- BCD-based displays (7-segment)
- Legacy systems using packed BCD
Usage
from safetensors.torch import load_file
w = load_file('model.safetensors')
# Valid inputs: A, B in range 0-9
# All 200 test cases verified (10 Γ 10 Γ 2)
Files
threshold-bcd-adder/
βββ model.safetensors
βββ create_safetensors.py
βββ config.json
βββ README.md
License
MIT