linbox
FrobeniusSmall< _Field, _PolynomialRing > Class Template Reference

#include <frobenius-small.h>

Public Types

typedef _Field Field
 
typedef Field::Element Element
 
typedef Field::RandIter RandIter
 
typedef BlasMatrixDomain< FieldMatrixDom
 
typedef MatrixDom::OwnMatrix Matrix
 
typedef SparseMatrix< Field, SparseMatrixFormat::CSRBlackbox
 
typedef BlasVector< FieldVector
 
typedef _PolynomialRing PolynomialRing
 
typedef PolynomialRing::Element Polynomial
 
typedef PolynomialRing::Coeff Coeff
 

Public Member Functions

 FrobeniusSmall (const Field &F, const PolynomialRing &R)
 
void frobeniusInvariants (std::vector< Polynomial > &fs, const Blackbox &A, size_t limit)
 fs is the leading invariant factors of A in nonincreasing order by degree.
 
void solve (std::vector< Polynomial > &fs, const Blackbox &A, size_t limit)
 

Protected Member Functions

void convert (Vector &p, const Polynomial &f)
 
void copy (Vector &a, const Vector &b)
 
template<class Blackbox1>
void apply (Vector &v, const Polynomial &f, const Blackbox1 &A, const Vector &vin)
 
template<class Blackbox1>
bool test (const Polynomial &fk, const Blackbox1 &A, const Vector &v)
 
size_t trialbound () const
 
void randomVector (Vector &v) const
 
void randomVec (Vector &u, const std::vector< std::vector< Vector > > &basis_us, const std::vector< std::vector< Vector > > &basis_vs)
 
template<class Blackbox1>
void minpolyseq (Polynomial &f, const Vector &u, const Blackbox1 &A, const Vector &v) const
 
template<class Blackbox1>
void minpolyvec (Polynomial &f, const Blackbox1 &A, const Vector &v)
 
void filterp (Polynomial &h, const Polynomial &f, const Polynomial &g)
 
void filterv (Vector &u, Vector &v, Polynomial &f, const Blackbox &A, const Vector &uin, const Vector &vin)
 
void mergev (Vector &u, Vector &v, Polynomial &f, const Blackbox &A, const Vector &u1, const Vector &v1, const Polynomial &f1, const Vector &u2, const Vector &v2, const Polynomial &f2)
 
void minpolspace (Vector &u, Vector &v, Polynomial &f, const Blackbox &A, const std::vector< Vector > &us, const std::vector< Vector > &vs)
 
void dualbasis (std::vector< Vector > &basis_u, std::vector< Vector > &basis_v, const Vector &u, const Blackbox &A, const Vector &v, size_t k)
 

Protected Attributes

Field _F
 
RandIter _RI
 
PolynomialRing _R
 
MatrixDom _MD
 
VectorDomain< Field_VD
 

Member Typedef Documentation

◆ Field

template<class _Field, class _PolynomialRing>
typedef _Field Field

◆ Element

template<class _Field, class _PolynomialRing>
typedef Field::Element Element

◆ RandIter

template<class _Field, class _PolynomialRing>
typedef Field::RandIter RandIter

◆ MatrixDom

template<class _Field, class _PolynomialRing>
typedef BlasMatrixDomain<Field> MatrixDom

◆ Matrix

template<class _Field, class _PolynomialRing>
typedef MatrixDom::OwnMatrix Matrix

◆ Blackbox

template<class _Field, class _PolynomialRing>
typedef SparseMatrix<Field, SparseMatrixFormat::CSR> Blackbox

◆ Vector

template<class _Field, class _PolynomialRing>
typedef BlasVector<Field> Vector

◆ PolynomialRing

template<class _Field, class _PolynomialRing>
typedef _PolynomialRing PolynomialRing

◆ Polynomial

template<class _Field, class _PolynomialRing>
typedef PolynomialRing::Element Polynomial

◆ Coeff

template<class _Field, class _PolynomialRing>
typedef PolynomialRing::Coeff Coeff

Constructor & Destructor Documentation

◆ FrobeniusSmall()

template<class _Field, class _PolynomialRing>
FrobeniusSmall ( const Field & F,
const PolynomialRing & R )
inline

Member Function Documentation

◆ convert()

template<class _Field, class _PolynomialRing>
void convert ( Vector & p,
const Polynomial & f )
inlineprotected

◆ copy()

template<class _Field, class _PolynomialRing>
void copy ( Vector & a,
const Vector & b )
inlineprotected

◆ apply()

template<class _Field, class _PolynomialRing>
template<class Blackbox1>
void apply ( Vector & v,
const Polynomial & f,
const Blackbox1 & A,
const Vector & vin )
inlineprotected

◆ test()

template<class _Field, class _PolynomialRing>
template<class Blackbox1>
bool test ( const Polynomial & fk,
const Blackbox1 & A,
const Vector & v )
inlineprotected

◆ trialbound()

template<class _Field, class _PolynomialRing>
size_t trialbound ( ) const
inlineprotected

◆ randomVector()

template<class _Field, class _PolynomialRing>
void randomVector ( Vector & v) const
inlineprotected

◆ randomVec()

template<class _Field, class _PolynomialRing>
void randomVec ( Vector & u,
const std::vector< std::vector< Vector > > & basis_us,
const std::vector< std::vector< Vector > > & basis_vs )
inlineprotected

◆ minpolyseq()

template<class _Field, class _PolynomialRing>
template<class Blackbox1>
void minpolyseq ( Polynomial & f,
const Vector & u,
const Blackbox1 & A,
const Vector & v ) const
inlineprotected

◆ minpolyvec()

template<class _Field, class _PolynomialRing>
template<class Blackbox1>
void minpolyvec ( Polynomial & f,
const Blackbox1 & A,
const Vector & v )
inlineprotected

◆ filterp()

template<class _Field, class _PolynomialRing>
void filterp ( Polynomial & h,
const Polynomial & f,
const Polynomial & g )
inlineprotected

◆ filterv()

template<class _Field, class _PolynomialRing>
void filterv ( Vector & u,
Vector & v,
Polynomial & f,
const Blackbox & A,
const Vector & uin,
const Vector & vin )
inlineprotected

◆ mergev()

template<class _Field, class _PolynomialRing>
void mergev ( Vector & u,
Vector & v,
Polynomial & f,
const Blackbox & A,
const Vector & u1,
const Vector & v1,
const Polynomial & f1,
const Vector & u2,
const Vector & v2,
const Polynomial & f2 )
inlineprotected

◆ minpolspace()

template<class _Field, class _PolynomialRing>
void minpolspace ( Vector & u,
Vector & v,
Polynomial & f,
const Blackbox & A,
const std::vector< Vector > & us,
const std::vector< Vector > & vs )
inlineprotected

◆ dualbasis()

template<class _Field, class _PolynomialRing>
void dualbasis ( std::vector< Vector > & basis_u,
std::vector< Vector > & basis_v,
const Vector & u,
const Blackbox & A,
const Vector & v,
size_t k )
inlineprotected

◆ frobeniusInvariants()

template<class _Field, class _PolynomialRing>
void frobeniusInvariants ( std::vector< Polynomial > & fs,
const Blackbox & A,
size_t limit )
inline

fs is the leading invariant factors of A in nonincreasing order by degree.

If limit is positive, only the leading limit invariants are obtained.

◆ solve()

template<class _Field, class _PolynomialRing>
void solve ( std::vector< Polynomial > & fs,
const Blackbox & A,
size_t limit )
inline

Field Documentation

◆ _F

template<class _Field, class _PolynomialRing>
Field _F
protected

◆ _RI

template<class _Field, class _PolynomialRing>
RandIter _RI
protected

◆ _R

template<class _Field, class _PolynomialRing>
PolynomialRing _R
protected

◆ _MD

template<class _Field, class _PolynomialRing>
MatrixDom _MD
protected

◆ _VD

template<class _Field, class _PolynomialRing>
VectorDomain<Field> _VD
protected

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