00001 // Copyright (C) 2004, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef ClpCholeskyUfl_H 00004 #define ClpCholeskyUfl_H 00005 #include "ClpCholeskyBase.hpp" 00006 #ifdef __cplusplus 00007 extern "C"{ 00008 #endif 00009 #ifndef CLP_USE_CHOLMOD 00010 #include "amd.h" 00011 #else 00012 #include "cholmod.h" 00013 #endif 00014 #ifdef __cplusplus 00015 } 00016 #endif 00017 class ClpMatrixBase; 00018 class ClpCholeskyDense; 00019 00035 class ClpCholeskyUfl : public ClpCholeskyBase { 00036 00037 public: 00042 virtual int order(ClpInterior * model) ; 00043 #ifdef CLP_USE_CHOLMOD 00044 00048 virtual int symbolic(); 00051 virtual int factorize(const double * diagonal, int * rowsDropped) ; 00053 virtual void solve (double * region) ; 00054 #endif 00055 00056 00057 00062 ClpCholeskyUfl(int denseThreshold=-1); 00064 virtual ~ClpCholeskyUfl(); 00065 // Copy 00066 ClpCholeskyUfl(const ClpCholeskyUfl&); 00067 // Assignment 00068 ClpCholeskyUfl& operator=(const ClpCholeskyUfl&); 00070 virtual ClpCholeskyBase * clone() const ; 00072 00073 00074 private: 00075 #ifdef CLP_USE_CHOLMOD 00076 cholmod_factor * L_ ; 00077 cholmod_common c_ ; 00078 #endif 00079 }; 00080 00081 #endif