Regressive product in /tool calculator

Hello,
I’m new to PGA and I’m using the tool calculator on this website. My understanding is that the regressive product is (a* ^ b*)*, where ∗ denotes the dual and ^ denotes the wedge product. However, when using the calculator with this example (in 2D-PGA):

!(!(e2+e1-3e01+2e20+e12) ^ !(e012-7e01 + 2e20 +3e12))

I got a different result compared to:

(e2+e1-3e01+2e20+e12) & (e012-7e01 + 2e20 + 3e12).

Where is my mistake? Only the vector part is different, but it should be the same regardless.

Thx, Michael

Here is how to verify this result with Grassmann.jl

julia> using Grassmann

julia> basis"3"
(⟨111⟩, v, v₁, v₂, v₃, v₁₂, v₁₃, v₂₃, v₁₂₃)

julia> !(v3+v2-3v12-2v13+v23)∧!(v123-7v12-2v13+3v23)
0 + 1v₁ + 2v₂ - 3v₃ - 3v₁₂ + 1v₁₃ - 8v₂₃ - 5v₁₂₃

julia> !((v3+v2-3v12-2v13+v23)∨(v123-7v12-2v13+3v23))
0 + 1v₁ + 2v₂ - 3v₃ - 3v₁₂ + 1v₁₃ - 8v₂₃ - 5v₁₂₃

My software has had bugs and mistakes in the past due to the evolving source code changes, but it the principles are based on the Grassmann laws, which you can verify with the example I just gave.

First of all, you are slightly misunderstanding the statement of the law, my example shows the correct form. Aside from the form of the law, the definitions used by some people may not be compatible with the Grassmann laws, as I discussed before.

It could be that some other libraries or software make mistakes or use definitions which are incompatible with the Grassmann laws, which I have pointed out is the case.

If I understood you correctly, you confirmed that the expression evaluator here on bivector.com uses a—how should I put it—misleading implementation of the regressive product. In your code, the statement !(a & b) = (!a ^ !b) holds for all multivectors a and b, at least for the given algebra, but on Bivector, it does not? To me, that’s more than just a matter of definition, like the order of indices or similar details. On the other hand, I just read that for algebras where a base vector squares to zero, the definition of a dual, as well as the wedge and other products, is not straightforward, though I don’t fully grasp it yet. Anyway, I will take a look at your source to find the relevant definitions, and thanks for the reply.

Indeed, I consider Doran and Dorst and DeKenninck as very beginner level geometric algebra practitioners, they are using inconsistent definitons, which misleads other people, and I have demonstrated this issue for many years now, and these people still think this issue is not important for science. I think such a minor detail is extremely important, which is why i discuss it and also publish my own variant of geometric algebra.

You can either modify the complement by the metric or not, if you use the metric, then the 0 will make some values zero of course. Wedge product would not be affected by this metric at all.

Alas, educational materials here are pretty messed up.

  1. !(a) is shorthand for (a).Dual.
  2. (a).Dual transforms hyperplane into pseudo point.
  3. (a).UnDual transforms pseudo point into hyperplane.
    In 3D PGA (1e123).UnDual != (1e123).Dual.
    So a is not !(!a).
  4. This calculator works on ganja.js which was made to support different types of GA.
    So ganja.js has general definition of join operation used by CGA:
    a & b == (b.UnDual ^ a.UnDual).Dual
  5. In PGA this definition was replaced with (a.UnDual ^ b.UnDual).Dual to make PGA an extension of homogeneous coordinates for facilitating its adoption in computer graphics.
    Here you undualize pseudo points into hyperplanes and meet them into the hyperline and then dualize it into pseudo line passing through our 2 pseudo points.
  6. To use “&” for PGA in this calculator you need to swap the arguments
    join(a, b) == b & a.
  7. In ganja.js join operation for PGA can be defined like this:
    var join = (a, b) => (a.UnDual ^ b.UnDual).Dual;

If you want to use PGA you can study these materials directly:

  1. https://bivector.net/PGA4CS.pdf
  2. https://bivector.net/PGAdyn.pdf

Sorry, but this is not educational material, this is misleading information that is inconsistent with the theorems of mathematics.

This is completely unacceptable.

These people would not have been allowed to get a PhD under my supervision, until they actually learned mathematics. These are people who didnt fully comprehend what they are talking about.

These are not consistent and coherent definitions, and so completely unacceptable to mathematicians.

You can go ahead and live in your alternate universe, but dont expect mathematicians to take you seriously. The only people who worship you are the people who have less knowledge than you. People with greater knowledge of mathematics find your definitions completely unacceptable.