- Join over
**1.5M+ people** - Join over
**100K+ communities** - Free
**without limits** - Create
**your own community**

Conformal geometric algebra in Julia, https://github.com/chakravala/Grassmann.jl

```
julia> 10E30 + -10E30 + 1
1.0
julia> 10E30 + (-10E30 + 1)
0.0
```

cool! I'll probably drop offline and let you handle it :) hope this was useful

want to post on discourse when you found it?

Hi! Please excuse my ignorance, I'm currently learning about Grassmann algebra and certainly don't grasp much of the subtlety. I'm reading Dorst & Mann, Geometric Algebra for Computer Science. There, they define an inner product called the contraction product, "⌋", defined implicitly as (X ∧ A) * B = X * (X ⌋ B). What does this correspond to in Grassman.jl? I see there is an inner product "⋅" defined, are these the same? As I work through the book, I'd like to play along using Grassmann.jl to build intuition. Thanks!

So, in

`Grassmann`

I have provided both the left and right contractions, but I personally consider the right contraction more fundamental than the left one, while Dorst considers the left more important and fundamental. In the package, I provide both methods, but have made the right contraction default when `⋅`

is used at the moment.
Thank you for the quick reply! What's a recommended way to explore the available products? Browsing

`algebra.jl`

is currently a little overwhelming for me. Let me know if you're interested in docs PRs, I'm happy to contribute as I stumble along. Thanks for such a cool package, I'm really looking forward to using it more.
Direct sum not tensor product

Everything works great!

I will be very interested in optimizations in higher dimensions.

The newer

`SparseChain`

and `MultiGrade`

types will help with that, but it takes a significant amount of extra effort to incorporate those in a type stable way, if you'd like to encourage me please consider donating at https://liberapay.com/chakravala
One more question: I'm interested in constructing quotient algebras, subject to certain (one-sided) equivalence relations (e.g. MSTA is really $\mathcal{Cl}(\mathbb{R}^n_{1,3})/Q$). Is it possible to do this with your library? I imagine this is much more complicated to implement, but thought I'd ask, since the implementation seems quite solid.

Err MSTA is actually a right quotient algebra, in which case $a \sim b \iff p(a - b) = 0$ and $a-b \neq 0$

i imagine that's not particularly performant

I only need one instance of the class, so I only need

`v123`

and don't need a representation for `v231`

in my calculations, I automatically make sure the indices are sorted, so I always use the increasing order, requiring a single element for from the equivalence class for representation

so yes, I imagine it would be less performance if I had to also account for the other equivalent representations (for exterior algebra)

also, note that if you read my paper, the foundations I use are built up in a (innovative in my opinion) way that is different from the Clifford algebra constructions you may be used to, I am using a system I call "differential geometric algebra" and it is based on a generalization of the Clifford product, which I call the *geometric algebraic product*, which is a slightly more general definition

I've invited people to comment on the foundations of differential geometric algebra on the forumhere https://discourse.bivector.net/t/differential-geometric-algebra-using-leibniz-grassmann/27