biVector.net   /lib

The libraries listed below are all active, support arbitrary geometric algebras (min 10D, arbitrary metric), and the authors can be contacted on the bivector forum.

These libraries are extensive - for a simple starting point, try our code generator for c++, c#, python, rust

  Clifford

A modern numerical Geometric Algebra library for python with a focus on rapid prototyping and algorithm development. Built on the numpy/scipy stack it allows easy integration with the broader scientific python ecosystem and includes many prebuilt tools and algorithms for common algebras such as CGA, PGA and 3DGA.

Python

-10D

+1,-1,0

Github, PIP, Jupyter

via pyGanja

  GAALOP C++ C# Rust Cuda ...

GAALOP is a GA optimizer that integrates its own GAALOPSCRIPT into a huge amount of languages and platforms. It enables easy inclusion of GA algorithms in existing codebases by converting them to optimized coefficient level expressions and functions. Both web and offline versions are available.

Python, c,
c++, c#,
CUDA, rust,
julia, ...

-32D

+1,-1,0

Github, Web

yes

  Ganja.js C++ C# Rust

A versatile and multiplatform Algebra generator with a focus on education and visualization. Ganja.js produces algebras for a variety of languages and platforms, and includes a low-threshold web based experimentation platform.

JavaScript, C++,
C#, Python, Rust

-32D

+1,-1,0

Github, NPM, Observable

2DPGA, 3DPGA,
2DCGA, 3DCGA, OPNS

  Garamon C++ 

Garamon (Geometric Algebra Recursive and Adaptative Monster) is a generator of Geometric Algebra C++ libraries. From a configuration file, GARAMON generates source code, compatible examples and documentation for the specified Algebra. The generated algebra automatically handles your basis names as well as basis changes for non-diagonal metrics. Garamon focuses on performance and code readability, both for low and high dimensional Geometric Algebras.

C++, Python

-32D

+1,-1,0

Github

no

  Clados JAVA 

Clados is a java library that implements Clifford algebras with up to 15 generators and a specifiable metric. The library supports physical models coding objects as geometry, but has no direct support of particular physical concepts.

JAVA

-16D

+1,-1,[0 soon]

Github

no

  kingdon Python

kingdon is an extremely flexible GA library which aims to play well with the entire Python ecosystem while simultaniously striving to create performant code using Just-In-Time compilation. Whether you want to define your multivectors over numpy arrays, PyTorch tensors, or SymPy symbolic expressions, kingdon can do it all. As a bonus, it comes with ganja.js visualization when used in jupyter notebooks.

Python

-32D

+1,-1,0

Github, PIP, jupyter

via ganja

  Klein C++

Klein is a production ready high performance geometry library for C++. It provides in a hand-optimized SSE implementation of 3D PGA, and can be used as a stand in replacement for libraries like GLM, RTM, MathFu, ...

C++

4D

+1,0

Github

GL/Vulkan

  numga

Numga is a numpy-syntax GA library for the python ecosystem, with support for JAX compilation and other JAX transformations such as autodifferentiation. The primary intended use case is robotics simulation, but it is dimension and signature agnostic.

Python

<32D

+1,-1,0

Github

no

  Versor C++

Versor is a fast, lightweight, generic, cross-platform C++ library for geometric algebras, including Euclidean, Projective, Conformal, Spacetime (etc). The headers generate optimized code at compile-time through template meta-programming. The core of the library is under 200kb and can be used as math-only headers, or as a full application with built-in graphics for quick visualizations.

C++

10D

+1,-1,0

Github

GL/GLES