glucat 0.13.0
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P > Class Template Reference

A matrix_multi<Scalar_T,LO,HI,Tune_P> is a matrix approximation to a multivector. More...

#include <matrix_multi.h>

Inheritance diagram for glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >:
Collaboration diagram for glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >:

Public Types

using multivector_t = matrix_multi
 
using matrix_multi_t = multivector_t
 
using scalar_t = Scalar_T
 
using tune_p = Tune_P
 
using index_set_t = index_set<LO, HI>
 
using term_t = std::pair<const index_set_t, Scalar_T>
 
using vector_t = std::vector<Scalar_T>
 
using error_t = error<multivector_t>
 
using framed_multi_t = framed_multi<Scalar_T,LO,HI,Tune_P>
 
- Public Types inherited from glucat::clifford_algebra< double, index_set< DEFAULT_LO, DEFAULT_HI >, matrix_multi< double, DEFAULT_LO, DEFAULT_HI, tuning<> > >
using scalar_t
 
using index_set_t
 
using multivector_t
 
using pair_t
 
using vector_t
 

Public Member Functions

 ~matrix_multi () override=default
 Destructor.
 
 matrix_multi ()
 Default constructor.
 
template<typename Other_Scalar_T>
 matrix_multi (const matrix_multi< Other_Scalar_T, LO, HI, Tune_P > &val)
 Construct a multivector from a multivector with a different scalar type.
 
template<typename Other_Scalar_T>
 matrix_multi (const matrix_multi< Other_Scalar_T, LO, HI, Tune_P > &val, const index_set_t frm, const bool prechecked=false)
 Construct a multivector, within a given frame, from a given multivector.
 
 matrix_multi (const multivector_t &val, const index_set_t frm, const bool prechecked=false)
 Construct a multivector, within a given frame, from a given multivector.
 
 matrix_multi (const index_set_t ist, const Scalar_T &crd=Scalar_T(1))
 Construct a multivector from an index set and a scalar coordinate.
 
 matrix_multi (const index_set_t ist, const Scalar_T &crd, const index_set_t frm, const bool prechecked=false)
 Construct a multivector, within a given frame, from an index set and a scalar coordinate.
 
 matrix_multi (const Scalar_T &scr, const index_set_t frm=index_set_t())
 Construct a multivector from a scalar (within a frame, if given)
 
 matrix_multi (const int scr, const index_set_t frm=index_set_t())
 Construct a multivector from an int (within a frame, if given)
 
 matrix_multi (const vector_t &vec, const index_set_t frm, const bool prechecked=false)
 Construct a multivector, within a given frame, from a given vector.
 
 matrix_multi (const std::string &str)
 Construct a multivector from a string: eg: "3+2{1,2}-6.1e-2{2,3}".
 
 matrix_multi (const std::string &str, const index_set_t frm, const bool prechecked=false)
 Construct a multivector, within a given frame, from a string: eg: "3+2{1,2}-6.1e-2{2,3}".
 
 matrix_multi (const char *str)
 Construct a multivector from a char*: eg: "3+2{1,2}-6.1e-2{2,3}".
 
 matrix_multi (const char *str, const index_set_t frm, const bool prechecked=false)
 Construct a multivector, within a given frame, from a char*: eg: "3+2{1,2}-6.1e-2{2,3}".
 
template<typename Other_Scalar_T>
 matrix_multi (const framed_multi< Other_Scalar_T, LO, HI, Tune_P > &val)
 Construct a multivector from a framed_multi_t.
 
template<typename Other_Scalar_T>
 matrix_multi (const framed_multi< Other_Scalar_T, LO, HI, Tune_P > &val, const index_set_t frm, const bool prechecked=false)
 Construct a multivector, within a given frame, from a framed_multi_t.
 
auto fast_matrix_multi (const index_set_t frm) const -> const matrix_multi_t
 Use generalized FFT to construct a matrix_multi_t.
 
template<typename Other_Scalar_T>
auto fast_framed_multi () const -> const framed_multi< Other_Scalar_T, LO, HI, Tune_P >
 Use inverse generalized FFT to construct a framed_multi_t.
 
_GLUCAT_CLIFFORD_ALGEBRA_OPERATIONS auto operator= (const multivector_t &rhs) -> multivector_t &
 Assignment operator.
 
auto operator+= (const term_t &rhs) -> multivector_t &
 Add a term, if non-zero.
 
- Public Member Functions inherited from glucat::clifford_algebra< double, index_set< DEFAULT_LO, DEFAULT_HI >, matrix_multi< double, DEFAULT_LO, DEFAULT_HI, tuning<> > >
virtual ~clifford_algebra ()=default
 
virtual auto operator== (const multivector_t &val) const -> bool=0
 Test for equality of multivectors.
 
virtual auto operator== (const double &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 double &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 double &scr) -> multivector_t &=0
 Geometric difference of multivector and scalar.
 
virtual auto operator- () const -> const multivector_t=0
 Unary -.
 
virtual auto operator*= (const double &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 double &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 -> double=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 -> double=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 -> double=0
 Scalar_T quadratic form == (rev(x)*x)(0)
 
virtual auto norm () const -> double=0
 Scalar_T norm == sum of norm of coordinates.
 
virtual auto max_abs () const -> double=0
 Maximum of absolute values of components of multivector: multivector infinity norm.
 
virtual auto truncated (const double &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
 Class name used in messages.
 
static auto random (const index_set_t frm, Scalar_T fill=Scalar_T(1)) -> const matrix_multi_t
 Random multivector within a frame.
 
- Static Public Member Functions inherited from glucat::clifford_algebra< double, index_set< DEFAULT_LO, DEFAULT_HI >, matrix_multi< double, DEFAULT_LO, DEFAULT_HI, tuning<> > >
static auto classname () -> const std::string
 

Private Types

using orientation_t = ublas::row_major
 
using basis_matrix_t = ublas::compressed_matrix<int, orientation_t>
 
using matrix_t = ublas::matrix<Scalar_T, orientation_t>
 
using matrix_index_t = typename matrix_t::size_type
 

Private Member Functions

template<typename Matrix_T>
 matrix_multi (const Matrix_T &mtx, const index_set_t frm)
 Construct a multivector within a given frame from a given matrix.
 
 matrix_multi (const matrix_t &mtx, const index_set_t frm)
 Construct a multivector within a given frame from a given matrix.
 
auto basis_element (const index_set< LO, HI > &ist) const -> const basis_matrix_t
 Create a basis element matrix within the current frame.
 

Private Attributes

index_set_t m_frame
 Index set representing the frame for the subalgebra which contains the multivector.
 
matrix_t m_matrix
 Matrix value representing the multivector within the folded frame.
 

Friends

template<typename Other_Scalar_T, const index_t Other_LO, const index_t Other_HI, typename Other_Tune_P>
class framed_multi
 
template<typename Other_Scalar_T, const index_t Other_LO, const index_t Other_HI, typename Other_Tune_P>
class matrix_multi
 
auto operator* (const matrix_multi_t &lhs, const matrix_multi_t &rhs) -> const matrix_multi_t
 
auto operator^ (const matrix_multi_t &lhs, const matrix_multi_t &rhs) -> const matrix_multi_t
 
auto operator& (const matrix_multi_t &lhs, const matrix_multi_t &rhs) -> const matrix_multi_t
 
auto operator% (const matrix_multi_t &lhs, const matrix_multi_t &rhs) -> const matrix_multi_t
 
auto star (const matrix_multi_t &lhs, const matrix_multi_t &rhs) -> Scalar_T
 
auto operator/ (const matrix_multi_t &lhs, const matrix_multi_t &rhs) -> const matrix_multi_t
 
auto operator| (const matrix_multi_t &lhs, const matrix_multi_t &rhs) -> const matrix_multi_t
 
auto operator>> (std::istream &s, multivector_t &val) -> std::istream &
 
auto operator<< (std::ostream &os, const multivector_t &val) -> std::ostream &
 
template<typename Other_Scalar_T, const index_t Other_LO, const index_t Other_HI, typename Other_Tune_P>
auto reframe (const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > &lhs, const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > &rhs, matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > &lhs_reframed, matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > &rhs_reframed) -> const index_set< Other_LO, Other_HI >
 
template<typename Other_Scalar_T, const index_t Other_LO, const index_t Other_HI, typename Other_Tune_P>
auto matrix_sqrt (const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > &val, const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > &i, const index_t level) -> const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P >
 
template<typename Other_Scalar_T, const index_t Other_LO, const index_t Other_HI, typename Other_Tune_P>
auto matrix_log (const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > &val, const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > &i, const index_t level) -> const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P >
 

Additional Inherited Members

- Static Public Attributes inherited from glucat::clifford_algebra< double, index_set< DEFAULT_LO, DEFAULT_HI >, matrix_multi< double, DEFAULT_LO, DEFAULT_HI, tuning<> > >
static const index_t v_lo
 
static const index_t v_hi
 
static const double default_truncation
 Default for truncation.
 

Detailed Description

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
class glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >

A matrix_multi<Scalar_T,LO,HI,Tune_P> is a matrix approximation to a multivector.

Definition at line 137 of file matrix_multi.h.

Member Typedef Documentation

◆ basis_matrix_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::basis_matrix_t = ublas::compressed_matrix<int, orientation_t>
private

Definition at line 157 of file matrix_multi.h.

◆ error_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::error_t = error<multivector_t>

Definition at line 148 of file matrix_multi.h.

◆ framed_multi_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::framed_multi_t = framed_multi<Scalar_T,LO,HI,Tune_P>

Definition at line 149 of file matrix_multi.h.

◆ index_set_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::index_set_t = index_set<LO, HI>

Definition at line 145 of file matrix_multi.h.

◆ matrix_index_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_index_t = typename matrix_t::size_type
private

Definition at line 159 of file matrix_multi.h.

◆ matrix_multi_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi_t = multivector_t

Definition at line 142 of file matrix_multi.h.

◆ matrix_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_t = ublas::matrix<Scalar_T, orientation_t>
private

Definition at line 158 of file matrix_multi.h.

◆ multivector_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::multivector_t = matrix_multi

Definition at line 141 of file matrix_multi.h.

◆ orientation_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::orientation_t = ublas::row_major
private

Definition at line 156 of file matrix_multi.h.

◆ scalar_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::scalar_t = Scalar_T

Definition at line 143 of file matrix_multi.h.

◆ term_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::term_t = std::pair<const index_set_t, Scalar_T>

Definition at line 146 of file matrix_multi.h.

◆ tune_p

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::tune_p = Tune_P

Definition at line 144 of file matrix_multi.h.

◆ vector_t

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
using glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::vector_t = std::vector<Scalar_T>

Definition at line 147 of file matrix_multi.h.

Constructor & Destructor Documentation

◆ ~matrix_multi()

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::~matrix_multi ( )
overridedefault

Destructor.

◆ matrix_multi() [1/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( )

Default constructor.

Definition at line 106 of file matrix_multi_imp.h.

References m_frame, and m_matrix.

◆ matrix_multi() [2/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
template<typename Other_Scalar_T>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const matrix_multi< Other_Scalar_T, LO, HI, Tune_P > & val)

Construct a multivector from a multivector with a different scalar type.

Definition at line 115 of file matrix_multi_imp.h.

References m_frame, m_matrix, matrix_multi, and glucat::numeric_traits< Scalar_T >::to_scalar_t().

◆ matrix_multi() [3/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
template<typename Other_Scalar_T>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const matrix_multi< Other_Scalar_T, LO, HI, Tune_P > & val,
const index_set_t frm,
const bool prechecked = false )

Construct a multivector, within a given frame, from a given multivector.

Definition at line 134 of file matrix_multi_imp.h.

References glucat::folded_dim(), m_frame, m_matrix, matrix_multi, and glucat::numeric_traits< Scalar_T >::to_scalar_t().

◆ matrix_multi() [4/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const multivector_t & val,
const index_set_t frm,
const bool prechecked = false )

Construct a multivector, within a given frame, from a given multivector.

Definition at line 159 of file matrix_multi_imp.h.

References m_frame.

◆ matrix_multi() [5/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const index_set_t ist,
const Scalar_T & crd = Scalar_T(1) )

Construct a multivector from an index set and a scalar coordinate.

Definition at line 171 of file matrix_multi_imp.h.

◆ matrix_multi() [6/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const index_set_t ist,
const Scalar_T & crd,
const index_set_t frm,
const bool prechecked = false )

Construct a multivector, within a given frame, from an index set and a scalar coordinate.

Definition at line 183 of file matrix_multi_imp.h.

◆ matrix_multi() [7/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const Scalar_T & scr,
const index_set_t frm = index_set_t() )

Construct a multivector from a scalar (within a frame, if given)

Definition at line 197 of file matrix_multi_imp.h.

References glucat::folded_dim(), m_frame, and m_matrix.

◆ matrix_multi() [8/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const int scr,
const index_set_t frm = index_set_t() )

Construct a multivector from an int (within a frame, if given)

Definition at line 209 of file matrix_multi_imp.h.

◆ matrix_multi() [9/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const vector_t & vec,
const index_set_t frm,
const bool prechecked = false )

Construct a multivector, within a given frame, from a given vector.

Definition at line 215 of file matrix_multi_imp.h.

◆ matrix_multi() [10/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const std::string & str)

Construct a multivector from a string: eg: "3+2{1,2}-6.1e-2{2,3}".

Definition at line 240 of file matrix_multi_imp.h.

◆ matrix_multi() [11/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const std::string & str,
const index_set_t frm,
const bool prechecked = false )

Construct a multivector, within a given frame, from a string: eg: "3+2{1,2}-6.1e-2{2,3}".

Definition at line 246 of file matrix_multi_imp.h.

◆ matrix_multi() [12/17]

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const char * str)
inline

Construct a multivector from a char*: eg: "3+2{1,2}-6.1e-2{2,3}".

Definition at line 196 of file matrix_multi.h.

◆ matrix_multi() [13/17]

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const char * str,
const index_set_t frm,
const bool prechecked = false )
inline

Construct a multivector, within a given frame, from a char*: eg: "3+2{1,2}-6.1e-2{2,3}".

Definition at line 199 of file matrix_multi.h.

◆ matrix_multi() [14/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
template<typename Other_Scalar_T>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const framed_multi< Other_Scalar_T, LO, HI, Tune_P > & val)

◆ matrix_multi() [15/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
template<typename Other_Scalar_T>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const framed_multi< Other_Scalar_T, LO, HI, Tune_P > & val,
const index_set_t frm,
const bool prechecked = false )

◆ matrix_multi() [16/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
template<typename Matrix_T>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const Matrix_T & mtx,
const index_set_t frm )
private

Construct a multivector within a given frame from a given matrix.

Definition at line 301 of file matrix_multi_imp.h.

References m_frame, m_matrix, and glucat::numeric_traits< Scalar_T >::to_scalar_t().

◆ matrix_multi() [17/17]

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::matrix_multi ( const matrix_t & mtx,
const index_set_t frm )
private

Construct a multivector within a given frame from a given matrix.

Definition at line 320 of file matrix_multi_imp.h.

References m_frame, and m_matrix.

Member Function Documentation

◆ basis_element()

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
auto glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::basis_element ( const index_set< LO, HI > & ist) const -> const basis_matrix_t
private

Create a basis element matrix within the current frame.

Definition at line 1183 of file matrix_multi_imp.h.

References glucat::gen::generator_table< Matrix_T >::generator(), m_frame, glucat::matrix::mono_prod(), glucat::offset_level(), and glucat::matrix::unit().

◆ classname()

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
auto glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::classname ( ) -> const std::string
static

Class name used in messages.

Definition at line 78 of file matrix_multi_imp.h.

◆ fast_framed_multi()

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
template<typename Other_Scalar_T>
auto glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::fast_framed_multi ( ) const -> const framed_multi<Other_Scalar_T,LO,HI,Tune_P>

◆ fast_matrix_multi()

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
auto glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::fast_matrix_multi ( const index_set_t frm) const -> const matrix_multi_t
inline

Use generalized FFT to construct a matrix_multi_t.

Definition at line 1093 of file matrix_multi_imp.h.

References fast_framed_multi(), fast_matrix_multi(), and m_frame.

Referenced by fast_matrix_multi(), and matrix_multi().

◆ operator+=()

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
auto glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::operator+= ( const term_t & rhs) -> multivector_t&
inline

Add a term, if non-zero.

Geometric sum.

Geometric sum of multivector and scalar.

Definition at line 414 of file matrix_multi_imp.h.

◆ operator=()

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
auto glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::operator= ( const multivector_t & rhs) -> multivector_t&

Assignment operator.

Definition at line 328 of file matrix_multi_imp.h.

References m_frame, and m_matrix.

◆ random()

template<typename Scalar_T, const index_t LO, const index_t HI, typename Tune_P>
auto glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::random ( const index_set_t frm,
Scalar_T fill = Scalar_T(1) ) -> const matrix_multi_t
static

Random multivector within a frame.

Definition at line 923 of file matrix_multi_imp.h.

References glucat::framed_multi< Scalar_T, LO, HI, Tune_P >::random().

Friends And Related Symbol Documentation

◆ framed_multi

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
template<typename Other_Scalar_T, const index_t Other_LO, const index_t Other_HI, typename Other_Tune_P>
friend class framed_multi
friend

Definition at line 151 of file matrix_multi.h.

Referenced by fast_framed_multi(), matrix_multi(), and matrix_multi().

◆ matrix_log

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
template<typename Other_Scalar_T, const index_t Other_LO, const index_t Other_HI, typename Other_Tune_P>
auto matrix_log ( const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > & val,
const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > & i,
const index_t level ) -> const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P >
friend

◆ matrix_multi

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
template<typename Other_Scalar_T, const index_t Other_LO, const index_t Other_HI, typename Other_Tune_P>
friend class matrix_multi
friend

Definition at line 153 of file matrix_multi.h.

Referenced by matrix_multi(), matrix_multi(), matrix_multi(), and matrix_multi().

◆ matrix_sqrt

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
template<typename Other_Scalar_T, const index_t Other_LO, const index_t Other_HI, typename Other_Tune_P>
auto matrix_sqrt ( const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > & val,
const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > & i,
const index_t level ) -> const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P >
friend

◆ operator%

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
auto operator% ( const matrix_multi_t & lhs,
const matrix_multi_t & rhs ) -> const matrix_multi_t
friend

◆ operator&

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
auto operator& ( const matrix_multi_t & lhs,
const matrix_multi_t & rhs ) -> const matrix_multi_t
friend

◆ operator*

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
auto operator* ( const matrix_multi_t & lhs,
const matrix_multi_t & rhs ) -> const matrix_multi_t
friend

◆ operator/

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
auto operator/ ( const matrix_multi_t & lhs,
const matrix_multi_t & rhs ) -> const matrix_multi_t
friend

◆ operator<<

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
auto operator<< ( std::ostream & os,
const multivector_t & val ) -> std::ostream &
friend

◆ operator>>

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
auto operator>> ( std::istream & s,
multivector_t & val ) -> std::istream &
friend

◆ operator^

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
auto operator^ ( const matrix_multi_t & lhs,
const matrix_multi_t & rhs ) -> const matrix_multi_t
friend

◆ operator|

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
auto operator| ( const matrix_multi_t & lhs,
const matrix_multi_t & rhs ) -> const matrix_multi_t
friend

◆ reframe

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
template<typename Other_Scalar_T, const index_t Other_LO, const index_t Other_HI, typename Other_Tune_P>
auto reframe ( const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > & lhs,
const matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > & rhs,
matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > & lhs_reframed,
matrix_multi< Other_Scalar_T, Other_LO, Other_HI, Other_Tune_P > & rhs_reframed ) -> const index_set< Other_LO, Other_HI >
friend

◆ star

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
auto star ( const matrix_multi_t & lhs,
const matrix_multi_t & rhs ) -> Scalar_T
friend

Member Data Documentation

◆ m_frame

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
index_set_t glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::m_frame
private

Index set representing the frame for the subalgebra which contains the multivector.

Definition at line 278 of file matrix_multi.h.

Referenced by basis_element(), fast_framed_multi(), fast_matrix_multi(), matrix_multi(), matrix_multi(), matrix_multi(), matrix_multi(), matrix_multi(), matrix_multi(), matrix_multi(), matrix_multi(), matrix_multi(), and operator=().

◆ m_matrix

template<typename Scalar_T = double, const index_t LO = DEFAULT_LO, const index_t HI = DEFAULT_HI, typename Tune_P = tuning<>>
matrix_t glucat::matrix_multi< Scalar_T, LO, HI, Tune_P >::m_matrix
private

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