Skip to content

Releases: sunkmechie/AMSA

AMSA v0.2.3 : PGA/VGA support to classification print, CGA motor exp/log, Naive dual autodiff

23 May 09:35

Choose a tag to compare

What's Changed

  • Extend .classify() to PGA and VGA by @sunkmechie in #55
  • Add motor_log and motor_exp to CGA
  • Add Naive dual based autodiff module [incomplete]
  • Extend the experimental Robotics module by @sunkmechie in #57
  • Robotics by @sunkmechie in #60
  • Robo module made into it's own repo @sunkmechie

Full Changelog: v0.2.2...v0.2.3

AMSA v0.2.2 — CGA support, geometric classification, and examples

01 May 19:05
9c457ed

Choose a tag to compare

What's in 0.2.2

CGA geometry

Point, sphere, plane, translator, line, and circle constructors available as Algebra methods

alg = Algebra.cga3d()
p = alg.point([1.0, 2.0, 3.0])
s = alg.sphere([0.0, 0.0, 0.0], 5.0)
T = alg.translate([3.0, 0.0, 0.0])

Extraction utilities recover Euclidean parameters from CGA multivectors, extract_point normalizes automatically so it works after versor actions:

coords = alg.extract_point(reflected)
center, radius = alg.extract_sphere(s)
normal, distance = alg.extract_plane(plane)

Geometric classification

alg.classify(mv) returns an EntityInfo dataclass with structured geometric interpretation: kind, grades, nullity, normalization, invariants, geometric data, storage metadata, and warnings.

Recognizes 12 CGA entity types:

  • normalized conformal point
  • conformal point
  • point at infinity
  • dual sphere
  • dual plane
  • direct line
  • direct circle
  • translator candidate
  • even versor
  • generic blade
  • zero multivector
  • unknown multivector

Examples

4 new examples in examples/cga/:

  • cga_primitives.py — all CGA primitives in cga3d and cga2d
  • cga_point_distance_batch.py — batched pairwise distance via inner product
  • cga_classify_overview.py — every primitive through classify()
  • cga_versor_actions.py — translate and reflect with classify before/after

Documentation

  • New docs/cga.rst covering constructors, extraction, and classification
  • Main README overhauled with VGA/PGA/CGA quick start snippets and Supported Algebras table
  • Added examples/inspection/README.md
  • Fixed examples/robotics/README.md
  • 3-pass CGA operations roadmap in plans.md

Verification

uv run ruff check  
uv run mypy

Install

uv pip install amsa-ga

AMSA v0.1.0 — Reference backend, PGA support, and first docs

03 Apr 20:04

Choose a tag to compare

What's in 0.1.0

Core algebra

  • Matrix-free Clifford algebra engine based on bit-pattern blade identifiers
  • AlgebraSpec with signatures, blade naming, lazy basis-product tables, and Cayley tables
  • Presets: vga2d, vga3d, pga2d, pga3d

Layouts & storage

  • MVLayout supporting dense, grade-packed, and sparse-pattern layouts
  • DenseStorage and CSRStorage backends behind a shared MVStorage protocol
  • Explicit backend selection: backend="auto" | "dense" | "csr"

Operators

  • Binary products: geometric, outer, inner, scalar, left/right contraction, regressive
  • Involutions: reverse, involute, conjugate
  • Duality: metric dual() / undual() and metric-free poincare_dual() / poincare_undual()
  • Reverse-based norm(), normalize(), and restricted inverse()
  • PGA helpers: bulk() / weight() splits, bulk_dual() / weight_dual(), bulk_normalize() / unitize()

Execution

  • Cached OpPlan support-driven planning
  • Reference backend consuming dense or CSR inputs with dense output materialization

Documentation & tooling

  • Sphinx documentation under docs/
  • Introductory notebooks: 01_vga_rotors.ipynb and 02_pga_rigid_body.ipynb
  • External visual debugger probe: probes/amsa_lab.py (interactive HTML plan tracing)

Verification

  • pytest, ruff, and mypy all pass
  • Full test coverage for dense and CSR backends

Install from source

amsa is not yet on PyPI. Install the tagged release directly from GitHub:

pip install git+https://github.com/sunkmechie/AMSA.git@v0.1.0

Or clone and install locally (I recommend using uv):

git clone https://github.com/sunkmechie/AMSA.git
cd AMSA
uv sync --extra dev