diff --git a/mex/sources/estimation/tests/testModelSolution.cc b/mex/sources/estimation/tests/testModelSolution.cc index 8222361ab..99aacfde7 100644 --- a/mex/sources/estimation/tests/testModelSolution.cc +++ b/mex/sources/estimation/tests/testModelSolution.cc @@ -15,48 +15,48 @@ * * You should have received a copy of the GNU General Public License * along with Dynare. If not, see . - */ - -// Test for ModelSolution -// Uses fs2000k2.mod and its ..._dynamic.mexw32 - -#include "ModelSolution.hh" - -int -main (int argc, char** argv) -{ - - std::string modName("fs2000k2_dynamic.mexw32"); - const int npar = 7; //(int)mxGetM(mxFldp); - const size_t n_endo=15, n_exo=2; - std::vector zeta_fwrd_arg; - std::vector zeta_back_arg; - std::vector zeta_mixed_arg; - std::vector zeta_static_arg; - //std::vector - double qz_criterium=1.0e-9; - Vector steadyState(n_endo), deepParams(npar); - - double dYSparams [] = { // 27 mxGetData(mxFldp); - 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 - }; - double vcov[] = { //(double *) mxGetData(mxFldp); - 0.1960e-3, 0.0, - 0.0, 0.0250e-3 - }; - int nVCVpar = 2; //(int)mxGetN(mxFldp); - 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 + */ + +// Test for ModelSolution +// Uses fs2000k2.mod and its ..._dynamic.mexw32 + +#include "ModelSolution.hh" + +int +main (int argc, char** argv) +{ + + std::string modName("fs2000k2_dynamic.mexw32"); + const int npar = 7; //(int)mxGetM(mxFldp); + const size_t n_endo=15, n_exo=2; + std::vector zeta_fwrd_arg; + std::vector zeta_back_arg; + std::vector zeta_mixed_arg; + std::vector zeta_static_arg; + //std::vector + double qz_criterium=1.0+1.0e-9; + Vector steadyState(n_endo), deepParams(npar); + + double dYSparams [] = { // 27 mxGetData(mxFldp); + 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 + }; + double vcov[] = { //(double *) mxGetData(mxFldp); + 0.1960e-3, 0.0, + 0.0, 0.0250e-3 + }; + int nVCVpar = 2; //(int)mxGetN(mxFldp); + 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, @@ -72,57 +72,58 @@ main (int argc, char** argv) 4, 17, 0, 0, 18, 0, 0, 19, 22, - }; - MatrixView llincidence(inllincidence, 3, n_endo,3); // leads and lags indices - ll_incidence= llincidence; - - double dparams[] = { 0.3300, - 0.9900, - 0.0030, - 1.0110, - 0.7000, - 0.7870, - 0.0200}; - - VectorView modParamsVW (dparams, npar,1); - 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; - std::cout << "Matrix ll_incidence: " << std::endl << ll_incidence << std::endl; - std::cout << "Vector steadyState: " << std::endl << steadyState << std::endl; - - //order_var = [ stat_var(:); pred_var(:); both_var(:); fwrd_var(:)]; - size_t statc[]={ 4, 5, 6, 8, 9, 10, 11, 12, 14}; - size_t back[]={1,7,13}; - size_t both[]={2}; - size_t fwd[]={ 3,15}; - for (int i=0;i<9;++i) - zeta_static_arg.push_back(statc[i]); - for (int i=0;i<3;++i) - zeta_back_arg.push_back(back[i]); - for (int i=0;i<1;++i) - zeta_mixed_arg.push_back(both[i]); - for (int i=0;i<2;++i) - zeta_fwrd_arg.push_back(fwd[i]); - - 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; - - -} - + }; + MatrixView llincidence(inllincidence, 3, n_endo,3); // leads and lags indices + ll_incidence= llincidence; + + double dparams[] = { 0.3300, + 0.9900, + 0.0030, + 1.0110, + 0.7000, + 0.7870, + 0.0200}; + + VectorView modParamsVW (dparams, npar,1); + 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; + std::cout << "Matrix ll_incidence: " << std::endl << ll_incidence << std::endl; + std::cout << "Vector steadyState: " << std::endl << steadyState << std::endl; + + // Set zeta vectors [0:(n-1)] from Matlab indices [1:n] + //order_var = [ stat_var(:); pred_var(:); both_var(:); fwrd_var(:)]; + size_t statc[]={ 4, 5, 6, 8, 9, 10, 11, 12, 14}; + size_t back[]={1,7,13}; + size_t both[]={2}; + size_t fwd[]={ 3,15}; + for (int i=0;i<9;++i) + zeta_static_arg.push_back(statc[i]-1); + for (int i=0;i<3;++i) + zeta_back_arg.push_back(back[i]-1); + for (int i=0;i<1;++i) + zeta_mixed_arg.push_back(both[i]-1); + for (int i=0;i<2;++i) + zeta_fwrd_arg.push_back(fwd[i]-1); + + 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; + + +} +