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