28#ifndef _CLUFACTOR_RATIONAL_H_
29#define _CLUFACTOR_RATIONAL_H_
38#define SOPLEX_WITH_L_ROWS 1
274 Rational* vec2,
int* ridx2,
int* rn2ptr);
277 Rational* vec2,
int* ridx2,
int* rn2ptr,
278 Rational* vec3,
int* ridx3,
int* rn3ptr);
384 Rational* forest,
int* forestNum,
int* forestIdx);
389 Rational* rhs2,
int* nonz,
Rational* forest,
int* forestNum,
int* forestIdx);
403 Rational* forest,
int* forestNum,
int* forestIdx);
409 Rational* rhs2,
int* ridx2,
int rn2,
410 Rational* forest,
int* forestNum,
int* forestIdx);
416 Rational* rhs2,
int* ridx2,
int rn2,
418 Rational* rhs3,
int* ridx3,
int rn3,
419 Rational* forest,
int* forestNum,
int* forestIdx);
422 Rational* rhs2,
int* ridx2,
int rn2);
436 Rational* rhs2,
int* ridx2,
int rn2);
441 Rational* rhs2,
int* ridx2,
int rn2,
443 Rational* rhs3,
int* ridx3,
int rn3);
468#include "clufactor_rational.hpp"
Collection of dense, sparse, and semi-sparse vectors.
int mkwtz
markowitz number of pivot
int pos
position of pivot column in row
Pring & operator=(const Pring &)
blocked assignment operator
Pring(const Pring &)
blocked copy constructor
int idx
index of pivot row
Temporary data structures.
Pring * pivot_row
row index handlers for Real linked list
int stage
stage of the structure
Pring * pivot_rowNZ
lists for rows to number of nonzeros
Temp & operator=(const Temp &)
blocked assignment operator
int * s_cact
lengths of columns of active submatrix
Temp(const Temp &)
blocked copy constructor
Pring * pivot_colNZ
lists for columns to number of nonzeros
void clear()
clears the structure
Pring * pivot_col
column index handlers for Real linked list
VectorRational s_max
maximum absolute value per row (or -1)
void init(int p_dim)
initialization
Pring pivots
ring of selected pivot rows
Implementation of sparse LU factorization with Rational precision.
int vSolveLright(Rational *vec, int *ridx, int rn)
void solveUright(Rational *wrk, Rational *vec)
void solveLright2(Rational *vec1, Rational *vec2)
int vSolveLeft2(Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2)
void eliminateRowSingletons()
int solveLleftEps(Rational *vec, int *nonz)
void solveUright2(Rational *work1, Rational *vec1, Rational *work2, Rational *vec2)
void solveRight(Rational *vec, Rational *rhs)
void solveLleft(Rational *vec)
int solveLleft2forest(Rational *vec1, int *, Rational *vec2)
void eliminatePivot(int prow, int pos)
int solveUpdateLeft(Rational *vec, int *nonz, int n)
void remaxCol(int p_col, int len)
void update(int p_col, Rational *p_work, const int *p_idx, int num)
void solveUleft(Rational *work, Rational *vec)
int updateRow(int r, int lv, int prow, int pcol, const Rational &pval)
bool isConsistent() const
void solveLleftNoNZ(Rational *vec)
void forestUpdate(int col, Rational *work, int num, int *nonz)
int solveUright2eps(Rational *work1, Rational *vec1, Rational *work2, Rational *vec2, int *nonz)
int solveRight4update(Rational *vec, int *nonz, Rational *rhs, Rational *forest, int *forestNum, int *forestIdx)
void updateNoClear(int p_col, const Rational *p_work, const int *p_idx, int num)
int solveUleft(Rational *vec, int *vecidx, Rational *rhs, int *rhsidx, int rhsn)
void eliminateNucleus(const Rational &threshold)
Real rowMemMult
factor of minimum Memory * number of nonzeros
Rational maxabs
maximum abs number in L and U
void solveLright(Rational *vec)
int solveLeftEps(Rational *vec, Rational *rhs, int *nonz)
int factorCount
Number of factorizations.
void factor(const SVectorRational **vec, const Rational &threshold)
void solveUpdateRight2(Rational *vec1, Rational *vec2)
Timer * factorTime
Time spent in factorizations.
void vSolveUpdateRightNoNZ(Rational *vec)
Real colMemMult
factor of minimum Memory * number of nonzeros
void vSolveRightNoNZ(Rational *vec2, Rational *rhs2, int *ridx2, int rn2)
int makeLvec(int p_len, int p_row)
void solveUpdateLeft2(Rational *vec1, Rational *vec2)
int solveLleftForest(Rational *vec, int *nonz, int n)
Rational * work
Working array: must always be left as 0!
Real timeLimit
Time limit on factorization or solves.
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)
Perm col
column permutation matrices
void solveUpdateLeft(Rational *vec)
Temp temp
Temporary storage.
Perm row
row permutation matrices
void selectPivots(const Rational &threshold)
void solveRight2(Rational *vec1, Rational *vec2, Rational *rhs1, Rational *rhs2)
void vSolveLeftNoNZ(Rational *vec, Rational *rhs, int *ridx, int rn)
void vSolveUrightNoNZ(Rational *vec, Rational *rhs, int *ridx, int rn)
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)
void forestReMaxCol(int col, int len)
int solveUrightEps(Rational *vec, int *nonz, Rational *rhs)
Rational initMaxabs
maximum abs number in initail Matrix
int solveLeft2(Rational *vec1, int *nonz, Rational *vec2, Rational *rhs1, Rational *rhs2)
void solveLleft2(Rational *vec1, int *, Rational *vec2)
void solveLeft(Rational *vec, Rational *rhs)
void vSolveLright3(Rational *vec, int *ridx, int *rnptr, Rational *vec2, int *ridx2, int *rn2ptr, Rational *vec3, int *ridx3, int *rn3ptr)
SLinSolverRational::Status stat
Status indicator.
void solveUleft2(Rational *work1, Rational *vec1, Rational *work2, Rational *vec2)
int vSolveRight4update(Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *forest, int *forestNum, int *forestIdx)
int solveLleftForest(Rational *vec, int *)
int solveRight2update(Rational *vec1, Rational *vec2, Rational *rhs1, Rational *rhs2, int *nonz, Rational *forest, int *forestNum, int *forestIdx)
int solveLleft(Rational *vec, int *nonz, int rn)
int vSolveUright(Rational *vec, int *vidx, Rational *rhs, int *ridx, int rn)
VectorRational diag
Array of pivot elements.
Real lMemMult
factor of minimum Memory * number of nonzeros
void setPivot(const int p_stage, const int p_col, const int p_row, const Rational &val)
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 solveLleftForestNoNZ(Rational *vec)
int thedim
dimension of factorized matrix
int vSolveUright2(Rational *vec, int *vidx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2)
void eliminateColSingletons()
void initFactorMatrix(const SVectorRational **vec)
void vSolveLright2(Rational *vec, int *ridx, int *rnptr, Rational *vec2, int *ridx2, int *rn2ptr)
void forestMinColMem(int size)
void remaxRow(int p_row, int len)
int vSolveLeft(Rational *vec, int *idx, Rational *rhs, int *ridx, int rn)
int vSolveUpdateRight(Rational *vec, int *ridx, int n)
void solveUleftNoNZ(Rational *vec, Rational *rhs, int *rhsidx, int rhsn)
void solveUpdateRight(Rational *vec)
int nzCnt
number of nonzeros in U
Status
status flags of the SLinSolverRational class.
@ TIME
The time limit has been hit.
Wrapper for the system time query methods.
virtual Real time() const =0
Everything should be within this namespace.
number< gmp_rational, et_off > Rational
Sparse Linear Solver virtual base class with Rational precision.
Debugging, floating point type and parameter definitions.
Data structures for saving the working matrix and L factor.
VectorRational rval
values of rows of L
int * rorig
original row permutation
int * row
column indices of L vectors
int startSize
size of array start
int updateType
type of updates to be used.
int * ridx
indices of rows of L
int * rbeg
start of rows in rval and ridx
int * rperm
original row permutation
int * idx
array of size val.dim() storing indices of L vectors
VectorRational val
values of L vectors
int firstUpdate
number of first update L vector
int * start
starting positions in val and idx
int firstUnused
number of first unused L vector
Data structures for saving the row and column permutations.
int * orig
orig[p] original index from p
int * perm
perm[i] permuted index from i
int * max
maximum available nonzeros per colunn: start[i] + max[i] == start[elem[i].next->idx] len[i] <= max[i]...
int * len
used nonzeros per column vector
int size
size of array idx
int used
used entries of array idx
Dring * elem
Array of ring elements.
Dring list
Double linked ringlist of vector indices in the order they appear in the column file
int * idx
hold row indices of nonzeros
VectorRational val
hold nonzero values: this is only initialized in the end of the factorization with DEFAULT updates.
int * start
starting positions in val and idx
int * max
maximum available nonzeros per row: start[i] + max[i] == start[elem[i].next->idx] len[i] <= max[i].
int * len
used nonzeros per row vectors
int used
used entries of arrays idx and val
Dring * elem
Array of ring elements.
Dring list
Double linked ringlist of vector indices in the order they appear in the row file
int * idx
array of length val.dim() to hold column indices of nonzeros in val
VectorRational val
hold nonzero values
int * start
starting positions in val and idx
Data structures for saving the working matrix and U factor.
struct soplex::CLUFactorRational::U::Col col
struct soplex::CLUFactorRational::U::Row row