2009-09-08 15:55:19 +02:00
|
|
|
/* $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"
|
|
|
|
|
2017-05-16 16:30:27 +02:00
|
|
|
class QuasiTriangularZero : public QuasiTriangular
|
|
|
|
{
|
|
|
|
int nz; // number of zero columns
|
|
|
|
GeneralMatrix ru; // data in right upper part (nz,d_size)
|
2009-09-08 15:55:19 +02:00
|
|
|
public:
|
2017-05-16 16:30:27 +02:00
|
|
|
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;
|
2009-09-08 15:55:19 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* QUASI_TRIANGULAR_ZERO_H */
|
|
|
|
|
|
|
|
// Local Variables:
|
|
|
|
// mode:C++
|
|
|
|
// End:
|