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