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