Cgl 0.59.7

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ClpCholeskyDense.hpp
Go to the documentation of this file.
1 /* $Id: ClpCholeskyDense.hpp 1910 2013-01-27 02:00:13Z stefan $ */
2 /*
3 Copyright (C) 2003, International Business Machines Corporation
4 and others. All Rights Reserved.
5
6 This code is licensed under the terms of the Eclipse Public License (EPL).
7 */
8 #ifndef ClpCholeskyDense_H
9 #define ClpCholeskyDense_H
10
11 #include "ClpCholeskyBase.hpp"
12 class ClpMatrixBase;
13
14 class ClpCholeskyDense : public ClpCholeskyBase {
15
16 public:
21 virtual int order(ClpInterior * model) ;
26 virtual int symbolic();
29 virtual int factorize(const CoinWorkDouble * diagonal, int * rowsDropped) ;
31 virtual void solve (CoinWorkDouble * region) ;
39 int reserveSpace(const ClpCholeskyBase * factor, int numberRows) ;
41 CoinBigIndex space( int numberRows) const;
43 void factorizePart2(int * rowsDropped) ;
45 void factorizePart3(int * rowsDropped) ;
47 void solveF1(longDouble * a, int n, CoinWorkDouble * region);
48 void solveF2(longDouble * a, int n, CoinWorkDouble * region, CoinWorkDouble * region2);
50 void solveB1(longDouble * a, int n, CoinWorkDouble * region);
51 void solveB2(longDouble * a, int n, CoinWorkDouble * region, CoinWorkDouble * region2);
52 int bNumber(const longDouble * array, int &, int&);
54 inline longDouble * aMatrix() const {
55 return sparseFactor_;
56 }
58 inline longDouble * diagonal() const {
59 return diagonal_;
60 }
67 ClpCholeskyDense();
69 virtual ~ClpCholeskyDense();
71 ClpCholeskyDense(const ClpCholeskyDense&);
73 ClpCholeskyDense& operator=(const ClpCholeskyDense&);
75 virtual ClpCholeskyBase * clone() const ;
79 private:
83 bool borrowSpace_;
85 };
86
87 /* structure for C */
88 typedef struct {
89 longDouble * diagonal_;
90 longDouble * a;
91 longDouble * work;
92 int * rowsDropped;
93 double doubleParameters_[1]; /* corresponds to 10 */
94 int integerParameters_[2]; /* corresponds to 34, nThreads */
95 int n;
96 int numberBlocks;
97 } ClpCholeskyDenseC;
98
99 extern "C" {
100 void ClpCholeskySpawn(void *);
101 }
103 void
104 ClpCholeskyCfactor(ClpCholeskyDenseC * thisStruct,
105 longDouble * a, int n, int numberBlocks,
106 longDouble * diagonal, longDouble * work, int * rowsDropped);
107
109 void
110 ClpCholeskyCtriRec(ClpCholeskyDenseC * thisStruct,
111 longDouble * aTri, int nThis,
112 longDouble * aUnder, longDouble * diagonal,
113 longDouble * work,
114 int nLeft, int iBlock, int jBlock,
115 int numberBlocks);
117 void
118 ClpCholeskyCrecTri(ClpCholeskyDenseC * thisStruct,
119 longDouble * aUnder, int nTri, int nDo,
120 int iBlock, int jBlock, longDouble * aTri,
121 longDouble * diagonal, longDouble * work,
122 int numberBlocks);
127 void
128 ClpCholeskyCrecRec(ClpCholeskyDenseC * thisStruct,
129 longDouble * above, int nUnder, int nUnderK,
130 int nDo, longDouble * aUnder, longDouble *aOther,
131 longDouble * work,
132 int iBlock, int jBlock,
133 int numberBlocks);
135 void
136 ClpCholeskyCfactorLeaf(ClpCholeskyDenseC * thisStruct,
137 longDouble * a, int n,
138 longDouble * diagonal, longDouble * work,
139 int * rowsDropped);
141 void
142 ClpCholeskyCtriRecLeaf(/*ClpCholeskyDenseC * thisStruct,*/
143 longDouble * aTri, longDouble * aUnder,
144 longDouble * diagonal, longDouble * work,
145 int nUnder);
147 void
148 ClpCholeskyCrecTriLeaf(/*ClpCholeskyDenseC * thisStruct, */
149 longDouble * aUnder, longDouble * aTri,
150 /*longDouble * diagonal,*/ longDouble * work, int nUnder);
155 void
156 ClpCholeskyCrecRecLeaf(/*ClpCholeskyDenseC * thisStruct, */
157 const longDouble * COIN_RESTRICT above,
158 const longDouble * COIN_RESTRICT aUnder,
159 longDouble * COIN_RESTRICT aOther,
160 const longDouble * COIN_RESTRICT work,
161 int nUnder);
162 #endif
ClpCholeskyDenseC::diagonal_
longDouble * diagonal_
Definition: ClpCholeskyDense.hpp:89
ClpCholeskyDense::operator=
ClpCholeskyDense & operator=(const ClpCholeskyDense &)
Assignment.
ClpMatrixBase
Abstract base class for Clp Matrices.
Definition: ClpMatrixBase.hpp:38
ClpInterior
This solves LPs using interior point methods.
Definition: ClpInterior.hpp:72
ClpCholeskyDense::ClpCholeskyDense
ClpCholeskyDense()
Default constructor.
ClpCholeskyBase::rowsDropped
char * rowsDropped() const
rowsDropped - which rows are gone
Definition: ClpCholeskyBase.hpp:98
ClpCholeskyBase::sparseFactor_
longDouble * sparseFactor_
sparseFactor.
Definition: ClpCholeskyBase.hpp:254
ClpCholeskyDense::factorize
virtual int factorize(const CoinWorkDouble *diagonal, int *rowsDropped)
Factorize - filling in rowsDropped and returning number dropped.
ClpCholeskyDenseC::rowsDropped
int * rowsDropped
Definition: ClpCholeskyDense.hpp:92
ClpCholeskyDense::solveF2
void solveF2(longDouble *a, int n, CoinWorkDouble *region, CoinWorkDouble *region2)
ClpCholeskyDenseC::a
longDouble * a
Definition: ClpCholeskyDense.hpp:90
ClpCholeskyCfactorLeaf
void ClpCholeskyCfactorLeaf(ClpCholeskyDenseC *thisStruct, longDouble *a, int n, longDouble *diagonal, longDouble *work, int *rowsDropped)
Leaf recursive factor.
ClpCholeskyDense::solveB2
void solveB2(longDouble *a, int n, CoinWorkDouble *region, CoinWorkDouble *region2)
ClpCholeskyCrecTriLeaf
void ClpCholeskyCrecTriLeaf(longDouble *aUnder, longDouble *aTri, longDouble *work, int nUnder)
Leaf recursive rectangle triangle update.
ClpCholeskyDenseC::numberBlocks
int numberBlocks
Definition: ClpCholeskyDense.hpp:96
ClpCholeskyDense::reserveSpace
int reserveSpace(const ClpCholeskyBase *factor, int numberRows)
Reserves space.
ClpCholeskyDense::diagonal
longDouble * diagonal() const
Diagonal.
Definition: ClpCholeskyDense.hpp:58
ClpCholeskyBase
Base class for Clp Cholesky factorization Will do better factorization.
Definition: ClpCholeskyBase.hpp:53
COIN_RESTRICT
#define COIN_RESTRICT
Definition: ClpMatrixBase.hpp:21
ClpCholeskyDense::solveF1
void solveF1(longDouble *a, int n, CoinWorkDouble *region)
Forward part of solve.
ClpCholeskyCrecRecLeaf
void ClpCholeskyCrecRecLeaf(const longDouble *COIN_RESTRICT above, const longDouble *COIN_RESTRICT aUnder, longDouble *COIN_RESTRICT aOther, const longDouble *COIN_RESTRICT work, int nUnder)
Leaf recursive rectangle rectangle update, nUnder is number of rows in iBlock, nUnderK is number of r...
ClpCholeskyCrecRec
void ClpCholeskyCrecRec(ClpCholeskyDenseC *thisStruct, longDouble *above, int nUnder, int nUnderK, int nDo, longDouble *aUnder, longDouble *aOther, longDouble *work, int iBlock, int jBlock, int numberBlocks)
Non leaf recursive rectangle rectangle update, nUnder is number of rows in iBlock, nUnderK is number of rows in kBlock.
ClpCholeskyDenseC::work
longDouble * work
Definition: ClpCholeskyDense.hpp:91
ClpCholeskyDense
Definition: ClpCholeskyDense.hpp:14
ClpCholeskyDense::bNumber
int bNumber(const longDouble *array, int &, int &)
ClpCholeskyBase::numberRows
int numberRows() const
Return number of rows.
Definition: ClpCholeskyBase.hpp:118
ClpCholeskyCrecTri
void ClpCholeskyCrecTri(ClpCholeskyDenseC *thisStruct, longDouble *aUnder, int nTri, int nDo, int iBlock, int jBlock, longDouble *aTri, longDouble *diagonal, longDouble *work, int numberBlocks)
Non leaf recursive rectangle triangle update.
ClpCholeskyBase::diagonal_
longDouble * diagonal_
Diagonal.
Definition: ClpCholeskyBase.hpp:262
ClpCholeskyDense::factorizePart3
void factorizePart3(int *rowsDropped)
part 2 of Factorize - filling in rowsDropped - blocked
ClpCholeskyBase.hpp
ClpCholeskyDenseC
Definition: ClpCholeskyDense.hpp:88
ClpCholeskyCtriRecLeaf
void ClpCholeskyCtriRecLeaf(longDouble *aTri, longDouble *aUnder, longDouble *diagonal, longDouble *work, int nUnder)
Leaf recursive triangle rectangle update.
ClpCholeskyDense::~ClpCholeskyDense
virtual ~ClpCholeskyDense()
Destructor.
longDouble
double longDouble
Definition: ClpCholeskyBase.hpp:40
ClpCholeskyDense::symbolic
virtual int symbolic()
Does Symbolic factorization given permutation.
ClpCholeskyDense::factorizePart2
void factorizePart2(int *rowsDropped)
part 2 of Factorize - filling in rowsDropped
ClpCholeskyDenseC::n
int n
Definition: ClpCholeskyDense.hpp:95
CoinBigIndex
int CoinBigIndex
Definition: Coin_C_defines.h:105
ClpCholeskyDense::solve
virtual void solve(CoinWorkDouble *region)
Uses factorization to solve.
CoinWorkDouble
double CoinWorkDouble
Definition: CoinTypes.hpp:53
ClpCholeskyDense::aMatrix
longDouble * aMatrix() const
A.
Definition: ClpCholeskyDense.hpp:54
ClpCholeskyDense::clone
virtual ClpCholeskyBase * clone() const
Clone.
ClpCholeskyDense::space
CoinBigIndex space(int numberRows) const
Returns space needed.
ClpCholeskySpawn
void ClpCholeskySpawn(void *)
ClpCholeskyDense::order
virtual int order(ClpInterior *model)
Orders rows and saves pointer to matrix.and model.
ClpCholeskyDense::solveB1
void solveB1(longDouble *a, int n, CoinWorkDouble *region)
Backward part of solve.
ClpCholeskyCfactor
void ClpCholeskyCfactor(ClpCholeskyDenseC *thisStruct, longDouble *a, int n, int numberBlocks, longDouble *diagonal, longDouble *work, int *rowsDropped)
Non leaf recursive factor.
ClpCholeskyDense::borrowSpace_
bool borrowSpace_
Just borrowing space.
Definition: ClpCholeskyDense.hpp:83
ClpCholeskyCtriRec
void ClpCholeskyCtriRec(ClpCholeskyDenseC *thisStruct, longDouble *aTri, int nThis, longDouble *aUnder, longDouble *diagonal, longDouble *work, int nLeft, int iBlock, int jBlock, int numberBlocks)
Non leaf recursive triangle rectangle update.