linbox
PascalBlackbox< Field > Class Template Reference

#include <pascal.h>

Public Types

typedef Field::Element Element
 

Public Member Functions

template<class Vector>
 PascalBlackbox (int r, int c, const Vector &polyCoeffs, Field &F)
 
void initBaseCase ()
 
template<class Mat1, class Mat2>
Mat1 & applyLeft (Mat1 &lhs, const Mat2 &rhs) const
 
template<class Mat1, class Mat2>
void applyLeft (int i0, int j0, int r, Mat1 &lhs, Mat2 &rhs, bool flip, int numThreads) const
 
template<class SlicedDom>
void applyHelper (int i0, int j0, int r, Sliced< SlicedDom > &lhs, Sliced< SlicedDom > &rhs, const std::vector< uint16_t > &nonZeros) const
 
template<class Mat1, class Mat2>
void applyHelper (int i0, int j0, int r, Mat1 &lhs, Mat2 &rhs, const std::vector< uint16_t > &nonZeros) const
 
size_t rowdim () const
 
size_t coldim () const
 
const Fieldfield () const
 

Protected Member Functions

void initPowersOfThree ()
 
int nextPowerOfThree (int x) const
 

Protected Attributes

std::vector< ElementpolyCoeffs_
 
int rowdim_
 
int coldim_
 
Field F_
 
std::vector< int > powersOfThree_
 
std::vector< uint16_t > nonZeroRows_
 
std::vector< uint16_t > nonZeroCols_
 
std::vector< uint16_t > nonZerosFlipped_
 
std::vector< uint16_t > nonZerosUnflipped_
 

Member Typedef Documentation

◆ Element

template<class Field>
typedef Field::Element Element

Constructor & Destructor Documentation

◆ PascalBlackbox()

template<class Field>
template<class Vector>
PascalBlackbox ( int r,
int c,
const Vector & polyCoeffs,
Field & F )
inline

Member Function Documentation

◆ initBaseCase()

template<class Field>
void initBaseCase ( )
inline

◆ applyLeft() [1/2]

template<class Field>
template<class Mat1, class Mat2>
Mat1 & applyLeft ( Mat1 & lhs,
const Mat2 & rhs ) const
inline

◆ applyLeft() [2/2]

template<class Field>
template<class Mat1, class Mat2>
void applyLeft ( int i0,
int j0,
int r,
Mat1 & lhs,
Mat2 & rhs,
bool flip,
int numThreads ) const
inline

◆ applyHelper() [1/2]

template<class Field>
template<class SlicedDom>
void applyHelper ( int i0,
int j0,
int r,
Sliced< SlicedDom > & lhs,
Sliced< SlicedDom > & rhs,
const std::vector< uint16_t > & nonZeros ) const
inline

◆ applyHelper() [2/2]

template<class Field>
template<class Mat1, class Mat2>
void applyHelper ( int i0,
int j0,
int r,
Mat1 & lhs,
Mat2 & rhs,
const std::vector< uint16_t > & nonZeros ) const
inline

◆ rowdim()

template<class Field>
size_t rowdim ( ) const
inline

◆ coldim()

template<class Field>
size_t coldim ( ) const
inline

◆ field()

template<class Field>
const Field & field ( ) const
inline

◆ initPowersOfThree()

template<class Field>
void initPowersOfThree ( )
inlineprotected

◆ nextPowerOfThree()

template<class Field>
int nextPowerOfThree ( int x) const
inlineprotected

Field Documentation

◆ polyCoeffs_

template<class Field>
std::vector<Element> polyCoeffs_
protected

◆ rowdim_

template<class Field>
int rowdim_
protected

◆ coldim_

template<class Field>
int coldim_
protected

◆ F_

template<class Field>
Field F_
protected

◆ powersOfThree_

template<class Field>
std::vector<int> powersOfThree_
protected

◆ nonZeroRows_

template<class Field>
std::vector<uint16_t> nonZeroRows_
protected

◆ nonZeroCols_

template<class Field>
std::vector<uint16_t> nonZeroCols_
protected

◆ nonZerosFlipped_

template<class Field>
std::vector<uint16_t> nonZerosFlipped_
protected

◆ nonZerosUnflipped_

template<class Field>
std::vector<uint16_t> nonZerosUnflipped_
protected

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