Adv. Appl. Cliﬀord Algebras 27 (2017), 2133–2151
2017 Springer International Publishing
published online March 16, 2017
Applied Cliﬀord Algebras
A Geometric Algebra Implementation using
, Vincent Nozick and Laurent Fuchs
Abstract. This paper presents an eﬃcient implementation of geomet-
ric algebra, based on a recursive representation of the algebra elements
using binary trees. The proposed approach consists in restructuring a
state of the art recursive algorithm to handle parallel optimizations. The
resulting algorithm is described for the outer product and the geomet-
ric product. The proposed implementation is usable for any dimensions,
including high dimension (e.g. algebra of dimension 15). The method is
compared with the main state of the art geometric algebra implemen-
tations, with a time complexity study as well as a practical benchmark.
The tests show that our implementation is at least as fast as the main
geometric algebra implementations.
Keywords. Geometric algebra, Implementation, Binary trees.
In this paper, we present a new method for computing geometric algebra
products. This method is based on a recursive way of presenting the algebra.
Currently, diﬀerent implementations of geometric algebra exist. Gaigen ,
developed by Fontijne and Dorst, is considered as the ﬁrst eﬃcient imple-
mentation of geometric algebra. This library is available in C++. At compile
time, a routine is generated from a speciﬁed geometric algebra. Products are
optimized with respect to the type of multivector, leading to a specialized im-
plementation. The optimized implementation includes specialized multivector
classes and methods for computing geometric algebra products. Specialized
multivectors do not store unspeciﬁed data. Moreover, products between these
multivectors are hardcoded. This leads to a minimization of memory access
and storage. All these optimizations hold when the type of each multivector
is known before the compilation, see Fontijne . Otherwise, a general mul-
tivector class is used. This general multivectorstores only speciﬁed data and