Skip to main content

Crate ternary_signal

Crate ternary_signal 

Source
Expand description

§ternary-signal

The fundamental unit of ternary neural communication: Signal = polarity × magnitude × multiplier

Compact 3-byte representation combining:

  • Polarity: excitatory (+1), inhibitory (-1), or silent (0)
  • Magnitude: base intensity 0–255 (intrinsic neuron drive)
  • Multiplier: contextual scaling 0–255 (metabolic state, arousal, burst energy)

Effective magnitude = magnitude × multiplier (0–65,025 range).

This is the canonical Signal type shared across neuromorphic crates (ternsig, thermogram, astromind-snn, etc.).

§Example

use ternary_signal::{Signal, Polarity};

let excited = Signal::positive(200);
assert!(excited.is_positive());
assert_eq!(excited.effective_magnitude(), 200); // multiplier defaults to 1

let burst = Signal::positive_amplified(200, 100);
assert_eq!(burst.effective_magnitude(), 20_000); // 200 × 100

let inhibited = Signal::with_polarity(Polarity::Negative, 50);
assert!(inhibited.is_negative());

let neutral = Signal::zero();
assert!(!neutral.is_active());

Structs§

PackedSignal
Compact 1-byte signal: [pol:2|mag:3|mul:3]
Signal
Signal: polarity × magnitude × multiplier (s = p × m × k)

Enums§

Polarity
Polarity of a neural signal — strictly {-1, 0, +1}

Constants§

LOG_LUT
Log-scale lookup table: 3-bit code → effective value (0–255).