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

- File List
- File Members

# /home/coin/SVN-release/Blis-0.91.2/Clp/src/ClpCholeskyDense.hpp

Go to the documentation of this file.

    00001 /* $Id: ClpCholeskyDense.hpp 1458 2009-11-05 12:34:07Z forrest $ */
    00002 /* Copyright (C) 2003, International Business Machines Corporation
    00003    and others.  All Rights Reserved. */
    00004 #ifndef ClpCholeskyDense_H
    00005 #define ClpCholeskyDense_H
    00006
    00007 #include "ClpCholeskyBase.hpp"
    00008 class ClpMatrixBase;
    00009
    00010 class ClpCholeskyDense : public ClpCholeskyBase {
    00011
    00012 public:
    00017   virtual int order(ClpInterior * model) ;
    00022   virtual int symbolic();
    00025   virtual int factorize(const CoinWorkDouble * diagonal, int * rowsDropped) ;
    00027   virtual void solve (CoinWorkDouble * region) ;
    00035    int reserveSpace(const ClpCholeskyBase * factor, int numberRows) ;
    00037    CoinBigIndex space( int numberRows) const;
    00039   void factorizePart2(int * rowsDropped) ;
    00041   void factorizePart3(int * rowsDropped) ;
    00043   void solveF1(longDouble * a,int n,CoinWorkDouble * region);
    00044   void solveF2(longDouble * a,int n,CoinWorkDouble * region,CoinWorkDouble * region2);
    00046   void solveB1(longDouble * a,int n,CoinWorkDouble * region);
    00047   void solveB2(longDouble * a,int n,CoinWorkDouble * region,CoinWorkDouble * region2);
    00048   int bNumber(const longDouble * array,int &, int&);
    00050   inline longDouble * aMatrix() const
    00051   { return sparseFactor_;}
    00053   inline longDouble * diagonal() const
    00054   { return diagonal_;}
    00061   ClpCholeskyDense();
    00063   virtual ~ClpCholeskyDense();
    00065   ClpCholeskyDense(const ClpCholeskyDense&);
    00067   ClpCholeskyDense& operator=(const ClpCholeskyDense&);
    00069   virtual ClpCholeskyBase * clone() const ;
    00073 private:
    00077   bool borrowSpace_;
    00079 };
    00080
    00081 /* structure for C */
    00082 typedef struct{
    00083   longDouble * diagonal_;
    00084   longDouble * a;
    00085   longDouble * work;
    00086   int * rowsDropped;
    00087   double doubleParameters_[1]; /* corresponds to 10 */
    00088   int integerParameters_[2]; /* corresponds to 34, nThreads */
    00089   int n;
    00090   int numberBlocks;
    00091 } ClpCholeskyDenseC;
    00092
    00093 extern "C" {
    00094   void ClpCholeskySpawn(void *);
    00095 }
    00097   void
    00098   ClpCholeskyCfactor(ClpCholeskyDenseC * thisStruct,
    00099                      longDouble * a, int n, int numberBlocks,
    00100                      longDouble * diagonal, longDouble * work, int * rowsDropped);
    00101
    00103   void
    00104   ClpCholeskyCtriRec(ClpCholeskyDenseC * thisStruct,
    00105                      longDouble * aTri, int nThis,
    00106                      longDouble * aUnder, longDouble * diagonal,
    00107                      longDouble * work,
    00108                      int nLeft, int iBlock, int jBlock,
    00109                      int numberBlocks);
    00111   void
    00112   ClpCholeskyCrecTri(ClpCholeskyDenseC * thisStruct,
    00113                      longDouble * aUnder, int nTri, int nDo,
    00114                      int iBlock, int jBlock,longDouble * aTri,
    00115                      longDouble * diagonal, longDouble * work,
    00116                      int numberBlocks);
    00121   void
    00122   ClpCholeskyCrecRec(ClpCholeskyDenseC * thisStruct,
    00123                      longDouble * above, int nUnder, int nUnderK,
    00124                      int nDo, longDouble * aUnder, longDouble *aOther,
    00125                      longDouble * work,
    00126                      int iBlock, int jBlock,
    00127                      int numberBlocks);
    00129   void
    00130   ClpCholeskyCfactorLeaf(ClpCholeskyDenseC * thisStruct,
    00131                          longDouble * a, int n,
    00132                          longDouble * diagonal, longDouble * work,
    00133                          int * rowsDropped);
    00135   void
    00136   ClpCholeskyCtriRecLeaf(/*ClpCholeskyDenseC * thisStruct,*/
    00137                          longDouble * aTri, longDouble * aUnder,
    00138                          longDouble * diagonal, longDouble * work,
    00139                          int nUnder);
    00141   void
    00142   ClpCholeskyCrecTriLeaf(/*ClpCholeskyDenseC * thisStruct, */
    00143                          longDouble * aUnder, longDouble * aTri,
    00144                          /*longDouble * diagonal,*/ longDouble * work, int nUnder);
    00149   void
    00150   ClpCholeskyCrecRecLeaf(/*ClpCholeskyDenseC * thisStruct, */
    00151                          const longDouble * COIN_RESTRICT above,
    00152                          const longDouble * COIN_RESTRICT aUnder,
    00153                          longDouble * COIN_RESTRICT aOther,
    00154                          const longDouble * COIN_RESTRICT work,
    00155                          int nUnder);
    00156 #endif