Predefined Algebras¶
The easiest way to get started with clifford
is to use one of several predefined algebras:
g2
: 2D Euclidean,Cl(2)
. See Quick Start (G2) for some examples.g3
: 3D Euclidean,Cl(3)
. See The Algebra Of Space (G3) for some examples.g4
: 4D Euclidean,Cl(4)
.g2c
: Conformal space for G2,Cl(3, 1)
. See Conformal Geometric Algebra for some examples.g3c
: Conformal space for G3,Cl(4, 1)
.pga
: Projective space for G3Cl(3, 0, 1)
.gac
: Geometric Algebra for Conics,Cl(5, 3)
.dpga
: Double PGA also referred to as the Mother Algebra,Cl(4, 4)
.dg3c
: Double Conformal Geometric Algebra, effectively two g3c algebras glued togetherCl(8, 2)
.
By using the predefined algebras in place of calling Cl
directly, you will often find that your program starts up faster.

clifford.<predefined>.e<ijk>
All of these modules expose the basis blades as attributes, and can be used like so
In [1]: from clifford import g2 In [2]: g2.e1 * g2.e2 Out[2]: (1^e12)
Additionally, they define the following attributes, which contain the return values of clifford.Cl()
:

clifford.<predefined>.
layout
¶ The associated
clifford.Layout
In [3]: g2.layout Out[3]: Layout([1, 1], ids=BasisVectorIds.ordered_integers(2), order=BasisBladeOrder.shortlex(2), names=['', 'e1', 'e2', 'e12'])

clifford.<predefined>.
blades
¶ A shorthand for
Layout.blades()
In [4]: g2.blades Out[4]: {'': 1, 'e1': (1^e1), 'e2': (1^e2), 'e12': (1^e12)}
For interactive use, it’s very handy to use import *
In [5]: from clifford.g2 import *
In [6]: e1, e2, e12
Out[6]: ((1^e1), (1^e2), (1^e12))
For the conformal layouts g2c
and g3c
, the full contents of the stuff
result of clifford.conformalize()
is also exposed as members of the module.