00001 #ifndef __F_CgiLS_H__ 00002 #define __F_CgiLS_H__ 00003 00033 #include <stdio.h> 00034 #include "F_IterativeLS.hpp" 00035 00036 00037 class F_CgiLS : public F_IterativeLS 00038 { 00039 private: 00040 00041 bool firstIteration; 00042 00043 double alpha; 00044 double eta; 00045 double gamma; 00046 00047 FloatVector* r; 00048 00049 FloatVector* d_1; 00050 FloatVector* d; 00051 FloatVector* s; 00052 00053 protected: 00054 00055 virtual FloatVector* singleSolve(AFloatMatrix* A, FloatVector* b, FloatVector* x=0); 00056 00057 public: 00058 F_CgiLS(int maxIterations, double epsilon=1.0e-4):F_IterativeLS(maxIterations, epsilon) 00059 { r=d_1=d=s= 0;} 00060 virtual ~F_CgiLS(){} 00061 00062 virtual FloatVector* solve(AFloatMatrix* m, FloatVector* b, FloatVector* dest); 00063 }; 00064 00065 #endif 00066