Abstract
Geometric algebra is a powerful mathematical framework that allows us to use geometric entities (encoded by blades) and orthogonal transformations (encoded by versors) as primitives and operate on them directly. In this work, we present a high-level C++ library for geometric algebra. By manipulating blades and versors decomposed as vectors under a tensor structure, our library achieves high performance even in high-dimensional spaces (\(\bigwedge \mathbb {R}^{n}\) with \(n > 256\)) assuming (p, q, r) metric signatures with \(r = 0\). Additionally, to keep the simplicity of use of our library, the implementation is ready to be used both as a C++ pure library and as a back-end to a Python environment. Such flexibility allows easy manipulation accordingly to the user’s experience, without impact on the performance.
Similar content being viewed by others
Notes
Source Code: https://github.com/Prograf-UFF/TbGAL
References
Arsenovic, A., Hadfield, H., Antonello, J., Kern, R., Boyle, Mike: Numerical geometric algebra module for Python. https://github.com/pygae/clifford, (2018)
Breuils, S., Nozick, V., Fuchs, L.: Garamon: a geometric algebra library generator. Adv. Appl. Clifford Algebras 29(4), 69 (2019)
Bromborsky, A.: Symbolic geometric algebra/calculus package for SymPy. https://github.com/brombo/galgebra, (2015)
Camargo, V.S., Castelani, E.V., Fernandes, L.A.F., Fidalgo, F.: Geometric algebra to describe the exact discretizable molecular distance geometry problem for an arbitrary dimension. Adv. Appl. Clifford Algebras 29(4), 75 (2019)
Castelani, E.V.: Library for geometric algebra. https://github.com/evcastelani/Liga.jl, (2017)
Charrier, P., Klimek, M., Steinmetz, C., Hildenbrand, D.: Geometric algebra enhanced precompiler for C++, OpenCL and Mathematica’s OpenCLLink. Adv. Appl. Clifford Algebras 24(2), 613–630 (2014)
Colapinto, P.: Versor: spatial computing with conformal geometric algebra. Master’s thesis, University of California at Santa Barbara, (2011)
De Keninck, S.: Javascript geometric algebra generator for Javascript, C++, C#, Rust, Python
Dijkman, D.H.F.: Efficient implementation of geometric algebra. Ph.D. thesis, Universiteit van Amsterdam, (2007)
Doran, C., Lasenby, A., Lasenby, J.: Geometric Algebra for Physicists. Cambridge University Press, Cambridge (2003)
Dorst, L., Fontijne, D., Mann, S.: Geometric Algebra for Computer Science: An Object-Oriented Approach to Geometry. Morgan Kaufmann Publishers Inc, Burlington (2009)
Fernandes, L.A.F.: GATL: geometric algebra template library. https://github.com/laffernandes/gatl, (2019)
Fernandes, L.A.F., Lavor, C., Oliveira, M.M.: Álgebra geométrica e aplicações, Notas em Matemática Aplicada, vol. 85, SBMAC, 2017, (In Portuguese) (2017)
Fontijne, D.: Implementation of Clifford algebra for blades and versors in \(O(n^{3})\) time. In: Talk at International Conference on Clifford Algebra, May 19–29, (2005)
Fontijne, D.: Gaigen 2: a geometric algebra implementation generator. In: Proceedings of the 5th International Conference on Generative Programming and Component Engineering, pp. 141–150 (2006)
Golub, G.H., Van Loan, C.F.: Matrix Computations, 3rd edn. Johns Hopkins, Baltimore (1996)
Gürlebeck, K., Habetha, K., Sprößig, W.: Holomorphic Functions in the Plane and n-Dimensional Space. Springer Science & Business Media, New York (2007)
Hadfield, H., Hildenbrand, D., Arsenovic, A.: Gajit: symbolic optimisation and JIT compilation of geometric algebra in Python with GAALOP and Numba, Advances in Computer Graphics – Computer Graphics International Conference (CGI) (M. Gavrilova, J. Chang, N. Thalmann, E. Hitzer, and H. Ishikawa, eds.), Springer, (2019)
Hestenes, D.: New Foundations for Classical Mechanics, vol. 15. Springer Science & Business Media, New York (2012)
Hestenes, D., Lasenby, A.N.: Space-Time Algebra. Springer, New York (1966)
Hildenbrand, D., Pitt, J., Koch, A.: Gaalop–high performance parallel computing based on conformal geometric algebra. In: Bayro-Corrochano, E., Scheuermann, G. (eds.) Geometric Algebra Computing, pp. 477–494. Springer, London (2010)
Hitzer, E., Nitta, T., Kuroe, Y.: Applications of clifford’s geometric algebra. Adv. Appl. Clifford Algebras 23(2), 377–404 (2013)
Hudak, P.: Conception, evolution, and application of functional programming languages. ACM Comput. Surv. 21(3), 383–385 (1989)
Leopardi, P.C.: GluCat: Generic library of universal Clifford algebra templates. http://glucat.sourceforge.net/, (2007)
Liberti, L., Lavor, C., Maculan, N., Mucherino, A.: Euclidean distance geometry and applications. SIAM Rev. 56(1), 3–69 (2014)
Nitta, T.: Complex-Valued Neural Networks: Utilizing High-Dimensional Parameters. IGI Global, Hershey (2009)
Perwass, C., Edelsbrunner, H., Kobbelt, L., Polthier, K.: Geometric Algebra with Applications in Engineering. Springer, Berlin (2009)
Perwass, C., Gebken, C., Grest, D.: CluViz: interactive visualization. http://cluviz.de, (2004)
Pythonic Geometric Algebra Enthusiasts.: Symbolic geometric algebra/calculus package for SymPy. https://github.com/pygae/galgebra, (2017)
Reed, M.: Leibniz–Grassmann–Clifford–Hestenes differential geometric algebra multivector simplicial-complex. https://github.com/chakravala/Grassmann.jl, (2017)
Seybold, F.: Gaalet: Geometric algebra algorithms expression templates. https://sourceforge.net/projects/gaalet/, (2010)
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by Leo Dorst
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
This work was sponsored by CNPq-Brazil (Grant 311.037/2017-8) and FAPERJ (Grant E-26/202.718/2018).
Rights and permissions
About this article
Cite this article
Sousa, E.V., Fernandes, L.A.F. TbGAL: A Tensor-Based Library for Geometric Algebra. Adv. Appl. Clifford Algebras 30, 27 (2020). https://doi.org/10.1007/s00006-020-1053-1
Received:
Accepted:
Published:
DOI: https://doi.org/10.1007/s00006-020-1053-1