|
Implementation of sparse LU factorization.This class implements a sparse LU factorization with either FOREST-TOMLIN or ETA updates, using dynamic Markowitz pivoting.
More...
#include <clufactor.h>
|
struct | Dring |
|
struct | L |
| Data structures for saving the working matrix and L factor. More...
|
|
struct | Perm |
| Data structures for saving the row and column permutations. More...
|
|
class | Pring |
| Pivot Ring. More...
|
|
class | Temp |
| Temporary data structures. More...
|
|
struct | U |
| Data structures for saving the working matrix and U factor. More...
|
|
|
|
| CLUFactor () |
| default construtor.
|
|
|
void | solveLright (Real *vec) |
|
int | solveRight4update (Real *vec, int *nonz, Real eps, Real *rhs, Real *forest, int *forestNum, int *forestIdx) |
|
void | solveRight (Real *vec, Real *rhs) |
|
int | solveRight2update (Real *vec1, Real *vec2, Real *rhs1, Real *rhs2, int *nonz, Real eps, Real *forest, int *forestNum, int *forestIdx) |
|
void | solveRight2 (Real *vec1, Real *vec2, Real *rhs1, Real *rhs2) |
|
void | solveLeft (Real *vec, Real *rhs) |
|
int | solveLeftEps (Real *vec, Real *rhs, int *nonz, Real eps) |
|
int | solveLeft2 (Real *vec1, int *nonz, Real *vec2, Real eps, Real *rhs1, Real *rhs2) |
|
int | vSolveRight4update (Real eps, Real *vec, int *idx, Real *rhs, int *ridx, int rn, Real *forest, int *forestNum, int *forestIdx) |
|
int | vSolveRight4update2 (Real eps, Real *vec, int *idx, Real *rhs, int *ridx, int rn, Real *vec2, Real eps2, Real *rhs2, int *ridx2, int rn2, Real *forest, int *forestNum, int *forestIdx) |
|
void | vSolveRight4update2sparse (Real eps, Real *vec, int *idx, Real *rhs, int *ridx, int &rn, Real eps2, Real *vec2, int *idx2, Real *rhs2, int *ridx2, int &rn2, Real *forest, int *forestNum, int *forestIdx) |
| sparse version of above method
|
|
int | vSolveRight4update3 (Real eps, Real *vec, int *idx, Real *rhs, int *ridx, int rn, Real *vec2, Real eps2, Real *rhs2, int *ridx2, int rn2, Real *vec3, Real eps3, Real *rhs3, int *ridx3, int rn3, Real *forest, int *forestNum, int *forestIdx) |
|
void | vSolveRight4update3sparse (Real eps, Real *vec, int *idx, Real *rhs, int *ridx, int &rn, Real eps2, Real *vec2, int *idx2, Real *rhs2, int *ridx2, int &rn2, Real eps3, Real *vec3, int *idx3, Real *rhs3, int *ridx3, int &rn3, Real *forest, int *forestNum, int *forestIdx) |
| sparse version of above method
|
|
void | vSolveRightNoNZ (Real *vec2, Real eps2, Real *rhs2, int *ridx2, int rn2) |
|
int | vSolveLeft (Real eps, Real *vec, int *idx, Real *rhs, int *ridx, int rn) |
|
void | vSolveLeftNoNZ (Real eps, Real *vec, Real *rhs, int *ridx, int rn) |
|
int | vSolveLeft2 (Real eps, Real *vec, int *idx, Real *rhs, int *ridx, int rn, Real *vec2, Real *rhs2, int *ridx2, int rn2) |
|
void | vSolveLeft2sparse (Real eps, Real *vec, int *idx, Real *rhs, int *ridx, int &rn, Real *vec2, int *idx2, Real *rhs2, int *ridx2, int &rn2) |
| sparse version of solving 2 systems of equations
|
|
int | vSolveLeft3 (Real eps, Real *vec, int *idx, Real *rhs, int *ridx, int rn, Real *vec2, Real *rhs2, int *ridx2, int rn2, Real *vec3, Real *rhs3, int *ridx3, int rn3) |
|
void | vSolveLeft3sparse (Real eps, Real *vec, int *idx, Real *rhs, int *ridx, int &rn, Real *vec2, int *idx2, Real *rhs2, int *ridx2, int &rn2, Real *vec3, int *idx3, Real *rhs3, int *ridx3, int &rn3) |
| sparse version of solving 3 systems of equations
|
|
void | forestUpdate (int col, Real *work, int num, int *nonz) |
| Performs the Forrest-Tomlin update of the LU factorization.
|
|
void | update (int p_col, Real *p_work, const int *p_idx, int num) |
|
void | updateNoClear (int p_col, const Real *p_work, const int *p_idx, int num) |
|
void | factor (const SVector **vec, Real threshold, Real eps) |
| epsilon for zero detection
|
|
|
void | dump () const |
|
bool | isConsistent () const |
|
|
|
These helper methods are used during the factorization process. The solve*-methods solve lower and upper triangular systems from the left or from the right, respectively The methods with '2' in the end solve two systems at the same time. The methods with "Eps" in the end consider elements smaller then the passed epsilon as zero.
|
void | solveUright (Real *wrk, Real *vec) const |
|
int | solveUrightEps (Real *vec, int *nonz, Real eps, Real *rhs) |
|
void | solveUright2 (Real *work1, Real *vec1, Real *work2, Real *vec2) |
|
int | solveUright2eps (Real *work1, Real *vec1, Real *work2, Real *vec2, int *nonz, Real eps) |
|
void | solveLright2 (Real *vec1, Real *vec2) |
|
void | solveUpdateRight (Real *vec) |
|
void | solveUpdateRight2 (Real *vec1, Real *vec2) |
|
void | solveUleft (Real *work, Real *vec) |
|
void | solveUleft2 (Real *work1, Real *vec1, Real *work2, Real *vec2) |
|
int | solveLleft2forest (Real *vec1, int *, Real *vec2, Real) |
|
void | solveLleft2 (Real *vec1, int *, Real *vec2, Real) |
|
int | solveLleftForest (Real *vec, int *, Real) |
|
void | solveLleft (Real *vec) const |
|
int | solveLleftEps (Real *vec, int *nonz, Real eps) |
|
void | solveUpdateLeft (Real *vec) |
|
void | solveUpdateLeft2 (Real *vec1, Real *vec2) |
|
int | vSolveLright (Real *vec, int *ridx, int rn, Real eps) |
|
void | vSolveLright2 (Real *vec, int *ridx, int *rnptr, Real eps, Real *vec2, int *ridx2, int *rn2ptr, Real eps2) |
|
void | vSolveLright3 (Real *vec, int *ridx, int *rnptr, Real eps, Real *vec2, int *ridx2, int *rn2ptr, Real eps2, Real *vec3, int *ridx3, int *rn3ptr, Real eps3) |
|
int | vSolveUright (Real *vec, int *vidx, Real *rhs, int *ridx, int rn, Real eps) |
|
void | vSolveUrightNoNZ (Real *vec, Real *rhs, int *ridx, int rn, Real eps) |
|
int | vSolveUright2 (Real *vec, int *vidx, Real *rhs, int *ridx, int rn, Real eps, Real *vec2, Real *rhs2, int *ridx2, int rn2, Real eps2) |
|
int | vSolveUpdateRight (Real *vec, int *ridx, int n, Real eps) |
|
void | vSolveUpdateRightNoNZ (Real *vec, Real) |
|
int | solveUleft (Real eps, Real *vec, int *vecidx, Real *rhs, int *rhsidx, int rhsn) |
|
void | solveUleftNoNZ (Real eps, Real *vec, Real *rhs, int *rhsidx, int rhsn) |
|
int | solveLleftForest (Real eps, Real *vec, int *nonz, int n) |
|
void | solveLleftForestNoNZ (Real *vec) |
|
int | solveLleft (Real eps, Real *vec, int *nonz, int rn) |
|
void | solveLleftNoNZ (Real *vec) |
|
int | solveUpdateLeft (Real eps, Real *vec, int *nonz, int n) |
|
void | forestPackColumns () |
|
void | forestMinColMem (int size) |
|
void | forestReMaxCol (int col, int len) |
|
void | initPerm () |
|
void | initFactorMatrix (const SVector **vec, const Real eps) |
|
void | minLMem (int size) |
|
void | setPivot (const int p_stage, const int p_col, const int p_row, const Real val) |
|
void | colSingletons () |
|
void | rowSingletons () |
|
void | initFactorRings () |
|
void | freeFactorRings () |
|
int | setupColVals () |
|
void | setupRowVals () |
|
void | eliminateRowSingletons () |
|
void | eliminateColSingletons () |
|
void | selectPivots (Real threshold) |
|
int | updateRow (int r, int lv, int prow, int pcol, Real pval, Real eps) |
|
void | eliminatePivot (int prow, int pos, Real eps) |
|
void | eliminateNucleus (const Real eps, const Real threshold) |
|
void | minRowMem (int size) |
|
void | minColMem (int size) |
|
void | remaxCol (int p_col, int len) |
|
void | packRows () |
|
void | packColumns () |
|
void | remaxRow (int p_row, int len) |
|
int | makeLvec (int p_len, int p_row) |
|
|
| CLUFactor (const CLUFactor &) |
| copy construtor.
|
|
CLUFactor & | operator= (const CLUFactor &) |
| assignment operator.
|
|
Implementation of sparse LU factorization.
This class implements a sparse LU factorization with either FOREST-TOMLIN or ETA updates, using dynamic Markowitz pivoting.
Definition at line 37 of file clufactor.h.
default construtor.
Since there is no sense in constructing a CLUFactor object per se, this is protected.
Definition at line 372 of file clufactor.h.
Definition at line 1618 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::U::row, CLUFactor::row, CLUFactor::Temp::s_cact, CLUFactor::Temp::s_mark, CLUFactor::setPivot(), SLinSolver::SINGULAR, CLUFactor::Temp::stage, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::stat, CLUFactor::temp, CLUFactor::thedim, CLUFactor::u, and CLUFactor::U::Row::val.
Referenced by CLUFactor::factor().
Definition at line 2829 of file clufactor.cpp.
References CLUFactor::col, CLUFactor::diag, CLUFactor::L::firstUnused, CLUFactor::U::Row::idx, CLUFactor::L::idx, CLUFactor::l, CLUFactor::U::Row::len, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::U::row, CLUFactor::L::row, CLUFactor::row, CLUFactor::U::Row::start, CLUFactor::L::start, CLUFactor::thedim, CLUFactor::u, CLUFactor::U::Row::val, and CLUFactor::L::val.
Referenced by SLUFactor::dump().
void eliminateColSingletons |
( |
| ) |
|
|
private |
Definition at line 2001 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::Pring::idx, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, init2DR, initDR, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::Perm::perm, CLUFactor::Temp::pivot_col, CLUFactor::Temp::pivot_colNZ, CLUFactor::Temp::pivot_row, CLUFactor::Pring::prev, removeDR, CLUFactor::U::row, CLUFactor::Temp::s_cact, CLUFactor::setPivot(), CLUFactor::Temp::stage, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::temp, CLUFactor::u, and CLUFactor::U::Row::val.
Referenced by CLUFactor::eliminateNucleus().
void eliminateNucleus |
( |
const Real |
eps, |
|
|
const Real |
threshold |
|
) |
| |
|
private |
Definition at line 2530 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::eliminateColSingletons(), CLUFactor::eliminatePivot(), CLUFactor::eliminateRowSingletons(), CLUFactor::Pring::idx, initDR, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::Pring::mkwtz, CLUFactor::Pring::next, CLUFactor::Perm::perm, CLUFactor::Temp::pivot_colNZ, CLUFactor::Temp::pivot_rowNZ, CLUFactor::Temp::pivots, CLUFactor::Pring::pos, CLUFactor::U::row, CLUFactor::Temp::s_mark, CLUFactor::selectPivots(), CLUFactor::setPivot(), SLinSolver::SINGULAR, CLUFactor::Temp::stage, CLUFactor::U::Row::start, CLUFactor::stat, CLUFactor::temp, CLUFactor::thedim, CLUFactor::u, and CLUFactor::U::Row::val.
Referenced by CLUFactor::factor().
void eliminatePivot |
( |
int |
prow, |
|
|
int |
pos, |
|
|
Real |
eps |
|
) |
| |
|
private |
- Todo:
- If this test failes, lv has no value. I suppose that in this case none of the loops below that uses lv is executed. But this is unproven.
Definition at line 2434 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, init2DR, initDR, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::makeLvec(), CLUFactor::Perm::perm, CLUFactor::Temp::pivot_col, CLUFactor::Temp::pivot_colNZ, removeDR, CLUFactor::U::row, CLUFactor::row, CLUFactor::Temp::s_cact, CLUFactor::Temp::s_mark, CLUFactor::setPivot(), CLUFactor::Temp::stage, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::temp, CLUFactor::u, CLUFactor::updateRow(), CLUFactor::U::Row::val, and CLUFactor::work.
Referenced by CLUFactor::eliminateNucleus().
void eliminateRowSingletons |
( |
| ) |
|
|
private |
Definition at line 1880 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::Pring::idx, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::L::idx, init2DR, initDR, CLUFactor::l, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::makeLvec(), CLUFactor::Perm::perm, CLUFactor::Temp::pivot_col, CLUFactor::Temp::pivot_row, CLUFactor::Temp::pivot_rowNZ, CLUFactor::Pring::prev, removeDR, CLUFactor::U::row, CLUFactor::row, CLUFactor::Temp::s_cact, CLUFactor::Temp::s_max, CLUFactor::setPivot(), CLUFactor::Temp::stage, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::temp, CLUFactor::u, CLUFactor::U::Row::val, and CLUFactor::L::val.
Referenced by CLUFactor::eliminateNucleus().
epsilon for zero detection
- Parameters
-
vec | Array of column vector pointers |
threshold | pivoting threshold |
eps | epsilon for zero detection |
Definition at line 2772 of file clufactor.cpp.
References CLUFactor::colSingletons(), CLUFactor::eliminateNucleus(), CLUFactor::factorCount, CLUFactor::factorTime, CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::freeFactorRings(), CLUFactor::Temp::init(), CLUFactor::initFactorMatrix(), CLUFactor::initFactorRings(), CLUFactor::initPerm(), CLUFactor::l, CLUFactor::nzCnt, SLinSolver::OK, CLUFactor::rowSingletons(), CLUFactor::setupColVals(), CLUFactor::setupRowVals(), CLUFactor::Temp::stage, Timer::start(), CLUFactor::L::start, CLUFactor::stat, Timer::stop(), CLUFactor::temp, and CLUFactor::thedim.
Referenced by SLUFactor::load().
void forestMinColMem |
( |
int |
size | ) |
|
|
private |
void forestPackColumns |
( |
| ) |
|
|
private |
Definition at line 358 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::Dring::idx, CLUFactor::U::Col::idx, CLUFactor::U::Col::len, CLUFactor::U::Col::list, CLUFactor::U::Col::max, CLUFactor::Dring::next, CLUFactor::U::Col::start, CLUFactor::thedim, CLUFactor::u, CLUFactor::U::Col::used, and CLUFactor::U::Col::val.
Referenced by CLUFactor::forestReMaxCol().
void forestReMaxCol |
( |
int |
col, |
|
|
int |
len |
|
) |
| |
|
private |
Definition at line 611 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::colMemMult, CLUFactor::U::Col::elem, CLUFactor::forestMinColMem(), CLUFactor::forestPackColumns(), CLUFactor::Dring::idx, CLUFactor::U::Col::idx, init2DR, CLUFactor::U::Col::len, CLUFactor::U::Col::list, CLUFactor::U::Col::max, CLUFactor::Dring::next, CLUFactor::Dring::prev, removeDR, CLUFactor::U::Col::size, CLUFactor::U::Col::start, CLUFactor::u, CLUFactor::U::Col::used, and CLUFactor::U::Col::val.
Referenced by CLUFactor::forestUpdate().
void forestUpdate |
( |
int |
p_col, |
|
|
Real * |
p_work, |
|
|
int |
num, |
|
|
int * |
nonz |
|
) |
| |
|
protected |
Performs the Forrest-Tomlin update of the LU factorization.
BH: I suppose this is implemented as described in UH Suhl, LM Suhl: A fast LU update for linear programming, Annals of OR 43, p. 33-47, 1993.
- Parameters
-
p_col | Index of basis column to replace. |
p_work | Dense vector to substitute in the basis. |
num | Number of nonzeros in vector represented by p_work. |
nonz | Indices of nonzero elements in vector p_work. |
The parameters num and nonz are used for the following optimization: If both are nonzero, indices of the nonzero elements provided in nonz (num giving their number) allow to access only those nonzero entries. Otherwise we have to go through the entire dense vector element by element.
After copying p_work into U, p_work is used to expand the row r, which is needed to restore the triangular structure of U.
Also num and nonz are used to maintain a heap if there are only very few nonzeros to be eliminated. This is plainly wrong if the method is called with nonz==0, see todo at the corresponding place below.
- Exceptions
-
- Todo:
- Use an extra member variable as a buffer for working with the dense row instead of misusing p_work. I think that should be as efficient and much cleaner.
The following assert is obviously violated if this method is called with nonzero==0.
- Todo:
- Use an extra member variable as a buffer for the heap instead of misusing nonz and num. The method enQueueMin() seems to sort the nonzeros or something, for which it only needs some empty vector of size num.
Definition at line 710 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, soplex::deQueueMin(), CLUFactor::diag, soplex::enQueueMin(), Param::epsilonUpdate(), CLUFactor::L::firstUnused, CLUFactor::forestReMaxCol(), CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::L::idx, CLUFactor::isConsistent(), soplex::isNotZero(), CLUFactor::l, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::makeLvec(), CLUFactor::U::Row::max, CLUFactor::U::Col::max, CLUFactor::maxabs, CLUFactor::nzCnt, SLinSolver::OK, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::remaxRow(), CLUFactor::U::row, CLUFactor::row, SLinSolver::SINGULAR, SOPLEX_FACTOR_MARKER, soplex::spxAbs(), CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::L::start, CLUFactor::stat, CLUFactor::thedim, CLUFactor::u, CLUFactor::U::Col::used, CLUFactor::U::Row::val, CLUFactor::U::Col::val, CLUFactor::L::val, and soplex::verySparseFactor.
Referenced by SLUFactor::change().
void freeFactorRings |
( |
void |
| ) |
|
|
private |
void initFactorMatrix |
( |
const SVector ** |
vec, |
|
|
const Real |
eps |
|
) |
| |
|
private |
Definition at line 1390 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::colMemMult, CLUFactor::U::Row::elem, CLUFactor::U::Col::elem, CLUFactor::Dring::idx, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, SVectorBase< R >::index(), CLUFactor::initMaxabs, soplex::isNotZero(), soplex::isZero(), CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::U::Row::list, CLUFactor::U::Col::list, CLUFactor::lMemMult, CLUFactor::U::Row::max, CLUFactor::U::Col::max, CLUFactor::minColMem(), CLUFactor::minLMem(), CLUFactor::minRowMem(), CLUFactor::Dring::next, CLUFactor::Perm::perm, CLUFactor::Dring::prev, CLUFactor::U::row, CLUFactor::row, CLUFactor::rowMemMult, CLUFactor::Temp::s_cact, CLUFactor::Temp::s_mark, CLUFactor::setPivot(), SLinSolver::SINGULAR, SVectorBase< R >::size(), soplex::spxAbs(), CLUFactor::Temp::stage, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::stat, CLUFactor::temp, CLUFactor::thedim, CLUFactor::u, CLUFactor::U::Row::used, CLUFactor::U::Col::used, CLUFactor::U::Row::val, and SVectorBase< R >::value().
Referenced by CLUFactor::factor().
Definition at line 1806 of file clufactor.cpp.
References CLUFactor::col, CLUFactor::Pring::idx, init2DR, initDR, CLUFactor::U::Row::len, CLUFactor::Perm::perm, CLUFactor::Temp::pivot_col, CLUFactor::Temp::pivot_colNZ, CLUFactor::Temp::pivot_row, CLUFactor::Temp::pivot_rowNZ, CLUFactor::U::row, CLUFactor::row, CLUFactor::Temp::s_cact, CLUFactor::Temp::s_mark, CLUFactor::Temp::s_max, SLinSolver::SINGULAR, soplex::spx_alloc(), CLUFactor::Temp::stage, CLUFactor::stat, CLUFactor::temp, CLUFactor::thedim, and CLUFactor::u.
Referenced by CLUFactor::factor().
bool isConsistent |
( |
| ) |
const |
|
protected |
Definition at line 2951 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::Dring::idx, CLUFactor::Pring::idx, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::l, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::U::Row::list, CLUFactor::U::Col::list, CLUFactor::U::Row::max, CLUFactor::U::Col::max, CLUFactor::Dring::next, CLUFactor::Pring::next, CLUFactor::Perm::perm, CLUFactor::Temp::pivot_colNZ, CLUFactor::Temp::pivot_rowNZ, CLUFactor::Dring::prev, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::U::row, CLUFactor::row, CLUFactor::L::rperm, CLUFactor::L::rval, CLUFactor::Temp::stage, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::stat, CLUFactor::temp, CLUFactor::thedim, CLUFactor::u, CLUFactor::U::Row::used, and CLUFactor::U::Col::used.
Referenced by CLUFactor::forestUpdate(), and SLUFactor::isConsistent().
int makeLvec |
( |
int |
p_len, |
|
|
int |
p_row |
|
) |
| |
|
private |
Definition at line 2923 of file clufactor.cpp.
References CLUFactor::L::firstUnused, CLUFactor::l, CLUFactor::minLMem(), CLUFactor::L::row, CLUFactor::L::size, soplex::spx_realloc(), CLUFactor::L::start, and CLUFactor::L::startSize.
Referenced by CLUFactor::eliminatePivot(), CLUFactor::eliminateRowSingletons(), CLUFactor::forestUpdate(), CLUFactor::rowSingletons(), CLUFactor::update(), and CLUFactor::updateNoClear().
void minColMem |
( |
int |
size | ) |
|
|
private |
void minRowMem |
( |
int |
size | ) |
|
|
private |
Definition at line 491 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::Dring::idx, CLUFactor::U::Col::idx, CLUFactor::U::Col::len, CLUFactor::U::Col::list, CLUFactor::U::Col::max, CLUFactor::Dring::next, CLUFactor::U::Col::start, CLUFactor::thedim, CLUFactor::u, and CLUFactor::U::Col::used.
Referenced by CLUFactor::remaxCol().
Definition at line 300 of file clufactor.cpp.
References CLUFactor::Dring::idx, CLUFactor::U::Row::idx, CLUFactor::U::Row::len, CLUFactor::U::Row::list, CLUFactor::U::Row::max, CLUFactor::Dring::next, CLUFactor::U::row, CLUFactor::U::Row::start, CLUFactor::thedim, CLUFactor::u, CLUFactor::U::Row::used, and CLUFactor::U::Row::val.
Referenced by CLUFactor::remaxRow().
void remaxCol |
( |
int |
p_col, |
|
|
int |
len |
|
) |
| |
|
private |
Definition at line 542 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::colMemMult, CLUFactor::U::Col::elem, CLUFactor::Dring::idx, CLUFactor::U::Col::idx, init2DR, CLUFactor::U::Col::len, CLUFactor::U::Col::list, CLUFactor::U::Col::max, CLUFactor::minColMem(), CLUFactor::Dring::next, CLUFactor::packColumns(), CLUFactor::Dring::prev, removeDR, CLUFactor::U::Col::size, CLUFactor::U::Col::start, CLUFactor::u, and CLUFactor::U::Col::used.
Referenced by CLUFactor::updateRow().
void remaxRow |
( |
int |
p_row, |
|
|
int |
len |
|
) |
| |
|
private |
Definition at line 413 of file clufactor.cpp.
References CLUFactor::U::Row::elem, CLUFactor::Dring::idx, CLUFactor::U::Row::idx, init2DR, CLUFactor::U::Row::len, CLUFactor::U::Row::list, CLUFactor::U::Row::max, CLUFactor::minRowMem(), CLUFactor::Dring::next, CLUFactor::packRows(), CLUFactor::Dring::prev, removeDR, CLUFactor::U::row, CLUFactor::rowMemMult, CLUFactor::U::Row::size, CLUFactor::U::Row::start, CLUFactor::u, CLUFactor::U::Row::used, and CLUFactor::U::Row::val.
Referenced by CLUFactor::forestUpdate(), and CLUFactor::updateRow().
Definition at line 1711 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::L::idx, CLUFactor::l, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::makeLvec(), CLUFactor::Perm::perm, CLUFactor::U::row, CLUFactor::row, CLUFactor::Temp::s_cact, CLUFactor::Temp::s_mark, CLUFactor::setPivot(), SLinSolver::SINGULAR, CLUFactor::Temp::stage, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::stat, CLUFactor::temp, CLUFactor::thedim, CLUFactor::u, CLUFactor::U::Row::val, and CLUFactor::L::val.
Referenced by CLUFactor::factor().
void selectPivots |
( |
Real |
threshold | ) |
|
|
private |
Definition at line 2078 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::Pring::idx, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, init2DR, initDR, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::Pring::mkwtz, CLUFactor::Pring::next, CLUFactor::Perm::perm, CLUFactor::Temp::pivot_col, CLUFactor::Temp::pivot_colNZ, CLUFactor::Temp::pivot_row, CLUFactor::Temp::pivot_rowNZ, CLUFactor::Temp::pivots, CLUFactor::Pring::pos, CLUFactor::Pring::prev, REAL, removeDR, CLUFactor::U::row, CLUFactor::row, CLUFactor::Temp::s_cact, CLUFactor::Temp::s_max, soplex::spxAbs(), CLUFactor::Temp::stage, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::temp, CLUFactor::thedim, CLUFactor::u, and CLUFactor::U::Row::val.
Referenced by CLUFactor::eliminateNucleus().
void setPivot |
( |
const int |
p_stage, |
|
|
const int |
p_col, |
|
|
const int |
p_row, |
|
|
const Real |
val |
|
) |
| |
|
private |
Definition at line 266 of file clufactor.cpp.
References CLUFactor::col, CLUFactor::diag, Param::epsilonPivot(), CLUFactor::maxabs, MSG_ERROR, CLUFactor::Perm::orig, CLUFactor::Perm::perm, REAL, CLUFactor::row, SLinSolver::SINGULAR, soplex::spxAbs(), and CLUFactor::stat.
Referenced by CLUFactor::colSingletons(), CLUFactor::eliminateColSingletons(), CLUFactor::eliminateNucleus(), CLUFactor::eliminatePivot(), CLUFactor::eliminateRowSingletons(), CLUFactor::initFactorMatrix(), and CLUFactor::rowSingletons().
Definition at line 2606 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::U::Col::max, CLUFactor::maxabs, REAL, CLUFactor::U::row, CLUFactor::U::Col::size, soplex::spx_alloc(), soplex::spx_free(), soplex::spxAbs(), CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::thedim, CLUFactor::u, CLUFactor::U::Row::val, and CLUFactor::U::Col::val.
Referenced by CLUFactor::factor().
Definition at line 2661 of file clufactor.cpp.
References CLUFactor::L::firstUpdate, CLUFactor::L::idx, CLUFactor::l, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::L::row, CLUFactor::row, CLUFactor::L::rperm, CLUFactor::L::rval, soplex::spx_alloc(), soplex::spx_free(), CLUFactor::L::start, CLUFactor::thedim, and CLUFactor::L::val.
Referenced by CLUFactor::factor().
void solveLeft |
( |
Real * |
vec, |
|
|
Real * |
rhs |
|
) |
| |
|
protected |
int solveLeftEps |
( |
Real * |
vec, |
|
|
Real * |
rhs, |
|
|
int * |
nonz, |
|
|
Real |
eps |
|
) |
| |
|
protected |
void solveLleft |
( |
Real * |
vec | ) |
const |
|
private |
Definition at line 4015 of file clufactor.cpp.
References CLUFactor::L::firstUpdate, CLUFactor::L::idx, CLUFactor::l, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::L::row, CLUFactor::L::rperm, CLUFactor::L::rval, CLUFactor::L::start, and CLUFactor::L::val.
Referenced by CLUFactor::solveLeft(), CLUFactor::vSolveLeft(), CLUFactor::vSolveLeft2(), CLUFactor::vSolveLeft2sparse(), CLUFactor::vSolveLeft3(), and CLUFactor::vSolveLeft3sparse().
int solveLleft |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
nonz, |
|
|
int |
rn |
|
) |
| |
|
private |
Definition at line 4548 of file clufactor.cpp.
References soplex::deQueueMax(), soplex::enQueueMax(), CLUFactor::L::firstUpdate, CLUFactor::L::idx, soplex::isNotZero(), CLUFactor::l, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::L::row, CLUFactor::L::rperm, CLUFactor::L::rval, SOPLEX_FACTOR_MARKER, CLUFactor::L::start, CLUFactor::thedim, and CLUFactor::L::val.
Definition at line 3882 of file clufactor.cpp.
References CLUFactor::L::firstUpdate, CLUFactor::L::idx, CLUFactor::l, CLUFactor::Perm::perm, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::L::row, CLUFactor::row, CLUFactor::L::rval, CLUFactor::L::start, and CLUFactor::L::val.
Referenced by CLUFactor::solveLeft2().
int solveLleft2forest |
( |
Real * |
vec1, |
|
|
int * |
, |
|
|
Real * |
vec2, |
|
|
Real |
|
|
) |
| |
|
private |
int solveLleftEps |
( |
Real * |
vec, |
|
|
int * |
nonz, |
|
|
Real |
eps |
|
) |
| |
|
private |
Definition at line 4061 of file clufactor.cpp.
References CLUFactor::L::firstUpdate, CLUFactor::L::idx, soplex::isNotZero(), CLUFactor::l, CLUFactor::Perm::perm, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::L::row, CLUFactor::row, CLUFactor::L::rval, CLUFactor::L::start, and CLUFactor::L::val.
Referenced by CLUFactor::solveLeftEps().
int solveLleftForest |
( |
Real * |
vec, |
|
|
int * |
, |
|
|
Real |
|
|
) |
| |
|
private |
Definition at line 3985 of file clufactor.cpp.
References CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::L::idx, CLUFactor::l, CLUFactor::L::row, CLUFactor::L::start, and CLUFactor::L::val.
Referenced by CLUFactor::solveLeft(), CLUFactor::solveLeftEps(), CLUFactor::vSolveLeft(), CLUFactor::vSolveLeft2(), CLUFactor::vSolveLeft2sparse(), CLUFactor::vSolveLeft3(), and CLUFactor::vSolveLeft3sparse().
int solveLleftForest |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
nonz, |
|
|
int |
n |
|
) |
| |
|
private |
void solveLleftForestNoNZ |
( |
Real * |
vec | ) |
|
|
private |
void solveLleftNoNZ |
( |
Real * |
vec | ) |
|
|
private |
Definition at line 4646 of file clufactor.cpp.
References CLUFactor::L::firstUpdate, CLUFactor::L::idx, CLUFactor::l, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::L::row, CLUFactor::L::rperm, CLUFactor::L::rval, CLUFactor::L::size, CLUFactor::L::start, and CLUFactor::L::val.
Referenced by CLUFactor::vSolveLeft(), CLUFactor::vSolveLeft2(), CLUFactor::vSolveLeft3(), and CLUFactor::vSolveLeftNoNZ().
void solveLright |
( |
Real * |
vec | ) |
|
|
protected |
Definition at line 3319 of file clufactor.cpp.
References CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::L::idx, CLUFactor::l, MSG_DEBUG, CLUFactor::L::row, CLUFactor::L::start, CLUFactor::L::updateType, and CLUFactor::L::val.
Referenced by SLUFactor::change(), CLUFactor::solveRight(), and CLUFactor::solveRight4update().
void solveLright2 |
( |
Real * |
vec1, |
|
|
Real * |
vec2 |
|
) |
| |
|
private |
void solveRight |
( |
Real * |
vec, |
|
|
Real * |
rhs |
|
) |
| |
|
protected |
int solveRight2update |
( |
Real * |
vec1, |
|
|
Real * |
vec2, |
|
|
Real * |
rhs1, |
|
|
Real * |
rhs2, |
|
|
int * |
nonz, |
|
|
Real |
eps, |
|
|
Real * |
forest, |
|
|
int * |
forestNum, |
|
|
int * |
forestIdx |
|
) |
| |
|
protected |
int solveRight4update |
( |
Real * |
vec, |
|
|
int * |
nonz, |
|
|
Real |
eps, |
|
|
Real * |
rhs, |
|
|
Real * |
forest, |
|
|
int * |
forestNum, |
|
|
int * |
forestIdx |
|
) |
| |
|
protected |
void solveUleft |
( |
Real * |
work, |
|
|
Real * |
vec |
|
) |
| |
|
private |
Definition at line 3683 of file clufactor.cpp.
References ASSERT_WARN, CLUFactor::col, CLUFactor::diag, CLUFactor::U::Row::idx, soplex::infinity, CLUFactor::U::Row::len, CLUFactor::Perm::orig, CLUFactor::U::row, CLUFactor::row, soplex::spxAbs(), CLUFactor::U::Row::start, CLUFactor::thedim, CLUFactor::u, and CLUFactor::U::Row::val.
Referenced by CLUFactor::solveLeft(), CLUFactor::solveLeftEps(), CLUFactor::vSolveLeft(), CLUFactor::vSolveLeft2(), CLUFactor::vSolveLeft2sparse(), CLUFactor::vSolveLeft3(), and CLUFactor::vSolveLeft3sparse().
int solveUleft |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
vecidx, |
|
|
Real * |
rhs, |
|
|
int * |
rhsidx, |
|
|
int |
rhsn |
|
) |
| |
|
private |
Definition at line 4308 of file clufactor.cpp.
References CLUFactor::col, soplex::deQueueMin(), CLUFactor::diag, soplex::enQueueMin(), CLUFactor::U::Row::idx, soplex::isNotZero(), CLUFactor::U::Row::len, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::U::row, CLUFactor::row, CLUFactor::U::Row::size, SOPLEX_FACTOR_MARKER, CLUFactor::U::Row::start, CLUFactor::u, and CLUFactor::U::Row::val.
Definition at line 3746 of file clufactor.cpp.
References CLUFactor::col, CLUFactor::diag, CLUFactor::U::Row::idx, CLUFactor::U::Row::len, CLUFactor::Perm::orig, CLUFactor::U::row, CLUFactor::row, CLUFactor::U::Row::start, CLUFactor::thedim, CLUFactor::u, and CLUFactor::U::Row::val.
Referenced by CLUFactor::solveLeft2().
void solveUleftNoNZ |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
Real * |
rhs, |
|
|
int * |
rhsidx, |
|
|
int |
rhsn |
|
) |
| |
|
private |
Definition at line 4388 of file clufactor.cpp.
References CLUFactor::col, soplex::deQueueMin(), CLUFactor::diag, soplex::enQueueMin(), CLUFactor::U::Row::idx, soplex::isNotZero(), CLUFactor::U::Row::len, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::U::row, CLUFactor::row, CLUFactor::U::Row::size, SOPLEX_FACTOR_MARKER, CLUFactor::U::Row::start, CLUFactor::u, and CLUFactor::U::Row::val.
Referenced by CLUFactor::vSolveLeft2(), CLUFactor::vSolveLeft3(), and CLUFactor::vSolveLeftNoNZ().
void solveUpdateLeft |
( |
Real * |
vec | ) |
|
|
private |
Definition at line 4125 of file clufactor.cpp.
References CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::L::idx, CLUFactor::l, CLUFactor::L::row, CLUFactor::L::start, CLUFactor::L::updateType, and CLUFactor::L::val.
Referenced by CLUFactor::solveLeft(), CLUFactor::solveLeftEps(), CLUFactor::vSolveLeft(), CLUFactor::vSolveLeft2(), CLUFactor::vSolveLeft2sparse(), CLUFactor::vSolveLeft3(), CLUFactor::vSolveLeft3sparse(), and CLUFactor::vSolveLeftNoNZ().
int solveUpdateLeft |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
nonz, |
|
|
int |
n |
|
) |
| |
|
private |
Definition at line 4193 of file clufactor.cpp.
References CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::L::idx, soplex::isNotZero(), CLUFactor::l, CLUFactor::L::row, CLUFactor::L::size, SOPLEX_FACTOR_MARKER, CLUFactor::L::start, CLUFactor::L::updateType, and CLUFactor::L::val.
void solveUpdateLeft2 |
( |
Real * |
vec1, |
|
|
Real * |
vec2 |
|
) |
| |
|
private |
void solveUpdateRight |
( |
Real * |
vec | ) |
|
|
private |
void solveUpdateRight2 |
( |
Real * |
vec1, |
|
|
Real * |
vec2 |
|
) |
| |
|
private |
void solveUright |
( |
Real * |
wrk, |
|
|
Real * |
vec |
|
) |
| const |
|
private |
Definition at line 3111 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::diag, CLUFactor::U::Col::idx, CLUFactor::U::Col::len, CLUFactor::Perm::orig, CLUFactor::row, CLUFactor::U::Col::start, CLUFactor::thedim, CLUFactor::u, and CLUFactor::U::Col::val.
Referenced by CLUFactor::solveRight(), and CLUFactor::solveRight4update().
Definition at line 3174 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::diag, CLUFactor::U::Col::idx, CLUFactor::U::Col::len, CLUFactor::Perm::orig, CLUFactor::row, CLUFactor::U::Col::start, CLUFactor::thedim, CLUFactor::u, and CLUFactor::U::Col::val.
Referenced by CLUFactor::solveRight2(), and CLUFactor::solveRight2update().
Definition at line 3237 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::diag, CLUFactor::U::Col::idx, soplex::isNotZero(), CLUFactor::U::Col::len, CLUFactor::Perm::orig, CLUFactor::row, CLUFactor::U::Col::start, CLUFactor::thedim, CLUFactor::u, and CLUFactor::U::Col::val.
Referenced by CLUFactor::solveRight2update().
int solveUrightEps |
( |
Real * |
vec, |
|
|
int * |
nonz, |
|
|
Real |
eps, |
|
|
Real * |
rhs |
|
) |
| |
|
private |
Definition at line 3131 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::diag, CLUFactor::U::Col::idx, soplex::isNotZero(), CLUFactor::U::Col::len, CLUFactor::Perm::orig, CLUFactor::row, CLUFactor::U::Col::start, CLUFactor::thedim, CLUFactor::u, and CLUFactor::U::Col::val.
Referenced by CLUFactor::solveRight4update().
void update |
( |
int |
p_col, |
|
|
Real * |
p_work, |
|
|
const int * |
p_idx, |
|
|
int |
num |
|
) |
| |
|
protected |
void updateNoClear |
( |
int |
p_col, |
|
|
const Real * |
p_work, |
|
|
const int * |
p_idx, |
|
|
int |
num |
|
) |
| |
|
protected |
int updateRow |
( |
int |
r, |
|
|
int |
lv, |
|
|
int |
prow, |
|
|
int |
pcol, |
|
|
Real |
pval, |
|
|
Real |
eps |
|
) |
| |
|
private |
Definition at line 2298 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::L::idx, init2DR, soplex::isNotZero(), soplex::isZero(), CLUFactor::l, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::U::Row::max, CLUFactor::U::Col::max, CLUFactor::Perm::perm, CLUFactor::Temp::pivot_row, CLUFactor::Temp::pivot_rowNZ, CLUFactor::remaxCol(), CLUFactor::remaxRow(), removeDR, CLUFactor::U::row, CLUFactor::row, CLUFactor::Temp::s_cact, CLUFactor::Temp::s_mark, CLUFactor::Temp::s_max, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::temp, CLUFactor::u, CLUFactor::U::Row::val, CLUFactor::L::val, and CLUFactor::work.
Referenced by CLUFactor::eliminatePivot().
int vSolveLeft |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
idx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int |
rn |
|
) |
| |
|
protected |
int vSolveLeft2 |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
idx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int |
rn, |
|
|
Real * |
vec2, |
|
|
Real * |
rhs2, |
|
|
int * |
ridx2, |
|
|
int |
rn2 |
|
) |
| |
|
protected |
void vSolveLeft2sparse |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
idx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int & |
rn, |
|
|
Real * |
vec2, |
|
|
int * |
idx2, |
|
|
Real * |
rhs2, |
|
|
int * |
ridx2, |
|
|
int & |
rn2 |
|
) |
| |
|
protected |
int vSolveLeft3 |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
idx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int |
rn, |
|
|
Real * |
vec2, |
|
|
Real * |
rhs2, |
|
|
int * |
ridx2, |
|
|
int |
rn2, |
|
|
Real * |
vec3, |
|
|
Real * |
rhs3, |
|
|
int * |
ridx3, |
|
|
int |
rn3 |
|
) |
| |
|
protected |
void vSolveLeft3sparse |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
idx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int & |
rn, |
|
|
Real * |
vec2, |
|
|
int * |
idx2, |
|
|
Real * |
rhs2, |
|
|
int * |
ridx2, |
|
|
int & |
rn2, |
|
|
Real * |
vec3, |
|
|
int * |
idx3, |
|
|
Real * |
rhs3, |
|
|
int * |
ridx3, |
|
|
int & |
rn3 |
|
) |
| |
|
protected |
void vSolveLeftNoNZ |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int |
rn |
|
) |
| |
|
protected |
int vSolveLright |
( |
Real * |
vec, |
|
|
int * |
ridx, |
|
|
int |
rn, |
|
|
Real |
eps |
|
) |
| |
|
private |
Definition at line 4711 of file clufactor.cpp.
References CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::L::idx, soplex::isNotZero(), CLUFactor::l, CLUFactor::L::row, SOPLEX_FACTOR_MARKER, CLUFactor::L::start, CLUFactor::L::updateType, and CLUFactor::L::val.
Referenced by CLUFactor::vSolveRight4update(), and CLUFactor::vSolveRightNoNZ().
void vSolveLright2 |
( |
Real * |
vec, |
|
|
int * |
ridx, |
|
|
int * |
rnptr, |
|
|
Real |
eps, |
|
|
Real * |
vec2, |
|
|
int * |
ridx2, |
|
|
int * |
rn2ptr, |
|
|
Real |
eps2 |
|
) |
| |
|
private |
Definition at line 4776 of file clufactor.cpp.
References CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::L::idx, soplex::isNotZero(), CLUFactor::l, CLUFactor::L::row, SOPLEX_FACTOR_MARKER, CLUFactor::L::start, CLUFactor::L::updateType, and CLUFactor::L::val.
Referenced by CLUFactor::vSolveRight4update2(), and CLUFactor::vSolveRight4update2sparse().
void vSolveLright3 |
( |
Real * |
vec, |
|
|
int * |
ridx, |
|
|
int * |
rnptr, |
|
|
Real |
eps, |
|
|
Real * |
vec2, |
|
|
int * |
ridx2, |
|
|
int * |
rn2ptr, |
|
|
Real |
eps2, |
|
|
Real * |
vec3, |
|
|
int * |
ridx3, |
|
|
int * |
rn3ptr, |
|
|
Real |
eps3 |
|
) |
| |
|
private |
Definition at line 4892 of file clufactor.cpp.
References CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::L::idx, soplex::isNotZero(), CLUFactor::l, CLUFactor::L::row, SOPLEX_FACTOR_MARKER, CLUFactor::L::start, CLUFactor::L::updateType, and CLUFactor::L::val.
Referenced by CLUFactor::vSolveRight4update3(), and CLUFactor::vSolveRight4update3sparse().
int vSolveRight4update |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
idx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int |
rn, |
|
|
Real * |
forest, |
|
|
int * |
forestNum, |
|
|
int * |
forestIdx |
|
) |
| |
|
protected |
int vSolveRight4update2 |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
idx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int |
rn, |
|
|
Real * |
vec2, |
|
|
Real |
eps2, |
|
|
Real * |
rhs2, |
|
|
int * |
ridx2, |
|
|
int |
rn2, |
|
|
Real * |
forest, |
|
|
int * |
forestNum, |
|
|
int * |
forestIdx |
|
) |
| |
|
protected |
Definition at line 5704 of file clufactor.cpp.
References soplex::enQueueMax(), soplex::isNotZero(), CLUFactor::l, CLUFactor::Perm::perm, CLUFactor::row, CLUFactor::L::updateType, soplex::verySparseFactor4right, CLUFactor::vSolveLright2(), CLUFactor::vSolveUpdateRight(), CLUFactor::vSolveUpdateRightNoNZ(), CLUFactor::vSolveUright(), and CLUFactor::vSolveUrightNoNZ().
Referenced by SLUFactor::solve2right4update().
void vSolveRight4update2sparse |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
idx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int & |
rn, |
|
|
Real |
eps2, |
|
|
Real * |
vec2, |
|
|
int * |
idx2, |
|
|
Real * |
rhs2, |
|
|
int * |
ridx2, |
|
|
int & |
rn2, |
|
|
Real * |
forest, |
|
|
int * |
forestNum, |
|
|
int * |
forestIdx |
|
) |
| |
|
protected |
int vSolveRight4update3 |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
idx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int |
rn, |
|
|
Real * |
vec2, |
|
|
Real |
eps2, |
|
|
Real * |
rhs2, |
|
|
int * |
ridx2, |
|
|
int |
rn2, |
|
|
Real * |
vec3, |
|
|
Real |
eps3, |
|
|
Real * |
rhs3, |
|
|
int * |
ridx3, |
|
|
int |
rn3, |
|
|
Real * |
forest, |
|
|
int * |
forestNum, |
|
|
int * |
forestIdx |
|
) |
| |
|
protected |
Definition at line 5905 of file clufactor.cpp.
References soplex::enQueueMax(), soplex::isNotZero(), CLUFactor::l, CLUFactor::Perm::perm, CLUFactor::row, CLUFactor::L::updateType, soplex::verySparseFactor4right, CLUFactor::vSolveLright3(), CLUFactor::vSolveUpdateRight(), CLUFactor::vSolveUpdateRightNoNZ(), CLUFactor::vSolveUright(), and CLUFactor::vSolveUrightNoNZ().
Referenced by SLUFactor::solve3right4update().
void vSolveRight4update3sparse |
( |
Real |
eps, |
|
|
Real * |
vec, |
|
|
int * |
idx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int & |
rn, |
|
|
Real |
eps2, |
|
|
Real * |
vec2, |
|
|
int * |
idx2, |
|
|
Real * |
rhs2, |
|
|
int * |
ridx2, |
|
|
int & |
rn2, |
|
|
Real |
eps3, |
|
|
Real * |
vec3, |
|
|
int * |
idx3, |
|
|
Real * |
rhs3, |
|
|
int * |
ridx3, |
|
|
int & |
rn3, |
|
|
Real * |
forest, |
|
|
int * |
forestNum, |
|
|
int * |
forestIdx |
|
) |
| |
|
protected |
void vSolveRightNoNZ |
( |
Real * |
vec2, |
|
|
Real |
eps2, |
|
|
Real * |
rhs2, |
|
|
int * |
ridx2, |
|
|
int |
rn2 |
|
) |
| |
|
protected |
int vSolveUpdateRight |
( |
Real * |
vec, |
|
|
int * |
ridx, |
|
|
int |
n, |
|
|
Real |
eps |
|
) |
| |
|
private |
Definition at line 5555 of file clufactor.cpp.
References CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::L::idx, soplex::isNotZero(), CLUFactor::l, CLUFactor::L::row, CLUFactor::L::size, SOPLEX_FACTOR_MARKER, CLUFactor::L::start, CLUFactor::L::updateType, and CLUFactor::L::val.
Referenced by CLUFactor::vSolveRight4update(), CLUFactor::vSolveRight4update2(), CLUFactor::vSolveRight4update2sparse(), CLUFactor::vSolveRight4update3(), and CLUFactor::vSolveRight4update3sparse().
void vSolveUpdateRightNoNZ |
( |
Real * |
vec, |
|
|
Real |
|
|
) |
| |
|
private |
Definition at line 5599 of file clufactor.cpp.
References CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, CLUFactor::L::idx, CLUFactor::l, CLUFactor::L::row, CLUFactor::L::size, CLUFactor::L::start, CLUFactor::L::updateType, and CLUFactor::L::val.
Referenced by CLUFactor::vSolveRight4update2(), CLUFactor::vSolveRight4update3(), and CLUFactor::vSolveRightNoNZ().
int vSolveUright |
( |
Real * |
vec, |
|
|
int * |
vidx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int |
rn, |
|
|
Real |
eps |
|
) |
| |
|
private |
Definition at line 5100 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, soplex::deQueueMax(), CLUFactor::diag, soplex::enQueueMax(), CLUFactor::U::Col::idx, soplex::isNotZero(), CLUFactor::U::Col::len, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::row, SOPLEX_FACTOR_MARKER, CLUFactor::U::Col::start, CLUFactor::u, CLUFactor::U::Col::val, and soplex::verySparseFactor4right.
Referenced by CLUFactor::vSolveRight4update(), CLUFactor::vSolveRight4update2(), CLUFactor::vSolveRight4update2sparse(), CLUFactor::vSolveRight4update3(), and CLUFactor::vSolveRight4update3sparse().
int vSolveUright2 |
( |
Real * |
vec, |
|
|
int * |
vidx, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int |
rn, |
|
|
Real |
eps, |
|
|
Real * |
vec2, |
|
|
Real * |
rhs2, |
|
|
int * |
ridx2, |
|
|
int |
rn2, |
|
|
Real |
eps2 |
|
) |
| |
|
private |
Definition at line 5310 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, soplex::deQueueMax(), CLUFactor::diag, soplex::enQueueMax(), CLUFactor::U::Col::idx, soplex::isNotZero(), CLUFactor::U::Col::len, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::row, SOPLEX_FACTOR_MARKER, CLUFactor::U::Col::start, CLUFactor::u, CLUFactor::U::Col::val, and soplex::verySparseFactor4right.
void vSolveUrightNoNZ |
( |
Real * |
vec, |
|
|
Real * |
rhs, |
|
|
int * |
ridx, |
|
|
int |
rn, |
|
|
Real |
eps |
|
) |
| |
|
private |
Definition at line 5207 of file clufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, soplex::deQueueMax(), CLUFactor::diag, soplex::enQueueMax(), CLUFactor::U::Col::idx, soplex::isNotZero(), CLUFactor::U::Col::len, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::row, SOPLEX_FACTOR_MARKER, CLUFactor::U::Col::start, CLUFactor::u, CLUFactor::U::Col::val, and soplex::verySparseFactor4right.
Referenced by CLUFactor::vSolveRight4update2(), CLUFactor::vSolveRight4update3(), and CLUFactor::vSolveRightNoNZ().
column permutation matrices
Definition at line 196 of file clufactor.h.
Referenced by SLUFactor::assign(), CLUFactor::dump(), CLUFactor::eliminateColSingletons(), CLUFactor::eliminateNucleus(), CLUFactor::eliminatePivot(), CLUFactor::forestUpdate(), SLUFactor::freeAll(), CLUFactor::initFactorRings(), CLUFactor::initPerm(), CLUFactor::isConsistent(), SLUFactor::load(), CLUFactor::selectPivots(), CLUFactor::setPivot(), SLUFactor::SLUFactor(), CLUFactor::solveUleft(), CLUFactor::solveUleft2(), CLUFactor::solveUleftNoNZ(), CLUFactor::solveUright(), CLUFactor::solveUright2(), CLUFactor::solveUright2eps(), CLUFactor::solveUrightEps(), CLUFactor::vSolveUright(), CLUFactor::vSolveUright2(), and CLUFactor::vSolveUrightNoNZ().
Array of pivot elements.
Definition at line 199 of file clufactor.h.
Referenced by SLUFactor::assign(), CLUFactor::dump(), CLUFactor::forestUpdate(), SLUFactor::freeAll(), SLUFactor::load(), CLUFactor::setPivot(), SLUFactor::SLUFactor(), CLUFactor::solveUleft(), CLUFactor::solveUleft2(), CLUFactor::solveUleftNoNZ(), CLUFactor::solveUright(), CLUFactor::solveUright2(), CLUFactor::solveUright2eps(), CLUFactor::solveUrightEps(), CLUFactor::vSolveUright(), CLUFactor::vSolveUright2(), and CLUFactor::vSolveUrightNoNZ().
L matrix.
Definition at line 198 of file clufactor.h.
Referenced by SLUFactor::assign(), SLUFactor::change(), SLUFactor::clear(), CLUFactor::dump(), CLUFactor::eliminateRowSingletons(), CLUFactor::factor(), CLUFactor::forestUpdate(), SLUFactor::freeAll(), CLUFactor::isConsistent(), SLUFactor::load(), CLUFactor::makeLvec(), SLUFactor::memory(), CLUFactor::minLMem(), CLUFactor::rowSingletons(), CLUFactor::setupRowVals(), SLUFactor::SLUFactor(), SLUFactor::solve2right4update(), SLUFactor::solve3right4update(), CLUFactor::solveLeft(), CLUFactor::solveLeft2(), CLUFactor::solveLeftEps(), CLUFactor::solveLleft(), CLUFactor::solveLleft2(), CLUFactor::solveLleft2forest(), CLUFactor::solveLleftEps(), CLUFactor::solveLleftForest(), CLUFactor::solveLleftForestNoNZ(), CLUFactor::solveLleftNoNZ(), CLUFactor::solveLright(), CLUFactor::solveLright2(), CLUFactor::solveRight(), CLUFactor::solveRight2(), CLUFactor::solveRight2update(), SLUFactor::solveRight4update(), CLUFactor::solveRight4update(), CLUFactor::solveUpdateLeft(), CLUFactor::solveUpdateLeft2(), CLUFactor::solveUpdateRight(), CLUFactor::solveUpdateRight2(), CLUFactor::update(), CLUFactor::updateNoClear(), CLUFactor::updateRow(), CLUFactor::vSolveLeft(), CLUFactor::vSolveLeft2(), CLUFactor::vSolveLeft2sparse(), CLUFactor::vSolveLeft3(), CLUFactor::vSolveLeft3sparse(), CLUFactor::vSolveLeftNoNZ(), CLUFactor::vSolveLright(), CLUFactor::vSolveLright2(), CLUFactor::vSolveLright3(), CLUFactor::vSolveRight4update(), CLUFactor::vSolveRight4update2(), CLUFactor::vSolveRight4update2sparse(), CLUFactor::vSolveRight4update3(), CLUFactor::vSolveRight4update3sparse(), CLUFactor::vSolveRightNoNZ(), CLUFactor::vSolveUpdateRight(), and CLUFactor::vSolveUpdateRightNoNZ().
row permutation matrices
Definition at line 195 of file clufactor.h.
Referenced by SLUFactor::assign(), CLUFactor::colSingletons(), CLUFactor::dump(), CLUFactor::eliminatePivot(), CLUFactor::eliminateRowSingletons(), CLUFactor::forestUpdate(), SLUFactor::freeAll(), CLUFactor::initFactorMatrix(), CLUFactor::initFactorRings(), CLUFactor::initPerm(), CLUFactor::isConsistent(), SLUFactor::load(), CLUFactor::rowSingletons(), CLUFactor::selectPivots(), CLUFactor::setPivot(), CLUFactor::setupRowVals(), SLUFactor::SLUFactor(), CLUFactor::solveLleft2(), CLUFactor::solveLleftEps(), CLUFactor::solveUleft(), CLUFactor::solveUleft2(), CLUFactor::solveUleftNoNZ(), CLUFactor::solveUright(), CLUFactor::solveUright2(), CLUFactor::solveUright2eps(), CLUFactor::solveUrightEps(), CLUFactor::updateRow(), CLUFactor::vSolveRight4update(), CLUFactor::vSolveRight4update2(), CLUFactor::vSolveRight4update2sparse(), CLUFactor::vSolveRight4update3(), CLUFactor::vSolveRight4update3sparse(), CLUFactor::vSolveRightNoNZ(), CLUFactor::vSolveUright(), CLUFactor::vSolveUright2(), and CLUFactor::vSolveUrightNoNZ().
Status indicator.
Definition at line 184 of file clufactor.h.
Referenced by SLUFactor::assign(), SLUFactor::clear(), CLUFactor::colSingletons(), CLUFactor::eliminateNucleus(), CLUFactor::factor(), CLUFactor::forestUpdate(), CLUFactor::initFactorMatrix(), CLUFactor::initFactorRings(), CLUFactor::isConsistent(), SLUFactor::load(), CLUFactor::rowSingletons(), CLUFactor::setPivot(), SLUFactor::status(), CLUFactor::update(), and CLUFactor::updateNoClear().
Temporary storage.
Definition at line 213 of file clufactor.h.
Referenced by CLUFactor::colSingletons(), CLUFactor::eliminateColSingletons(), CLUFactor::eliminateNucleus(), CLUFactor::eliminatePivot(), CLUFactor::eliminateRowSingletons(), CLUFactor::factor(), CLUFactor::freeFactorRings(), CLUFactor::initFactorMatrix(), CLUFactor::initFactorRings(), CLUFactor::isConsistent(), CLUFactor::rowSingletons(), CLUFactor::selectPivots(), and CLUFactor::updateRow().
dimension of factorized matrix
Definition at line 186 of file clufactor.h.
Referenced by SLUFactor::assign(), SLUFactor::clear(), CLUFactor::colSingletons(), SLUFactor::dim(), CLUFactor::dump(), CLUFactor::eliminateNucleus(), CLUFactor::factor(), CLUFactor::forestPackColumns(), CLUFactor::forestUpdate(), CLUFactor::initFactorMatrix(), CLUFactor::initFactorRings(), CLUFactor::initPerm(), CLUFactor::isConsistent(), SLUFactor::load(), CLUFactor::packColumns(), CLUFactor::packRows(), CLUFactor::rowSingletons(), CLUFactor::selectPivots(), CLUFactor::setupColVals(), CLUFactor::setupRowVals(), SLUFactor::SLUFactor(), CLUFactor::solveLleft(), CLUFactor::solveRight2update(), CLUFactor::solveRight4update(), CLUFactor::solveUleft(), CLUFactor::solveUleft2(), CLUFactor::solveUright(), CLUFactor::solveUright2(), CLUFactor::solveUright2eps(), and CLUFactor::solveUrightEps().
U matrix.
Definition at line 200 of file clufactor.h.
Referenced by SLUFactor::assign(), SLUFactor::clear(), CLUFactor::colSingletons(), CLUFactor::dump(), CLUFactor::eliminateColSingletons(), CLUFactor::eliminateNucleus(), CLUFactor::eliminatePivot(), CLUFactor::eliminateRowSingletons(), CLUFactor::forestMinColMem(), CLUFactor::forestPackColumns(), CLUFactor::forestReMaxCol(), CLUFactor::forestUpdate(), SLUFactor::freeAll(), CLUFactor::initFactorMatrix(), CLUFactor::initFactorRings(), CLUFactor::isConsistent(), SLUFactor::load(), CLUFactor::minColMem(), CLUFactor::minRowMem(), CLUFactor::packColumns(), CLUFactor::packRows(), CLUFactor::remaxCol(), CLUFactor::remaxRow(), CLUFactor::rowSingletons(), CLUFactor::selectPivots(), CLUFactor::setupColVals(), SLUFactor::SLUFactor(), CLUFactor::solveUleft(), CLUFactor::solveUleft2(), CLUFactor::solveUleftNoNZ(), CLUFactor::solveUright(), CLUFactor::solveUright2(), CLUFactor::solveUright2eps(), CLUFactor::solveUrightEps(), CLUFactor::updateRow(), CLUFactor::vSolveUright(), CLUFactor::vSolveUright2(), and CLUFactor::vSolveUrightNoNZ().
|