glucat 0.12.0
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | 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>

Inheritance diagram for glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >:
Inheritance graph
[legend]

Public Types

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

Public Member Functions

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

Static Public Member Functions

static auto classname () -> const std::string
 

Static Public Attributes

static const index_t v_lo = index_set_t::v_lo
 
static const index_t v_hi = index_set_t::v_hi
 
static const Scalar_T default_truncation = std::numeric_limits<Scalar_T>::epsilon()
 Default for truncation.
 

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 45 of file clifford_algebra.h.

Member Typedef Documentation

◆ index_set_t

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

Definition at line 49 of file clifford_algebra.h.

◆ multivector_t

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

Definition at line 52 of file clifford_algebra.h.

◆ pair_t

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

Definition at line 53 of file clifford_algebra.h.

◆ scalar_t

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

Definition at line 48 of file clifford_algebra.h.

◆ vector_t

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

Definition at line 54 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 ( )
virtualdefault

Member Function Documentation

◆ classname()

template<typename Scalar_T , typename Index_Set_T , typename Multivector_T >
auto 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 auto glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::conj ( ) const -> const multivector_t
pure virtual

Conjugation, reverse o involute == involute o reverse.

◆ even()

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

Even part of multivector, sum of even grade terms.

◆ frame()

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

Subalgebra generated by all generators of terms of given multivector.

Referenced by glucat::framed_multi< Scalar_T, LO, HI, Tune_P >::framed_multi(), and PyClical.clifford::reframe().

◆ grade()

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

Maximum of the grades of each term.

◆ inv()

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

Geometric multiplicative inverse.

◆ involute()

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

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

◆ isinf()

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

Check if a multivector contains any infinite values.

◆ isnan()

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

Check if a multivector contains any IEEE NaN values.

Referenced by glucat::cascade_log(), glucat::exp(), glucat::log(), glucat::matrix_log(), glucat::matrix_sqrt(), glucat::pade_log(), and glucat::sqrt().

◆ max_abs()

template<typename Scalar_T , typename Index_Set_T , typename Multivector_T >
virtual auto glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::max_abs ( ) const -> Scalar_T
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 auto glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::norm ( ) const -> Scalar_T
pure virtual

Scalar_T norm == sum of norm of coordinates.

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

◆ odd()

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

Odd part of multivector, sum of odd grade terms.

◆ operator%=()

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

Contraction.

◆ operator&=()

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

Inner product.

◆ operator()()

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

Pure grade-vector part.

◆ operator*=() [1/2]

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

Geometric product.

◆ operator*=() [2/2]

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

Product of multivector and scalar.

◆ operator+=() [1/2]

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

Geometric sum.

◆ operator+=() [2/2]

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

Geometric sum of multivector and scalar.

◆ operator-()

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

Unary -.

◆ operator-=() [1/2]

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

Geometric difference.

◆ operator-=() [2/2]

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

Geometric difference of multivector and scalar.

◆ operator/=() [1/2]

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

Geometric quotient.

◆ operator/=() [2/2]

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

Quotient of multivector and scalar.

◆ operator==() [1/2]

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

Test for equality of multivectors.

◆ operator==() [2/2]

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

Test for equality of multivector and scalar.

◆ operator[]()

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

Subscripting: map from index set to scalar coordinate.

◆ operator^=()

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

Outer product.

◆ operator|=()

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

Transformation via twisted adjoint action.

◆ outer_pow()

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

Outer product power.

◆ pow()

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

*this to the m

◆ pure()

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

Pure part.

◆ quad()

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

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

◆ reverse()

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

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

◆ scalar()

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

Scalar part.

Referenced by glucat::exp(), glucat::matrix_log(), and glucat::matrix_sqrt().

◆ truncated()

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

◆ vector_part() [1/2]

template<typename Scalar_T , typename Index_Set_T , typename Multivector_T >
virtual auto glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::vector_part ( ) const -> const vector_t
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 auto glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::vector_part ( const index_set_t  frm,
const bool  prechecked 
) const -> const vector_t
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.

Member Data Documentation

◆ default_truncation

template<typename Scalar_T , typename Index_Set_T , typename Multivector_T >
const Scalar_T glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::default_truncation = std::numeric_limits<Scalar_T>::epsilon()
static

Default for truncation.

Definition at line 59 of file clifford_algebra.h.

◆ v_hi

template<typename Scalar_T , typename Index_Set_T , typename Multivector_T >
const index_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::v_hi = index_set_t::v_hi
static

Definition at line 51 of file clifford_algebra.h.

◆ v_lo

template<typename Scalar_T , typename Index_Set_T , typename Multivector_T >
const index_t glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::v_lo = index_set_t::v_lo
static

Definition at line 50 of file clifford_algebra.h.


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