linbox
FIBB< Ring > Struct Template Referenceabstract

#include <fibb.h>

+ Inheritance diagram for FIBB< Ring >:

Public Types

using Field = Ring
 
using Element = typename Ring::Element
 
using ResizableMatrix = DenseMatrix<Field>
 
using Matrix = DenseMatrix<Field>
 

Public Member Functions

virtual ~FIBB ()
 
virtual size_t & rank (size_t &r) const =0
 
virtual Elementdet (Element &d) const =0
 
virtual MatrixsolveRight (Matrix &Y, const Matrix &X) const =0
 Y: AY = X, for this A.
 
virtual MatrixsolveLeft (Matrix &Y, const Matrix &X) const =0
 Y: YA = X, for this A.
 
virtual MatrixnullspaceRandomRight (Matrix &N) const =0
 N: AN = 0, each col random.
 
virtual MatrixnullspaceRandomLeft (Matrix &N) const =0
 N: NA = 0, each row random.
 
virtual ResizableMatrixnullspaceBasisRight (ResizableMatrix &B) const =0
 B: columns are a right nullspace basis for this A.
 
virtual ResizableMatrixnullspaceBasisLeft (ResizableMatrix &B) const =0
 BA= 0 and xA = 0 => exists y: x = yB and B full rank.
 
virtual BBType bbTag () const =0
 
virtual size_t rowdim () const =0
 
virtual size_t coldim () const =0
 
virtual const Fieldfield () const =0
 
virtual std::ostream & write (std::ostream &os) const =0
 
virtual std::istream & read (std::istream &os)=0
 
virtual MatrixapplyLeft (Matrix &Y, const Matrix &X) const =0
 
virtual MatrixapplyRight (Matrix &Y, const Matrix &X) const =0
 
template<class OutVector, class InVector>
OutVector & apply (OutVector &y, const InVector &x) const
 
template<class OutVector, class InVector>
OutVector & applyTranspose (OutVector &y, const InVector &x) const
 
template<typename BB2>
void map (BB2 &A)
 

Member Typedef Documentation

◆ Field

template<class Ring>
using Field = Ring

◆ Element

template<class Ring>
using Element = typename Ring::Element

◆ ResizableMatrix

template<class Ring>
using ResizableMatrix = DenseMatrix<Field>

◆ Matrix

template<class Ring>
using Matrix = DenseMatrix<Field>

Constructor & Destructor Documentation

◆ ~FIBB()

template<class Ring>
virtual ~FIBB ( )
inlinevirtual

Member Function Documentation

◆ rank()

◆ det()

◆ solveRight()

template<class Ring>
virtual Matrix & solveRight ( Matrix & Y,
const Matrix & X ) const
pure virtual

Y: AY = X, for this A.

Solve nonsingular or consistent singular system. If it is consistent singular, an arbitrary solution is provided. X and Y must have identical shape.

Note that Y+Z is a random sample of the solution space after {solveRight(Y, X); nullspaceRandomRight(Z);}.

Behaviour is unspecified for inconsistent systems (see solveMP).

Implemented in FIBBProduct< Field_ >, FIBBProduct< Field >, FIBBProduct< Field >, Permutation< Field >, Permutation< Field >, TriangularFIBB< Field_ >, TriangularFIBB< _Tp1 >, TriangularFIBB< _Tp1 >, TriangularFIBB< Field >, and TriangularFIBB< Field >.

◆ solveLeft()

◆ nullspaceRandomRight()

◆ nullspaceRandomLeft()

◆ nullspaceBasisRight()

template<class Ring>
virtual ResizableMatrix & nullspaceBasisRight ( ResizableMatrix & B) const
pure virtual

B: columns are a right nullspace basis for this A.

B is resized and filled so that: (1) AB = 0, (2) Ax = 0 => exists y: x = By, and (3) B has full rank.

Implemented in Permutation< Field >, and Permutation< Field >.

◆ nullspaceBasisLeft()

template<class Ring>
virtual ResizableMatrix & nullspaceBasisLeft ( ResizableMatrix & B) const
pure virtual

BA= 0 and xA = 0 => exists y: x = yB and B full rank.

Implemented in Permutation< Field >, and Permutation< Field >.

◆ bbTag()

◆ rowdim()

◆ coldim()

◆ field()

◆ write()

◆ read()

◆ applyLeft()

◆ applyRight()

◆ apply()

template<class Ring>
template<class OutVector, class InVector>
OutVector & apply ( OutVector & y,
const InVector & x ) const
inlineinherited

◆ applyTranspose()

template<class Ring>
template<class OutVector, class InVector>
OutVector & applyTranspose ( OutVector & y,
const InVector & x ) const
inlineinherited

◆ map()

template<class Ring>
template<typename BB2>
void map ( BB2 & A)
inlineinherited

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