I’m wondering what I should implement as the conjugate. If you view a multivector as a complex number then you want all grades that square to -1 to be negated in the conjugate. This is the same sign as the reverse of a blade after restoring index ordering. This seems reasonable.
I’ve seen that the Clifford Conjugate is also an option, where the sign for each grade n is -(1)^{n*{n+1}/2} what is the motivation for using this as the conjugate? I’m guessing it has something to do sandwich operators.
I’m implementing this in Julia. If you implement your Number type carefully in julia you get a tremendous amount “for free”. Since and their conj method there is defined as the complex conjugate, I think I’m going with reversion. However, it’s also called from when taking the Adjoint of a matrix. In that case I want conj to return the adjoint of the multivector considered as a linear functional/transform in an inner product space? What inner product? *head explodes*
While I can not help you with Julia specific details, here are some thoughts on the various involutions and my opinion on a good one to pick for the ~ operator.
The Clifford Conjugation can be seen as a combination of the main involution and the reversion. (where the main involution is defined by exchanging every generator with its negative, and the reversion by reversing the generator order in each basis blade).
For many use cases there is no difference, for example for elements of the even subalgebra in \mathbb R_2, \mathbb R_3, \mathbb R_{4,1}, … both produce the same result. I am however in favor of reserving the ~ operator for the Clifford Conjugate for the following reasons :
When one wants to use \mathbb R_{1}, \mathbb R_{0,1}, \mathbb R_{0,0,1} to represent hyperbolic, complex and dual numbers respectively, only the Clifford Conjugate will match with the expected behavior of conjugation in those algebras.
The same argument holds for the isomorphy between the quaternions and \mathbb R_{0,2}, where again only the Clifford Conjugate will behave like the quaternion conjugation.
When sandwiching with a vector to encode a reflection, using the Clifford conjugate removes a minus sign in e.g. CGA, and unifies the representation of reflections and other transformations.
There are by the way other involutions that are needed e.g. when computing general inverses for multivectors (e.g. in 4D one needs an involution that swaps the signs of grades 3 and 4).
The formula for the inverse x^{-1} of a general multivector x in any 4D algebra then becomes :