00001 #ifndef __F_MinresLS_H__ 00002 #define __F_MinresLS_H__ 00003 00004 00032 #include <stdio.h> 00033 #include "F_IterativeLS.hpp" 00034 00035 00036 class F_MinresLS : public F_IterativeLS 00037 { 00038 private: 00039 00040 double beta, betat; 00041 double rho; 00042 double kappa; 00043 double c, s; 00044 double g, gt,gtt; 00045 00046 00047 FloatVector* r; 00048 FloatVector* v; 00049 FloatVector* vt; 00050 FloatVector* vold; 00051 FloatVector* w; 00052 FloatVector* wt; 00053 FloatVector* wtt; 00054 00055 protected: 00056 00057 virtual FloatVector* singleSolve(AFloatMatrix* A, FloatVector* b, FloatVector* x=0); 00058 00059 public: 00060 F_MinresLS(int maxIterations, double epsilon=1.0e-4):F_IterativeLS(maxIterations, epsilon) 00061 { r=v=vt=vold=w=wt=wtt= 0;} 00062 virtual ~F_MinresLS(){} 00063 00064 virtual FloatVector* solve(AFloatMatrix* m, FloatVector* b, FloatVector* dest); 00065 }; 00066 00067 #endif 00068