File: QuasiTriangularZero.h

package info (click to toggle)
dynare 4.3.0-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 40,640 kB
  • sloc: fortran: 82,231; cpp: 72,734; ansic: 28,874; pascal: 13,241; sh: 4,300; objc: 3,281; yacc: 2,833; makefile: 1,288; lex: 1,162; python: 162; lisp: 54; xml: 8
file content (48 lines) | stat: -rw-r--r-- 1,882 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* $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: