Boost logo

Boost :

From: Jaap Suter (J.Suter_at_[hidden])
Date: 2003-05-23 11:04:16

> We need both, a traditional as well as a Clifford Algebra library.

I suppose so, although I believe that it will be very hard to come up with a
consensus as to what a traditional library should look like.

> Indeed. However, currently I don't understand the different purposes
> of your library and the GluCat library from Paul Leopardi.

Aside from the superficial differences in the interface, there is only one
big difference; speed. GluCat is to a my Clifford, what uBlas is to a vetor
class that stores its three components directly in the class. GluCat also
targets algebras of higher dimension, where my Clifford library focuses
mainly on algebras with lower dimension. I can theoretically handle
dimensions up to the number of bits in a 'size_t', but our compilers
wouldn't like it. So far, I have tested algebras up to dimension 5. This is
high enough for my purposes anyway, because it allows me to express the
conformal split model.

To make the difference more obvious, what would you use in the following

1. Algebra of dimension 3:

    a. struct some_wrapper_interface { std::vector< float > };
    b. struct some_wrapper_interface { float components_[ 3 ]; }

2. Algebra of dimension 4658:

    a. struct some_wrapper_interface { std::vector< float > };
    b. struct some_wrapper_interface { float components_[ 4658 ]; };

It's a matter of size and speed, depending on the context.

> Is their
> any colaboration behinde the scene?

Well, me and Paul have had some discussions back and forth, but lately I
haven't been able to spend much time on it anyway. We both acknowledged the
different target audiences of our libraries IIRC.

> Wouldn't it be fine to bundle
> efforts into one future Boost Cliffort Algebra Library?

That would of course be the ideal situation. However, I predict that this
will be a very difficult effort, due to the different requirements. Some
people want speed, some people want expressiveness, some people want
flexibility, some people want high-dimensions. Both GluCat and my Clifford
go a long way in providing as much as possible of all of the above, however
sacrifices have to be made at some point (in my experience that is. There
can of course always be some design that we haven't though of that allows us
to do everything).

> Is there any
> communication to the other people working on the topic, especially
> the Gaigen group?

I have had a lot of discussion with Daniel Fontijne, one of the authors of
Gaigen. Mostly because I am porting his raytracer to use my library. As far
as I know, Gaigen is no longer under active development. Instead, Daniel was
thinking about working on a language (extension?) with built in support for
geometric algebra. That would allow the compiler to gain a better
understanding of what's happening, resulting in faster/smaller code. I
explained to him that that is exactly what my Clifford is doing at the
moment, albeit uising some rather tricky and convoluted template
meta-programming. Perhaps language support would be a lot nicer, but it
wouldn't be C++ anymore, would it :).

I am open for all suggestions that allow me to improve my library. There is
still some work to be done, but the beta-framework is downloadable on my
website and you can have a look at the unit-tests to see how to use it.


Jaap Suter

Boost list run by bdawes at, gregod at, cpdaniel at, john at