00001 #ifndef __F_CgLS_ShiftedLS_H__ 00002 #define __F_CgLS_ShiftedLS_H__ 00003 00004 00029 #include <stdio.h> 00030 #include "F_IterativeShiftedLS.hpp" 00031 00032 00033 class F_CgLS_ShiftedLS : public F_IterativeShiftedLS 00034 { 00035 private: 00036 00037 double alpha; 00038 double beta; 00039 double gamma; 00040 00041 FloatVector* r; 00042 FloatVector* p; 00043 00044 FloatVector* z; 00045 FloatVector* q; 00046 00047 protected: 00048 00049 virtual FloatVector* singleSolve(AFloatMatrix* A, FloatVector* b, FloatVector* x=0); 00050 00051 public: 00052 F_CgLS_ShiftedLS(int maxIterations, double alambda=1.0, double adelta=0.01, double epsilon=1.0e-4) 00053 :F_IterativeShiftedLS(maxIterations, alambda, adelta, epsilon) 00054 { r=p=z=q= 0;} 00055 virtual ~F_CgLS_ShiftedLS(){} 00056 00057 virtual FloatVector* solve(AFloatMatrix* m, FloatVector* b, FloatVector* dest); 00058 }; 00059 00060 #endif 00061