83 lines
1.9 KiB
C++
83 lines
1.9 KiB
C++
/* $Header: /var/lib/cvs/dynare_cpp/sylv/cc/GeneralSylvester.h,v 1.1.1.1 2004/06/04 13:00:20 kamenik Exp $ */
|
|
|
|
/* Tag $Name: $ */
|
|
|
|
#ifndef GENERAL_SYLVESTER_H
|
|
#define GENERAL_SYLVESTER_H
|
|
|
|
#include "SylvMatrix.h"
|
|
#include "SylvMemory.h"
|
|
#include "SimilarityDecomp.h"
|
|
#include "SylvesterSolver.h"
|
|
|
|
class GeneralSylvester
|
|
{
|
|
SylvParams pars;
|
|
SylvMemoryDriver mem_driver;
|
|
int order;
|
|
const SqSylvMatrix a;
|
|
const SylvMatrix b;
|
|
const SqSylvMatrix c;
|
|
SylvMatrix d;
|
|
bool solved;
|
|
SchurDecompZero *bdecomp;
|
|
SimilarityDecomp *cdecomp;
|
|
SylvesterSolver *sylv;
|
|
public:
|
|
/* construct with my copy of d*/
|
|
GeneralSylvester(int ord, int n, int m, int zero_cols,
|
|
const double *da, const double *db,
|
|
const double *dc, const double *dd,
|
|
const SylvParams &ps);
|
|
GeneralSylvester(int ord, int n, int m, int zero_cols,
|
|
const double *da, const double *db,
|
|
const double *dc, const double *dd,
|
|
bool alloc_for_check = false);
|
|
/* construct with provided storage for d */
|
|
GeneralSylvester(int ord, int n, int m, int zero_cols,
|
|
const double *da, const double *db,
|
|
const double *dc, double *dd,
|
|
bool alloc_for_check = false);
|
|
GeneralSylvester(int ord, int n, int m, int zero_cols,
|
|
const double *da, const double *db,
|
|
const double *dc, double *dd,
|
|
const SylvParams &ps);
|
|
virtual
|
|
~GeneralSylvester();
|
|
int
|
|
getM() const
|
|
{
|
|
return c.numRows();
|
|
}
|
|
int
|
|
getN() const
|
|
{
|
|
return a.numRows();
|
|
}
|
|
const double *
|
|
getResult() const
|
|
{
|
|
return d.base();
|
|
}
|
|
const SylvParams &
|
|
getParams() const
|
|
{
|
|
return pars;
|
|
}
|
|
SylvParams &
|
|
getParams()
|
|
{
|
|
return pars;
|
|
}
|
|
void solve();
|
|
void check(const double *ds);
|
|
private:
|
|
void init();
|
|
};
|
|
|
|
#endif /* GENERAL_SYLVESTER_H */
|
|
|
|
// Local Variables:
|
|
// mode:C++
|
|
// End:
|