vee 0.1.5

Vector Expression Emitter (VEE): Geometric Algebra Code Generator
Documentation

vee

Vector Expression Emitter (VEE): Geometric Algebra Code Generator

Build Documentation Downloads Version Rust License

The goal of this crate is to generate optimized code for geometric algebra flavors.

Features

  • Uniquely reduce symbolic multivector expressions.
  • Generate expressions in text form.
    • Use symbols with Unicode combining diacritical marks ("{}").
    • Use Symbols labelled after basis blades ("{:#}").
    • Expand ("{:+}") or reduce (i.e., factorize) expressions ("{}").
    • Factor predominant sign ("{:-}").
    • Omit newlines ("{:0}").
    • Omit leading plus signs ("{:<}").
  • Generate expressions in DOT form (i.e., text/vnd.graphviz).
    • Use symbols with Unicode diacritical marks ("{:o}").
    • Use Symbols labelled after basis blades ("{:#o}").
    • Expand ("{:+o}") or reduce (i.e., factorize) expressions ("{:o}").
    • Factor predominant sign ("{:-o}").
    • Change rank direction from top-to-bottom (TB) to left-to-right (LR) ("{:0o}").
  • Eliminate orthonormalization conditions from expressions using reflection/projection operator by factoring pinned symbols, GCD coefficients, and predominant signs.
  • Evaluate symbols as rationals.
  • Count operations (i.e., multiplication and additions).
  • Define the metric-agnostic basis (i.e., elliptic, parabolic, hyperbolic) and the multivector entities of the projective geometric algebra (PGA) for dimensions D = N + 1 < 8.

Roadmap

  • Further optimize expressions to reduce operation count by domain-specific common subexpression elimination (CSE) targeting exterior products.
  • Generate expressions in LaTeX and code form.
  • Define other geometric algebra flavors.

See the release history to keep track of the development.

Pseudo-Local Documentation Builds

Build the documentation with cargo-tex. Note that navigating the documentation requires web access as KaTeX is embedded via remote CDN.

cargo tex --open

License

Copyright © 2025 Rouven Spreckels rs@qu1x.dev

Licensed under the terms of the MPL-2.0.

Contribution

Unless you explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Covered Software by You shall be licensed as above, without any additional terms or conditions.