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