00001 #ifndef __PseudoTriCovarianceLS_H__ 00002 #define __PseudoTriCovarianceLS_H__ 00003 00004 00005 00042 #include "AbsTriDiagonalLS.hpp" 00043 00044 00045 class PseudoTriCovarianceLS : public AbsTriDiagonalLS 00046 { 00047 private: 00048 00049 RealVector* uOut; 00050 RealVector* dOut; 00051 RealVector* lOut; 00052 00053 RealVector* y; 00054 00055 protected: 00056 00058 void computeLRdecomposition(); 00059 00061 void forwardSubstitution(); 00063 void backwardSubstitution(); 00064 00065 public: 00066 00067 PseudoTriCovarianceLS(int asize):AbsTriDiagonalLS(asize) 00068 { 00069 uOut= new RealVector(N-1); 00070 dOut= new RealVector(N); 00071 lOut= new RealVector(N-1); 00072 00073 y= new RealVector(N); 00074 } 00075 00076 virtual ~PseudoTriCovarianceLS(){delete uOut; delete dOut; delete lOut; delete y;} 00077 00078 virtual void loadA(RTriDiagonalMatrix* m); 00079 virtual void loadMatrix(RealVector* u1, RealVector* d1, RealVector* l1); 00080 00081 virtual void loadX(RealVector* data); 00082 virtual void loadB(RealVector* data); 00083 00084 00085 virtual bool solve(); // SOLVING to define later 00086 00087 00088 virtual void output() 00089 { 00090 printf("PseudoTriCovarianceLS "); 00091 AbsTriDiagonalLS::output(); 00092 } 00093 00094 virtual void output(FILE* file) 00095 { 00096 fprintf(file, "PseudoTriCovarianceLS "); 00097 AbsTriDiagonalLS::output(file); 00098 } 00099 }; 00100 00101 #endif 00102 00103