linbox
BlockCompose< _Blackbox1, _Blackbox2 > Class Template Reference

Blackbox of a product: \(C = AB\), i.e \(Cx \gets A(Bx)\). More...

#include <block-compose.h>

+ Inheritance diagram for BlockCompose< _Blackbox1, _Blackbox2 >:

Public Types

typedef _Blackbox1 Blackbox1
 
typedef _Blackbox2 Blackbox2
 
typedef Blackbox2::Field Field
 
typedef Field::Element Element
 

Public Member Functions

 BlockCompose (const Blackbox1 &A, const Blackbox2 &B)
 Constructor of C := A*B from blackbox matrices A and B.
 
size_t rowdim () const
 
size_t coldim () const
 
const Fieldfield () const
 
template<class Matrix>
MatrixapplyLeft (Matrix &Y, const Matrix &X) const
 
template<class Matrix>
MatrixapplyRight (Matrix &Y, const Matrix &X) const
 

Protected Attributes

Blackbox1 _A
 
Blackbox2 _B
 

Detailed Description

template<class _Blackbox1, class _Blackbox2>
class LinBox::BlockCompose< _Blackbox1, _Blackbox2 >

Blackbox of a product: \(C = AB\), i.e \(Cx \gets A(Bx)\).

This is a class that multiplies two matrices by implementing an apply method that calls the apply methods of both of the consituent matrices, one after the other.

This class, like the Black Box archetype from which it is derived, is templatized by the vector type to which the matrix is applied. Both constituent matrices must also use this same vector type. For specification of the blackbox members see BlackboxArchetype.

Template parameter: must meet the vector requirement.

Member Typedef Documentation

◆ Blackbox1

template<class _Blackbox1, class _Blackbox2>
typedef _Blackbox1 Blackbox1

◆ Blackbox2

template<class _Blackbox1, class _Blackbox2>
typedef _Blackbox2 Blackbox2

◆ Field

template<class _Blackbox1, class _Blackbox2>
typedef Blackbox2::Field Field

◆ Element

template<class _Blackbox1, class _Blackbox2>
typedef Field::Element Element

Constructor & Destructor Documentation

◆ BlockCompose()

template<class _Blackbox1, class _Blackbox2>
BlockCompose ( const Blackbox1 & A,
const Blackbox2 & B )
inline

Constructor of C := A*B from blackbox matrices A and B.

Build the product A*B of any two black box matrices of compatible dimensions.

Precondition
A.coldim() == B.rowdim().
Parameters
Ablackbox
Bblackbox

Member Function Documentation

◆ rowdim()

template<class _Blackbox1, class _Blackbox2>
size_t rowdim ( ) const
inline

◆ coldim()

template<class _Blackbox1, class _Blackbox2>
size_t coldim ( ) const
inline

◆ field()

template<class _Blackbox1, class _Blackbox2>
const Field & field ( ) const
inline

◆ applyLeft()

template<class _Blackbox1, class _Blackbox2>
template<class Matrix>
Matrix & applyLeft ( Matrix & Y,
const Matrix & X ) const
inline

◆ applyRight()

template<class _Blackbox1, class _Blackbox2>
template<class Matrix>
Matrix & applyRight ( Matrix & Y,
const Matrix & X ) const
inline

Field Documentation

◆ _A

template<class _Blackbox1, class _Blackbox2>
Blackbox1 _A
protected

◆ _B

template<class _Blackbox1, class _Blackbox2>
Blackbox2 _B
protected

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