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