glucat  0.8.2
Public Types | Public Member Functions | Static Public Member Functions | List of all members
glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T > Class Template Referenceabstract

clifford_algebra<> declares the operations of a Clifford algebra More...

#include <clifford_algebra.h>

Public Types

typedef Scalar_T scalar_t
 
typedef Index_Set_T index_set_t
 
typedef Multivector_T multivector_t
 
typedef std::pair< const index_set_t, Scalar_T > pair_t
 
typedef std::vector< Scalar_T > vector_t
 

Public Member Functions

virtual ~clifford_algebra ()
 
virtual bool operator== (const multivector_t &val) const =0
 Test for equality of multivectors. More...
 
virtual bool operator== (const Scalar_T &scr) const =0
 Test for equality of multivector and scalar. More...
 
virtual multivector_toperator+= (const multivector_t &rhs)=0
 Geometric sum. More...
 
virtual multivector_toperator+= (const Scalar_T &scr)=0
 Geometric sum of multivector and scalar. More...
 
virtual multivector_toperator-= (const multivector_t &rhs)=0
 Geometric difference. More...
 
virtual const multivector_t operator- () const =0
 Unary -. More...
 
virtual multivector_toperator*= (const Scalar_T &scr)=0
 Product of multivector and scalar. More...
 
virtual multivector_toperator*= (const multivector_t &rhs)=0
 Geometric product. More...
 
virtual multivector_toperator%= (const multivector_t &rhs)=0
 Contraction. More...
 
virtual multivector_toperator &= (const multivector_t &rhs)=0
 Inner product. More...
 
virtual multivector_toperator^= (const multivector_t &rhs)=0
 Outer product. More...
 
virtual multivector_toperator/= (const Scalar_T &scr)=0
 Quotient of multivector and scalar. More...
 
virtual multivector_toperator/= (const multivector_t &rhs)=0
 Geometric quotient. More...
 
virtual multivector_toperator|= (const multivector_t &rhs)=0
 Transformation via twisted adjoint action. More...
 
virtual const multivector_t inv () const =0
 Geometric multiplicative inverse. More...
 
virtual const multivector_t pow (int m) const =0
 *this to the m More...
 
virtual const multivector_t outer_pow (int m) const =0
 Outer product power. More...
 
virtual const index_set_t frame () const =0
 Subalgebra generated by all generators of terms of given multivector. More...
 
virtual index_t grade () const =0
 Maximum of the grades of each term. More...
 
virtual Scalar_T operator[] (const index_set_t ist) const =0
 Subscripting: map from index set to scalar coordinate. More...
 
virtual const multivector_t operator() (index_t grade) const =0
 Pure grade-vector part. More...
 
virtual Scalar_T scalar () const =0
 Scalar part. More...
 
virtual const multivector_t pure () const =0
 Pure part. More...
 
virtual const multivector_t even () const =0
 Even part of multivector, sum of even grade terms. More...
 
virtual const multivector_t odd () const =0
 Odd part of multivector, sum of odd grade terms. More...
 
virtual const vector_t vector_part () const =0
 Vector part of multivector, as a vector_t with respect to frame() More...
 
virtual const vector_t vector_part (const index_set_t frm, const bool prechecked) const =0
 Vector part of multivector, as a vector_t with respect to frm. More...
 
virtual const multivector_t involute () const =0
 Main involution, each {i} is replaced by -{i} in each term, eg. {1} -> -{1}. More...
 
virtual const multivector_t reverse () const =0
 Reversion, eg. {1}*{2} -> {2}*{1}. More...
 
virtual const multivector_t conj () const =0
 Conjugation, reverse o involute == involute o reverse. More...
 
virtual Scalar_T quad () const =0
 Scalar_T quadratic form == (rev(x)*x)(0) More...
 
virtual Scalar_T norm () const =0
 Scalar_T norm == sum of norm of coordinates. More...
 
virtual Scalar_T max_abs () const =0
 Maximum of absolute values of components of multivector: multivector infinity norm. More...
 
virtual const multivector_t truncated (const Scalar_T &limit=Scalar_T(DEFAULT_TRUNCATION)) const =0
 Remove all terms with relative size smaller than limit. More...
 
virtual bool isnan () const =0
 Check if a multivector contains any IEEE NaN values. More...
 
virtual void write (const std::string &msg="") const =0
 Write formatted multivector to output. More...
 
virtual void write (std::ofstream &ofile, const std::string &msg="") const =0
 Write formatted multivector to file. More...
 

Static Public Member Functions

static const std::string classname ()
 

Detailed Description

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
class glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >

clifford_algebra<> declares the operations of a Clifford algebra

Definition at line 42 of file clifford_algebra.h.

Member Typedef Documentation

◆ index_set_t

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
typedef Index_Set_T glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::index_set_t

Definition at line 46 of file clifford_algebra.h.

◆ multivector_t

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
typedef Multivector_T glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::multivector_t

Definition at line 47 of file clifford_algebra.h.

◆ pair_t

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
typedef std::pair< const index_set_t, Scalar_T > glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::pair_t

Definition at line 48 of file clifford_algebra.h.

◆ scalar_t

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
typedef Scalar_T glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::scalar_t

Definition at line 45 of file clifford_algebra.h.

◆ vector_t

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
typedef std::vector<Scalar_T> glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::vector_t

Definition at line 49 of file clifford_algebra.h.

Constructor & Destructor Documentation

◆ ~clifford_algebra()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::~clifford_algebra ( )
inlinevirtual

Definition at line 53 of file clifford_algebra.h.

Member Function Documentation

◆ classname()

template<typename Scalar_T , typename Index_Set_T , typename Multivector_T >
const std::string glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::classname ( )
static

Definition at line 66 of file clifford_algebra_imp.h.

◆ conj()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::conj ( ) const
pure virtual

Conjugation, reverse o involute == involute o reverse.

◆ even()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::even ( ) const
pure virtual

Even part of multivector, sum of even grade terms.

Referenced by glucat::framed_multi< Scalar_T, LO, HI >::fast_matrix_multi().

◆ frame()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const index_set_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::frame ( ) const
pure virtual

Subalgebra generated by all generators of terms of given multivector.

◆ grade()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual index_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::grade ( ) const
pure virtual

Maximum of the grades of each term.

◆ inv()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::inv ( ) const
pure virtual

Geometric multiplicative inverse.

◆ involute()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::involute ( ) const
pure virtual

Main involution, each {i} is replaced by -{i} in each term, eg. {1} -> -{1}.

◆ isnan()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual bool glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::isnan ( ) const
pure virtual

Check if a multivector contains any IEEE NaN values.

◆ max_abs()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual Scalar_T glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::max_abs ( ) const
pure virtual

Maximum of absolute values of components of multivector: multivector infinity norm.

◆ norm()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual Scalar_T glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::norm ( ) const
pure virtual

Scalar_T norm == sum of norm of coordinates.

◆ odd()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::odd ( ) const
pure virtual

Odd part of multivector, sum of odd grade terms.

Referenced by glucat::framed_multi< Scalar_T, LO, HI >::fast_matrix_multi().

◆ operator &=()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator&= ( const multivector_t rhs)
pure virtual

Inner product.

◆ operator%=()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator%= ( const multivector_t rhs)
pure virtual

Contraction.

◆ operator()()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator() ( index_t  grade) const
pure virtual

Pure grade-vector part.

◆ operator*=() [1/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator*= ( const Scalar_T &  scr)
pure virtual

Product of multivector and scalar.

◆ operator*=() [2/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator*= ( const multivector_t rhs)
pure virtual

Geometric product.

◆ operator+=() [1/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator+= ( const multivector_t rhs)
pure virtual

Geometric sum.

◆ operator+=() [2/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator+= ( const Scalar_T &  scr)
pure virtual

Geometric sum of multivector and scalar.

◆ operator-()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator- ( ) const
pure virtual

Unary -.

◆ operator-=()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator-= ( const multivector_t rhs)
pure virtual

Geometric difference.

◆ operator/=() [1/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator/= ( const Scalar_T &  scr)
pure virtual

Quotient of multivector and scalar.

◆ operator/=() [2/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator/= ( const multivector_t rhs)
pure virtual

Geometric quotient.

◆ operator==() [1/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual bool glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator== ( const multivector_t val) const
pure virtual

Test for equality of multivectors.

◆ operator==() [2/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual bool glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator== ( const Scalar_T &  scr) const
pure virtual

Test for equality of multivector and scalar.

◆ operator[]()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual Scalar_T glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator[] ( const index_set_t  ist) const
pure virtual

Subscripting: map from index set to scalar coordinate.

◆ operator^=()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator^= ( const multivector_t rhs)
pure virtual

Outer product.

◆ operator|=()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual multivector_t& glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::operator|= ( const multivector_t rhs)
pure virtual

Transformation via twisted adjoint action.

◆ outer_pow()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::outer_pow ( int  m) const
pure virtual

Outer product power.

◆ pow()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::pow ( int  m) const
pure virtual

*this to the m

◆ pure()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::pure ( ) const
pure virtual

Pure part.

◆ quad()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual Scalar_T glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::quad ( ) const
pure virtual

Scalar_T quadratic form == (rev(x)*x)(0)

◆ reverse()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::reverse ( ) const
pure virtual

Reversion, eg. {1}*{2} -> {2}*{1}.

◆ scalar()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual Scalar_T glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::scalar ( ) const
pure virtual

Scalar part.

◆ truncated()

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const multivector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::truncated ( const Scalar_T &  limit = Scalar_T(DEFAULT_TRUNCATION)) const
pure virtual

Remove all terms with relative size smaller than limit.

◆ vector_part() [1/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const vector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::vector_part ( ) const
pure virtual

Vector part of multivector, as a vector_t with respect to frame()

◆ vector_part() [2/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual const vector_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::vector_part ( const index_set_t  frm,
const bool  prechecked 
) const
pure virtual

Vector part of multivector, as a vector_t with respect to frm.

◆ write() [1/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual void glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::write ( const std::string &  msg = "") const
pure virtual

Write formatted multivector to output.

◆ write() [2/2]

template<typename Scalar_T, typename Index_Set_T, typename Multivector_T>
virtual void glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::write ( std::ofstream &  ofile,
const std::string &  msg = "" 
) const
pure virtual

Write formatted multivector to file.


The documentation for this class was generated from the following files: