28#ifndef _SLUFACTOR_RATIONAL_H_
29#define _SLUFACTOR_RATIONAL_H_
42#define SOPLEX_MAXUPDATES 1000
180 return nzCnt +
l.start[
l.firstUnused];
303 u.row.elem =
nullptr;
305 u.row.start =
nullptr;
308 u.col.elem =
nullptr;
310 u.col.start =
nullptr;
391 assert(
row.perm !=
nullptr);
392 assert(
row.orig !=
nullptr);
393 assert(
col.perm !=
nullptr);
394 assert(
col.orig !=
nullptr);
396 assert(
u.row.elem !=
nullptr);
397 assert(
u.row.idx !=
nullptr);
398 assert(
u.row.start !=
nullptr);
399 assert(
u.row.len !=
nullptr);
400 assert(
u.row.max !=
nullptr);
402 assert(
u.col.elem !=
nullptr);
403 assert(
u.col.idx !=
nullptr);
404 assert(
u.col.start !=
nullptr);
405 assert(
u.col.len !=
nullptr);
406 assert(
u.col.max !=
nullptr);
408 assert(
l.idx !=
nullptr);
409 assert(
l.start !=
nullptr);
410 assert(
l.row !=
nullptr);
460 u.row.elem =
nullptr;
462 u.row.start =
nullptr;
465 u.col.elem =
nullptr;
467 u.col.start =
nullptr;
515#include "slufactor_rational.hpp"
Implementation of sparse LU factorization with Rational precision.
int factorCount
Number of factorizations.
Timer * factorTime
Time spent in factorizations.
Rational * work
Working array: must always be left as 0!
Real timeLimit
Time limit on factorization or solves.
Perm col
column permutation matrices
Perm row
row permutation matrices
SLinSolverRational::Status stat
Status indicator.
VectorRational diag
Array of pivot elements.
int thedim
dimension of factorized matrix
int nzCnt
number of nonzeros in U
UpdateType
Specifies how to perform change method.
SSVectorRational forest
? Update vector set up by solveRight4update() and solve2right4update()
Rational stability() const
Timer * solveTime
Time spent in solves.
virtual SLinSolverRational * clone() const
clone function for polymorphism
SLUFactorRational()
default constructor.
void assign(const SLUFactorRational &old)
used to implement the assignment operator
Real getFactorTime() const
time spent in factorizations
bool isConsistent() const
consistency check.
void changeEta(int idx, SSVectorRational &eta)
void solve3right4update(SSVectorRational &x, VectorRational &y, VectorRational &z, const SVectorRational &b, SSVectorRational &d, SSVectorRational &e)
Solves , and .
SLinSolverRational::Status Status
for convenience
void resetSolveTime()
reset SolveTime
void resetFactorTime()
reset FactorTime
UpdateType utype() const
returns the current update type uptype.
void setUtype(UpdateType tp)
sets update type.
void resetCounters()
reset timers and counters
Status change(int idx, const SVectorRational &subst, const SSVectorRational *eta=nullptr)
UpdateType uptype
the current UpdateType.
int solveCount
Number of solves.
const char * getName() const
bool usetup
TRUE iff update vector has been setup.
void solveRight4update(SSVectorRational &x, const SVectorRational &b)
Solves .
Rational markowitz()
returns Markowitz threshold.
void solveLeft(SSVectorRational &x, const SVectorRational &b)
Solves .
Rational minStability
minimum stability to achieve by setting threshold.
void setMarkowitz(const Rational &m)
sets minimum Markowitz threshold.
void solve2right4update(SSVectorRational &x, VectorRational &y, const SVectorRational &b, SSVectorRational &d)
Solves and .
virtual ~SLUFactorRational()
destructor.
void solveLeft(SSVectorRational &x, VectorRational &y, VectorRational &z, const SVectorRational &b, SSVectorRational &d, SSVectorRational &e)
Solves , and .
SLUFactorRational(const SLUFactorRational &old)
copy constructor.
void setTimeLimit(const Real limit)
set time limit on factorization
int getSolveCount() const
number of solves performed
Rational minThreshold
minimum threshold to use.
void solveRight(SSVectorRational &x, const SVectorRational &b)
Solves .
int getFactorCount() const
number of factorizations performed
VectorRational vec
Temporary vector.
Rational lastThreshold
pivoting threshold of last factorization
void solveLeft(SSVectorRational &x, VectorRational &y, const SVectorRational &b, SSVectorRational &d)
Solves and .
std::string statistics() const
SSVectorRational ssvec
Temporary semi-sparse vector.
void solveRight(VectorRational &x, const VectorRational &b)
Solves .
SLUFactorRational & operator=(const SLUFactorRational &old)
assignment operator.
Real getSolveTime() const
time spent in solves
void solveLeft(VectorRational &x, const VectorRational &b)
Solves .
void dump() const
prints the LU factorization to stdout.
Status load(const SVectorRational *vec[], int dim)
SLinSolverRational()
default constructor
Status
status flags of the SLinSolverRational class.
Exception class for out of memory exceptions.
static Timer * createTimer(Timer::TYPE ttype)
create timers and allocate memory for them
Wrapper for the system time query methods.
Implementation of sparse LU factorization with Rational precision.
Everything should be within this namespace.
VectorBase< Rational > VectorRational
SVectorBase< Rational > SVectorRational
SSVectorBase< Rational > SSVectorRational
void spx_alloc(T &p, int n=1)
Allocate memory.
Sparse Linear Solver virtual base class with Rational precision.
Debugging, floating point type and parameter definitions.