Actual source code: lmvmmat.h
1: #ifndef LMVMMAT_H
2: #define LMVMMAT_H
4: #include taomat.h
6: class TaoLMVMMat: public TaoMat{
8: protected:
10: int lm;
11: int lmnow;
12: int iter;
13: int rejects;
14:
15: double eps;
17: TaoVec ** S;
18: TaoVec ** Y;
19: TaoVec *Gprev;
20: TaoVec *Xprev;
22: TaoTruth H0default;
23: TaoMat *H0;
24: TaoVec *H0Vec;
26: double y0normsquared;
27: double *rho;
28: double *beta;
29:
30: public:
31:
32: TaoLMVMMat( TaoVec *, int nlm );
33: ~TaoLMVMMat();
35: inline int countrejects(){ return(rejects);}
37: int reset();
38: int update(TaoVec*, TaoVec*);
39: int InitialApproximation(TaoVec*);
40: int SetH0(TaoMat*);
42: int Presolve();
43: int Solve(TaoVec*, TaoVec*, TaoTruth*);
44: int minQuadraticTrustRegion(TaoVec*,TaoVec*,double, TaoTruth*);
45: int GetX0(TaoVec*);
47: int Clone(TaoMat**);
48: int CopyFrom(TaoMat*);
50: /** Get the dimension of the vector spaces */
51: int GetDimensions( int*, int * );
53: int Multiply(TaoVec*,TaoVec*);
54: int MultiplyAdd(TaoVec*,TaoVec*,TaoVec*);
55: int MultiplyTranspose(TaoVec*,TaoVec*);
56: int MultiplyTransposeAdd(TaoVec*,TaoVec*,TaoVec*);
58: int SetDiagonal(TaoVec*);
59: int AddDiagonal(TaoVec*);
60: int GetDiagonal(TaoVec*);
61: int ShiftDiagonal(double);
63: int View();
64: int extractSubMatrix(TaoMat**,TaoIndexSet*,TaoIndexSet*);
66: int RowScale(TaoVec*);
67: int ColScale(TaoVec*);
69: int D_Fischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *,
70: TaoVec *, TaoVec *, TaoVec *, TaoVec *);
71: int D_SFischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *, double,
72: TaoVec *, TaoVec *, TaoVec *, TaoVec *, TaoVec *);
74: };
76: #endif