Mackey  V3.3
A C++ library for computing RO(G) graded homology
SmithNormalForm< _S, _R, _C > Struct Template Reference

The Smith Normal Form and its coefficient matrices. More...

#include <Smith.hpp>

Inheritance diagram for SmithNormalForm< _S, _R, _C >:
[legend]
Collaboration diagram for SmithNormalForm< _S, _R, _C >:
[legend]

Public Member Functions

 SmithNormalForm (const _S &S, bool do_P=1, bool do_Q=1, bool do_sort=1, bool do_verify=0)
 Constructor computes the Smith Normal Form. More...
 

Public Attributes

row_vector_t< _S > diagonal
 The diagonal of the Smith normal form. More...
 
_R P
 One of the coefficient matrices (S=P*A*Q) More...
 
_R Qi
 One of the coefficient matrices (A=Pi*S*Qi) More...
 
_C Q
 One of the coefficient matrices (S=P*A*Q) More...
 
_C Pi
 One of the coefficient matrices (A=Pi*S*Qi) More...
 

Detailed Description

template<typename _S, typename _R, typename _C>
struct mackey::SmithNormalForm< _S, _R, _C >

The Smith Normal Form and its coefficient matrices.

The SNF of \(A\) is a diagonal matrix \(S\) and invertible coefficient matrices \(P,Q\) s.t. \(PAQ=S\)
S is stored as a diagonal vector diagonal. In addition to P,Q we also store their inverses Pi,Qi.
All are computed simultaneously through row-column elimination

Template Parameters
_SThe type of the original matrix.
_RRow major version of _S
_CColumn major version of _S

Constructor & Destructor Documentation

◆ SmithNormalForm()

SmithNormalForm ( const _S &  S,
bool  do_P = 1,
bool  do_Q = 1,
bool  do_sort = 1,
bool  do_verify = 0 
)

Constructor computes the Smith Normal Form.

Parameters
SThe given matrix to diagonalize
do_PSet to 1 if P,Pi are wanted
do_QSet to 1 if Q,Qi are wanted
do_sortSet to 1 if we want the diagonal of the SNF to be ordered and increasing, excluding any units
do_verifySet to 1 to verify the SNF was computed correctly (for debugging).

Member Data Documentation

◆ diagonal

row_vector_t<_S> diagonal

The diagonal of the Smith normal form.

◆ P

_R P

One of the coefficient matrices (S=P*A*Q)

◆ Qi

_R Qi

One of the coefficient matrices (A=Pi*S*Qi)

◆ Q

_C Q

One of the coefficient matrices (S=P*A*Q)

◆ Pi

_C Pi

One of the coefficient matrices (A=Pi*S*Qi)


The documentation for this struct was generated from the following file: