|
Loading...
Searching...
No Matches
Implementation of sparse LU factorization with Rational precision.
More...
#include <clufactor_rational.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...
|
|
|
|
void | solveLright (Rational *vec) |
|
int | solveRight4update (Rational *vec, int *nonz, Rational *rhs, Rational *forest, int *forestNum, int *forestIdx) |
|
void | solveRight (Rational *vec, Rational *rhs) |
|
int | solveRight2update (Rational *vec1, Rational *vec2, Rational *rhs1, Rational *rhs2, int *nonz, Rational *forest, int *forestNum, int *forestIdx) |
|
void | solveRight2 (Rational *vec1, Rational *vec2, Rational *rhs1, Rational *rhs2) |
|
void | solveLeft (Rational *vec, Rational *rhs) |
|
int | solveLeftEps (Rational *vec, Rational *rhs, int *nonz) |
|
int | solveLeft2 (Rational *vec1, int *nonz, Rational *vec2, Rational *rhs1, Rational *rhs2) |
|
int | vSolveRight4update (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *forest, int *forestNum, int *forestIdx) |
|
int | vSolveRight4update2 (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2, Rational *forest, int *forestNum, int *forestIdx) |
|
int | vSolveRight4update3 (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2, Rational *vec3, Rational *rhs3, int *ridx3, int rn3, Rational *forest, int *forestNum, int *forestIdx) |
|
void | vSolveRightNoNZ (Rational *vec2, Rational *rhs2, int *ridx2, int rn2) |
|
int | vSolveLeft (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn) |
|
void | vSolveLeftNoNZ (Rational *vec, Rational *rhs, int *ridx, int rn) |
|
int | vSolveLeft2 (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2) |
|
int | vSolveLeft3 (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2, Rational *vec3, Rational *rhs3, int *ridx3, int rn3) |
|
void | forestUpdate (int col, Rational *work, int num, int *nonz) |
|
void | update (int p_col, Rational *p_work, const int *p_idx, int num) |
|
void | updateNoClear (int p_col, const Rational *p_work, const int *p_idx, int num) |
|
void | factor (const SVectorRational **vec, const Rational &threshold) |
|
|
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 (Rational *wrk, Rational *vec) |
|
int | solveUrightEps (Rational *vec, int *nonz, Rational *rhs) |
|
void | solveUright2 (Rational *work1, Rational *vec1, Rational *work2, Rational *vec2) |
|
int | solveUright2eps (Rational *work1, Rational *vec1, Rational *work2, Rational *vec2, int *nonz) |
|
void | solveLright2 (Rational *vec1, Rational *vec2) |
|
void | solveUpdateRight (Rational *vec) |
|
void | solveUpdateRight2 (Rational *vec1, Rational *vec2) |
|
void | solveUleft (Rational *work, Rational *vec) |
|
void | solveUleft2 (Rational *work1, Rational *vec1, Rational *work2, Rational *vec2) |
|
int | solveLleft2forest (Rational *vec1, int *, Rational *vec2) |
|
void | solveLleft2 (Rational *vec1, int *, Rational *vec2) |
|
int | solveLleftForest (Rational *vec, int *) |
|
void | solveLleft (Rational *vec) |
|
int | solveLleftEps (Rational *vec, int *nonz) |
|
void | solveUpdateLeft (Rational *vec) |
|
void | solveUpdateLeft2 (Rational *vec1, Rational *vec2) |
|
int | vSolveLright (Rational *vec, int *ridx, int rn) |
|
void | vSolveLright2 (Rational *vec, int *ridx, int *rnptr, Rational *vec2, int *ridx2, int *rn2ptr) |
|
void | vSolveLright3 (Rational *vec, int *ridx, int *rnptr, Rational *vec2, int *ridx2, int *rn2ptr, Rational *vec3, int *ridx3, int *rn3ptr) |
|
int | vSolveUright (Rational *vec, int *vidx, Rational *rhs, int *ridx, int rn) |
|
void | vSolveUrightNoNZ (Rational *vec, Rational *rhs, int *ridx, int rn) |
|
int | vSolveUright2 (Rational *vec, int *vidx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2) |
|
int | vSolveUpdateRight (Rational *vec, int *ridx, int n) |
|
void | vSolveUpdateRightNoNZ (Rational *vec) |
|
int | solveUleft (Rational *vec, int *vecidx, Rational *rhs, int *rhsidx, int rhsn) |
|
void | solveUleftNoNZ (Rational *vec, Rational *rhs, int *rhsidx, int rhsn) |
|
int | solveLleftForest (Rational *vec, int *nonz, int n) |
|
void | solveLleftForestNoNZ (Rational *vec) |
|
int | solveLleft (Rational *vec, int *nonz, int rn) |
|
void | solveLleftNoNZ (Rational *vec) |
|
int | solveUpdateLeft (Rational *vec, int *nonz, int n) |
|
void | forestPackColumns () |
|
void | forestMinColMem (int size) |
|
void | forestReMaxCol (int col, int len) |
|
void | initPerm () |
|
void | initFactorMatrix (const SVectorRational **vec) |
|
void | minLMem (int size) |
|
void | setPivot (const int p_stage, const int p_col, const int p_row, const Rational &val) |
|
void | colSingletons () |
|
void | rowSingletons () |
|
void | initFactorRings () |
|
void | freeFactorRings () |
|
int | setupColVals () |
|
void | setupRowVals () |
|
void | eliminateRowSingletons () |
|
void | eliminateColSingletons () |
|
void | selectPivots (const Rational &threshold) |
|
int | updateRow (int r, int lv, int prow, int pcol, const Rational &pval) |
|
void | eliminatePivot (int prow, int pos) |
|
void | eliminateNucleus (const Rational &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) |
|
bool | timeLimitReached () |
|
Implementation of sparse LU factorization with Rational precision.
This class implements a sparse LU factorization with either FOREST-TOMLIN or ETA updates, using dynamic Markowitz pivoting.
Definition at line 48 of file clufactor_rational.h.
◆ colSingletons()
◆ dump()
◆ eliminateColSingletons()
void eliminateColSingletons |
( |
| ) |
|
|
private |
◆ eliminateNucleus()
void eliminateNucleus |
( |
const Rational & | threshold | ) |
|
|
private |
◆ eliminatePivot()
void eliminatePivot |
( |
int | prow, |
|
|
int | pos ) |
|
private |
◆ eliminateRowSingletons()
void eliminateRowSingletons |
( |
| ) |
|
|
private |
◆ factor()
- Parameters
-
vec | Array of column vector pointers |
threshold | pivoting threshold |
◆ forestMinColMem()
void forestMinColMem |
( |
int | size | ) |
|
|
private |
◆ forestPackColumns()
void forestPackColumns |
( |
| ) |
|
|
private |
◆ forestReMaxCol()
void forestReMaxCol |
( |
int | col, |
|
|
int | len ) |
|
private |
◆ forestUpdate()
void forestUpdate |
( |
int | col, |
|
|
Rational * | work, |
|
|
int | num, |
|
|
int * | nonz ) |
|
protected |
◆ freeFactorRings()
◆ initFactorMatrix()
◆ initFactorRings()
◆ initPerm()
◆ isConsistent()
bool isConsistent |
( |
| ) |
const |
|
protected |
◆ makeLvec()
int makeLvec |
( |
int | p_len, |
|
|
int | p_row ) |
|
private |
◆ minColMem()
void minColMem |
( |
int | size | ) |
|
|
private |
◆ minLMem()
◆ minRowMem()
void minRowMem |
( |
int | size | ) |
|
|
private |
◆ packColumns()
◆ packRows()
◆ remaxCol()
void remaxCol |
( |
int | p_col, |
|
|
int | len ) |
|
private |
◆ remaxRow()
void remaxRow |
( |
int | p_row, |
|
|
int | len ) |
|
private |
◆ rowSingletons()
◆ selectPivots()
void selectPivots |
( |
const Rational & | threshold | ) |
|
|
private |
◆ setPivot()
void setPivot |
( |
const int | p_stage, |
|
|
const int | p_col, |
|
|
const int | p_row, |
|
|
const Rational & | val ) |
|
private |
◆ setupColVals()
◆ setupRowVals()
◆ solveLeft()
◆ solveLeft2()
◆ solveLeftEps()
◆ solveLleft() [1/2]
◆ solveLleft() [2/2]
int solveLleft |
( |
Rational * | vec, |
|
|
int * | nonz, |
|
|
int | rn ) |
|
private |
◆ solveLleft2()
◆ solveLleft2forest()
◆ solveLleftEps()
int solveLleftEps |
( |
Rational * | vec, |
|
|
int * | nonz ) |
|
private |
◆ solveLleftForest() [1/2]
int solveLleftForest |
( |
Rational * | vec, |
|
|
int * | ) |
|
private |
◆ solveLleftForest() [2/2]
int solveLleftForest |
( |
Rational * | vec, |
|
|
int * | nonz, |
|
|
int | n ) |
|
private |
◆ solveLleftForestNoNZ()
void solveLleftForestNoNZ |
( |
Rational * | vec | ) |
|
|
private |
◆ solveLleftNoNZ()
◆ solveLright()
◆ solveLright2()
◆ solveRight()
◆ solveRight2()
◆ solveRight2update()
◆ solveRight4update()
int solveRight4update |
( |
Rational * | vec, |
|
|
int * | nonz, |
|
|
Rational * | rhs, |
|
|
Rational * | forest, |
|
|
int * | forestNum, |
|
|
int * | forestIdx ) |
|
protected |
◆ solveUleft() [1/2]
int solveUleft |
( |
Rational * | vec, |
|
|
int * | vecidx, |
|
|
Rational * | rhs, |
|
|
int * | rhsidx, |
|
|
int | rhsn ) |
|
private |
◆ solveUleft() [2/2]
◆ solveUleft2()
◆ solveUleftNoNZ()
◆ solveUpdateLeft() [1/2]
◆ solveUpdateLeft() [2/2]
int solveUpdateLeft |
( |
Rational * | vec, |
|
|
int * | nonz, |
|
|
int | n ) |
|
private |
◆ solveUpdateLeft2()
◆ solveUpdateRight()
◆ solveUpdateRight2()
◆ solveUright()
◆ solveUright2()
◆ solveUright2eps()
◆ solveUrightEps()
◆ timeLimitReached()
bool timeLimitReached |
( |
| ) |
|
|
private |
◆ update()
void update |
( |
int | p_col, |
|
|
Rational * | p_work, |
|
|
const int * | p_idx, |
|
|
int | num ) |
|
protected |
◆ updateNoClear()
void updateNoClear |
( |
int | p_col, |
|
|
const Rational * | p_work, |
|
|
const int * | p_idx, |
|
|
int | num ) |
|
protected |
◆ updateRow()
int updateRow |
( |
int | r, |
|
|
int | lv, |
|
|
int | prow, |
|
|
int | pcol, |
|
|
const Rational & | pval ) |
|
private |
◆ vSolveLeft()
int vSolveLeft |
( |
Rational * | vec, |
|
|
int * | idx, |
|
|
Rational * | rhs, |
|
|
int * | ridx, |
|
|
int | rn ) |
|
protected |
◆ vSolveLeft2()
◆ vSolveLeft3()
int vSolveLeft3 |
( |
Rational * | vec, |
|
|
int * | idx, |
|
|
Rational * | rhs, |
|
|
int * | ridx, |
|
|
int | rn, |
|
|
Rational * | vec2, |
|
|
Rational * | rhs2, |
|
|
int * | ridx2, |
|
|
int | rn2, |
|
|
Rational * | vec3, |
|
|
Rational * | rhs3, |
|
|
int * | ridx3, |
|
|
int | rn3 ) |
|
protected |
◆ vSolveLeftNoNZ()
◆ vSolveLright()
int vSolveLright |
( |
Rational * | vec, |
|
|
int * | ridx, |
|
|
int | rn ) |
|
private |
◆ vSolveLright2()
void vSolveLright2 |
( |
Rational * | vec, |
|
|
int * | ridx, |
|
|
int * | rnptr, |
|
|
Rational * | vec2, |
|
|
int * | ridx2, |
|
|
int * | rn2ptr ) |
|
private |
◆ vSolveLright3()
void vSolveLright3 |
( |
Rational * | vec, |
|
|
int * | ridx, |
|
|
int * | rnptr, |
|
|
Rational * | vec2, |
|
|
int * | ridx2, |
|
|
int * | rn2ptr, |
|
|
Rational * | vec3, |
|
|
int * | ridx3, |
|
|
int * | rn3ptr ) |
|
private |
◆ vSolveRight4update()
int vSolveRight4update |
( |
Rational * | vec, |
|
|
int * | idx, |
|
|
Rational * | rhs, |
|
|
int * | ridx, |
|
|
int | rn, |
|
|
Rational * | forest, |
|
|
int * | forestNum, |
|
|
int * | forestIdx ) |
|
protected |
◆ vSolveRight4update2()
int vSolveRight4update2 |
( |
Rational * | vec, |
|
|
int * | idx, |
|
|
Rational * | rhs, |
|
|
int * | ridx, |
|
|
int | rn, |
|
|
Rational * | vec2, |
|
|
Rational * | rhs2, |
|
|
int * | ridx2, |
|
|
int | rn2, |
|
|
Rational * | forest, |
|
|
int * | forestNum, |
|
|
int * | forestIdx ) |
|
protected |
◆ vSolveRight4update3()
int vSolveRight4update3 |
( |
Rational * | vec, |
|
|
int * | idx, |
|
|
Rational * | rhs, |
|
|
int * | ridx, |
|
|
int | rn, |
|
|
Rational * | vec2, |
|
|
Rational * | rhs2, |
|
|
int * | ridx2, |
|
|
int | rn2, |
|
|
Rational * | vec3, |
|
|
Rational * | rhs3, |
|
|
int * | ridx3, |
|
|
int | rn3, |
|
|
Rational * | forest, |
|
|
int * | forestNum, |
|
|
int * | forestIdx ) |
|
protected |
◆ vSolveRightNoNZ()
◆ vSolveUpdateRight()
int vSolveUpdateRight |
( |
Rational * | vec, |
|
|
int * | ridx, |
|
|
int | n ) |
|
private |
◆ vSolveUpdateRightNoNZ()
void vSolveUpdateRightNoNZ |
( |
Rational * | vec | ) |
|
|
private |
◆ vSolveUright()
int vSolveUright |
( |
Rational * | vec, |
|
|
int * | vidx, |
|
|
Rational * | rhs, |
|
|
int * | ridx, |
|
|
int | rn ) |
|
private |
◆ vSolveUright2()
◆ vSolveUrightNoNZ()
◆ col
◆ colMemMult
◆ diag
◆ factorCount
◆ factorTime
◆ initMaxabs
◆ lMemMult
◆ maxabs
◆ nzCnt
◆ row
◆ rowMemMult
◆ stat
◆ temp
◆ thedim
◆ timeLimit
◆ work
|