- Bugs corrections in deterministic simulation with sparse option
git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@1994 ac1d8469-bf42-47a9-8791-bf33cf982152time-shift
parent
3bcff08e87
commit
f18859fef2
Binary file not shown.
|
@ -93,19 +93,25 @@ Interpreter::compute_block_time() /*throw(EvalException)*/
|
||||||
case eEndogenous :
|
case eEndogenous :
|
||||||
var=get_code_int
|
var=get_code_int
|
||||||
lag=get_code_int
|
lag=get_code_int
|
||||||
#ifdef DEBUGC
|
//#ifdef DEBUGC
|
||||||
mexPrintf(" y[%d]=%f\n",(it_+lag)*y_size+var,y[(it_+lag)*y_size+var]);
|
if(var==153)
|
||||||
|
{
|
||||||
|
mexPrintf(" FLD y[var=%d,time=%d,lag=%d,%d]=%f\n",var,it_,lag,(it_+lag)*y_size+var,y[(it_+lag)*y_size+var]);
|
||||||
mexEvalString("drawnow;");
|
mexEvalString("drawnow;");
|
||||||
#endif
|
}
|
||||||
|
//#endif
|
||||||
Stack.push(y[(it_+lag)*y_size+var]);
|
Stack.push(y[(it_+lag)*y_size+var]);
|
||||||
break;
|
break;
|
||||||
case eExogenous :
|
case eExogenous :
|
||||||
var=get_code_int
|
var=get_code_int
|
||||||
lag=get_code_int
|
lag=get_code_int
|
||||||
#ifdef DEBUGC
|
//#ifdef DEBUGC
|
||||||
mexPrintf(" x[%d]=%f\n",it_+lag+var*nb_row_x,x[it_+lag+var*nb_row_x]);
|
if(var==6)
|
||||||
|
{
|
||||||
|
mexPrintf(" FLD x[%d, time=%d, var=%d, lag=%d]=%f\n",it_+lag+var*nb_row_x,it_,var,lag,x[it_+lag+var*nb_row_x]);
|
||||||
mexEvalString("drawnow;");
|
mexEvalString("drawnow;");
|
||||||
#endif
|
}
|
||||||
|
//#endif
|
||||||
Stack.push(x[it_+lag+var*nb_row_x]);
|
Stack.push(x[it_+lag+var*nb_row_x]);
|
||||||
break;
|
break;
|
||||||
case eExogenousDet :
|
case eExogenousDet :
|
||||||
|
@ -187,6 +193,11 @@ Interpreter::compute_block_time() /*throw(EvalException)*/
|
||||||
mexEvalString("drawnow;");
|
mexEvalString("drawnow;");
|
||||||
#endif
|
#endif
|
||||||
y[(it_+lag)*y_size+var] = Stack.top();
|
y[(it_+lag)*y_size+var] = Stack.top();
|
||||||
|
if(var==153)
|
||||||
|
{
|
||||||
|
mexPrintf(" FSTP y[var=%d,time=%d,lag=%d,%d]=%f\n",var,it_,lag,(it_+lag)*y_size+var,y[(it_+lag)*y_size+var]);
|
||||||
|
mexEvalString("drawnow;");
|
||||||
|
}
|
||||||
#ifdef DEBUGC
|
#ifdef DEBUGC
|
||||||
mexPrintf("%f\n",y[(it_+lag)*y_size+var]);
|
mexPrintf("%f\n",y[(it_+lag)*y_size+var]);
|
||||||
mexEvalString("drawnow;");
|
mexEvalString("drawnow;");
|
||||||
|
@ -980,8 +991,10 @@ Interpreter::simulate_a_block(int size,int type, string file_name, string bin_ba
|
||||||
//mexPrintf("Per_u_=%d\n",Per_u_);
|
//mexPrintf("Per_u_=%d\n",Per_u_);
|
||||||
Per_y_=it_*y_size;
|
Per_y_=it_*y_size;
|
||||||
//mexPrintf("ok\n");
|
//mexPrintf("ok\n");
|
||||||
|
//mexPrintf("compute_block_time\n");
|
||||||
set_code_pointer(begining);
|
set_code_pointer(begining);
|
||||||
compute_block_time();
|
compute_block_time();
|
||||||
|
//mexPrintf("end of compute_block_time\n");
|
||||||
/*if(Gaussian_Elimination)
|
/*if(Gaussian_Elimination)
|
||||||
initialize(periods, nb_endo, y_kmin, y_kmax, y_size, u_count, u_count_init, u, y, ya, slowc, y_decal, markowitz_c, res1, res2, max_res);*/
|
initialize(periods, nb_endo, y_kmin, y_kmax, y_size, u_count, u_count_init, u, y, ya, slowc, y_decal, markowitz_c, res1, res2, max_res);*/
|
||||||
//mexPrintf("ok1\n");
|
//mexPrintf("ok1\n");
|
||||||
|
@ -996,7 +1009,11 @@ Interpreter::simulate_a_block(int size,int type, string file_name, string bin_ba
|
||||||
{
|
{
|
||||||
double rr;
|
double rr;
|
||||||
/*if(fabs(y[Per_y_+Block_Contain[i].Variable])>solve_tolf)*/
|
/*if(fabs(y[Per_y_+Block_Contain[i].Variable])>solve_tolf)*/
|
||||||
|
//mexPrintf("res[%d]=%f\n",i,r[i]);
|
||||||
|
if(fabs(1+y[Per_y_+Block_Contain[i].Variable])>eps)
|
||||||
rr=r[i]/(1+y[Per_y_+Block_Contain[i].Variable]);
|
rr=r[i]/(1+y[Per_y_+Block_Contain[i].Variable]);
|
||||||
|
else
|
||||||
|
rr=r[i];
|
||||||
/*else
|
/*else
|
||||||
rr=r[i];*/
|
rr=r[i];*/
|
||||||
if (max_res<fabs(rr))
|
if (max_res<fabs(rr))
|
||||||
|
|
|
@ -114,11 +114,11 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
|
||||||
mexWarnMsgTxt("Not enough space. Filename is truncated.");
|
mexWarnMsgTxt("Not enough space. Filename is truncated.");
|
||||||
//mexPrintf("fname=%s\n",fname);
|
//mexPrintf("fname=%s\n",fname);
|
||||||
col_y=mxGetN(mxGetFieldByNumber(oo_, 0, mxGetFieldNumber(oo_,"endo_simul")));;
|
col_y=mxGetN(mxGetFieldByNumber(oo_, 0, mxGetFieldNumber(oo_,"endo_simul")));;
|
||||||
if (col_y<row_x)
|
/*if (col_y<row_x)
|
||||||
{
|
{
|
||||||
row_y=row_y/row_x;
|
row_y=row_y/row_x;
|
||||||
col_y=row_x;
|
col_y=row_x;
|
||||||
}
|
}*/
|
||||||
solve_tolf=*(mxGetPr(mxGetFieldByNumber(options_, 0, mxGetFieldNumber(options_,"dynatol"))));
|
solve_tolf=*(mxGetPr(mxGetFieldByNumber(options_, 0, mxGetFieldNumber(options_,"dynatol"))));
|
||||||
//mexPrintf("col_y=%d row_y=%d\n",col_y, row_y);
|
//mexPrintf("col_y=%d row_y=%d\n",col_y, row_y);
|
||||||
size_of_direction=col_y*row_y*sizeof(double);
|
size_of_direction=col_y*row_y*sizeof(double);
|
||||||
|
@ -129,6 +129,25 @@ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
|
||||||
x=(double*)mxMalloc(col_x*row_x*sizeof(double));
|
x=(double*)mxMalloc(col_x*row_x*sizeof(double));
|
||||||
for (i=0;i<row_x*col_x;i++)
|
for (i=0;i<row_x*col_x;i++)
|
||||||
x[i]=double(xd[i]);
|
x[i]=double(xd[i]);
|
||||||
|
/*mexPrintf("1 ");
|
||||||
|
for (i=0;i<row_x*col_x;i++)
|
||||||
|
{
|
||||||
|
x[i]=double(xd[i]);
|
||||||
|
if(!(i % row_x) && i>0)
|
||||||
|
mexPrintf("\n%d %f ",i/row_x+1,x[i]);
|
||||||
|
else
|
||||||
|
mexPrintf("%f ",x[i]);
|
||||||
|
}
|
||||||
|
for(i=0;i<row_x;i++)
|
||||||
|
{
|
||||||
|
for(j=0;j<col_x;j++)
|
||||||
|
{
|
||||||
|
x[j*row_x+i]=xd[i*col_x+j];
|
||||||
|
mexPrintf("%f ",xd[i*col_x+j]);
|
||||||
|
}
|
||||||
|
mexPrintf("\n");
|
||||||
|
}
|
||||||
|
*/
|
||||||
for (i=0;i<row_y*col_y;i++)
|
for (i=0;i<row_y*col_y;i++)
|
||||||
y[i]=double(yd[i]);
|
y[i]=double(yd[i]);
|
||||||
y_size=row_y;
|
y_size=row_y;
|
||||||
|
|
Loading…
Reference in New Issue