/* $Header: /var/lib/cvs/dynare_cpp/sylv/cc/QuasiTriangularZero.h,v 1.1.1.1 2004/06/04 13:00:44 kamenik Exp $ */ /* Tag $Name: $ */ #ifndef QUASI_TRIANGULAR_ZERO_H #define QUASI_TRIANGULAR_ZERO_H #include "QuasiTriangular.h" #include "GeneralMatrix.h" class QuasiTriangularZero : public QuasiTriangular { int nz; // number of zero columns GeneralMatrix ru; // data in right upper part (nz,d_size) public: QuasiTriangularZero(int num_zeros, const double* d, int d_size); QuasiTriangularZero(double r, const QuasiTriangularZero& t); QuasiTriangularZero(double r, const QuasiTriangularZero& t, double rr, const QuasiTriangularZero& tt); QuasiTriangularZero(int p, const QuasiTriangularZero& t); QuasiTriangularZero(const QuasiTriangular& t); QuasiTriangularZero(const SchurDecompZero& decomp); ~QuasiTriangularZero(); void solvePre(Vector& x, double& eig_min); void solvePreTrans(Vector& x, double& eig_min); void multVec(Vector& x, const ConstVector& b) const; void multVecTrans(Vector& x, const ConstVector& b) const; void multaVec(Vector& x, const ConstVector& b) const; void multaVecTrans(Vector& x, const ConstVector& b) const; void multKron(KronVector& x) const; void multKronTrans(KronVector& x) const; void multLeftOther(GeneralMatrix& a) const; /* clone */ virtual QuasiTriangular* clone() const {return new QuasiTriangularZero(*this);} virtual QuasiTriangular* clone(int p, const QuasiTriangular& t) const {return new QuasiTriangularZero(p, (const QuasiTriangularZero&)t);} virtual QuasiTriangular* clone(double r) const {return new QuasiTriangularZero(r, *this);} virtual QuasiTriangular* clone(double r, double rr, const QuasiTriangular& tt) const {return new QuasiTriangularZero(r, *this, rr, (const QuasiTriangularZero&)tt);} void print() const; }; #endif /* QUASI_TRIANGULAR_ZERO_H */ // Local Variables: // mode:C++ // End: