Tclifford - a new GA crate for Rust

This crate is specifically designed for support of high-dimensional algebras of arbitrary signatures.
In order to define an algebra type, just use the declare_algebra! macro and specify the signature, and optionally the generator names. For example:

declare_algebra!(PGA3, [+,+,+,0], ["x", "y", "z", "n"]);
type MV = Multivector<f64, PGA3>; // A multivector type
type SMV = SparseMultivector<f64, PGA3>; // A sparse multivector type

The biggest feature of this crate distinguishing it from other GA libraries is support for a variation of Fast Fourier Transform, making geometric multiplication of high-dimensional multivectors asymptotically faster.

Multiplication of dense multivectors in up to 20 dimensions can be handled in reasonable time thanks to it. In 6 dimensions and higher, just use:

//let c: MV = &a * &b;                  // SLOW
let c: MV = (a.fft() * b.fft()).ifft(); // FAST

All while being able to handle arbitrary (including degenerate) signatures.

Currently, the crate is in early stages of development, and so far I don’t guarantee any stable API beyond the basic arithmetic operations.
I am interested in any feedback on what to change about this API before stabilizing it.
Documentation can be generated via cargo doc in the cloned repo.

2 Likes

tclifford v0.1.0 has been published!

https://crates.io/crates/tclifford

You can use it by just adding

tclifford = "0.1.0"

dependency to your Cargo.toml

Docs are available at

For any bugreports please create an issue on github, or just post in this thread.

1 Like