00001 #ifndef __F_SymmlqLS_H__ 00002 #define __F_SymmlqLS_H__ 00003 00004 00032 #include <stdio.h> 00033 #include "F_IterativeLS.hpp" 00034 00035 00036 class F_SymmlqLS : 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 00053 protected: 00054 00055 virtual FloatVector* singleSolve(AFloatMatrix* A, FloatVector* b, FloatVector* x=0); 00056 00057 public: 00058 F_SymmlqLS(int maxIterations, double epsilon=1.0e-4):F_IterativeLS(maxIterations, epsilon) 00059 { r=v=vt=vold=w= 0;} 00060 virtual ~F_SymmlqLS(){} 00061 00062 virtual FloatVector* solve(AFloatMatrix* m, FloatVector* b, FloatVector* dest); 00063 }; 00064 00065 #endif 00066