Clifford algebra

Proponents of Geometric algebra and Geometric calculus promote the view that these approaches unify, simplify, and generalize vast areas of mathematics that involve geometric ideas. Clifford algebras provide natural generalizations of complex, dual and double numbers into the concept of Clifford numbers. It is then natural to use existing (CAS) to implement various geometric algebra instances and provide them as tools for science and engineering.

William Clifford invented his algebras in 1876 as an attempt to generalize the quaternions to higher dimensions. Clifford algebra unifies all branches of physics, and has found rich applications in robotics, signal processing, ray tracing, virtual reality, computer vision, vector field processing, tracking, geographic information systems and neural computing.

Clifford algebra for Maxima

Clifford is a lightweight package for performing Geometric Algebra calculations. It is based on an elementary symbolical construction of the Clifford algebra.

Maxima is a system for the manipulation of symbolic and numerical expressions, including differentiation, integration, Taylor series, Laplace transforms, ordinary differential equations, systems of linear equations, polynomials, sets, lists, vectors, matrices and tensors. Maxima yields high precision numerical results by using exact fractions, arbitrary-precision integers and variable-precision floating-point numbers. Maxima can plot functions and data in two and three dimensions. Every Maxima expression is simultaneously also a $\lambda$-construct and its value is the value of the last assigned member. The Maxima language is based on the ideas of functional programming, which is particularly well suited for transformations of formal mathematical expressions.

The package was inspired by the atensor package for Maxima (courtesy to Viktor Toth).


To run the package clone the repository and add the folder to Maxima by executing commands

file_search_demo: append (file_search_demo,["/path/to/folder"]);

file_search_maxima: append (file_search_maxima,["/path/to/folder"]);

Then you can run a demo by typing demo("clifford.dem");

A simple demo

(%i2) load("clifford")$
\[\mbox{}\\package\,name:\,clifford.mac\mbox{}\\author:\,Dimiter\,Prodanov\mbox{}\\version:\mathit{v20}\mbox{}\\Recommended\,location:\,share/contrib\mbox{}\\last\,update:\,2\,Jul\,2016\]
(%i3) clifford(e,0,2);
\[\mathrm{\tt (\%o3) }\quad [-1,-1]\]
(%i4) e[2].e[1];
\[\mathrm{\tt (\%o4) }\quad -{{e}_{1}}\mathit{ . }{{e}_{2}}\]
(%i7) mtable2();
\[\mathrm{\tt (\%o7) }\quad \begin{pmatrix}1 & {{e}_{1}} & {{e}_{2}} & {{e}_{1}}\mathit{ . }{{e}_{2}}\cr {{e}_{1}} & -1 & {{e}_{1}}\mathit{ . }{{e}_{2}} & -{{e}_{2}}\cr {{e}_{2}} & -{{e}_{1}}\mathit{ . }{{e}_{2}} & -1 & {{e}_{1}}\cr {{e}_{1}}\mathit{ . }{{e}_{2}} & {{e}_{2}} & -{{e}_{1}} & -1\end{pmatrix}\]

A more extensive demo about outer products can be seen here. The demo script for wxMaxima can be downloaded here.

A more extensive demo about potential problems can be seen here. The demo script for wxMaxima can be downloaded here.