ClpCholeskyDense.hpp
Go to the documentation of this file.
1 /* $Id: ClpCholeskyDense.hpp 1525 2010-02-26 17:27:59Z mjs $ */
2 /* Copyright (C) 2003, International Business Machines Corporation
3  and others. All Rights Reserved. */
4 #ifndef ClpCholeskyDense_H
5 #define ClpCholeskyDense_H
6 
7 #include "ClpCholeskyBase.hpp"
8 class ClpMatrixBase;
9 
11 
12 public:
17  virtual int order(ClpInterior * model) ;
22  virtual int symbolic();
25  virtual int factorize(const CoinWorkDouble * diagonal, int * rowsDropped) ;
27  virtual void solve (CoinWorkDouble * region) ;
35  int reserveSpace(const ClpCholeskyBase * factor, int numberRows) ;
37  CoinBigIndex space( int numberRows) const;
39  void factorizePart2(int * rowsDropped) ;
41  void factorizePart3(int * rowsDropped) ;
43  void solveF1(longDouble * a, int n, CoinWorkDouble * region);
44  void solveF2(longDouble * a, int n, CoinWorkDouble * region, CoinWorkDouble * region2);
46  void solveB1(longDouble * a, int n, CoinWorkDouble * region);
47  void solveB2(longDouble * a, int n, CoinWorkDouble * region, CoinWorkDouble * region2);
48  int bNumber(const longDouble * array, int &, int&);
50  inline longDouble * aMatrix() const {
51  return sparseFactor_;
52  }
54  inline longDouble * diagonal() const {
55  return diagonal_;
56  }
65  virtual ~ClpCholeskyDense();
71  virtual ClpCholeskyBase * clone() const ;
75 private:
81 };
82 
83 /* structure for C */
84 typedef struct {
88  int * rowsDropped;
89  double doubleParameters_[1]; /* corresponds to 10 */
90  int integerParameters_[2]; /* corresponds to 34, nThreads */
91  int n;
94 
95 extern "C" {
96  void ClpCholeskySpawn(void *);
97 }
99 void
101  longDouble * a, int n, int numberBlocks,
102  longDouble * diagonal, longDouble * work, int * rowsDropped);
103 
105 void
107  longDouble * aTri, int nThis,
108  longDouble * aUnder, longDouble * diagonal,
109  longDouble * work,
110  int nLeft, int iBlock, int jBlock,
111  int numberBlocks);
113 void
115  longDouble * aUnder, int nTri, int nDo,
116  int iBlock, int jBlock, longDouble * aTri,
117  longDouble * diagonal, longDouble * work,
118  int numberBlocks);
123 void
125  longDouble * above, int nUnder, int nUnderK,
126  int nDo, longDouble * aUnder, longDouble *aOther,
127  longDouble * work,
128  int iBlock, int jBlock,
129  int numberBlocks);
131 void
133  longDouble * a, int n,
134  longDouble * diagonal, longDouble * work,
135  int * rowsDropped);
137 void
138 ClpCholeskyCtriRecLeaf(/*ClpCholeskyDenseC * thisStruct,*/
139  longDouble * aTri, longDouble * aUnder,
140  longDouble * diagonal, longDouble * work,
141  int nUnder);
143 void
144 ClpCholeskyCrecTriLeaf(/*ClpCholeskyDenseC * thisStruct, */
145  longDouble * aUnder, longDouble * aTri,
146  /*longDouble * diagonal,*/ longDouble * work, int nUnder);
151 void
152 ClpCholeskyCrecRecLeaf(/*ClpCholeskyDenseC * thisStruct, */
153  const longDouble * COIN_RESTRICT above,
154  const longDouble * COIN_RESTRICT aUnder,
155  longDouble * COIN_RESTRICT aOther,
156  const longDouble * COIN_RESTRICT work,
157  int nUnder);
158 #endif