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