by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Dream Scatter
    @chakravala
    hmmm thats a great observation though, with integer vs float, I'm gonna think about it
    Timo Kluck
    @tkluck
    i.e. something akin to
    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?
    Dream Scatter
    @chakravala
    yes, I will update discourse if I figure it out, please do keep investigating if you would like to help again, thanks!
    Dream Scatter
    @chakravala
    @tkluck by the way, you will get the one(::Type{Any}) method available if you also using Reduce, Grassmann, that might help resolve some of the other issues with BigFloat in Grassmann, I will try to improve support for it though
    David Millard
    @dmillard
    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!
    Dream Scatter
    @chakravala
    Thank you for joining, indeed Grassmann has that contraction product, which is the < operator. That is also known as the left contraction... alternatively you can use the right contraction > instead (or alternatively).
    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.
    David Millard
    @dmillard
    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.
    Dream Scatter
    @chakravala
    You're welcome to make documentation PR's if you really want to. Most of it is documented in DropBox
    David Millard
    @dmillard
    This is what I was looking for - somehow I missed it. Thanks!
    Dream Scatter
    @chakravala
    Just committed some basic doc strings to initialize the documentation
    Luke Burns
    @lukeburns
    @chakravala can I construct a clifford algebra over a tensor product of vector spaces with a custom inner product?
    Luke Burns
    @lukeburns
    I'm interesting in working with Doran/Lasenby's multiparticle spacetime algebra: Cl(R1,3n)Cl(\mathbb{R}^n_{1,3}) with the inner product v2=vμivνjημνδijv^2 = v_\mu^i v_\nu^j \eta^{\mu \nu} \delta_{i j}
    Dream Scatter
    @chakravala
    yes, the inner product can be customized based on a metric with the DirectSum package. you can add up to 64 indices, but the product operations have not been fully optimized for sparsity at very high dimensions yet
    Luke Burns
    @lukeburns
    Thanks, realize it's just Cl(Rn,3n)\mathcal{Cl}(\mathbb{R}_{n,3n})
    Direct sum not tensor product
    Dream Scatter
    @chakravala
    Have you tried @basis ℝ'⊕ℝ^(3n) for that yet?
    Luke Burns
    @lukeburns
    Yeah just went with e.g. @basis V"++------"
    Everything works great!
    Dream Scatter
    @chakravala
    You can also use basis"++------" or @basis ℝ^2⊕(ℝ^6)' there are multiple ways
    Luke Burns
    @lukeburns
    Ah! thx
    Dream Scatter
    @chakravala
    Let me know your feedback, there are lots of improvements planned, although I have taken a break recently
    Luke Burns
    @lukeburns
    Will do.
    I will be very interested in optimizations in higher dimensions.
    Dream Scatter
    @chakravala
    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
    Luke Burns
    @lukeburns
    Done. Great work!
    One more question: I'm interested in constructing quotient algebras, subject to certain (one-sided) equivalence relations (e.g. MSTA is really Cl(R1,3n)/Q\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.
    Luke Burns
    @lukeburns

    E.g. The equivalence relation: for a,bCl(R1,3n)a,b \in \mathcal{Cl}(\mathbb{R}^n_{1,3}),

    ab    (ab)p=0a \sim b \iff (a - b)p = 0 and ab0a-b \neq 0

    for some pp that generates the left principal ideal QQ

    Dream Scatter
    @chakravala
    Could you give me a more detailed construction of it?
    Luke Burns
    @lukeburns
    \neq ^
    Err MSTA is actually a right quotient algebra, in which case ab    p(ab)=0a \sim b \iff p(a - b) = 0 and ab0a-b \neq 0
    Dream Scatter
    @chakravala
    well, I imagine at the very least you would be able to define such an equivalence relation in Julia which checks that condition
    Luke Burns
    @lukeburns
    hmm. does your implementation actually generate geometric algebras by quotienting tensor algebras by a quadratic form?
    Dream Scatter
    @chakravala
    while I have theoretically based my algebras on the foundations of the equivalence relations discussed in my paper, I don't have an actual equivalence relation defined in Julia, this is just a theoretical foundation to help explain how to step-by-step derive the theory
    Luke Burns
    @lukeburns
    gotcha
    i imagine that's not particularly performant
    Dream Scatter
    @chakravala
    in reality, I only ever deal with tensors with ordered indices, so I always have an increasing index like v123 for example, which is equal to v231 by the equivalence relation, but there is no need to create a separate instance of the class
    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)
    Luke Burns
    @lukeburns
    I see
    Dream Scatter
    @chakravala
    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
    Timo Kluck
    @tkluck
    @chakravala It looks like the stable link on the announce post is broken, is that possible?
    Dream Scatter
    @chakravala
    @tkluck yes that is broken, the stable docs never got generated when I pushed v0.4 and I don't know why yet, maybe you can figure out why, but the /dev docs are indeed available
    Dream Scatter
    @chakravala
    @tkluck the stable docs have now been fixed as of v0.5 by the way