25 #define LARGE_SET COIN_INT_MAX - 10 26 #define LARGE_UNSET (LARGE_SET + 1) 135 #define ABC_USE_FUNCTION_POINTERS 0 136 #define SMALL_PERMUTE 138 #ifdef ABC_USE_FUNCTION_POINTERS 140 #if ABC_USE_FUNCTION_POINTERS 155 return scatterPointersUColumnAddress_;
237 inline bool forrestTomlin()
const 239 {
return doForrestTomlin_;}
240 inline void setForrestTomlin(
bool value)
241 { doForrestTomlin_=value;}
336 #if COIN_BIG_DOUBLE == 1 354 void clearHiddenArrays();
386 #ifdef ABC_ORDERED_FACTORIZATION 387 void permuteInForFtran(
CoinIndexedVector ®ionSparse,
bool full =
false)
const;
390 void permuteInForBtranAndMultiply(
CoinIndexedVector ®ionSparse,
bool full =
false)
const;
410 virtual int checkReplace (
const AbcSimplex * model,
414 double acceptablePivot = 1.0e-8);
422 bool skipBtranU=
false,
430 #ifdef ABC_LONG_FACTORIZATION 441 #ifdef ABC_LONG_FACTORIZATION 448 #ifdef MOVE_REPLACE_PART1A 456 #ifdef ABC_LONG_FACTORIZATION 468 #ifdef ABC_LONG_FACTORIZATION
472 double acceptablePivot = 1.0e-8);
479 #ifdef ABC_LONG_FACTORIZATION
490 #ifdef ABC_LONG_FACTORIZATION
494 #ifdef EARLY_FACTORIZE 495 virtual int replaceColumns(
const AbcSimplex *model,
498 int firstPivot,
int lastPivot,
bool cleanUp);
621 #ifdef EARLY_FACTORIZE 691 #define checkLinks(x) 713 assert(next != index);
714 assert(last != index);
722 firstCount[count] = next;
737 assert(next != index);
738 assert(last != index);
929 #undef ABC_DENSE_CODE 930 #define ABC_DENSE_CODE 0 945 #ifdef ABC_USE_FUNCTION_POINTERS 1045 #ifdef ABC_USE_FUNCTION_POINTERS 1059 #if COIN_BIG_DOUBLE == 1 1102 #ifdef ABC_USE_FUNCTION_POINTERS 1157 #if FACTORIZATION_STATISTICS 1158 double ftranTwiddleFactor1_;
1159 double ftranTwiddleFactor2_;
1173 #if FACTORIZATION_STATISTICS 1174 double ftranFTTwiddleFactor1_;
1175 double ftranFTTwiddleFactor2_;
1191 #if FACTORIZATION_STATISTICS 1192 double btranTwiddleFactor1_;
1193 double btranTwiddleFactor2_;
1208 #if FACTORIZATION_STATISTICS 1209 double ftranFullTwiddleFactor1_;
1210 double ftranFullTwiddleFactor2_;
1225 #if FACTORIZATION_STATISTICS 1226 double btranFullTwiddleFactor1_;
1227 double btranFullTwiddleFactor2_;
1261 inline bool gotLCopy()
const {
return true; }
1264 inline bool gotRCopy()
const {
return true; }
1267 inline bool gotUCopy()
const {
return true; }
1270 inline bool gotSparse()
const {
return true; }
1276 inline bool gotLCopy()
const {
return false; }
1279 inline bool gotRCopy()
const {
return false; }
1282 inline bool gotUCopy()
const {
return false; }
1285 inline bool gotSparse()
const {
return false; }
CoinBigIndex numberL_
Number in L.
CoinBigIndex * startColumnL() const
Start of each column in L.
double btranAverageAfterL_
double ftranFTCountAfterU_
virtual CoinSimplexInt * indices() const
Returns array to put basis indices in.
CoinIntArrayWithLength lastRow_
Previous Row in memory order.
CoinBigIndexArrayWithLength startRowL_
Start of each row in L.
double ftranAverageAfterL_
void gutsOfInitialize(CoinSimplexInt type)
1 bit - tolerances etc, 2 more, 4 dummy arrays
virtual void updateWeights(CoinIndexedVector ®ionSparse) const
Updates one column for dual steepest edge weights (FTRAN)
CoinSimplexInt checkPivot(CoinSimplexDouble saveFromU, CoinSimplexDouble oldPivot) const
Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular.
double ftranFTCountAfterR_
int numberRows_
Number of Rows in factorization.
CoinIntArrayWithLength indexRowL_
Row indices of L.
CoinBigIndex * startColumnLAddress_
CoinSimplexInt maximumMaximumPivots_
Maximum maximum pivots.
void fromLongArray(int which) const
From a work array and dis-associate vector.
double btranFullCountAfterU_
void fromLongArray(CoinIndexedVector *vector) const
From a work array and dis-associate vector.
CoinSimplexInt * nextColumnAddress_
virtual CoinSimplexInt * numberInRow() const
Number of entries in each row.
virtual void updateColumnTransposeCpu(CoinIndexedVector ®ionSparse, int whichCpu) const
Updates one column (BTRAN)
void updatePartialUpdate(CoinIndexedVector &partialUpdate)
Update partial Ftran by R update.
CoinSimplexInt numberFtranFullCounts_
CoinSimplexInt numberGoodL_
Number factorized in L.
virtual void getAreas(CoinSimplexInt numberRows, CoinSimplexInt numberColumns, CoinBigIndex maximumL, CoinBigIndex maximumU)
Gets space for a factorization, called by constructors.
CoinSimplexDouble conditionNumber() const
Condition number - product of pivots after factorization.
void setDenseThreshold(CoinSimplexInt value)
Sets dense threshold.
CoinFactorizationDoubleArrayWithLength pivotRegion_
Inverses of pivot values.
void updateColumnUSparse(CoinIndexedVector *regionSparse) const
Updates part of column (FTRANU) when sparse.
virtual int checkReplacePart2(int pivotRow, CoinSimplexDouble btranAlpha, double ftranAlpha, double ftAlpha, double acceptablePivot=1.0e-8)
Checks if can replace one Column to basis, returns 0=OK, 1=Probably OK, 2=singular,...
CoinSimplexInt maximumRowsExtra_
Maximum number of Rows after iterating.
void printRegion(const CoinIndexedVector &vector, const char *where) const
CoinSimplexInt numberRowsExtra_
Number of Rows after iterating.
CoinSimplexInt denseThreshold_
Dense threshold (here to use double alignment)
double * denseVector(CoinIndexedVector *vector) const
Returns double * associated with vector.
CoinAbcTypeFactorization()
Default constructor.
double btranFullCountAfterR_
CoinSimplexInt * indexColumnLAddress_
CoinIntArrayWithLength firstCount_
First Row/Column with count of k, can tell which by offset - Rows then Columns.
CoinBigIndex * startRowLAddress_
CoinBigIndex sizeSparseArray_
Size in bytes of a sparseArray.
CoinSimplexDouble adjustedAreaFactor() const
Returns areaFactor but adjusted for dense.
double ftranFullCountAfterU_
CoinIntArrayWithLength markRow_
Marks rows to be updated.
CoinSimplexInt * pivotLinkedBackwards() const
Forward and backward linked lists (numberRows_+2)
double ftranFTAverageAfterL_
CoinIntArrayWithLength lastColumn_
Previous Column in memory order.
void deleteLink(CoinSimplexInt index)
Deletes a link in chain of equal counts.
CoinSimplexInt numberTrials_
Number of trials before rejection.
CoinSimplexInt replaceColumnPFI(CoinIndexedVector *regionSparse, CoinSimplexInt pivotRow, CoinSimplexDouble alpha)
Replaces one Column to basis for PFI returns 0=OK, 1=Probably OK, 2=singular, 3=no room.
virtual CoinSimplexInt updateColumn(CoinIndexedVector ®ionSparse) const
This version has same effect as above with FTUpdate==false so number returned is always >=0.
CoinSimplexInt * numberInColumnAddress_
void updateTwoColumnsUDensish(CoinSimplexInt &numberNonZero1, CoinFactorizationDouble *COIN_RESTRICT region1, CoinSimplexInt *COIN_RESTRICT index1, CoinSimplexInt &numberNonZero2, CoinFactorizationDouble *COIN_RESTRICT region2, CoinSimplexInt *COIN_RESTRICT index2) const
Updates part of 2 columns (FTRANU) real work.
void setNumberElementsU(CoinBigIndex value)
Setss number in U area.
CoinBigIndex lengthL_
Length of L.
CoinFactorizationDoubleArrayWithLength elementRowU_
Elements of U by row.
CoinIntArrayWithLength indexColumnU_
Base address for U (may change)
CoinFactorizationDouble * elementUAddress_
CoinBigIndex firstZeroed_
First place in funny copy zeroed out.
Abstract base class which also has some scalars so can be used from Dense or Simp.
#define ABC_FAC_GOT_SPARSE
bool getRowSpaceIterate(CoinSimplexInt iRow, CoinSimplexInt extraNeeded)
Gets space for one Row with given length while iterating, may have to do compression (returns True if...
CoinFactorizationDouble * array() const
CoinBigIndex * startRowUAddress_
void addLink(CoinSimplexInt index, CoinSimplexInt count)
Adds a link in chain of equal counts.
friend void CoinAbcFactorizationUnitTest(const std::string &mpsDir)
CoinSimplexInt * firstCountAddress_
double preProcess3()
Return largest element.
CoinSimplexInt numberBtranCounts_
void updateColumnU(CoinIndexedVector *region, CoinAbcStatistics &statistics) const
Updates part of column (FTRANU)
virtual CoinSimplexInt * numberInColumn() const
Number of entries in each column.
CoinSimplexInt * lastCountAddress_
Previous Row/Column with count.
virtual int * pivotRow() const
Returns pivot row.
CoinSimplexInt numberForrestTomlin() const
Length of FT vector.
CoinBigIndex lengthAreaR_
length of area reserved for R
virtual void updateFullColumnTranspose(CoinIndexedVector ®ionSparse) const
Updates one full column (BTRAN)
virtual CoinSimplexInt factor(AbcSimplex *model)
Does most of factorization.
CoinIntArrayWithLength numberInRow_
Number in each Row.
CoinSimplexInt sparseThreshold() const
get sparse threshold
void checkConsistency()
Checks that row and column copies look OK.
double btranFullCountAfterL_
virtual CoinFactorizationDouble * elements() const
Returns array to put basis elements in.
virtual bool wantsTableauColumn() const
Returns true if wants tableauColumn in replaceColumn.
void separateLinks()
Separate out links with same row/column count.
virtual void updateColumnCpu(CoinIndexedVector ®ionSparse, int whichCpu) const
Updates one column (FTRAN)
CoinBigIndex numberElementsL() const
Returns number in L area.
CoinBigIndexArrayWithLength startColumnU_
Start of each column in U.
CoinBigIndex numberElementsR() const
Returns number in R area.
CoinBigIndex * convertColumnToRowUAddress_
bool pivotRowSingleton(CoinSimplexInt pivotRow, CoinSimplexInt pivotColumn)
Does one pivot on Row Singleton in factorization.
CoinSimplexInt factorDense()
Does dense phase of factorization return code is <0 error, 0= finished.
const double * denseVector(const CoinIndexedVector &vector) const
CoinSimplexInt * sparseAddress_
virtual void updateColumnFTPart2(CoinIndexedVector ®ionSparse)
CoinBigIndex lengthR_
Length of R stuff.
double ftranFullAverageAfterU_
CoinSimplexInt * firstCount() const
For equal counts in factorization.
void checkSparse()
See if worth going sparse.
void doAddresses()
Set up addresses from arrays.
CoinSimplexInt * lastCount() const
Previous Row/Column with count.
bool spaceForForrestTomlin() const
True if FT update and space.
void pivotColumnSingleton(CoinSimplexInt pivotRow, CoinSimplexInt pivotColumn)
Does one pivot on Column Singleton in factorization (can't return false)
virtual CoinBigIndex * starts() const
Returns pivot row.
double ftranAverageAfterR_
CoinIntArrayWithLength numberInColumnPlus_
Number in each Column including pivoted.
CoinBigIndex * array() const
double * denseVector() const
CoinSimplexInt numberRowsExtra() const
Number of Rows after iterating.
CoinBigIndex lengthAreaU() const
Returns length of U area.
CoinBigIndex * startColumnU() const
Start of each column in U.
double ftranFullCountAfterL_
CoinFactorizationDouble * elementByRowL() const
Elements in L (row copy)
CoinSimplexInt lastSlack_
void updateColumnUDensish(CoinIndexedVector *regionSparse) const
Updates part of column (FTRANU)
void afterPivot(CoinSimplexInt pivotRow, CoinSimplexInt pivotColumn)
After pivoting.
double ftranFullAverageAfterL_
CoinSimplexInt numberU_
Number in U.
double ftranAverageAfterU_
CoinSimplexInt leadingDimension_
Leading dimension for dense.
virtual void preProcess()
PreProcesses column ordered copy of basis.
CoinSimplexInt numberRowsSmall_
Size of small inverse.
double btranAverageAfterR_
bool reorderU()
Reorders U so contiguous and in order (if there is space) Returns true if it could.
void updateColumnUDense(CoinIndexedVector *regionSparse) const
Updates part of column (FTRANU) when dense (i.e. do as inner products)
CoinFactorizationDoubleArrayWithLength elementL_
Elements of L.
CoinSimplexInt numberFtranCounts_
double ftranFTCountAfterL_
CoinFactorizationDouble * pivotRegionAddress_
void clearArrays()
Get rid of all memory.
void updateColumnLDensish(CoinIndexedVector *region) const
Updates part of column (FTRANL) when densish.
void unpack(CoinIndexedVector *regionFrom, CoinIndexedVector *regionTo) const
void updateColumnTransposeLDensish(CoinIndexedVector *region) const
Updates part of column transpose (BTRANL) when densish by column.
CoinBigIndex lastEntryByColumnU_
Last entry by column for U.
CoinBigIndex lastEntryByRowU_
Last entry by row for U.
double ftranFTAverageAfterR_
int replaceColumnU(CoinIndexedVector *regionSparse, CoinBigIndex *deletedPosition, CoinSimplexInt *deletedColumns, CoinSimplexInt pivotRow)
Combines BtranU and store which elements are to be deleted returns number to be deleted.
CoinSimplexInt maximumRows_
Maximum rows (ever) (here to use double alignment)
CoinSimplexInt * indexRowL() const
Row indices of L.
double ftranFTAverageAfterU_
CoinSimplexInt * permuteAddress_
#define ABC_FAC_GOT_UCOPY
CoinBigIndex * convertRowToColumnUAddress_
void updateColumnLDense(CoinIndexedVector *region) const
Updates part of column (FTRANL) when dense (i.e. do as inner products)
CoinIntArrayWithLength nextColumn_
Next Column in memory order.
void updateColumnTransposeRSparse(CoinIndexedVector *region) const
Updates part of column transpose (BTRANR) when sparse.
double ftranFTCountInput_
double CoinFactorizationDouble
CoinSimplexUnsignedInt * workArea2Address_
double ftranCountInput_
To decide how to solve.
virtual int updateColumnFTPart1(CoinIndexedVector ®ionSparse)
CoinIntArrayWithLength pivotColumn_
Pivot order for each Column.
CoinFactorizationDouble * elementByRowLAddress_
void updateColumnL(CoinIndexedVector *region, CoinAbcStatistics &statistics) const
Updates part of column (FTRANL)
virtual void checkMarkArrays() const
virtual CoinSimplexInt updateColumnFT(CoinIndexedVector ®ionSparse)
Later take out return codes (apart from +- 1 on FT)
CoinBigIndex baseL_
Base of L.
CoinBigIndexArrayWithLength convertColumnToRowU_
Converts columns to rows in U.
CoinIntArrayWithLength numberInColumn_
Number in each Column.
virtual CoinAbcAnyFactorization * clone() const
Clone.
CoinSimplexInt * pivotColumnAddress_
void gutsOfCopy(const CoinAbcTypeFactorization &other)
CoinFactorizationDouble * elementU() const
Elements of U.
CoinFactorizationDoubleArrayWithLength workArea_
First work area.
double btranFullAverageAfterL_
void updateColumnTransposeRDensish(CoinIndexedVector *region) const
Updates part of column transpose (BTRANR) when dense.
CoinBigIndex maximumU_
Maximum space used in U.
CoinIntArrayWithLength indexRowU_
Row indices of U.
CoinSimplexInt * nextCountAddress_
Next Row/Column with count.
CoinSimplexInt * pivotLOrderAddress_
CoinBigIndex lengthU_
Length of U.
CoinSimplexInt * saveColumnAddress_
CoinBigIndex numberElementsU() const
Returns number in U area.
CoinSimplexInt * indexRowRAddress_
Row indices for R.
void sort() const
Debug - sort so can compare.
CoinBigIndexArrayWithLength startRowU_
Start of each Row as pointer.
CoinSimplexInt initialNumberRows_
Rows first time nonzero.
void updateColumnTransposeL(CoinIndexedVector *region, CoinAbcStatistics &statistics) const
Updates part of column transpose (BTRANL)
CoinSimplexInt * indexRowLAddress_
CoinSimplexInt * nextRowAddress_
void updateColumnR(CoinIndexedVector *region, CoinAbcStatistics &statistics) const
Updates part of column (FTRANR) without FT update.
CoinFactorizationDouble * elementRAddress_
Elements of R.
CoinFactorizationDouble * elementRowUAddress_
void updateColumnTransposeU(CoinIndexedVector *region, CoinSimplexInt smallestIndex, CoinAbcStatistics &statistics) const
Updates part of column transpose (BTRANU), assumes index is sorted i.e.
CoinSimplexInt denseThreshold() const
Gets dense threshold.
void updateColumnTransposeR(CoinIndexedVector *region, CoinAbcStatistics &statistics) const
Updates part of column transpose (BTRANR)
virtual CoinFactorizationDouble * pivotRegion() const
Returns address of pivot region.
CoinSimplexDouble maximumCoefficient() const
Returns maximum absolute value in factorization.
CoinSimplexInt * indexColumnUAddress_
CoinBigIndex totalElements_
Number of elements in U (to go) or while iterating total overall.
CoinIntArrayWithLength nextRow_
Next Row in memory order.
unsigned char CoinCheckZero
CoinFactorizationDouble * workAreaAddress_
CoinUnsignedIntArrayWithLength workArea2_
Second work area.
CoinBigIndexArrayWithLength startColumnL_
Start of each column in L.
CoinSimplexInt * indexColumnL() const
Index of column in row for L.
int pivot(CoinSimplexInt pivotRow, CoinSimplexInt pivotColumn, CoinBigIndex pivotRowPosition, CoinBigIndex pivotColumnPosition, CoinFactorizationDouble *COIN_RESTRICT work, CoinSimplexUnsignedInt *COIN_RESTRICT workArea2, CoinSimplexInt increment2, int *COIN_RESTRICT markRow)
0 fine, -99 singular, 2 dense
void updateColumnPFI(CoinIndexedVector *regionSparse) const
Updates part of column PFI (FTRAN) (after rest)
void resetStatistics()
Reset all sparsity etc statistics.
virtual CoinSimplexInt updateColumnTranspose(CoinIndexedVector ®ionSparse) const
Updates one column (BTRAN) from regionSparse2 regionSparse starts as zero and is zero at end Note - i...
CoinSimplexInt * nextCount() const
Next Row/Column with count.
CoinSimplexInt numberRowsLeft_
Number Rows left (numberRows-numberGood)
CoinAbcTypeFactorization & operator=(const CoinAbcTypeFactorization &other)
= copy
virtual CoinSimplexInt * pivotColumn() const
Returns address of pivotColumn region (also used for permuting)
CoinSimplexInt * pivotLinkedForwardsAddress_
CoinIntArrayWithLength sparse_
Sparse regions.
virtual ~CoinAbcTypeFactorization()
Destructor.
CoinSimplexInt state_
State of saved version and what can be done 0 - nothing saved 1 - saved and can go back to previous s...
CoinSimplexInt * lastColumnAddress_
CoinSimplexInt * indexRowU() const
Row indices of U.
virtual void checkReplacePart1a(CoinIndexedVector *, int)
void updateColumnTransposeLByRow(CoinIndexedVector *region) const
Updates part of column transpose (BTRANL) when densish by row.
virtual void postProcess(const CoinSimplexInt *sequence, CoinSimplexInt *pivotVariable)
Does post processing on valid factorization - putting variables on correct rows.
CoinFactorizationDouble * elementLAddress_
CoinSimplexInt * numberInColumnPlusAddress_
double ftranFullCountAfterR_
CoinFactorizationDouble * denseAreaAddress_
void updateColumnTransposePFI(CoinIndexedVector *region) const
Updates part of column transpose PFI (BTRAN) (before rest)
void toLongArray(CoinIndexedVector *vector, int which) const
To a work array and associate vector.
double btranAverageAfterU_
CoinSimplexInt * lastRowAddress_
bool storeFT(const CoinIndexedVector *regionFT)
Store update after doing L and R - retuns false if no room.
virtual double checkReplacePart1(CoinIndexedVector *regionSparse, int pivotRow)
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial...
CoinFactorizationDoubleArrayWithLength elementU_
Elements of U.
CoinFactorizationDoubleArrayWithLength denseArea_
Dense area.
#define ABC_FAC_GOT_RCOPY
double ftranFullAverageAfterR_
bool pivotOneOtherRow(CoinSimplexInt pivotRow, CoinSimplexInt pivotColumn)
Pivots when just one other row so faster?
CoinSimplexInt numberFtranFTCounts_
void cleanup()
Cleans up at end of factorization.
virtual CoinBigIndex numberElements() const
Total number of elements in factorization.
#define FACTOR_CPU
This deals with Factorization and Updates.
virtual void replaceColumnPart3(const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, int pivotRow, double alpha)
Replaces one Column to basis, partial update already in U.
CoinSimplexInt messageLevel_
Detail in messages.
CoinBigIndex * startColumnRAddress_
void pack(CoinIndexedVector *regionFrom, CoinIndexedVector *regionTo) const
CoinBigIndex lengthAreaL_
Length of area reserved for L.
virtual double checkReplacePart1b(CoinIndexedVector *, int)
void modifyLink(CoinSimplexInt index, CoinSimplexInt count)
Modifies links in chain of equal counts.
CoinSimplexInt * pivotLOrder() const
double * denseVector(CoinIndexedVector &vector) const
CoinBigIndex * startColumnUAddress_
CoinIntArrayWithLength saveColumn_
Columns left to do in a single pivot.
virtual void updateFullColumn(CoinIndexedVector ®ionSparse) const
Updates one full column (FTRAN)
double btranFullCountInput_
To decide how to solve.
virtual CoinSimplexInt updateTwoColumnsFT(CoinIndexedVector ®ionFT, CoinIndexedVector ®ionOther)
Updates one column (FTRAN) from region2 Tries to do FT update number returned is negative if no room.
CoinSimplexInt sparseThreshold_
Below this use sparse technology - if 0 then no L row copy.
CoinBigIndex lengthAreaL() const
Returns length of L area.
CoinSimplexInt numberR_
Number in R.
void gutsOfDestructor(CoinSimplexInt type=1)
The real work of constructors etc 0 just scalars, 1 bit normal.
CoinBigIndex numberL() const
Number in L.
CoinSimplexInt maximumRowsExtra() const
Maximum of Rows after iterating.
CoinSimplexInt * indexRowUAddress_
void updateColumnTransposeUByColumn(CoinIndexedVector *region, CoinSimplexInt smallestIndex) const
Updates part of column transpose (BTRANU) by column assumes index is sorted i.e.
CoinFactorizationDoubleArrayWithLength elementByRowL_
Elements in L (row copy)
CoinBigIndex getColumnSpaceIterate(CoinSimplexInt iColumn, CoinFactorizationDouble value, CoinSimplexInt iRow)
getColumnSpaceIterate.
bool getColumnSpaceIterateR(CoinSimplexInt iColumn, CoinFactorizationDouble value, CoinSimplexInt iRow)
getColumnSpaceIterateR.
CoinBigIndex * startColumnR() const
Start of columns for R.
void scan(CoinIndexedVector *vector) const
Scans region to find nonzeros.
int wantToGoDense()
After pivoting - returns true if need to go dense.
CoinCheckZero * markRowAddress_
CoinBigIndex lengthAreaU_
Length of area reserved for U.
CoinIntArrayWithLength permute_
Permutation vector for pivot row order.
int numberRows() const
Number of Rows after factorization.
double btranFullAverageAfterU_
CoinBigIndex * startRowL() const
Start of each row in L.
#define ABC_FAC_GOT_LCOPY
virtual void makeNonSingular(CoinSimplexInt *sequence)
Makes a non-singular basis by replacing variables.
void updateColumnTransposeUDensish(CoinIndexedVector *region, CoinSimplexInt smallestIndex) const
Updates part of column transpose (BTRANU) when densish, assumes index is sorted i....
void(* scatterUpdate)(int, CoinFactorizationDouble, const CoinFactorizationDouble *, double *) SCATTER_ATTRIBUTE
CoinSimplexInt factorSparse()
Does sparse phase of factorization return code is <0 error, 0= finished.
bool getColumnSpace(CoinSimplexInt iColumn, CoinSimplexInt extraNeeded)
Gets space for one Column with given length, may have to do compression (returns True if successful),...
void goSparse()
makes a row copy of L for speed and to allow very sparse problems
CoinSimplexInt * numberInRowAddress_
double btranFullAverageAfterR_
double ftranFullCountInput_
To decide how to solve.
CoinSimplexInt * pivotLinkedBackwardsAddress_
CoinSimplexInt numberBtranFullCounts_
double zeroTolerance_
Zero tolerance.
CoinIntArrayWithLength indexColumnL_
Index of column in row for L.
void almostDestructor()
Delete all stuff (leaves as after CoinAbcFactorization())
CoinBigIndexArrayWithLength convertRowToColumnU_
Converts rows to columns in U.
int maximumPivots() const
Maximum number of pivots between factorizations.
void updateColumnLSparse(CoinIndexedVector *region) const
Updates part of column (FTRANL) when sparse.
const double * denseVector(const CoinIndexedVector *vector) const
Returns double * associated with vector.
CoinBigIndex numberCompressions_
Number of compressions done.
CoinBigIndex numberCompressions() const
Number of compressions done.
CoinSimplexInt messageLevel() const
Level of detail of messages.
CoinSimplexInt * permute() const
Returns address of permute region.
bool getRowSpace(CoinSimplexInt iRow, CoinSimplexInt extraNeeded)
Gets space for one Row with given length, may have to do compression (returns True if successful),...
unsigned int CoinSimplexUnsignedInt
CoinSimplexInt * listAddress_
CoinSimplexInt * pivotLinkedForwards() const
void updateColumnTransposeUSparse(CoinIndexedVector *region) const
Updates part of column transpose (BTRANU) when sparse, assumes index is sorted i.e.
void show_self() const
Debug show object (shows one representation)
void updateColumnTransposeLSparse(CoinIndexedVector *region) const
Updates part of column transpose (BTRANL) when sparse (by Row)
CoinBigIndex baseL() const
Base of L.