linbox
BlackboxBlockContainerBase< _Field, _Blackbox, _MatrixDomain > Class Template Referenceabstract

A base class for BlackboxBlockContainer. More...

#include <blackbox-block-container-base.h>

+ Inheritance diagram for BlackboxBlockContainerBase< _Field, _Blackbox, _MatrixDomain >:

Data Structures

class  const_iterator
 

Public Types

typedef _Field Field
 
typedef Field::Element Element
 
typedef _Blackbox Blackbox
 
typedef BlasMatrix< FieldBlock
 
typedef BlasMatrix< FieldValue
 

Public Member Functions

 BlackboxBlockContainerBase (const Blackbox *BD, const Field &F, size_t m, size_t n, size_t seed=static_cast< size_t >(std::time(nullptr)))
 
virtual ~BlackboxBlockContainerBase ()
 
const_iterator begin ()
 
const_iterator end ()
 
size_t size () const
 
const Fieldfield () const
 
const FieldgetField () const
 
const BlackboxgetBB () const
 
size_t rowdim () const
 
size_t coldim () const
 

Protected Member Functions

virtual void _launch ()=0
 Launches a process to do the computation of the next sequence value: \(U A^{i+1} V\).
 
virtual void _wait ()=0
 If a separate process is computing the next value of \(U A^{i+1} V\), _wait() blocks until the value is ready.
 
const Valuegetvalue ()
 
void Mul (Block &M1, const Blackbox &M2, const Block &M3)
 Initializers.
 
void init (const Block &U, const Block &V)
 User Left and Right blocks.
 
void init (size_t m, size_t n)
 

Protected Attributes

const Field_field
 Members.
 
const Blackbox_BB
 
size_t _size
 
size_t _nn
 
size_t _m
 
size_t _n
 
long casenumber
 
Block _blockU
 
Block _blockV
 
Value _value
 
size_t _seed
 

Friends

class const_iterator
 

Detailed Description

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
class LinBox::BlackboxBlockContainerBase< _Field, _Blackbox, _MatrixDomain >

A base class for BlackboxBlockContainer.

The primary member function is begin().

It returns an iterator which after i increments (++) dereferences to \(U A^i V\), for \(U\) and \(V\) determined by the init function. It is designed to be used with implementations of Block Berlekamp-Massey such as BlockMasseyDomain.

Subclasses complete the implementation by defining _launch() and _wait().

Member Typedef Documentation

◆ Field

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
typedef _Field Field

◆ Element

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
typedef Field::Element Element

◆ Blackbox

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
typedef _Blackbox Blackbox

◆ Block

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
typedef BlasMatrix<Field> Block

◆ Value

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
typedef BlasMatrix<Field> Value

Constructor & Destructor Documentation

◆ BlackboxBlockContainerBase()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
BlackboxBlockContainerBase ( const Blackbox * BD,
const Field & F,
size_t m,
size_t n,
size_t seed = static_cast<size_t>(std::time(nullptr)) )
inline

◆ ~BlackboxBlockContainerBase()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
virtual ~BlackboxBlockContainerBase ( )
inlinevirtual

Member Function Documentation

◆ begin()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
const_iterator begin ( )
inline

◆ end()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
const_iterator end ( )
inline

◆ size()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
size_t size ( ) const
inline

◆ field()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
const Field & field ( ) const
inline

◆ getField()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
const Field & getField ( ) const
inline

◆ getBB()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
const Blackbox * getBB ( ) const
inline

◆ rowdim()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
size_t rowdim ( ) const
inline

◆ coldim()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
size_t coldim ( ) const
inline

◆ _launch()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
virtual void _launch ( )
protectedpure virtual

◆ _wait()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
virtual void _wait ( )
protectedpure virtual

◆ getvalue()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
const Value & getvalue ( )
inlineprotected

◆ Mul()

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
void Mul ( Block & M1,
const Blackbox & M2,
const Block & M3 )
inlineprotected

Initializers.

◆ init() [1/2]

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
void init ( const Block & U,
const Block & V )
inlineprotected

User Left and Right blocks.

◆ init() [2/2]

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
void init ( size_t m,
size_t n )
inlineprotected

Friends And Related Symbol Documentation

◆ const_iterator

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
friend class const_iterator
friend

Field Documentation

◆ _field

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
const Field* _field
protected

Members.

◆ _BB

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
const Blackbox* _BB
protected

◆ _size

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
size_t _size
protected

◆ _nn

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
size_t _nn
protected

◆ _m

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
size_t _m
protected

◆ _n

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
size_t _n
protected

◆ casenumber

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
long casenumber
protected

◆ _blockU

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
Block _blockU
protected

◆ _blockV

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
Block _blockV
protected

◆ _value

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
Value _value
protected

◆ _seed

template<class _Field, class _Blackbox, class _MatrixDomain = BlasMatrixDomain<_Field>>
size_t _seed
protected

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