Use MatIO in Dynare++ instead of the home-made engine
parent
56914e3d4c
commit
5f861cb0d8
|
@ -2,9 +2,11 @@ SUBDIRS = preprocessor doc tests mex/sources
|
|||
|
||||
if HAVE_BLAS
|
||||
if HAVE_LAPACK
|
||||
if HAVE_MATIO
|
||||
SUBDIRS += dynare++
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# MEX must be built after dynare++ (because of kordepert)
|
||||
if ENABLE_MATLAB
|
||||
|
|
10
configure.ac
10
configure.ac
|
@ -86,6 +86,12 @@ AC_DEFINE([BOOST_NO_HASH], [], [Don't use deprecated STL hash structures])
|
|||
AC_CHECK_LIB([dl], [dlopen], [LIBADD_DLOPEN="-ldl"], [])
|
||||
AC_SUBST([LIBADD_DLOPEN])
|
||||
|
||||
# Check for libmatio, needed by Dynare++
|
||||
AC_CHECK_HEADER([matio.h])
|
||||
AC_CHECK_LIB([matio], [Mat_Open], [LIBADD_MATIO="-lmatio"])
|
||||
AC_SUBST([LIBADD_MATIO])
|
||||
AM_CONDITIONAL([HAVE_MATIO], [test "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"])
|
||||
|
||||
AC_CHECK_PROG([MAKEINFO], [makeinfo], [makeinfo])
|
||||
|
||||
AC_CHECK_PROG([PDFTEX], [pdftex], [pdftex])
|
||||
|
@ -232,14 +238,14 @@ AM_CONDITIONAL([ENABLE_ORG_EXPORT], [test "x$enable_org_export" != "x"])
|
|||
|
||||
BUILD_PREPROCESSOR="yes"
|
||||
|
||||
if test "x$ax_blas_ok" = "xyes" -a "x$ax_lapack_ok" = "xyes"; then
|
||||
if test "x$ax_blas_ok" = "xyes" -a "x$ax_lapack_ok" = "xyes" -a "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"; then
|
||||
if test x"$ax_pthread_ok" = "xyes"; then
|
||||
BUILD_DYNAREPLUSPLUS="yes"
|
||||
else
|
||||
BUILD_DYNAREPLUSPLUS="yes (without POSIX threads)"
|
||||
fi
|
||||
else
|
||||
BUILD_DYNAREPLUSPLUS="no (missing one of: BLAS, LAPACK)"
|
||||
BUILD_DYNAREPLUSPLUS="no (missing one of: BLAS, LAPACK, MatIO)"
|
||||
fi
|
||||
|
||||
if test "x$CWEAVE" != "x" -a x"$PDFTEX" != "x" -a "x$ax_tex_have_eplain" = "xyes"; then
|
||||
|
|
|
@ -37,27 +37,27 @@ int DRFixPoint<KOrder::unfold>::newton_pause = 100;
|
|||
@<|SimResults::simulate| code1@>;
|
||||
@<|SimResults::simulate| code2@>;
|
||||
@<|SimResults::addDataSet| code@>;
|
||||
@<|SimResults::writeMat4| code1@>;
|
||||
@<|SimResults::writeMat4| code2@>;
|
||||
@<|SimResults::writeMat| code1@>;
|
||||
@<|SimResults::writeMat| code2@>;
|
||||
@<|SimResultsStats::simulate| code@>;
|
||||
@<|SimResultsStats::writeMat4| code@>;
|
||||
@<|SimResultsStats::writeMat| code@>;
|
||||
@<|SimResultsStats::calcMean| code@>;
|
||||
@<|SimResultsStats::calcVcov| code@>;
|
||||
@<|SimResultsDynamicStats::simulate| code@>;
|
||||
@<|SimResultsDynamicStats::writeMat4| code@>;
|
||||
@<|SimResultsDynamicStats::writeMat| code@>;
|
||||
@<|SimResultsDynamicStats::calcMean| code@>;
|
||||
@<|SimResultsDynamicStats::calcVariance| code@>;
|
||||
@<|SimResultsIRF::simulate| code1@>;
|
||||
@<|SimResultsIRF::simulate| code2@>;
|
||||
@<|SimResultsIRF::calcMeans| code@>;
|
||||
@<|SimResultsIRF::calcVariances| code@>;
|
||||
@<|SimResultsIRF::writeMat4| code@>;
|
||||
@<|SimResultsIRF::writeMat| code@>;
|
||||
@<|RTSimResultsStats::simulate| code1@>;
|
||||
@<|RTSimResultsStats::simulate| code2@>;
|
||||
@<|RTSimResultsStats::writeMat4| code@>;
|
||||
@<|RTSimResultsStats::writeMat| code@>;
|
||||
@<|IRFResults| constructor@>;
|
||||
@<|IRFResults| destructor@>;
|
||||
@<|IRFResults::writeMat4| code@>;
|
||||
@<|IRFResults::writeMat| code@>;
|
||||
@<|SimulationWorker::operator()()| code@>;
|
||||
@<|SimulationIRFWorker::operator()()| code@>;
|
||||
@<|RTSimulationWorker::operator()()| code@>;
|
||||
|
@ -169,23 +169,23 @@ bool SimResults::addDataSet(TwoDMatrix* d, ExplicitShockRealization* sr)
|
|||
}
|
||||
|
||||
@
|
||||
@<|SimResults::writeMat4| code1@>=
|
||||
void SimResults::writeMat4(const char* base, const char* lname) const
|
||||
@<|SimResults::writeMat| code1@>=
|
||||
void SimResults::writeMat(const char* base, const char* lname) const
|
||||
{
|
||||
char matfile_name[100];
|
||||
sprintf(matfile_name, "%s.mat", base);
|
||||
FILE* out;
|
||||
if (NULL != (out=fopen(matfile_name, "wb"))) {
|
||||
writeMat4(out, lname);
|
||||
fclose(out);
|
||||
mat_t* matfd = Mat_Create(matfile_name, NULL);
|
||||
if (matfd != NULL) {
|
||||
writeMat(matfd, lname);
|
||||
Mat_Close(matfd);
|
||||
}
|
||||
}
|
||||
|
||||
@ This save the results as matrices with given prefix and with index
|
||||
appended. If there is only one matrix, the index is not appended.
|
||||
|
||||
@<|SimResults::writeMat4| code2@>=
|
||||
void SimResults::writeMat4(FILE* fd, const char* lname) const
|
||||
@<|SimResults::writeMat| code2@>=
|
||||
void SimResults::writeMat(mat_t* fd, const char* lname) const
|
||||
{
|
||||
char tmp[100];
|
||||
for (int i = 0; i < getNumSets(); i++) {
|
||||
|
@ -194,7 +194,7 @@ void SimResults::writeMat4(FILE* fd, const char* lname) const
|
|||
else
|
||||
sprintf(tmp, "%s_data", lname);
|
||||
ConstTwoDMatrix m(*(data[i]));
|
||||
m.writeMat4(fd, tmp);
|
||||
m.writeMat(fd, tmp);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -219,15 +219,15 @@ void SimResultsStats::simulate(int num_sim, const DecisionRule& dr,
|
|||
|
||||
|
||||
@ Here we do not save the data itself, we save only mean and vcov.
|
||||
@<|SimResultsStats::writeMat4| code@>=
|
||||
void SimResultsStats::writeMat4(FILE* fd, const char* lname) const
|
||||
@<|SimResultsStats::writeMat| code@>=
|
||||
void SimResultsStats::writeMat(mat_t* fd, const char* lname) const
|
||||
{
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s_mean", lname);
|
||||
ConstTwoDMatrix m(num_y, 1, mean.base());
|
||||
m.writeMat4(fd, tmp);
|
||||
m.writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_vcov", lname);
|
||||
ConstTwoDMatrix(vcov).writeMat4(fd, tmp);
|
||||
ConstTwoDMatrix(vcov).writeMat(fd, tmp);
|
||||
}
|
||||
|
||||
@
|
||||
|
@ -291,14 +291,14 @@ void SimResultsDynamicStats::simulate(int num_sim, const DecisionRule& dr,
|
|||
}
|
||||
|
||||
@
|
||||
@<|SimResultsDynamicStats::writeMat4| code@>=
|
||||
void SimResultsDynamicStats::writeMat4(FILE* fd, const char* lname) const
|
||||
@<|SimResultsDynamicStats::writeMat| code@>=
|
||||
void SimResultsDynamicStats::writeMat(mat_t* fd, const char* lname) const
|
||||
{
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s_cond_mean", lname);
|
||||
ConstTwoDMatrix(mean).writeMat4(fd, tmp);
|
||||
ConstTwoDMatrix(mean).writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_cond_variance", lname);
|
||||
ConstTwoDMatrix(variance).writeMat4(fd, tmp);
|
||||
ConstTwoDMatrix(variance).writeMat(fd, tmp);
|
||||
}
|
||||
|
||||
@
|
||||
|
@ -406,14 +406,14 @@ void SimResultsIRF::calcVariances()
|
|||
}
|
||||
|
||||
@
|
||||
@<|SimResultsIRF::writeMat4| code@>=
|
||||
void SimResultsIRF::writeMat4(FILE* fd, const char* lname) const
|
||||
@<|SimResultsIRF::writeMat| code@>=
|
||||
void SimResultsIRF::writeMat(mat_t* fd, const char* lname) const
|
||||
{
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s_mean", lname);
|
||||
means.writeMat4(fd, tmp);
|
||||
means.writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_var", lname);
|
||||
variances.writeMat4(fd, tmp);
|
||||
variances.writeMat(fd, tmp);
|
||||
}
|
||||
|
||||
@
|
||||
|
@ -458,15 +458,15 @@ void RTSimResultsStats::simulate(int num_sim, const DecisionRule& dr, const Vect
|
|||
}
|
||||
|
||||
@
|
||||
@<|RTSimResultsStats::writeMat4| code@>=
|
||||
void RTSimResultsStats::writeMat4(FILE* fd, const char* lname)
|
||||
@<|RTSimResultsStats::writeMat| code@>=
|
||||
void RTSimResultsStats::writeMat(mat_t* fd, const char* lname)
|
||||
{
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s_rt_mean", lname);
|
||||
ConstTwoDMatrix m(nc.getDim(), 1, mean.base());
|
||||
m.writeMat4(fd, tmp);
|
||||
m.writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_rt_vcov", lname);
|
||||
ConstTwoDMatrix(vcov).writeMat4(fd, tmp);
|
||||
ConstTwoDMatrix(vcov).writeMat(fd, tmp);
|
||||
}
|
||||
|
||||
@
|
||||
|
@ -505,17 +505,17 @@ IRFResults::~IRFResults()
|
|||
}
|
||||
|
||||
@
|
||||
@<|IRFResults::writeMat4| code@>=
|
||||
void IRFResults::writeMat4(FILE* fd, const char* prefix) const
|
||||
@<|IRFResults::writeMat| code@>=
|
||||
void IRFResults::writeMat(mat_t* fd, const char* prefix) const
|
||||
{
|
||||
for (unsigned int i = 0; i < irf_list_ind.size(); i++) {
|
||||
char tmp[100];
|
||||
int ishock = irf_list_ind[i];
|
||||
const char* shockname = model.getExogNames().getName(ishock);
|
||||
sprintf(tmp, "%s_irfp_%s", prefix, shockname);
|
||||
irf_res[2*i]->writeMat4(fd, tmp);
|
||||
irf_res[2*i]->writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_irfm_%s", prefix, shockname);
|
||||
irf_res[2*i+1]->writeMat4(fd, tmp);
|
||||
irf_res[2*i+1]->writeMat(fd, tmp);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -39,6 +39,8 @@ decision rule.
|
|||
#ifndef DECISION_RULE_H
|
||||
#define DECISION_RULE_H
|
||||
|
||||
#include <matio.h>
|
||||
|
||||
#include "kord_exception.h"
|
||||
#include "korder.h"
|
||||
#include "normal_conjugate.h"
|
||||
|
@ -89,7 +91,7 @@ deviations from the rule's steady. |evaluate| method makes only one
|
|||
step of simulation (in terms of absolute values, not
|
||||
deviations). |centralizedClone| returns a new copy of the decision
|
||||
rule, which is centralized about provided fix-point. And finally
|
||||
|writeMat4| writes the decision rule to the Matlab MAT-4 file.
|
||||
|writeMat| writes the decision rule to the MAT file.
|
||||
|
||||
@<|DecisionRule| class declaration@>=
|
||||
class DecisionRule {
|
||||
|
@ -101,7 +103,7 @@ public:@;
|
|||
virtual void eval(emethod em, Vector& out, const ConstVector& v) const =0;
|
||||
virtual void evaluate(emethod em, Vector& out, const ConstVector& ys,
|
||||
const ConstVector& u) const =0;
|
||||
virtual void writeMat4(FILE* fd, const char* prefix) const =0;
|
||||
virtual void writeMat(mat_t* fd, const char* prefix) const =0;
|
||||
virtual DecisionRule* centralizedClone(const Vector& fixpoint) const =0;
|
||||
virtual const Vector& getSteady() const =0;
|
||||
virtual int nexog() const =0;
|
||||
|
@ -160,7 +162,7 @@ public:@;
|
|||
@<|DecisionRuleImpl::simulate| code@>;
|
||||
@<|DecisionRuleImpl::evaluate| code@>;
|
||||
@<|DecisionRuleImpl::centralizedClone| code@>;
|
||||
@<|DecisionRuleImpl::writeMat4| code@>;
|
||||
@<|DecisionRuleImpl::writeMat| code@>;
|
||||
int nexog() const
|
||||
{@+ return nu;@+}
|
||||
const PartitionY& getYPart() const
|
||||
|
@ -402,16 +404,16 @@ void eval(emethod em, Vector& out, const ConstVector& v) const
|
|||
_Tparent::evalTrad(out, v);
|
||||
}
|
||||
|
||||
@ Write the decision rule and steady state to the MAT--4 file.
|
||||
@<|DecisionRuleImpl::writeMat4| code@>=
|
||||
void writeMat4(FILE* fd, const char* prefix) const
|
||||
@ Write the decision rule and steady state to the MAT file.
|
||||
@<|DecisionRuleImpl::writeMat| code@>=
|
||||
void writeMat(mat_t* fd, const char* prefix) const
|
||||
{
|
||||
ctraits<t>::Tpol::writeMat4(fd, prefix);
|
||||
ctraits<t>::Tpol::writeMat(fd, prefix);
|
||||
TwoDMatrix dum(ysteady.length(), 1);
|
||||
dum.getData() = ysteady;
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s_ss", prefix);
|
||||
ConstTwoDMatrix(dum).writeMat4(fd, tmp);
|
||||
ConstTwoDMatrix(dum).writeMat(fd, tmp);
|
||||
}
|
||||
|
||||
@ This is exactly the same as |DecisionRuleImpl<KOrder::fold>|. The
|
||||
|
@ -721,8 +723,8 @@ public:@;
|
|||
const ExplicitShockRealization& getShocks(int i) const
|
||||
{ @+ return *(shocks[i]);@+}
|
||||
bool addDataSet(TwoDMatrix* d, ExplicitShockRealization* sr);
|
||||
void writeMat4(const char* base, const char* lname) const;
|
||||
void writeMat4(FILE* fd, const char* lname) const;
|
||||
void writeMat(const char* base, const char* lname) const;
|
||||
void writeMat(mat_t* fd, const char* lname) const;
|
||||
};
|
||||
|
||||
@ This does the same as |SimResults| plus it calculates means and
|
||||
|
@ -738,7 +740,7 @@ public:@;
|
|||
: SimResults(ny, nper, nburn), mean(ny), vcov(ny,ny)@+ {}
|
||||
void simulate(int num_sim, const DecisionRule& dr, const Vector& start,
|
||||
const TwoDMatrix& vcov, Journal& journal);
|
||||
void writeMat4(FILE* fd, const char* lname) const;
|
||||
void writeMat(mat_t* fd, const char* lname) const;
|
||||
protected:@;
|
||||
void calcMean();
|
||||
void calcVcov();
|
||||
|
@ -758,7 +760,7 @@ public:@;
|
|||
: SimResults(ny, nper, nburn), mean(ny,nper), variance(ny,nper)@+ {}
|
||||
void simulate(int num_sim, const DecisionRule& dr, const Vector& start,
|
||||
const TwoDMatrix& vcov, Journal& journal);
|
||||
void writeMat4(FILE* fd, const char* lname) const;
|
||||
void writeMat(mat_t* fd, const char* lname) const;
|
||||
protected:@;
|
||||
void calcMean();
|
||||
void calcVariance();
|
||||
|
@ -789,7 +791,7 @@ public:@;
|
|||
means(ny, nper), variances(ny, nper)@+ {}
|
||||
void simulate(const DecisionRule& dr, Journal& journal);
|
||||
void simulate(const DecisionRule& dr);
|
||||
void writeMat4(FILE* fd, const char* lname) const;
|
||||
void writeMat(mat_t* fd, const char* lname) const;
|
||||
protected:@;
|
||||
void calcMeans();
|
||||
void calcVariances();
|
||||
|
@ -822,7 +824,7 @@ public:@;
|
|||
const TwoDMatrix& vcov, Journal& journal);
|
||||
void simulate(int num_sim, const DecisionRule& dr, const Vector& start,
|
||||
const TwoDMatrix& vcov);
|
||||
void writeMat4(FILE* fd, const char* lname);
|
||||
void writeMat(mat_t* fd, const char* lname);
|
||||
};
|
||||
|
||||
@ For each shock, this simulates plus and minus impulse. The class
|
||||
|
@ -850,7 +852,7 @@ public:@;
|
|||
const SimResults& control, const vector<int>& ili,
|
||||
Journal& journal);
|
||||
~IRFResults();
|
||||
void writeMat4(FILE* fd, const char* prefix) const;
|
||||
void writeMat(mat_t* fd, const char* prefix) const;
|
||||
};
|
||||
|
||||
@ This worker simulates the given decision rule and inserts the result
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
#include "dynamic_model.h"
|
||||
|
||||
@<|NameList::print| code@>;
|
||||
@<|NameList::writeMat4| code@>;
|
||||
@<|NameList::writeMat4Indices| code@>;
|
||||
@<|NameList::writeMat| code@>;
|
||||
@<|NameList::writeMatIndices| code@>;
|
||||
|
||||
@
|
||||
@<|NameList::print| code@>=
|
||||
|
@ -19,8 +19,8 @@ void NameList::print() const
|
|||
}
|
||||
|
||||
@
|
||||
@<|NameList::writeMat4| code@>=
|
||||
void NameList::writeMat4(FILE* fd, const char* vname) const
|
||||
@<|NameList::writeMat| code@>=
|
||||
void NameList::writeMat(mat_t* fd, const char* vname) const
|
||||
{
|
||||
int maxlen = 0;
|
||||
for (int i = 0; i < getNum(); i++)
|
||||
|
@ -30,29 +30,37 @@ void NameList::writeMat4(FILE* fd, const char* vname) const
|
|||
if (maxlen == 0)
|
||||
return;
|
||||
|
||||
TwoDMatrix m(getNum(), maxlen);
|
||||
char *m = new char[getNum()*maxlen];
|
||||
|
||||
for (int i = 0; i < getNum(); i++)
|
||||
for (int j = 0; j < maxlen; j++)
|
||||
if (j < (int)strlen(getName(i)))
|
||||
m.get(i,j) = (double)(getName(i)[j]);
|
||||
m[j*getNum()+i] = getName(i)[j];
|
||||
else
|
||||
m.get(i,j) = (double)(' ');
|
||||
m[j*getNum()+i] = ' ';
|
||||
|
||||
Mat4Header header(m, vname, "text matrix");
|
||||
header.write(fd);
|
||||
fwrite(m.getData().base(), sizeof(double), m.nrows()*m.ncols(), fd);
|
||||
int dims[2];
|
||||
dims[0] = getNum();
|
||||
dims[1] = maxlen;
|
||||
|
||||
matvar_t *v = Mat_VarCreate(vname, MAT_C_CHAR, MAT_T_UINT8, 2, dims, m, 0);
|
||||
|
||||
Mat_VarWrite(fd, v, COMPRESSION_NONE);
|
||||
|
||||
Mat_VarFree(v);
|
||||
delete[] m;
|
||||
}
|
||||
|
||||
@
|
||||
@<|NameList::writeMat4Indices| code@>=
|
||||
void NameList::writeMat4Indices(FILE* fd, const char* prefix) const
|
||||
@<|NameList::writeMatIndices| code@>=
|
||||
void NameList::writeMatIndices(mat_t* fd, const char* prefix) const
|
||||
{
|
||||
char tmp[100];
|
||||
TwoDMatrix aux(1,1);
|
||||
for (int i = 0; i < getNum(); i++) {
|
||||
sprintf(tmp, "%s_i_%s", prefix, getName(i));
|
||||
aux.get(0,0) = i+1;
|
||||
aux.writeMat4(fd, tmp);
|
||||
aux.writeMat(fd, tmp);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -33,8 +33,8 @@ public:@;
|
|||
virtual int getNum() const =0;
|
||||
virtual const char* getName(int i) const=0;
|
||||
void print() const;
|
||||
void writeMat4(FILE* fd, const char* vname) const;
|
||||
void writeMat4Indices(FILE* fd, const char* prefix) const;
|
||||
void writeMat(mat_t* fd, const char* vname) const;
|
||||
void writeMatIndices(mat_t* fd, const char* prefix) const;
|
||||
};
|
||||
|
||||
@ This is the interface to an information on a generic SDGE
|
||||
|
|
|
@ -229,7 +229,7 @@ changing $u$. We go through all elements of $u$ and vary them from
|
|||
$-mult\cdot\sigma$ to $mult\cdot\sigma$ in |m| steps.
|
||||
|
||||
@<|GlobalChecker::checkAlongShocksAndSave| code@>=
|
||||
void GlobalChecker::checkAlongShocksAndSave(FILE* fd, const char* prefix,
|
||||
void GlobalChecker::checkAlongShocksAndSave(mat_t* fd, const char* prefix,
|
||||
int m, double mult, int max_evals)
|
||||
{
|
||||
JournalRecordPair pa(journal);
|
||||
|
@ -297,7 +297,7 @@ void GlobalChecker::checkAlongShocksAndSave(FILE* fd, const char* prefix,
|
|||
}
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s_shock_%s_errors", prefix, model.getExogNames().getName(ishock));
|
||||
err_out.writeMat4(fd, tmp);
|
||||
err_out.writeMat(fd, tmp);
|
||||
}
|
||||
|
||||
|
||||
|
@ -316,7 +316,7 @@ matrix of $u_t$ to zeros. Fourth we run the |check| method and save
|
|||
the results.
|
||||
|
||||
@<|GlobalChecker::checkOnEllipseAndSave| code@>=
|
||||
void GlobalChecker::checkOnEllipseAndSave(FILE* fd, const char* prefix,
|
||||
void GlobalChecker::checkOnEllipseAndSave(mat_t* fd, const char* prefix,
|
||||
int m, double mult, int max_evals)
|
||||
{
|
||||
JournalRecordPair pa(journal);
|
||||
|
@ -406,15 +406,15 @@ and initialize matrix of shocks |umat| to zero.
|
|||
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s_ellipse_points", prefix);
|
||||
ymat.writeMat4(fd, tmp);
|
||||
ymat.writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_ellipse_errors", prefix);
|
||||
out.writeMat4(fd, tmp);
|
||||
out.writeMat(fd, tmp);
|
||||
|
||||
@ Here we check the errors along a simulation. We simulate, then set
|
||||
|x| to zeros, check and save results.
|
||||
|
||||
@<|GlobalChecker::checkAlongSimulationAndSave| code@>=
|
||||
void GlobalChecker::checkAlongSimulationAndSave(FILE* fd, const char* prefix,
|
||||
void GlobalChecker::checkAlongSimulationAndSave(mat_t* fd, const char* prefix,
|
||||
int m, int max_evals)
|
||||
{
|
||||
JournalRecordPair pa(journal);
|
||||
|
@ -430,9 +430,9 @@ void GlobalChecker::checkAlongSimulationAndSave(FILE* fd, const char* prefix,
|
|||
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s_simul_points", prefix);
|
||||
y->writeMat4(fd, tmp);
|
||||
y->writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_simul_errors", prefix);
|
||||
out.writeMat4(fd, tmp);
|
||||
out.writeMat(fd, tmp);
|
||||
|
||||
delete y;
|
||||
}
|
||||
|
|
|
@ -50,6 +50,8 @@ method and polar transformation. The shock $u$ are zeros.
|
|||
#ifndef GLOBAL_CHECK_H
|
||||
#define GLOBAL_CHECK_H
|
||||
|
||||
#include <matio.h>
|
||||
|
||||
#include "vector_function.h"
|
||||
#include "quadrature.h"
|
||||
|
||||
|
@ -143,13 +145,13 @@ public:@;
|
|||
rf(approx), vfs(rf, n)@+ {}
|
||||
void check(int max_evals, const ConstTwoDMatrix& y,
|
||||
const ConstTwoDMatrix& x, TwoDMatrix& out);
|
||||
void checkAlongShocksAndSave(FILE* fd, const char* prefix,
|
||||
void checkAlongShocksAndSave(mat_t* fd, const char* prefix,
|
||||
int m, double mult, int max_evals);
|
||||
void checkOnEllipseAndSave(FILE* fd, const char* prefix,
|
||||
void checkOnEllipseAndSave(mat_t* fd, const char* prefix,
|
||||
int m, double mult, int max_evals);
|
||||
void checkAlongSimulationAndSave(FILE* fd, const char* prefix,
|
||||
void checkAlongSimulationAndSave(mat_t* fd, const char* prefix,
|
||||
int m, int max_evals);
|
||||
void checkUnconditionalAndSave(FILE* fd, const char* prefix,
|
||||
void checkUnconditionalAndSave(mat_t* fd, const char* prefix,
|
||||
int m, int max_evals);
|
||||
protected:@;
|
||||
void check(const Quadrature& quad, int level,
|
||||
|
|
|
@ -23,7 +23,7 @@ dynare___SOURCES = \
|
|||
|
||||
dynare___CPPFLAGS = -I../sylv/cc -I../tl/cc -I../kord -I../integ/cc -I.. -I$(top_srcdir)/mex/sources -DDYNVERSION=\"$(PACKAGE_VERSION)\" $(BOOST_CPPFLAGS)
|
||||
dynare___LDFLAGS = $(BOOST_LDFLAGS)
|
||||
dynare___LDADD = ../kord/libkord.a ../integ/cc/libinteg.a ../tl/cc/libtl.a ../parser/cc/libparser.a ../utils/cc/libutils.a ../sylv/cc/libsylv.a $(noinst_LIBRARIES) $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) $(PTHREAD_LIBS)
|
||||
dynare___LDADD = ../kord/libkord.a ../integ/cc/libinteg.a ../tl/cc/libtl.a ../parser/cc/libparser.a ../utils/cc/libutils.a ../sylv/cc/libsylv.a $(noinst_LIBRARIES) $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) $(PTHREAD_LIBS) $(LIBADD_MATIO)
|
||||
dynare___CXXFLAGS = $(PTHREAD_CFLAGS)
|
||||
|
||||
BUILT_SOURCES = $(GENERATED_FILES)
|
||||
|
|
|
@ -122,32 +122,32 @@ Dynare::~Dynare()
|
|||
delete fde;
|
||||
}
|
||||
|
||||
void Dynare::writeMat4(FILE* fd, const char* prefix) const
|
||||
void Dynare::writeMat(mat_t* fd, const char* prefix) const
|
||||
{
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s_vars", prefix);
|
||||
getAllEndoNames().writeMat4(fd, tmp);
|
||||
getAllEndoNames().writeMat4Indices(fd, prefix);
|
||||
getAllEndoNames().writeMat(fd, tmp);
|
||||
getAllEndoNames().writeMatIndices(fd, prefix);
|
||||
sprintf(tmp, "%s_state_vars", prefix);
|
||||
getStateNames().writeMat4(fd, tmp);
|
||||
getStateNames().writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_shocks", prefix);
|
||||
getExogNames().writeMat4(fd, tmp);
|
||||
getExogNames().writeMat4Indices(fd, prefix);
|
||||
getExogNames().writeMat(fd, tmp);
|
||||
getExogNames().writeMatIndices(fd, prefix);
|
||||
sprintf(tmp, "%s_vcov_exo", prefix);
|
||||
model->getVcov().writeMat4(fd, tmp);
|
||||
model->getVcov().writeMat(fd, tmp);
|
||||
TwoDMatrix aux(1,1);
|
||||
sprintf(tmp, "%s_nstat", prefix);
|
||||
aux.get(0,0) = nstat();
|
||||
aux.writeMat4(fd, tmp);
|
||||
aux.writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_npred", prefix);
|
||||
aux.get(0,0) = npred();
|
||||
aux.writeMat4(fd, tmp);
|
||||
aux.writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_nboth", prefix);
|
||||
aux.get(0,0) = nboth();
|
||||
aux.writeMat4(fd, tmp);
|
||||
aux.writeMat(fd, tmp);
|
||||
sprintf(tmp, "%s_nforw", prefix);
|
||||
aux.get(0,0) = nforw();
|
||||
aux.writeMat4(fd, tmp);
|
||||
aux.writeMat(fd, tmp);
|
||||
}
|
||||
|
||||
void Dynare::writeDump(const std::string& basename) const
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
|
||||
#include <vector>
|
||||
|
||||
#include <matio.h>
|
||||
|
||||
class Dynare;
|
||||
|
||||
class DynareNameList : public NameList {
|
||||
|
@ -140,7 +142,7 @@ public:
|
|||
void calcDerivatives(const Vector& yy, const Vector& xx);
|
||||
void calcDerivativesAtSteady();
|
||||
|
||||
void writeMat4(FILE* fd, const char* prefix) const;
|
||||
void writeMat(mat_t *fd, const char* prefix) const;
|
||||
void writeDump(const std::string& basename) const;
|
||||
private:
|
||||
void writeModelInfo(Journal& jr) const;
|
||||
|
|
|
@ -71,14 +71,14 @@ int main(int argc, char** argv)
|
|||
// open mat file
|
||||
std::string matfile(params.basename);
|
||||
matfile += ".mat";
|
||||
FILE* matfd = NULL;
|
||||
if (NULL == (matfd=fopen(matfile.c_str(), "wb"))) {
|
||||
mat_t* matfd = Mat_Create(matfile.c_str(), NULL);
|
||||
if (matfd == NULL) {
|
||||
fprintf(stderr, "Couldn't open %s for writing.\n", matfile.c_str());
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// write info about the model (dimensions and variables)
|
||||
dynare.writeMat4(matfd, params.prefix);
|
||||
dynare.writeMat(matfd, params.prefix);
|
||||
// write the dump file corresponding to the input
|
||||
dynare.writeDump(params.basename);
|
||||
|
||||
|
@ -103,7 +103,7 @@ int main(int argc, char** argv)
|
|||
|
||||
std::string ss_matrix_name(params.prefix);
|
||||
ss_matrix_name += "_steady_states";
|
||||
ConstTwoDMatrix(app.getSS()).writeMat4(matfd, ss_matrix_name.c_str());
|
||||
ConstTwoDMatrix(app.getSS()).writeMat(matfd, ss_matrix_name.c_str());
|
||||
|
||||
// check the approximation
|
||||
if (params.check_along_path || params.check_along_shocks
|
||||
|
@ -126,14 +126,14 @@ int main(int argc, char** argv)
|
|||
}
|
||||
|
||||
// write the folded decision rule to the Mat-4 file
|
||||
app.getFoldDecisionRule().writeMat4(matfd, params.prefix);
|
||||
app.getFoldDecisionRule().writeMat(matfd, params.prefix);
|
||||
|
||||
// simulate conditional
|
||||
if (params.num_condper > 0 && params.num_condsim > 0) {
|
||||
SimResultsDynamicStats rescond(dynare.numeq(), params.num_condper, 0);
|
||||
ConstVector det_ss(app.getSS(),0);
|
||||
rescond.simulate(params.num_condsim, app.getFoldDecisionRule(), det_ss, dynare.getVcov(), journal);
|
||||
rescond.writeMat4(matfd, params.prefix);
|
||||
rescond.writeMat(matfd, params.prefix);
|
||||
}
|
||||
|
||||
// simulate unconditional
|
||||
|
@ -142,12 +142,12 @@ int main(int argc, char** argv)
|
|||
if (params.num_per > 0 && params.num_sim > 0) {
|
||||
SimResultsStats res(dynare.numeq(), params.num_per, params.num_burn);
|
||||
res.simulate(params.num_sim, dr, dynare.getSteady(), dynare.getVcov(), journal);
|
||||
res.writeMat4(matfd, params.prefix);
|
||||
res.writeMat(matfd, params.prefix);
|
||||
|
||||
// impulse response functions
|
||||
if (! irf_list_ind.empty()) {
|
||||
IRFResults irf(dynare, dr, res, irf_list_ind, journal);
|
||||
irf.writeMat4(matfd, params.prefix);
|
||||
irf.writeMat(matfd, params.prefix);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -155,10 +155,10 @@ int main(int argc, char** argv)
|
|||
if (params.num_rtper > 0 && params.num_rtsim > 0) {
|
||||
RTSimResultsStats rtres(dynare.numeq(), params.num_rtper, params.num_burn);
|
||||
rtres.simulate(params.num_rtsim, dr, dynare.getSteady(), dynare.getVcov(), journal);
|
||||
rtres.writeMat4(matfd, params.prefix);
|
||||
rtres.writeMat(matfd, params.prefix);
|
||||
}
|
||||
|
||||
fclose(matfd);
|
||||
Mat_Close(matfd);
|
||||
|
||||
} catch (const KordException& e) {
|
||||
printf("Caugth Kord exception: ");
|
||||
|
|
|
@ -62,6 +62,8 @@ is multiplied by unfolded tensors $g$ yielding unfolded tensor $B$.
|
|||
#include <string>
|
||||
#include <sstream>
|
||||
|
||||
#include <matio.h>
|
||||
|
||||
@<|ltsym| predicate@>;
|
||||
@<|TensorContainer| class definition@>;
|
||||
@<|UGSContainer| class declaration@>;
|
||||
|
@ -124,7 +126,7 @@ public:@;
|
|||
@<|TensorContainer::fetchTensors| code@>;
|
||||
@<|TensorContainer::getMaxDim| code@>;
|
||||
@<|TensorContainer::print| code@>;
|
||||
@<|TensorContainer::writeMat4| code@>;
|
||||
@<|TensorContainer::writeMat| code@>;
|
||||
@<|TensorContainer::writeMMap| code@>;
|
||||
|
||||
virtual ~TensorContainer()
|
||||
|
@ -276,9 +278,9 @@ void print() const
|
|||
}
|
||||
}
|
||||
|
||||
@ Output to the MAT--4 file.
|
||||
@<|TensorContainer::writeMat4| code@>=
|
||||
void writeMat4(FILE* fd, const char* prefix) const
|
||||
@ Output to the MAT file.
|
||||
@<|TensorContainer::writeMat| code@>=
|
||||
void writeMat(mat_t* fd, const char* prefix) const
|
||||
{
|
||||
for (const_iterator it = begin(); it != end(); ++it) {
|
||||
char lname[100];
|
||||
|
@ -290,7 +292,7 @@ void writeMat4(FILE* fd, const char* prefix) const
|
|||
strcat(lname, tmp);
|
||||
}
|
||||
ConstTwoDMatrix m(*((*it).second));
|
||||
m.writeMat4(fd, lname);
|
||||
m.writeMat(fd, lname);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,13 +8,10 @@
|
|||
|
||||
|
||||
@<|ConstTwoDMatrix| constructors@>;
|
||||
@<|ConstTwoDMatrix::writeMat4| code@>;
|
||||
@<|ConstTwoDMatrix::writeMat| code@>;
|
||||
@<|TwoDMatrix| row methods code@>;
|
||||
@<|TwoDMatrix| column methods code@>;
|
||||
@<|TwoDMatrix::save| code@>;
|
||||
@<|Mat4Header| constructor 1 code@>;
|
||||
@<|Mat4Header| constructor 2 code@>;
|
||||
@<|Mat4Header::write| code@>;
|
||||
|
||||
@
|
||||
@<|ConstTwoDMatrix| constructors@>=
|
||||
|
@ -34,14 +31,24 @@ ConstTwoDMatrix::ConstTwoDMatrix(int first_row, int num, const ConstTwoDMatrix&
|
|||
: ConstGeneralMatrix(m, first_row, 0, num, m.ncols())@+ {}
|
||||
|
||||
@
|
||||
@<|ConstTwoDMatrix::writeMat4| code@>=
|
||||
void ConstTwoDMatrix::writeMat4(FILE* fd, const char* vname) const
|
||||
@<|ConstTwoDMatrix::writeMat| code@>=
|
||||
void ConstTwoDMatrix::writeMat(mat_t* fd, const char* vname) const
|
||||
{
|
||||
Mat4Header header(*this, vname);
|
||||
header.write(fd);
|
||||
int dims[2];
|
||||
dims[0] = nrows();
|
||||
dims[1] = ncols();
|
||||
double *data = new double[nrows()*ncols()];
|
||||
|
||||
for (int j = 0; j < ncols(); j++)
|
||||
for (int i = 0; i < nrows(); i++)
|
||||
fwrite(&(get(i,j)), sizeof(double), 1, fd);
|
||||
data[j*nrows()+i] = get(i,j);
|
||||
|
||||
matvar_t *v = Mat_VarCreate(vname, MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, data, 0);
|
||||
|
||||
Mat_VarWrite(fd, v, COMPRESSION_NONE);
|
||||
|
||||
Mat_VarFree(v);
|
||||
delete[] data;
|
||||
}
|
||||
|
||||
@
|
||||
|
@ -105,33 +112,4 @@ void TwoDMatrix::save(const char* fname) const
|
|||
fclose(fd);
|
||||
}
|
||||
|
||||
@ This constructs a MAT-4 header for Little Endian dense real double matrix.
|
||||
@<|Mat4Header| constructor 1 code@>=
|
||||
Mat4Header::Mat4Header(const ConstTwoDMatrix& m, const char* vn)
|
||||
: type(0), rows(m.nrows()), cols(m.ncols()), imagf(0), namelen(strlen(vn)+1),
|
||||
vname(vn)
|
||||
{}
|
||||
|
||||
|
||||
@ This constructs a MAT-4 header for text matrix.
|
||||
@<|Mat4Header| constructor 2 code@>=
|
||||
Mat4Header::Mat4Header(const ConstTwoDMatrix& m, const char* vn, const char* dummy)
|
||||
: type(1), rows(m.nrows()), cols(m.ncols()), imagf(0), namelen(strlen(vn)+1),
|
||||
vname(vn)
|
||||
{}
|
||||
|
||||
|
||||
@
|
||||
@<|Mat4Header::write| code@>=
|
||||
void Mat4Header::write(FILE* fd) const
|
||||
{
|
||||
fwrite(&type, sizeof(int), 1, fd);
|
||||
fwrite(&rows, sizeof(int), 1, fd);
|
||||
fwrite(&cols, sizeof(int), 1, fd);
|
||||
fwrite(&imagf, sizeof(int), 1, fd);
|
||||
fwrite(&namelen, sizeof(int), 1, fd);
|
||||
fwrite(vname, 1, namelen, fd);
|
||||
}
|
||||
|
||||
|
||||
@ End of {\tt twod\_matrix.cpp} file.
|
||||
@ End of {\tt twod\_matrix.cpp} file.
|
||||
|
|
|
@ -26,11 +26,11 @@ to allow submatrix construction from const reference arguments.
|
|||
#include "GeneralMatrix.h"
|
||||
|
||||
#include <cstdio>
|
||||
#include <matio.h>
|
||||
|
||||
class TwoDMatrix;
|
||||
@<|ConstTwoDMatrix| class declaration@>;
|
||||
@<|TwoDMatrix| class declaration@>;
|
||||
@<|Mat4Header| class declaration@>;
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -57,7 +57,7 @@ public:@/
|
|||
{@+ return numRows();@+}
|
||||
int ncols() const
|
||||
{@+ return numCols();@+}
|
||||
void writeMat4(FILE* fd, const char* vname) const;
|
||||
void writeMat(mat_t* fd, const char* vname) const;
|
||||
};
|
||||
|
||||
@ Here we do the same as for |ConstTwoDMatrix| plus define
|
||||
|
@ -103,8 +103,8 @@ public:@/
|
|||
@<|TwoDMatrix| row methods declarations@>;
|
||||
@<|TwoDMatrix| column methods declarations@>;
|
||||
void save(const char* fname) const;
|
||||
void writeMat4(FILE* fd, const char* vname) const
|
||||
{@+ ConstTwoDMatrix(*this).writeMat4(fd, vname);@+}
|
||||
void writeMat(mat_t* fd, const char* vname) const
|
||||
{@+ ConstTwoDMatrix(*this).writeMat(fd, vname);@+}
|
||||
};
|
||||
|
||||
@
|
||||
|
@ -136,21 +136,4 @@ public:@/
|
|||
void addColumn(double d, const TwoDMatrix& m, int from, int to)
|
||||
{@+ addColumn(d, ConstTwoDMatrix(m), from, to);@+}
|
||||
|
||||
@
|
||||
@<|Mat4Header| class declaration@>=
|
||||
class Mat4Header {
|
||||
int type;
|
||||
int rows;
|
||||
int cols;
|
||||
int imagf;
|
||||
int namelen;
|
||||
const char* vname;
|
||||
public:@;
|
||||
Mat4Header(const ConstTwoDMatrix& m, const char* vname);
|
||||
Mat4Header(const ConstTwoDMatrix& m, const char* vname, const char* dummy);
|
||||
void write(FILE* fd) const;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ End of {\tt twod\_matrix.h} file.
|
||||
@ End of {\tt twod\_matrix.h} file.
|
||||
|
|
|
@ -5,6 +5,6 @@ dynare_simul__CPPFLAGS = -I$(top_srcdir)/../../../dynare++/sylv/cc -I$(top_srcdi
|
|||
dynare_simul__CXXFLAGS = $(PTHREAD_CFLAGS)
|
||||
|
||||
# libdynare++ must come before pthread
|
||||
dynare_simul__LDADD = ../libdynare++/libdynare++.a $(PTHREAD_LIBS)
|
||||
dynare_simul__LDADD = ../libdynare++/libdynare++.a $(PTHREAD_LIBS) $(LIBADD_MATIO)
|
||||
|
||||
nodist_dynare_simul__SOURCES = $(top_srcdir)/../../../dynare++/extern/matlab/dynare_simul.cpp
|
||||
|
|
|
@ -5,7 +5,7 @@ k_order_perturbation_CPPFLAGS = -I$(top_srcdir)/../../../dynare++/src -I$(top_sr
|
|||
k_order_perturbation_CXXFLAGS = $(PTHREAD_CFLAGS)
|
||||
|
||||
# libdynare++ must come before pthread
|
||||
k_order_perturbation_LDADD = ../libdynare++/libdynare++.a $(PTHREAD_LIBS) $(LIBADD_DLOPEN)
|
||||
k_order_perturbation_LDADD = ../libdynare++/libdynare++.a $(PTHREAD_LIBS) $(LIBADD_DLOPEN) $(LIBADD_MATIO)
|
||||
|
||||
TOPDIR = $(top_srcdir)/../../sources/k_order_perturbation
|
||||
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
ACLOCAL_AMFLAGS = -I ../../../m4
|
||||
|
||||
# libdynare++ must come before gensylv, k_order_perturbation, dynare_simul_
|
||||
|
||||
if DO_SOMETHING
|
||||
SUBDIRS = mjdgges kronecker bytecode libdynare++ gensylv k_order_perturbation dynare_simul_ estimation block_kalman_filter sobol local_state_space_iterations
|
||||
SUBDIRS = mjdgges kronecker bytecode libdynare++ gensylv estimation block_kalman_filter sobol local_state_space_iterations
|
||||
|
||||
if HAVE_MATIO
|
||||
SUBDIRS += k_order_perturbation dynare_simul_
|
||||
endif
|
||||
|
||||
if HAVE_GSL
|
||||
SUBDIRS += ms_sbvar
|
||||
|
|
|
@ -77,6 +77,12 @@ AC_SUBST([LIBADD_DLOPEN])
|
|||
AX_GSL
|
||||
AM_CONDITIONAL([HAVE_GSL], [test "x$has_gsl" = "xyes"])
|
||||
|
||||
# Check for libmatio, needed by MEX files using Dynare++ code
|
||||
AC_CHECK_HEADER([matio.h])
|
||||
AC_CHECK_LIB([matio], [Mat_Open], [LIBADD_MATIO="-lmatio"])
|
||||
AC_SUBST([LIBADD_MATIO])
|
||||
AM_CONDITIONAL([HAVE_MATIO], [test "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"])
|
||||
|
||||
AM_CONDITIONAL([DO_SOMETHING], [test "x$ax_enable_matlab" = "xyes" -a "x$ax_matlab_version_ok" = "xyes" -a "x$ax_mexopts_ok" = "xyes"])
|
||||
|
||||
if test "x$ax_enable_matlab" = "xyes" -a "x$ax_matlab_version_ok" = "xyes" -a "x$ax_mexopts_ok" = "xyes"; then
|
||||
|
@ -89,6 +95,12 @@ else
|
|||
BUILD_MEX_MATLAB="no (missing MATLAB, or unknown version, or unknown architecture)"
|
||||
fi
|
||||
|
||||
if test "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"; then
|
||||
BUILD_KORDER_DYNSIMUL_MEX_MATLAB="yes"
|
||||
else
|
||||
BUILD_KORDER_DYNSIMUL_MEX_MATLAB="no (missing MatIO library)"
|
||||
fi
|
||||
|
||||
if test "x$ax_enable_matlab" = "xyes" -a "x$ax_matlab_version_ok" = "xyes" -a "x$ax_mexopts_ok" = "xyes" -a "x$F77" != "x"; then
|
||||
BUILD_KALMAN_STEADY_STATE_MATLAB="yes"
|
||||
else
|
||||
|
@ -124,7 +136,8 @@ AC_MSG_NOTICE([
|
|||
Dynare is now configured for building the following components...
|
||||
|
||||
Binaries (with "make"):
|
||||
MEX files for MATLAB (except MS-SBVAR and Kalman Steady State): $BUILD_MEX_MATLAB
|
||||
MEX files for MATLAB (except those listed below): $BUILD_MEX_MATLAB
|
||||
k-order and dynare_simul MEX files for MATLAB: $BUILD_KORDER_DYNSIMUL_MEX_MATLAB
|
||||
MS-SBVAR MEX files for MATLAB: $BUILD_MS_SBVAR_MEX_MATLAB
|
||||
Kalman Steady State MEX file for MATLAB: $BUILD_KALMAN_STEADY_STATE_MATLAB
|
||||
M2HTML documentation: $BUILD_M2HTML
|
||||
|
|
|
@ -2,7 +2,11 @@ ACLOCAL_AMFLAGS = -I ../../../m4
|
|||
|
||||
# libdynare++ must come before gensylv, k_order_perturbation, dynare_simul_
|
||||
if DO_SOMETHING
|
||||
SUBDIRS = mjdgges kronecker bytecode libdynare++ gensylv k_order_perturbation dynare_simul_ qzcomplex ordschur block_kalman_filter sobol local_state_space_iterations linsolve
|
||||
SUBDIRS = mjdgges kronecker bytecode libdynare++ gensylv qzcomplex ordschur block_kalman_filter sobol local_state_space_iterations linsolve
|
||||
|
||||
if HAVE_MATIO
|
||||
SUBDIRS += k_order_perturbation dynare_simul_
|
||||
endif
|
||||
|
||||
if HAVE_GSL
|
||||
if HAVE_MATIO
|
||||
|
|
|
@ -79,9 +79,9 @@ else
|
|||
fi
|
||||
|
||||
if test "x$MKOCTFILE" != "x" -a "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"; then
|
||||
BUILD_ESTIMATION_MEX_OCTAVE="yes"
|
||||
BUILD_ESTIMATION_KORDER_DYNSIMUL_MEX_OCTAVE="yes"
|
||||
else
|
||||
BUILD_ESTIMATION_MEX_OCTAVE="no (missing MatIO library)"
|
||||
BUILD_ESTIMATION_KORDER_DYNSIMUL_MEX_OCTAVE="no (missing MatIO library)"
|
||||
fi
|
||||
|
||||
if test "x$MKOCTFILE" != "x" -a "x$F77" != "x"; then
|
||||
|
@ -109,10 +109,10 @@ AC_MSG_NOTICE([
|
|||
Dynare is now configured for building the following components...
|
||||
|
||||
Binaries (with "make"):
|
||||
MEX files for Octave (except MS-SBVAR and Kalman Steady State): $BUILD_MEX_OCTAVE
|
||||
MEX files for Octave (except those listed below): $BUILD_MEX_OCTAVE
|
||||
MS-SBVAR MEX files for Octave: $BUILD_MS_SBVAR_MEX_OCTAVE
|
||||
Kalman Steady State MEX file for Octave: $BUILD_KALMAN_STEADY_STATE_OCTAVE
|
||||
Estimation MEX for Octave: $BUILD_ESTIMATION_MEX_OCTAVE
|
||||
Estimation, k-order and dynare_simul MEX for Octave: $BUILD_ESTIMATION_KORDER_DYNSIMUL_MEX_OCTAVE
|
||||
|
||||
])
|
||||
|
||||
|
|
Loading…
Reference in New Issue