qpOASES
3.0.1
|
Interfaces matrix-vector operations tailored to symmetric dense matrices. More...
#include <Matrices.hpp>
Public Member Functions | |
SymDenseMat () | |
SymDenseMat (int m, int n, int lD, real_t *v) | |
virtual Matrix * | duplicate () const |
virtual SymmetricMatrix * | duplicateSym () const |
virtual returnValue | bilinear (const Indexlist *const icols, int xN, const real_t *x, int xLD, real_t *y, int yLD) const |
virtual void | free () |
virtual real_t | diag (int i) const |
virtual BooleanType | isDiag () const |
virtual real_t | getNorm (int type=2) const |
virtual real_t | getRowNorm (int rNum, int type=2) const |
virtual returnValue | getRow (int rNum, const Indexlist *const icols, real_t alpha, real_t *row) const |
virtual returnValue | getCol (int cNum, const Indexlist *const irows, real_t alpha, real_t *col) const |
returnValue | times (int xN, real_t alpha, const real_t *x, int xLD, real_t beta, real_t *y, int yLD) const |
virtual returnValue | times (const Indexlist *const irows, const Indexlist *const icols, int xN, real_t alpha, const real_t *x, int xLD, real_t beta, real_t *y, int yLD, BooleanType yCompr=BT_TRUE) const |
returnValue | transTimes (int xN, real_t alpha, const real_t *x, int xLD, real_t beta, real_t *y, int yLD) const |
virtual returnValue | transTimes (const Indexlist *const irows, const Indexlist *const icols, int xN, real_t alpha, const real_t *x, int xLD, real_t beta, real_t *y, int yLD) const |
virtual returnValue | addToDiag (real_t alpha) |
virtual real_t * | full () const |
virtual returnValue | print (const char *name=0) const |
BooleanType | needToFreeMemory () const |
void | doFreeMemory () |
void | doNotFreeMemory () |
Protected Attributes | |
int | nRows |
int | nCols |
int | leaDim |
real_t * | val |
BooleanType | freeMemory |
Symmetric dense matrix class.
SymDenseMat::SymDenseMat | ( | ) | [inline] |
Default constructor.
Referenced by duplicateSym().
SymDenseMat::SymDenseMat | ( | int | m, |
int | n, | ||
int | lD, | ||
real_t * | v | ||
) | [inline] |
Constructor from vector of values.
m | Number of rows. |
n | Number of columns. |
lD | Leading dimension. |
v | Values. |
returnValue DenseMatrix::addToDiag | ( | real_t | alpha | ) | [virtual, inherited] |
Adds given offset to diagonal of matrix.
alpha | Diagonal offset. |
Implements Matrix.
References DenseMatrix::leaDim, DenseMatrix::nCols, DenseMatrix::nRows, SUCCESSFUL_RETURN, and DenseMatrix::val.
returnValue SymDenseMat::bilinear | ( | const Indexlist *const | icols, |
int | xN, | ||
const real_t * | x, | ||
int | xLD, | ||
real_t * | y, | ||
int | yLD | ||
) | const [virtual] |
Compute bilinear form y = x'*H*x using submatrix given by index list.
icols | Index list specifying columns of x. |
xN | Number of vectors to multiply. |
x | Input vector to be multiplied (uncompressed). |
xLD | Leading dimension of input x. |
y | Output vector of results (compressed). |
yLD | Leading dimension of output y. |
Implements SymmetricMatrix.
References DenseMatrix::leaDim, Indexlist::length, Indexlist::number, real_t, SUCCESSFUL_RETURN, and DenseMatrix::val.
real_t DenseMatrix::diag | ( | int | i | ) | const [virtual, inherited] |
Returns i-th diagonal entry.
i | Index. |
Implements Matrix.
References DenseMatrix::leaDim, and DenseMatrix::val.
void Matrix::doFreeMemory | ( | ) | [inline, inherited] |
Enables de-allocation of internal memory.
References BT_TRUE, and Matrix::freeMemory.
Referenced by QProblemB::createDiagSparseMat(), DenseMatrix::duplicate(), SparseMatrix::duplicate(), SparseMatrixRow::duplicate(), duplicateSym(), SymSparseMat::duplicateSym(), QProblemB::setupQPdataFromFile(), QProblem::setupQPdataFromFile(), solveOQPbenchmark(), SparseMatrix::SparseMatrix(), and SparseMatrixRow::SparseMatrixRow().
void Matrix::doNotFreeMemory | ( | ) | [inline, inherited] |
Disables de-allocation of internal memory.
Referenced by SparseMatrix::free(), SparseMatrixRow::free(), Matrix::Matrix(), SparseMatrix::SparseMatrix(), and SparseMatrixRow::SparseMatrixRow().
Matrix * SymDenseMat::duplicate | ( | ) | const [virtual] |
Returns a deep-copy of the Matrix object.
Reimplemented from DenseMatrix.
References duplicateSym().
SymmetricMatrix * SymDenseMat::duplicateSym | ( | ) | const [virtual] |
Returns a deep-copy of the SymmetricMatrix object.
Implements SymmetricMatrix.
References BT_TRUE, Matrix::doFreeMemory(), DenseMatrix::nCols, Matrix::needToFreeMemory(), DenseMatrix::nRows, real_t, SymDenseMat(), and DenseMatrix::val.
Referenced by duplicate().
void DenseMatrix::free | ( | ) | [virtual, inherited] |
Frees all internal memory.
Implements Matrix.
References DenseMatrix::val.
Referenced by DenseMatrix::~DenseMatrix().
real_t * DenseMatrix::full | ( | ) | const [virtual, inherited] |
Allocates and creates dense matrix array in row major format.
Note: Calling function has to free allocated memory!
Implements Matrix.
References DenseMatrix::nCols, DenseMatrix::nRows, real_t, and DenseMatrix::val.
returnValue DenseMatrix::getCol | ( | int | cNum, |
const Indexlist *const | irows, | ||
real_t | alpha, | ||
real_t * | col | ||
) | const [virtual, inherited] |
Retrieve indexed entries of matrix column multiplied by alpha.
cNum | Column number. |
irows | Index list specifying rows. |
alpha | Scalar factor. |
col | Output column vector. |
Implements Matrix.
References BT_TRUE, isEqual(), DenseMatrix::leaDim, Indexlist::length, Indexlist::number, SUCCESSFUL_RETURN, and DenseMatrix::val.
real_t DenseMatrix::getNorm | ( | int | type = 2 | ) | const [virtual, inherited] |
Get the N-norm of the matrix
type | Norm type, 1: one-norm, 2: Euclidean norm. |
Implements Matrix.
References DenseMatrix::nCols, DenseMatrix::nRows, REFER_NAMESPACE_QPOASES, and DenseMatrix::val.
Referenced by DenseMatrix::getRowNorm().
returnValue DenseMatrix::getRow | ( | int | rNum, |
const Indexlist *const | icols, | ||
real_t | alpha, | ||
real_t * | row | ||
) | const [virtual, inherited] |
Retrieve indexed entries of matrix row multiplied by alpha.
rNum | Row number. |
icols | Index list specifying columns. |
alpha | Scalar factor. |
row | Output row vector. |
Implements Matrix.
References BT_TRUE, isEqual(), DenseMatrix::leaDim, Indexlist::length, DenseMatrix::nCols, Indexlist::number, SUCCESSFUL_RETURN, and DenseMatrix::val.
real_t DenseMatrix::getRowNorm | ( | int | rNum, |
int | type = 2 |
||
) | const [virtual, inherited] |
Get the N-norm of a row
rNum | Row number. |
type | Norm type, 1: one-norm, 2: Euclidean norm. |
Implements Matrix.
References DenseMatrix::getNorm(), DenseMatrix::leaDim, DenseMatrix::nCols, REFER_NAMESPACE_QPOASES, and DenseMatrix::val.
BooleanType DenseMatrix::isDiag | ( | ) | const [virtual, inherited] |
Checks whether matrix is square and diagonal.
Implements Matrix.
References BT_FALSE, BT_TRUE, EPS, getAbs(), DenseMatrix::leaDim, DenseMatrix::nCols, DenseMatrix::nRows, and DenseMatrix::val.
BooleanType Matrix::needToFreeMemory | ( | ) | const [inline, inherited] |
Returns whether internal memory needs to be de-allocated.
References Matrix::freeMemory.
Referenced by DenseMatrix::duplicate(), duplicateSym(), DenseMatrix::~DenseMatrix(), SparseMatrix::~SparseMatrix(), and SparseMatrixRow::~SparseMatrixRow().
returnValue DenseMatrix::print | ( | const char * | name = 0 | ) | const [virtual, inherited] |
Prints matrix to screen.
name | Name of matrix. |
Implements Matrix.
References DenseMatrix::nCols, DenseMatrix::nRows, REFER_NAMESPACE_QPOASES, and DenseMatrix::val.
returnValue DenseMatrix::times | ( | int | xN, |
real_t | alpha, | ||
const real_t * | x, | ||
int | xLD, | ||
real_t | beta, | ||
real_t * | y, | ||
int | yLD | ||
) | const [virtual, inherited] |
Evaluate Y=alpha*A*X + beta*Y.
xN | Number of vectors to multiply. |
alpha | Scalar factor for matrix vector product. |
x | Input vector to be multiplied. |
xLD | Leading dimension of input x. |
beta | Scalar factor for y. |
y | Output vector of results. |
yLD | Leading dimension of output y. |
Implements Matrix.
References GEMM, getMax(), DenseMatrix::nCols, DenseMatrix::nRows, SUCCESSFUL_RETURN, and DenseMatrix::val.
returnValue DenseMatrix::times | ( | const Indexlist *const | irows, |
const Indexlist *const | icols, | ||
int | xN, | ||
real_t | alpha, | ||
const real_t * | x, | ||
int | xLD, | ||
real_t | beta, | ||
real_t * | y, | ||
int | yLD, | ||
BooleanType | yCompr = BT_TRUE |
||
) | const [virtual, inherited] |
Evaluate matrix vector product with submatrix given by Indexlist.
irows | Index list specifying rows. |
icols | Index list specifying columns. |
xN | Number of vectors to multiply. |
alpha | Scalar factor for matrix vector product. |
x | Input vector to be multiplied. |
xLD | Leading dimension of input x. |
beta | Scalar factor for y. |
y | Output vector of results. |
yLD | Leading dimension of output y. |
yCompr | Compressed storage for y. |
Implements Matrix.
References BT_FALSE, BT_TRUE, isEqual(), Indexlist::iSort, isZero(), DenseMatrix::leaDim, Indexlist::length, DenseMatrix::nCols, Indexlist::number, SUCCESSFUL_RETURN, and DenseMatrix::val.
returnValue DenseMatrix::transTimes | ( | int | xN, |
real_t | alpha, | ||
const real_t * | x, | ||
int | xLD, | ||
real_t | beta, | ||
real_t * | y, | ||
int | yLD | ||
) | const [virtual, inherited] |
Evaluate Y=alpha*A'*X + beta*Y.
xN | Number of vectors to multiply. |
alpha | Scalar factor for matrix vector product. |
x | Input vector to be multiplied. |
xLD | Leading dimension of input x. |
beta | Scalar factor for y. |
y | Output vector of results. |
yLD | Leading dimension of output y. |
Implements Matrix.
References GEMM, getMax(), DenseMatrix::nCols, DenseMatrix::nRows, SUCCESSFUL_RETURN, and DenseMatrix::val.
returnValue DenseMatrix::transTimes | ( | const Indexlist *const | irows, |
const Indexlist *const | icols, | ||
int | xN, | ||
real_t | alpha, | ||
const real_t * | x, | ||
int | xLD, | ||
real_t | beta, | ||
real_t * | y, | ||
int | yLD | ||
) | const [virtual, inherited] |
Evaluate matrix transpose vector product.
irows | Index list specifying rows. |
icols | Index list specifying columns. |
xN | Number of vectors to multiply. |
alpha | Scalar factor for matrix vector product. |
x | Input vector to be multiplied. |
xLD | Leading dimension of input x. |
beta | Scalar factor for y. |
y | Output vector of results. |
yLD | Leading dimension of output y. |
Implements Matrix.
References BT_FALSE, BT_TRUE, isEqual(), Indexlist::iSort, isZero(), DenseMatrix::leaDim, Indexlist::length, Indexlist::number, SUCCESSFUL_RETURN, and DenseMatrix::val.
BooleanType Matrix::freeMemory [protected, inherited] |
Indicating whether internal memory needs to be de-allocated.
Referenced by Matrix::doFreeMemory(), and Matrix::needToFreeMemory().
int DenseMatrix::leaDim [protected, inherited] |
Leading dimension.
Referenced by DenseMatrix::addToDiag(), bilinear(), DenseMatrix::diag(), DenseMatrix::getCol(), DenseMatrix::getRow(), DenseMatrix::getRowNorm(), DenseMatrix::isDiag(), DenseMatrix::times(), and DenseMatrix::transTimes().
int DenseMatrix::nCols [protected, inherited] |
int DenseMatrix::nRows [protected, inherited] |
Number of rows.
Referenced by DenseMatrix::addToDiag(), DenseMatrix::duplicate(), duplicateSym(), DenseMatrix::full(), DenseMatrix::getNorm(), DenseMatrix::isDiag(), DenseMatrix::print(), DenseMatrix::times(), and DenseMatrix::transTimes().
real_t* DenseMatrix::val [protected, inherited] |
Vector of entries.
Referenced by DenseMatrix::addToDiag(), bilinear(), DenseMatrix::diag(), DenseMatrix::duplicate(), duplicateSym(), DenseMatrix::free(), DenseMatrix::full(), DenseMatrix::getCol(), DenseMatrix::getNorm(), DenseMatrix::getRow(), DenseMatrix::getRowNorm(), DenseMatrix::isDiag(), DenseMatrix::print(), DenseMatrix::times(), and DenseMatrix::transTimes().