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