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