glucat 0.12.0
|
clifford_algebra<> declares the operations of a Clifford algebra More...
#include <clifford_algebra.h>
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 |
Default for truncation. | |
clifford_algebra<> declares the operations of a Clifford algebra
Definition at line 45 of file clifford_algebra.h.
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.
using glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::multivector_t = Multivector_T |
Definition at line 52 of file clifford_algebra.h.
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.
using glucat::clifford_algebra< Scalar_T, Index_Set_T, Multivector_T >::scalar_t = Scalar_T |
Definition at line 48 of file clifford_algebra.h.
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.
|
virtualdefault |
|
static |
Definition at line 66 of file clifford_algebra_imp.h.
|
pure virtual |
|
pure virtual |
Even part of multivector, sum of even grade terms.
References even().
Referenced by even(), and glucat::framed_multi< Scalar_T, LO, HI, Tune_P >::fast_matrix_multi().
|
pure virtual |
Subalgebra generated by all generators of terms of given multivector.
References frame().
Referenced by glucat::exp(), frame(), glucat::framed_multi< Scalar_T, LO, HI, Tune_P >::framed_multi(), glucat::framed_multi< Scalar_T, LO, HI, Tune_P >::framed_multi(), and glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi().
|
pure virtual |
|
pure virtual |
|
pure virtual |
Main involution, each {i} is replaced by -{i} in each term, eg. {1} -> -{1}.
References involute().
Referenced by involute().
|
pure virtual |
Check if a multivector contains any infinite values.
References isinf().
Referenced by isinf(), and glucat::operator<<().
|
pure virtual |
Check if a multivector contains any IEEE NaN values.
References isnan().
Referenced by glucat::cascade_log(), glucat::exp(), glucat::exp(), isnan(), glucat::log(), glucat::log(), glucat::matrix_log(), glucat::matrix_sqrt(), glucat::operator<<(), glucat::pade_log(), glucat::sqrt(), and glucat::sqrt().
|
pure virtual |
Maximum of absolute values of components of multivector: multivector infinity norm.
References max_abs().
Referenced by max_abs(), and glucat::operator<<().
|
pure virtual |
|
pure virtual |
Odd part of multivector, sum of odd grade terms.
References odd().
Referenced by glucat::framed_multi< Scalar_T, LO, HI, Tune_P >::fast(), glucat::framed_multi< Scalar_T, LO, HI, Tune_P >::fast_matrix_multi(), and odd().
|
pure virtual |
Contraction.
|
pure virtual |
Inner product.
|
pure virtual |
Pure grade-vector part.
References grade().
|
pure virtual |
Geometric product.
|
pure virtual |
Product of multivector and scalar.
|
pure virtual |
Geometric sum.
|
pure virtual |
Geometric sum of multivector and scalar.
|
pure virtual |
Unary -.
|
pure virtual |
Geometric difference.
|
pure virtual |
Geometric difference of multivector and scalar.
|
pure virtual |
Geometric quotient.
|
pure virtual |
Quotient of multivector and scalar.
|
pure virtual |
Test for equality of multivectors.
|
pure virtual |
Test for equality of multivector and scalar.
|
pure virtual |
Subscripting: map from index set to scalar coordinate.
|
pure virtual |
Outer product.
|
pure virtual |
Transformation via twisted adjoint action.
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtual |
Scalar part.
References scalar().
Referenced by glucat::exp(), glucat::log(), glucat::matrix_log(), glucat::matrix_sqrt(), scalar(), and glucat::sqrt().
|
pure virtual |
Remove all terms with relative size smaller than limit.
References default_truncation, and truncated().
Referenced by glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi(), glucat::operator<<(), and truncated().
|
pure virtual |
Vector part of multivector, as a vector_t with respect to frame()
References vector_part().
Referenced by vector_part(), and vector_part().
|
pure virtual |
Vector part of multivector, as a vector_t with respect to frm.
References vector_part().
|
pure virtual |
|
pure virtual |
Write formatted multivector to file.
References write().
|
static |
Default for truncation.
Definition at line 59 of file clifford_algebra.h.
Referenced by truncated().
|
static |
Definition at line 51 of file clifford_algebra.h.
|
static |
Definition at line 50 of file clifford_algebra.h.