On this page, you can find a list of software related to Geometric Algebra. The list is ordered alphabetically with descriptions and links to each software web page. The GA Explorer website welcomes all GA software designers to send or update a description of their GA software to be added to this list.
Cinderella
- Authors:
- Jürgen Richter-Gebert (https://www-m10.ma.tum.de/bin/view/Lehrstuhl/RichterGebert)
- Ulrich Kortenkamp (http://didaktik.mathematik.uni-halle.de/lehrende/ehemalige_angehoerige/kortenkamp/)
- Software Homepage: https://www.cinderella.de/tiki-index.php
- Code Base: Java
- Documentation: https://doc.cinderella.de/
Cinderella, a proprietary interactive geometry software, written in Java programming language. Interactive geometry and analysis takes place in the realm of euclidean geometry, spherical geometry or hyperbolic geometry. It includes a physics simulation engine (with real gravity on Apple computers) and a scripting language. An export to blog feature allows for a 1-click publication on the web of a figure. It is currently mainly used in Universities in Germany but its ease of use makes it suitable for usage at primary and secondary level as well.
CLIFFORD
- Authors:
- Rafal Ablamowicz (http://math.tntech.edu/rafal/)
- Bertfried Fauser (http://www.isg.rhul.ac.uk/bfauser/index.html)
- Software Homepage: http://math.tntech.edu/rafal/
- Code Base: Maple
- Documentation: http://math.tntech.edu/rafal/
CLIFFORD – A Maple Package for Clifford Algebra Computations.
Clifford algebra for CAS Maxima
- Author: Dimiter Prodanov (https://www.researchgate.net/profile/Dimiter_Prodanov/)
- Software Homepage:
- Code Base: Maxima
- Documentation: https://github.com/dprodanov/clifford/tree/master/documentation
The clifford package relies extensively on the Maxima simplification functionality, and its features are fully integrated into the Maxima simplifier. The clifford package defines multiple rules for pre- and post-simplification of Clifford products, outer products, scalar products, inverses and powers of Clifford vectors. Using this functionality, any combination of products can be put into a canonical representation.
Clifford Multivector Toolbox for MATLAB
- Authors:
- Steve Sangwine (http://privatewww.essex.ac.uk/~sjs/)
- Eckhard Hitzer (http://erkenntnis.icu.ac.jp/)
- Software Homepage:
- Code Base: Matlab
- Documentation: Included with Software
This is a toolbox (software library) for computing with matrices of Clifford algebra multivectors in MATLAB. It is designed to handle numerical computations with matrices as far as these are defined for matrices of multivectors. The toolbox is designed to work in the same way as MATLAB’s own functions by overloading standard MATLAB functions with Clifford multivector versions. The toolbox can compute with any Clifford algebra with signature (p,q,r) but only with one algebra at a time. It is possible to iterate over algebras (switching between algebras is quite quick) and existing variables are not destroyed when switching to a new algebra (although such variables cannot be used under the new algebra – any attempt to do so is detected and will raise an error).
CLUCalc/CLUViz
- Author: Christian Perwass (https://www.researchgate.net/profile/Christian_Perwass)
- Software Homepage: http://www.clucalc.info/
- Code Base: C++, C#
- Documentation: Included with Software
CLUCalc/CLUViz, a freely available software tool for 3D visualizations and scientific calculations that was conceived and written by Dr. Christian Perwass. CLUCalc interprets a scripting language called ‘CLUScript’, which has been designed to make mathematical calculations and visualizations very intuitive.
Highlights of CLUViz 6.1:
- Easy creation of interactive visualizations for geometry, physics, human machine interfaces, image processing and more.
- Direct programming of shaders from within CLUScripts using the OpenGL shading language, for image processing and fast mathematical calculations.
- Run CLUViz visualizations from within your own C++ or C# programs using the CLUViz or CLUVizNET DLL.
GA20 and GA30 (Formerly called pauliGA)
- Author: Peeter Joot (http://peeterjoot.com/) and (https://peeterjoot.wordpress.com/)
- Software Homepage: https://github.com/peeterjoot/gapauli
- Code Base: Wolfram Mathematica
- Documentation: https://github.com/peeterjoot/gapauli/blob/master/pauliGA.pdf
The author Peeter Joot describes his implementation as:
This implementation uses Pauli matrices under the covers, but is a hybrid implementation where the geometric elements are stored as (grade, multivector) pairs, which allow for optimized versions of a number of the operators when the grade is fixed and known.
Because Pauli matrices are used, this is clearly not a general implementation (only R^3). I’m also reinventing the wheel in a sense since there’s also a more general implementation available for Mathematica ( http://www.fata.unam.mx/investigacion/departamentos/nanotec/aragon/software/clifford.m, https://arxiv.org/pdf/0810.2412v1.pdf ). However, that implementation causes the Mathematica front end to hang when I try it.
This was my first attempt at creating a Mathematica package, so there’s probably things that should be tweaked, but it all appears to work, allowing symbolic and numeric GA operations.
Along with the packages, are two notebooks testGA20.nb, and testGA30.nb, which contain the help text, test suite, and display of the various operator multiplication tables (a manual/visual test of sorts to ensure that the grade selection and display function works).
Gaalet
- Author: Florian Seybold
- Software Homepage: https://sourceforge.net/projects/gaalet/
- Code Base: C++
- Documentation: http://gaalet.sourceforge.net/files/gaalet_paper_HighEndVizWorkshop2010.pdf
Gaalet – Geometric Algebra ALgorithms Expression Templates. C++ library for evaluation of geometric algebra expressions offering comfortable implementation and reasonable speed by using expression templates and metaprogramming techniques.
Gaalop
- Author: Dietmar Hildenbrand (http://www.gaalop.de/dhilden/)
- Software Homepage: http://www.gaalop.de/
- Code Base: Java (https://github.com/CallForSanity/Gaalop)
- Documentation: http://www.gaalop.de/documentation/
Gaalop (Geometric Algebra Algorithms Optimizer), a software to optimize geometric algebra files. Algorithms can be developed by using the freely available CLUCalc software by Christian Perwass. Gaalop optimizes the algorithm and produces C++, C++ AMP (Accelerated Massive Parallelism), OpenCL, CUDA, CLUCalc or LaTeX output.
There are currently two versions of Gaalop. A GUI based standalone version, that allows for quick and easy experiments and a more development-focused variant named Gaalop Precompiler. The Gaalop Precompiler is a solution for the easy integration of GA algorithms into programming languages such as C++, C++ AMP (Accelerated Massive Parallelism), OpenCL, and CUDA.
GABLE
- Authors:
- Leo Dorst (https://staff.fnwi.uva.nl/l.dorst/)
- Stephen Mann (http://www.cgl.uwaterloo.ca/smann/index.html)
- Software Homepage: https://staff.fnwi.uva.nl/l.dorst/GABLE/index.html
- Code Base: Matlab
- Documentation: https://staff.fnwi.uva.nl/l.dorst/GABLE/index.html
GABLE – A Matlab Geometric Algebra tutorial prototype system. GABLE was a prototype geometric algebra system. The prototype was successful, but the authors have moved on to C++ and Java libraries for geometric algebra.
Gaigen
- Author: Daniel Fontijne (https://www.linkedin.com/in/daniel-fontijne-2a11751b/) and (https://www.researchgate.net/profile/Daniel_Fontijne)
- Software Homepage:
- Old Homepage: http://www.science.uva.nl/research/ias/ga/gaigen/content_gaigen.html
- New Homepage and Binaries: https://sourceforge.net/projects/g25/
- Code Base: C++ (https://github.com/Sciumo/gaigen)
- Documentation: https://github.com/Sciumo/gaigen/blob/master/manual/g25_user_manual.pdf
The author describes Gaigen as:
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 2.5 is the latest version of the Gaigen software. It is a code generator for geometric algebra. Currently supported languages are C, C++, C# and Java. Matlab support is under development.
GAlgebra
- Author: Alan Bromborsky
- Software Homepage: https://galgebra.readthedocs.io/en/latest/
- Code Base: Python (https://github.com/pygae/galgebra)
- Documentation:
GAlgebra is an implementation of a geometric algebra module in python that utilizes the sympy symbolic algebra library. The python module GA has been developed for coordinate free calculations using the operations (geometric, outer, and inner products etc.) of geometric algebra. The operations can be defined using a completely arbitrary metric defined by the inner products of a set of arbitrary vectors or the metric can be restricted to enforce orthogonality and signature constraints on the set of vectors. In addition the module includes the geometric, outer (curl) and inner (div) derivatives and the ability to define a curvilinear coordinate system. The module requires the numpy and the sympy modules.
GALua
- Author: Spencer T. Parkin
- Software Homepage: http://spencerparkin.github.io/GALua/
- Code Base: C++ (https://github.com/spencerparkin/GALua)
- Documentation: http://spencerparkin.github.io/GALua/howto.html
GALua is a Lua module written in C++ adding support for GA (geometric algebra). The goal of the GALua module is to endow the Lua programming language with support for GA data-types (i.e. multivectors.)
Ganja.js
- Author: Steven De Keninck (https://enkimute.github.io/)
- Software Homepage: https://github.com/enkimute/ganja.js
- Code Base: JavaScript
- Documentation: https://github.com/enkimute/ganja.js
- Interactive Examples: https://enkimute.github.io/ganja.js/examples/coffeeshop.html
Ganja.js is a Geometric Algebra code generator for javascript. It generates Clifford algebras and sub-algebras of any signature and implements operator overloading and algebraic constants.
Ganja.js makes doing Geometric Algebra in your browser easy and fun. Its inline syntax and graphing make math in the browser feel like .. math.
- Operator overloading
- Algebraic constants
- Supports any metric (positive, negative, zero)
- smallish (177 lines)
- matrix-free inverses up to 5D.
- geometric, inner (contraction), outer (wedge) and vee product
- conjugate, Reverse, Involute, Dual (Poincare), Negative
- 4 API’s (inline, asciimath, object oriented, functional)
- Easy graph function for 1D and 2D functions and Projective 2D and 3D elements.
- There’s a game that teaches you how to use ganja.js !
GA Sandbox
- Author: Daniel Fontijne (https://www.linkedin.com/in/daniel-fontijne-2a11751b/) and (https://www.researchgate.net/profile/Daniel_Fontijne)
- Software Homepage:
- Code Base: C++ (https://github.com/Sciumo/gasandbox)
- Documentation:
GA Sandbox is a library providing geometric algebra implementations for geometric algebras. It comes with many programming examples. It is the software companion to the book “Geometric Algebra for Computer Science”.
GAViewer
- Authors:
- Leo Dorst (https://staff.fnwi.uva.nl/l.dorst/)
- Daniel Fontijne (https://www.linkedin.com/in/daniel-fontijne-2a11751b/) and (https://www.researchgate.net/profile/Daniel_Fontijne)
- Stephen Mann (http://www.cgl.uwaterloo.ca/smann/index.html)
- Software Homepage:
- Code Base: C++
- Documentation: http://www.cgl.uwaterloo.ca/smann/GA/downloads/gaviewer.pdf
The Authors describe GAViewer as:
GAViewer is a multi-purpose program for performing geometric algebra computations and visualizing geometric algebra. Some possible uses are:
- Visualizing geometric algebra output from other programs.
- Interactively performing GA computations and visualizing the outcome.
- Presenting lectures, slideshows, doing tutorials, demonstrations, with (interactive) geometric algebra animations.
- Rendering (hi-res) images of GA objects for use in papers.
- Debugging other programs using geometric algebra.
We do not consider GAViewer appropriate for implementing ‘serious’ applications. The internal (interpreted) programming language is too slow and limited for such purposes.
GAViewer has outgrown its original purpose. We initially created GAViewer as a small program for visualizing GABLE/Matlab output because we weren’t satisfied with the Matlab graphics. Then we wanted to have a typesetting system for labels and support for slideshows. After some time the desire rose to add a console for interactive computations inside the viewer. After a console was added, we wanted to have functions and batches. Then dynamic statements were added. The latest additions include animations based on dynamic statements and scalar controls.
GAwxM
- Author: Stephen Abbott
- Code Base: Maxima (https://github.com/stephenathel/gawxm)
- Documentation: https://github.com/stephenathel/gawxm/blob/master/readme.pdf
It has been found that wxMaxima (a front-end for the Maxima computer algebra system) can be used to develop Maxima code functions for Geometric Algebra.
The code was developed from the online published paper, A Survey of Geometric Algebra and Geometric Calculus, and examples from Projective Geometry and Space-time Algebra were coded.
Worked examples have been taken from the reference books…Linear and Geometric Algebra (LAGA) and Vector and Geometric Calculus (VAGC) as far as the Fundamental Theorem of Geometric Calculus. Each replicated result helped to validate the GAwxM syntax and to some extent, the theorems themselves.
GluCat
- Author: Paul Leopardi (http://maths-people.anu.edu.au/~leopardi/)
- Software Homepage: https://sourceforge.net/projects/glucat/
- Code Base: Python and C++
- Documentation:
GluCat is a generic library of C++ templates that implement universal Clifford algebras over the field of real numbers.
The PyClical extension module for Python gives users an easy Python scripting interface for calculations in Clifford algebras. The name PyClical is an homage to Pertti Lounesto’s CLICAL.
Features
- Numerical computation with real Clifford algebras
- Base algebra dimensions limited only by word size
GMac
- Author: Ahmad Hosny Eid (https://ga-explorer.netlify.com/)
- Software Homepage: https://github.com/ga-explorer/GMac
- Code Base: C# and Wolfram Mathematica
- Documentation: https://gmac-guides.netlify.com/
GMac (short for Geometric Macro) is a sophisticated software system for GA-based model prototyping and efficient code composition for the .NET platform. The user can describe a model based on common GA operations using the simple GMacDSL and then investigate the model using GMac Scripting engine with Wolfram Mathematica in the background. The user can also create a custom process for composing efficient computational code from the GA model using the powerful GMacAPI for any desired target programming language.
SpaceGroupVisualizer
- Authors:
- Christian Perwass (https://www.researchgate.net/profile/Christian_Perwass)
- Eckhard Hitzer (http://erkenntnis.icu.ac.jp/)
- Software Homepage: http://spacegroup.info/
There exist 230 symmetry space groups in 3D space, which are shown as 2D projections in the ITC Tables Volume A. The SpaceGroupVisualizer is a visualisation software that is the perfect addition to the ITC Tables Volume A, as it visualizes all 230 space groups in 3D, lets you freely rotate and move the crystal cells, offers real 3D impressions with Green/Magenta or Red/Cyan glasses, lets you select subsets of symmetries and animates the effect of symmetries on the unique cell elements. The SpaceGroupVisualizer, therefore, allows you to get a good grasp on the symmetry structure of a space group much more easily.
The GrassmannAlgebra package
- Author: John Browne (https://sites.google.com/site/grassmannalgebra/)
- Software Homepage: https://sites.google.com/site/grassmannalgebra/thegrassmannalgebrapackage
- Code Base: Wolfram Mathematica
- Documentation: https://sites.google.com/site/grassmannalgebra/thegrassmannalgebrapackage
The GrassmannAlgebra package, a computer algebra package written in Mathematica’s programming language. You will need Mathematica to run it.
Versor
- Author: Pablo Colapinto (http://www.wolftype.com/a/grid_x.html)
- Software Homepage: http://versor.mat.ucsb.edu/
- Code Base: C++ (https://github.com/wolftype/versor)
- Documentation: http://wolftype.github.io/versor/devel/html/
Versor is a C++ Library for Geometric Algebra, sometimes called Clifford Algebra, a mathematical system for encoding geometric concepts numerically.
The headers generate optimized code at compile-time through template metaprogramming. The core of the library is under 150kb, and supports arbitrary dimensions and metrics (limited by your compiler…).
The library can be used as a math-only, or as an application with built-in graphics. Both OpenGL and OpeGLES draw routines are supported.
Features:
- Generic: The headers generate optimized code at compile-time through template metaprogramming.
- Lightweight: The core of the library is under 150kb, and supports arbitrary dimensions and metrics (limited by your compiler…).
- Fast: All combinatorics are sorted out by the compiler.
- Visualized: Most geometric algebra types can be drawn in either OpenGL or OpenGLES.
- Horizontal: The Math library is completely independent of the Rendering library.
- Expressive: Many key algorithms are included
- Documented, in Active Development, and open source