Can an overloaded vector operator be broadcast?

I should have mentioned in my posted question that ripga2d.jl is a reference implementation. The filename ripga2d.jl is an acronym for Reference Implementation of Projective Geometric Algebra for 2 Dimensional problem space. I’m very grateful to Steven De Keninck for posting at bivector.net PGA reference implementations for C++, C#, Python, and Rust. However, he hasn’t yet posted a PGA reference implementation for Julia. So I w.rote ripga2d.jl and ripga3d.jl.

As a reference implementation, ripga2d.jl is intended to be part of an education environment. The type piracy issue was discussed a couple months ago here, and the operator symbol issue was discussed a couple months ago here, but I think those discussions can be summarized at a high level to be about setting good constraints. And I think good constraints in an education environment are very different from good constraints in a software production environment.

In practice, I have been using ripga2d.jl or ripga3d.jl with GLMakie for a couple months. Although GLMakie brings with it a lot of dependencies, I have not yet noticed a single problem due to type piracy. Concerning the choice of operator symbols, I’m using the same operator symbols that Steven De Keninck uses in his extensive (as far as I know, the world’s largest) collection of geometric algebra example applications. There already are necessary discrepancies between the operator symbols used in those example applications and the operator symbols used in math equations (e.g., in math equations, the geometric product symbol is white space, which gives uncluttered equations but is a parsing problem in programs). In my opinion, in an education environment, the addition of yet another set of operator symbols would be an unnecessary mental friction.

In projective geometric algebra, the number of basis vectors (i.e., the length of the PGA vector) is 2^(n+1) where n is the dimension of the problem space. So the PGA vector length is 8 for 2D, 16 for 3D, 32 for 4D, … (I like to think of the +1 in that n+1 as being necessary to stay “above the fray” of the problem space’s special cases such as gimbal-lock.)