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 G3 Cl(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 together Cl(8, 2).

By using the pre-defined 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.