00001
00002
00003
00004
00005
00006 #ifndef ClpLsqr_H_
00007 #define ClpLsqr_H_
00008
00009 #include "CoinDenseVector.hpp"
00010
00011 #include "ClpInterior.hpp"
00012
00013
00076 class ClpLsqr {
00077 private:
00080
00081
00082 public:
00085
00086 int nrows_;
00088 int ncols_;
00090 ClpInterior *model_;
00092 double *diag1_;
00094 double diag2_;
00096
00099 ClpLsqr();
00100
00102 ClpLsqr(ClpInterior *model);
00104 ClpLsqr(const ClpLsqr &);
00106 ClpLsqr & operator=(const ClpLsqr & rhs);
00108 ~ClpLsqr();
00110
00113
00114 bool setParam(char *parmName, int parmValue);
00116 void do_lsqr( CoinDenseVector<double> &b,
00117 double damp, double atol, double btol, double conlim, int itnlim,
00118 bool show, Info info, CoinDenseVector<double> &x , int *istop,
00119 int *itn, Outfo *outfo, bool precon, CoinDenseVector<double> &Pr );
00121 void matVecMult( int, CoinDenseVector<double> *, CoinDenseVector<double> *);
00122
00123 void matVecMult( int, CoinDenseVector<double> &, CoinDenseVector<double> &);
00125 void borrowDiag1(double * array) {
00126 diag1_ = array;
00127 };
00129 };
00130 #endif
00131
00132
00133
00134