<meta content="ganja.js Geometric Algebra for Javascript" property="og:title">
<meta content="website" property="og:type">
<meta content="https://enkimute.github.io/ganja.js/images/ganja_thumb.jpg" property="og:image">
<meta content="https://enkimute.github.io/ganja.js" property="og:url">
<meta content="Geometric algebra for javascript with operator overloading and algebraic literals." property="og:description">

**G**eometric **A**lgebra - **N**ot **J**ust **A**lgebra

![title image](images/ganja_thumb.jpg)

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 automorphisms.)

(**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.)

(**Seriously**, look at the [examples](https://enkimute.github.io/ganja.js/examples/coffeeshop.html)
or play [the wedge game](https://enkimute.github.io/ganja.js/examples/example_game_wedge.html) first.)

[Read more on github .. ](https://github.com/enkimute/ganja.js)