Ganja.js is a Geometric Algebra code generator for javascript. It generates Clifford algebras and sub-algebras of any signature and implements operator overloading and algebraic constants. Mathematically, an algebra generated by ganja.js is a graded exterior (Grassmann) algebra (or one of its subalgebras) with a non-metric outer product, extended (Clifford) with geometric and contraction inner products, a Poincare duality operator and the main involutions and morphisms. Technically, ganja.js is a code generator producing classes that reificate algebraic literals and expressions by using reflection, a built-in tokenizer and a simple AST translator to rewrite functions containing algebraic constructs to their procedural counterparts. ganja.js now has a nodejs based templated source generator that allows the creation of arbitrary algebras for C++, C#, python and rust. The generated code provides in a flat multivector format and operator overloading.
Features
- Ganja.js enables real math syntax inside javascript, with element, vector and matrix operations
- Complex numbers, dual numbers, hyperbolic numbers, vectors, spacetime events
- Quaternions, dual quaternions, biquaternions or any other Clifford Algebra
- ganja.js now has a nodejs based templated source generator that allows the creation of arbitrary algebras for C++
- The generated code provides in a flat multivector format and operator overloading
- Several algebras are available in pregenerated versions