threshold-halfadder

Adds two 1-bit inputs, producing sum and carry. The building block for all multi-bit adders.

Circuit

      a       b
      β”‚       β”‚
      β”œβ”€β”€β”€β”¬β”€β”€β”€β”€
      β”‚   β”‚   β”‚
      β–Ό   β”‚   β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”β”‚β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚  OR  β”‚β”‚β”‚ NAND β”‚
  β””β”€β”€β”€β”€β”€β”€β”˜β”‚β””β”€β”€β”€β”€β”€β”€β”˜
      β”‚   β”‚   β”‚
      β””β”€β”€β”€β”Όβ”€β”€β”€β”˜
          β–Ό               a   b
      β”Œβ”€β”€β”€β”€β”€β”€β”            β”‚   β”‚
      β”‚ AND  β”‚            β””β”€β”¬β”€β”˜
      β””β”€β”€β”€β”€β”€β”€β”˜              β–Ό
          β”‚            β”Œβ”€β”€β”€β”€β”€β”€β”
          β–Ό            β”‚ AND  β”‚
        sum            β””β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                           β–Ό
                        carry

The sum output uses XOR (2 layers), the carry uses AND (1 layer).

Truth Table

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

Components

Output Function Neurons Layers
sum XOR(a, b) 3 2
carry AND(a, b) 1 1

Total: 4 neurons, 12 parameters

Arithmetic

The half adder computes a + b where a, b ∈ {0, 1}:

  • 0 + 0 = 0 (sum=0, carry=0)
  • 0 + 1 = 1 (sum=1, carry=0)
  • 1 + 0 = 1 (sum=1, carry=0)
  • 1 + 1 = 2 (sum=0, carry=1)

The carry represents the 2s place.

Usage

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

Files

threshold-halfadder/
β”œβ”€β”€ model.safetensors
β”œβ”€β”€ model.py
β”œβ”€β”€ config.json
└── README.md

License

MIT

Downloads last month
10
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Collection including phanerozoic/threshold-halfadder