Estimation DLL, dynamic DLL loading: minor changes to testModelSolution (now takes the full name of the dynamic DLL in argument)

time-shift
Sébastien Villemot 2010-03-15 18:16:29 +01:00
parent 3c8bfc5ef0
commit fd3c35937b
4 changed files with 22 additions and 19 deletions

View File

@ -68,6 +68,10 @@ CPPFLAGS="$CPPFLAGS_SAVED"
# Don't use deprecated hash structures
AC_DEFINE([BOOST_NO_HASH], [], [Don't use deprecated STL hash structures])
# Check for dlopen(), needed by tests for estimation DLL
AC_CHECK_LIB([dl], [dlopen], [LIBADD_DLOPEN="-ldl"], [])
AC_SUBST([LIBADD_DLOPEN])
AC_CHECK_PROG([PDFTEX], [pdftex], [pdftex])
AM_CONDITIONAL([HAVE_PDFTEX], [test "x$PDFTEX" != "x"])

View File

@ -1,8 +1,12 @@
check_PROGRAMS = test-dr
check_PROGRAMS = test-dr testModelSolution
test_dr_SOURCES = ../libmat/Matrix.cc ../libmat/Vector.cc ../libmat/QRDecomposition.cc ../libmat/GeneralizedSchurDecomposition.cc ../libmat/LUSolver.cc ../DecisionRules.cc test-dr.cc
test_dr_LDADD = $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS)
test_dr_CPPFLAGS = -I.. -I../libmat -I../../
testModelSolution_SOURCES = ../libmat/Matrix.cc ../libmat/Vector.cc ../libmat/QRDecomposition.cc ../libmat/GeneralizedSchurDecomposition.cc ../libmat/LUSolver.cc ../utils/dynamic_dll.cc ../DecisionRules.cc ../ModelSolution.cc testModelSolution.cc
testModelSolution_LDADD = $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) $(LIBADD_DLOPEN)
testModelSolution_CPPFLAGS = -I.. -I../libmat -I../../ -I../utils -DMEXEXT=\"$(MEXEXT)\"
check-local:
./test-dr

View File

@ -25,38 +25,39 @@
int
main (int argc, char** argv)
{
if (argc < 2)
{
std::cerr << argv[0] << ": please provide as argument the name of the dynamic DLL generated from fs2000k2.mod (typically fs2000k2_dynamic.mex*)" << std::endl;
exit(EXIT_FAILURE);
}
std::string modName("fs2000k2_dynamic.mexw32");
const int npar = 7; //(int)mxGetM(mxFldp);
std::string modName = argv[1];
const int npar = 7;
const size_t n_endo=15, n_exo=2;
std::vector<size_t> zeta_fwrd_arg;
std::vector<size_t> zeta_back_arg;
std::vector<size_t> zeta_mixed_arg;
std::vector<size_t> zeta_static_arg;
//std::vector<size_t>
double qz_criterium=1.0+1.0e-9;
Vector steadyState(n_endo), deepParams(npar);
double dYSparams [] = { // 27 mxGetData(mxFldp);
double dYSparams [] = {
1.0110, 2.2582, 0.4477, 1.0000,
4.5959, 1.0212, 5.8012, 0.8494,
0.1872, 0.8604, 1.0030, 1.0080,
0.5808, 1.0030, 2.2093 //2.2582, 0.4477
0.5808, 1.0030, 2.2093
};
double vcov[] = { //(double *) mxGetData(mxFldp);
double vcov[] = {
0.1960e-3, 0.0,
0.0, 0.0250e-3
};
int nVCVpar = 2; //(int)mxGetN(mxFldp);
int nVCVpar = 2;
MatrixView vCovVW(vcov,nVCVpar,nVCVpar,nVCVpar);
Matrix vCov (nVCVpar, nVCVpar);
vCov = vCovVW;
Matrix ll_incidence(3,n_endo); // leads and lags indices
double inllincidence[]={
// 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 0,
// 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
// 0, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22
1, 5, 0,
2, 6, 20,
0, 7, 21,
@ -88,7 +89,6 @@ main (int argc, char** argv)
deepParams=modParamsVW;
VectorView steadyStateVW(dYSparams,n_endo,1);
steadyState=steadyStateVW;
//std::cout << "VectorView deepParamsVW: " << std::endl << modParamsVW << std::endl;
std::cout << "Vector deepParams: " << std::endl << deepParams << std::endl;
std::cout << "Matrix vCov: " << std::endl << vCov << std::endl;
std::cout << "MatrixVw llincidence: " << std::endl << llincidence << std::endl;
@ -113,17 +113,11 @@ main (int argc, char** argv)
Matrix ghx(n_endo, zeta_back_arg.size() + zeta_mixed_arg.size());
Matrix ghu(n_endo,n_exo);
// exit(0);
ModelSolution modelSolution( modName, n_endo, n_exo
, zeta_fwrd_arg, zeta_back_arg, zeta_mixed_arg, zeta_static_arg, ll_incidence, qz_criterium);
// exit(0);
modelSolution.compute(steadyState, deepParams, ghx, ghu);
std::cout << "Matrix ghx: " << std::endl << ghx << std::endl;
std::cout << "Matrix ghu: " << std::endl << ghu << std::endl;
}

View File

@ -34,7 +34,8 @@ length(y_length), jcols(j_cols), nMax_lag(n_max_lag), nExog(n_exog)
{
std::string fName;
#if !defined(__CYGWIN32__) && !defined(_WIN32)
fName = "./";
if (modName[0] != '/')
fName = "./";
#endif
if (sExt.size()>0) //construct modelNmae_dynamic file name with the given extension
fName += modName + "_dynamic" + sExt;