Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • giovanma/dynare
  • giorgiomas/dynare
  • Vermandel/dynare
  • Dynare/dynare
  • normann/dynare
  • MichelJuillard/dynare
  • wmutschl/dynare
  • FerhatMihoubi/dynare
  • sebastien/dynare
  • lnsongxf/dynare
  • rattoma/dynare
  • CIMERS/dynare
  • FredericKarame/dynare
  • SumuduK/dynare
  • MinjeJeon/dynare
  • camilomrch/dynare
  • DoraK/dynare
  • avtishin/dynare
  • selma/dynare
  • claudio_olguin/dynare
  • jeffjiang07/dynare
  • EthanSystem/dynare
  • stepan-a/dynare
  • wjgatt/dynare
  • JohannesPfeifer/dynare
  • gboehl/dynare
  • chskcau/dynare-doc-fixes
27 results
Select Git revision
Loading items
Show changes
/* $Header: /var/lib/cvs/dynare_cpp/sylv/cc/KronVector.cpp,v 1.1.1.1 2004/06/04 13:00:31 kamenik Exp $ */
/* Tag $Name: $ */
#include "KronVector.h"
#include "SylvException.h"
int power(int m, int depth)
{
int p = 1;
for (int i = 0; i < depth; i++) {
p *= m;
}
return p;
}
KronVector::KronVector(int mm, int nn, int dp)
: Vector(power(mm,dp)*nn), m(mm), n(nn), depth(dp)
{}
KronVector::KronVector(Vector& v, int mm, int nn, int dp)
: Vector(v), m(mm), n(nn), depth(dp)
{
len = power(m,depth)*n;
if (v.length() != length()) {
throw SYLV_MES_EXCEPTION("Bad conversion KronVector from Vector.");
}
}
KronVector::KronVector(KronVector& v, int i)
: Vector(v, i*power(v.m,v.depth-1)*v.n, power(v.m, v.depth-1)*v.n), m(v.m), n(v.n),
depth(v.depth-1)
{
if (depth < 0) {
throw SYLV_MES_EXCEPTION("Bad KronVector pick, depth < 0.");
}
}
KronVector::KronVector(const ConstKronVector& v)
: Vector(v.length()), m(v.getM()), n(v.getN()), depth(v.getDepth())
{
Vector::operator=(v);
}
const KronVector& KronVector::operator=(const ConstKronVector& v)
{
Vector::operator=(v);
m=v.getM();
n=v.getN();
depth = v.getDepth();
return *this;
}
const KronVector& KronVector::operator=(const Vector& v)
{
if (length() != v.length()) {
throw SYLV_MES_EXCEPTION("Wrong lengths for vector operator =.");
}
Vector::operator=(v);
return *this;
}
ConstKronVector::ConstKronVector(const KronVector& v)
: ConstVector(v), m(v.getM()), n(v.getN()), depth(v.getDepth())
{}
ConstKronVector::ConstKronVector(const ConstKronVector& v)
: ConstVector(power(v.getM(),v.getDepth())*v.getN()), m(v.getM()), n(v.getN()),
depth(v.getDepth())
{}
ConstKronVector::ConstKronVector(const Vector& v, int mm, int nn, int dp)
: ConstVector(v), m(mm), n(nn), depth(dp)
{
len = power(m,depth)*n;
if (v.length() != length()) {
throw SYLV_MES_EXCEPTION("Bad conversion KronVector from Vector.");
}
}
ConstKronVector::ConstKronVector(const ConstVector& v, int mm, int nn, int dp)
: ConstVector(v), m(mm), n(nn), depth(dp)
{
len = power(m,depth)*n;
if (v.length() != length()) {
throw SYLV_MES_EXCEPTION("Bad conversion KronVector from Vector.");
}
}
ConstKronVector::ConstKronVector(const KronVector& v, int i)
: ConstVector(v, i*power(v.getM(),v.getDepth()-1)*v.getN(),
power(v.getM(),v.getDepth()-1)*v.getN()),
m(v.getM()), n(v.getN()), depth(v.getDepth()-1)
{
if (depth < 0) {
throw SYLV_MES_EXCEPTION("Bad KronVector pick, depth < 0.");
}
}
ConstKronVector::ConstKronVector(const ConstKronVector& v, int i)
: ConstVector(v, i*power(v.m,v.depth-1)*v.n, power(v.m,v.depth-1)*v.n),
m(v.getM()), n(v.getN()), depth(v.getDepth()-1)
{
if (depth < 0) {
throw SYLV_MES_EXCEPTION("Bad KronVector pick, depth < 0.");
}
}
/* $Header: /var/lib/cvs/dynare_cpp/sylv/cc/KronVector.h,v 1.1.1.1 2004/06/04 13:00:31 kamenik Exp $ */
/* Tag $Name: $ */
#ifndef KRON_VECTOR_H
#define KRON_VECTOR_H
#include "Vector.h"
class ConstKronVector;
class KronVector : public Vector {
protected:
int m;
int n;
int depth;
public:
KronVector() : Vector((double*)0, 0), m(0), n(0), depth(0) {}
KronVector(int mm, int nn, int dp); // new instance
KronVector(Vector& v, int mm, int nn, int dp); // conversion
KronVector(KronVector&, int i); // picks i-th subvector
KronVector(const ConstKronVector& v); // new instance and copy
const KronVector& operator=(KronVector& v)
{Vector::operator=(v); m=v.m; n=v.n; depth = v.depth; return *this;}
const KronVector& operator=(const KronVector& v)
{Vector::operator=(v); m=v.m; n=v.n; depth = v.depth; return *this;}
const KronVector& operator=(const ConstKronVector& v);
const KronVector& operator=(const Vector& v);
int getM() const {return m;}
int getN() const {return n;}
int getDepth() const {return depth;}
};
class ConstKronVector : public ConstVector
{
protected:
int m;
int n;
int depth;
public:
ConstKronVector(const KronVector& v);
ConstKronVector(const ConstKronVector& v);
ConstKronVector(const Vector& v, int mm, int nn, int dp);
ConstKronVector(const ConstVector& v, int mm, int nn, int dp);
ConstKronVector(const KronVector& v, int i);
ConstKronVector(const ConstKronVector& v, int i);
int getM() const {return m;}
int getN() const {return n;}
int getDepth() const {return depth;}
};
int power(int m, int depth);
#endif /* KRON_VECTOR */
// Local Variables:
// mode:C++
// End: