viva_math

viva_math - Core mathematical functions for VIVA.

A specialized math library for sentient digital life, built on top of gleam_community_maths.

Modules

Dependencies

Re-exports gleam_community_maths for convenience. Use import gleam_community/maths for:

Example

import viva_math/vector
import viva_math/attractor
import viva_math/cusp

// Create PAD state
let state = vector.pad(-0.3, 0.7, -0.2)

// Classify emotion
let emotion = attractor.classify_emotion(state)
// -> "fear"

// Check for cusp bistability
let params = cusp.from_arousal_dominance(0.7, -0.2)
let volatile = cusp.is_bistable(params)
// -> True (high arousal creates bistability)

Values

pub fn clamp_bipolar(x: Float) -> Float

Clamp value to [-1, 1] range.

pub fn classify(state: vector.Vec3) -> String

Classify emotional state to nearest attractor name. Shorthand for attractor.classify_emotion/1.

pub fn entropy(probabilities: List(Float)) -> Float

Compute Shannon entropy of a probability distribution.

pub fn free_energy(
  expected: vector.Vec3,
  actual: vector.Vec3,
) -> free_energy.FreeEnergyState

Compute free energy from expected and actual states. Uses simplified interface with default precision and thresholds.

pub fn is_volatile(arousal: Float, dominance: Float) -> Bool

Check if emotional state is volatile (cusp bistability).

pub fn pad(
  pleasure: Float,
  arousal: Float,
  dominance: Float,
) -> vector.Vec3

Create a PAD vector with clamping. Shorthand for vector.pad/3.

pub fn sigmoid(x: Float) -> Float

Standard sigmoid function.

pub const version: String

Library version

Search Document