Gaigen is a program which can generate implementations of geometric algebras. It generates C++ and C source code which implements a geometric algebra requested by the user. The choice to create a program which generates implementations of these algebras was made because we wanted performance similar to optimized hand-written code, while maintaining full generality; for (scientific) research and experimentation, many geometric algebras with different dimensionality, signatures and other properties may be required. Instead of coding each algebra by hand, Gaigen provides the possibility to generate the code for exactly the geometric algebra the user requires. This code may be less efficient than fully optimized hand-written code, but is likely to be much more efficient than one library which tries to support all possible algebras at once. Gaigen supports algebras with a dimension from 0 to 8. The implementation of products used in Gaigen becomes infeasable for dimensions higher than about 7 or 8. For basis vectors, all 3 signatures are supported (-1, 0, +1). It is also possible to create reciprocal pairs of null vectors, which square to 0 with themselves, but to +1 or -1 with the other. 7 basic products are implemented (geometric product, outer product, left and right contraction, scalar product, (modified) Hestenes inner product) plus the outer morphism operator and the delta product. Several useful functions (such as factorization, meet and join) have been implemented. Everything has been designed with memory and time efficiency in mind. It is possible to optimize Gaigen for your platform, application or processor by replacing the lowest computation layer. Gaigen can suggest optimizations for the algebras you generate with it by using the provided profiler function. Benchmarks in a ray tracing application show that Gaigen is 30 to 60 times faster than CLU (C++). In another application, Gaigen was 6000 times faster than Gable (Matlab).
Keywords for this software
References in zbMATH (referenced in 12 articles )
Showing results 1 to 12 of 12.
- Benger, Werner; Heinzl, René; Hildenbrand, Dietmar; Weinkauf, Tino; Theisel, Holger; Tschumperlé, David: Differential methods for multi-dimensional visual data analysis (2015)
- Charrier, Patrick; Klimek, Mariusz; Steinmetz, Christian; Hildenbrand, Dietmar: Geometric algebra enhanced precompiler for C++, OpenCL and Mathematica’s OpenCLLink (2014)
- Fuchs, Laurent; Théry, Laurent: Implementing geometric algebra products with binary trees (2014)
- Pollock, Stuart; Mann, Stephen: Vortex detection in vector fields using geometric algebra (2014)
- Yuan, Linwang; Yu, Zhaoyuan; Luo, Wen; Yi, Lin; Lü, Guonian: Geometric algebra for multidimension-unified geographical information system (2013)
- Fernandes, Leandro A.F.; Oliveira, Manuel M.: A general framework for subspace detection in unordered multidimensional data (2012)
- Schott, René; Staples, G. Stacey: Operator calculus on graphs. Theory and applications in computer science (2012)
- Franchini, Silvia; Gentile, Antonio; Sorbello, Filippo; Vassallo, Giorgio; Vitabile, Salvatore: Fixed-size quadruples for a new, hardware-oriented representation of the 4D Clifford algebra (2011)
- Fontijne, Daniel; Dorst, Leo: Efficient algorithms for factorization and join of blades (2010)
- Hildenbrand, Dietmar; Pitt, Joachim; Koch, Andreas: Gaalop -- high performance parallel computing based on conformal geometric algebra (2010)
- Schott, René; Staples, G. Stacey: Reductions in computational complexity using Clifford algebras (2010)
- Hildenbrand, Dietmar; Zamora, Julio; Bayro-Corrochano, Eduardo: Inverse kinematics computation in computer graphics and robotics using conformal geometric algebra (2008)