linbox
SmithFormBinary< _Ring, _oneInvariantFactor > Class Template Reference

Compute Smith form. More...

#include <smith-form-binary.h>

Public Types

typedef _Ring Ring
 
typedef _oneInvariantFactor oneInvariantFactor
 
typedef Ring::Element Integer
 

Public Member Functions

 SmithFormBinary (const Ring &_r=Ring(), const oneInvariantFactor &_oif=oneInvariantFactor(), int _oifthreshold=DEFAULTOIFTHRESHOLD, int _lifthreshold=DEFAULTLIFTHRESHOLD)
 constructor
 
void setOIFThreshold (int _oifthreshold=DEFAULTOIFTHRESHOLD)
 
void setLIFThreshold (int _lifthreshold=DEFAULTLIFTHRESHOLD)
 
int getOIFThreshold () const
 
int getLIFThreshold () const
 
template<class IMatrix, class Vector, class VectorP>
VectorsmithForm (Vector &sf, const IMatrix &A, const VectorP &PrimeL)
 compute the Smith Form of an integer matrix, ignoring these factors of primes in PrimeL
 
template<class IMatrix, class Vector>
VectorsmithFormBinary (Vector &sf, const IMatrix &A)
 compute the Smith Form of an integer matrix
 
template<class IMatrix, class Vector, class VectorP>
VectorsmithFormBackward (Vector &sf, const IMatrix &A, const VectorP &PrimeL)
 compute the Smith Form of an integer matrix, ignoring these factors of primes in PrimeL Using backward search descibed by B.
 
template<class IMatrix, class Vector>
VectorsmithFormBackward (Vector &sf, const IMatrix &A)
 compute the Smith Form of an integer matrix Using backward binary search.
 

Protected Member Functions

template<class IMatrix, class Vector>
IntegerfirstInvariantFactor (Integer &fif, const IMatrix &A, const Vector &PrimeL)
 compute the 1st invariant factor, = GCD (all element in A), missing these factors of primes in PrimeL
 
template<class IMatrix, class Vector, class VectorP>
VectorsmithFormBinarySearch (Vector &sf, const IMatrix &A, int i, int j, const VectorP &PrimeL)
 Binary search invariant factors between i and j, missing those factors in PrimeL suppose sf[(size_t)i - 1], sf [j - 1] are ith and jth invariant factor of A i <= j.
 
template<class IMatrix, class Vector, class VectorP>
VectorsmithFormBinarySearchBackward (Vector &sf, const IMatrix &A, int i, int j, int depth, const VectorP &PrimeL)
 Binary search invariant factors between i and j, missing those factors in PrimeL suppose sf[(size_t)i - 1], sf [j - 1] are ith and jth invariant factor of A i <= j.
 

Protected Attributes

oneInvariantFactor oif
 
Ring r
 

Detailed Description

template<class _Ring, class _oneInvariantFactor>
class LinBox::SmithFormBinary< _Ring, _oneInvariantFactor >

Compute Smith form.

This is an implementation of EGV and EGV+ algorithms See EGV (FOCS '00) and SW (ISSAC '04) papers.

Member Typedef Documentation

◆ Ring

template<class _Ring, class _oneInvariantFactor>
typedef _Ring Ring

◆ oneInvariantFactor

template<class _Ring, class _oneInvariantFactor>
typedef _oneInvariantFactor oneInvariantFactor

◆ Integer

template<class _Ring, class _oneInvariantFactor>
typedef Ring::Element Integer

Constructor & Destructor Documentation

◆ SmithFormBinary()

template<class _Ring, class _oneInvariantFactor>
SmithFormBinary ( const Ring & _r = Ring(),
const oneInvariantFactor & _oif = oneInvariantFactor(),
int _oifthreshold = DEFAULTOIFTHRESHOLD,
int _lifthreshold = DEFAULTLIFTHRESHOLD )
inline

constructor

Member Function Documentation

◆ setOIFThreshold()

template<class _Ring, class _oneInvariantFactor>
void setOIFThreshold ( int _oifthreshold = DEFAULTOIFTHRESHOLD)
inline

◆ setLIFThreshold()

template<class _Ring, class _oneInvariantFactor>
void setLIFThreshold ( int _lifthreshold = DEFAULTLIFTHRESHOLD)
inline

◆ getOIFThreshold()

template<class _Ring, class _oneInvariantFactor>
int getOIFThreshold ( ) const
inline

◆ getLIFThreshold()

template<class _Ring, class _oneInvariantFactor>
int getLIFThreshold ( ) const
inline

◆ smithForm()

template<class _Ring, class _oneInvariantFactor>
template<class IMatrix, class Vector, class VectorP>
Vector & smithForm ( Vector & sf,
const IMatrix & A,
const VectorP & PrimeL )
inline

compute the Smith Form of an integer matrix, ignoring these factors of primes in PrimeL

◆ smithFormBinary()

template<class _Ring, class _oneInvariantFactor>
template<class IMatrix, class Vector>
Vector & smithFormBinary ( Vector & sf,
const IMatrix & A )
inline

compute the Smith Form of an integer matrix

◆ firstInvariantFactor()

template<class _Ring, class _oneInvariantFactor>
template<class IMatrix, class Vector>
Integer & firstInvariantFactor ( Integer & fif,
const IMatrix & A,
const Vector & PrimeL )
inlineprotected

compute the 1st invariant factor, = GCD (all element in A), missing these factors of primes in PrimeL

◆ smithFormBinarySearch()

template<class _Ring, class _oneInvariantFactor>
template<class IMatrix, class Vector, class VectorP>
Vector & smithFormBinarySearch ( Vector & sf,
const IMatrix & A,
int i,
int j,
const VectorP & PrimeL )
inlineprotected

Binary search invariant factors between i and j, missing those factors in PrimeL suppose sf[(size_t)i - 1], sf [j - 1] are ith and jth invariant factor of A i <= j.

◆ smithFormBackward() [1/2]

template<class _Ring, class _oneInvariantFactor>
template<class IMatrix, class Vector, class VectorP>
Vector & smithFormBackward ( Vector & sf,
const IMatrix & A,
const VectorP & PrimeL )
inline

compute the Smith Form of an integer matrix, ignoring these factors of primes in PrimeL Using backward search descibed by B.

D. Saunders.

◆ smithFormBackward() [2/2]

template<class _Ring, class _oneInvariantFactor>
template<class IMatrix, class Vector>
Vector & smithFormBackward ( Vector & sf,
const IMatrix & A )
inline

compute the Smith Form of an integer matrix Using backward binary search.

◆ smithFormBinarySearchBackward()

template<class _Ring, class _oneInvariantFactor>
template<class IMatrix, class Vector, class VectorP>
Vector & smithFormBinarySearchBackward ( Vector & sf,
const IMatrix & A,
int i,
int j,
int depth,
const VectorP & PrimeL )
inlineprotected

Binary search invariant factors between i and j, missing those factors in PrimeL suppose sf[(size_t)i - 1], sf [j - 1] are ith and jth invariant factor of A i <= j.

Field Documentation

◆ oif

template<class _Ring, class _oneInvariantFactor>
oneInvariantFactor oif
protected

◆ r

template<class _Ring, class _oneInvariantFactor>
Ring r
protected

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