00001
00002
00003 #ifndef ClpLsqr_H_
00004 #define ClpLsqr_H_
00005
00006 #include "CoinDenseVector.hpp"
00007
00008 #include "ClpInterior.hpp"
00009
00010
00073 class ClpLsqr{
00074 private:
00077
00078
00079 public:
00082
00083 int nrows_;
00085 int ncols_;
00087 ClpInterior *model_;
00089 double *diag1_;
00091 double diag2_;
00093
00096 ClpLsqr();
00097
00099 ClpLsqr(ClpInterior *model);
00101 ClpLsqr(const ClpLsqr &);
00103 ClpLsqr & operator=(const ClpLsqr & rhs);
00105 ~ClpLsqr();
00107
00110
00111 bool setParam(char *parmName, int parmValue);
00113 void do_lsqr( CoinDenseVector<double> &b,
00114 double damp, double atol, double btol, double conlim, int itnlim,
00115 bool show, Info info, CoinDenseVector<double> &x , int *istop,
00116 int *itn, Outfo *outfo, bool precon, CoinDenseVector<double> &Pr );
00118 void matVecMult( int, CoinDenseVector<double> *, CoinDenseVector<double> *);
00119
00120 void matVecMult( int, CoinDenseVector<double> &, CoinDenseVector<double> &);
00122 void borrowDiag1(double * array)
00123 { diag1_=array;};
00125 };
00126 #endif
00127
00128
00129
00130