parent
3d2125287a
commit
e9b5f239df
|
@ -2508,7 +2508,7 @@ DynamicModel::writeDynamicModel(const string &basename, ostream &DynamicOutput,
|
||||||
deriv_node_temp_terms_t tef_terms;
|
deriv_node_temp_terms_t tef_terms;
|
||||||
temporary_terms_t temp_term_union;
|
temporary_terms_t temp_term_union;
|
||||||
|
|
||||||
writeModelLocalVariableTemporaryTerms(temp_term_union,
|
writeModelLocalVariableTemporaryTerms(temp_term_union, temporary_terms_idxs,
|
||||||
model_tt_output, output_type, tef_terms);
|
model_tt_output, output_type, tef_terms);
|
||||||
|
|
||||||
writeTemporaryTerms(temporary_terms_derivatives[0],
|
writeTemporaryTerms(temporary_terms_derivatives[0],
|
||||||
|
@ -4400,9 +4400,6 @@ DynamicModel::computingPass(bool jacobianExo, bool hessian, bool thirdDerivative
|
||||||
if (!nopreprocessoroutput)
|
if (!nopreprocessoroutput)
|
||||||
cout << " - derivatives of Jacobian/Hessian w.r. to parameters" << endl;
|
cout << " - derivatives of Jacobian/Hessian w.r. to parameters" << endl;
|
||||||
computeParamsDerivatives(paramsDerivsOrder);
|
computeParamsDerivatives(paramsDerivsOrder);
|
||||||
|
|
||||||
if (!no_tmp_terms)
|
|
||||||
computeParamsDerivativesTemporaryTerms();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (thirdDerivatives)
|
if (thirdDerivatives)
|
||||||
|
@ -4509,6 +4506,11 @@ DynamicModel::computingPass(bool jacobianExo, bool hessian, bool thirdDerivative
|
||||||
computeTemporaryTerms(!use_dll, no_tmp_terms);
|
computeTemporaryTerms(!use_dll, no_tmp_terms);
|
||||||
if (bytecode && !no_tmp_terms)
|
if (bytecode && !no_tmp_terms)
|
||||||
computeTemporaryTermsMapping();
|
computeTemporaryTermsMapping();
|
||||||
|
|
||||||
|
/* Must be called after computeTemporaryTerms(), because it depends on
|
||||||
|
temporary_terms_mlv to be filled */
|
||||||
|
if (paramsDerivsOrder > 0 && !no_tmp_terms)
|
||||||
|
computeParamsDerivativesTemporaryTerms();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5375,8 +5377,7 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ExprNodeOutputType output_type = (julia ? ExprNodeOutputType::juliaDynamicModel : ExprNodeOutputType::matlabDynamicModel);
|
ExprNodeOutputType output_type = (julia ? ExprNodeOutputType::juliaDynamicModel : ExprNodeOutputType::matlabDynamicModel);
|
||||||
ostringstream model_local_vars_output; // Used for storing model local vars
|
ostringstream tt_output; // Used for storing model temp vars and equations
|
||||||
ostringstream model_output; // Used for storing model temp vars and equations
|
|
||||||
ostringstream jacobian_output; // Used for storing jacobian equations
|
ostringstream jacobian_output; // Used for storing jacobian equations
|
||||||
ostringstream hessian_output; // Used for storing Hessian equations
|
ostringstream hessian_output; // Used for storing Hessian equations
|
||||||
ostringstream hessian1_output; // Used for storing Hessian equations
|
ostringstream hessian1_output; // Used for storing Hessian equations
|
||||||
|
@ -5386,7 +5387,8 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
|
||||||
temporary_terms_t temp_term_union;
|
temporary_terms_t temp_term_union;
|
||||||
deriv_node_temp_terms_t tef_terms;
|
deriv_node_temp_terms_t tef_terms;
|
||||||
|
|
||||||
writeTemporaryTerms(params_derivs_temporary_terms, temp_term_union, params_derivs_temporary_terms_idxs, model_output, output_type, tef_terms);
|
writeModelLocalVariableTemporaryTerms(temp_term_union, params_derivs_temporary_terms_idxs, tt_output, output_type, tef_terms);
|
||||||
|
writeTemporaryTerms(params_derivs_temporary_terms, temp_term_union, params_derivs_temporary_terms_idxs, tt_output, output_type, tef_terms);
|
||||||
|
|
||||||
for (const auto & residuals_params_derivative : params_derivatives.find({ 0, 1 })->second)
|
for (const auto & residuals_params_derivative : params_derivatives.find({ 0, 1 })->second)
|
||||||
{
|
{
|
||||||
|
@ -5398,7 +5400,7 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
|
||||||
|
|
||||||
jacobian_output << "rp" << LEFT_ARRAY_SUBSCRIPT(output_type) << eq+1 << ", " << param_col
|
jacobian_output << "rp" << LEFT_ARRAY_SUBSCRIPT(output_type) << eq+1 << ", " << param_col
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << " = ";
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << " = ";
|
||||||
d1->writeOutput(jacobian_output, output_type, params_derivs_temporary_terms, params_derivs_temporary_terms_idxs, tef_terms);
|
d1->writeOutput(jacobian_output, output_type, temp_term_union, params_derivs_temporary_terms_idxs, tef_terms);
|
||||||
jacobian_output << ";" << endl;
|
jacobian_output << ";" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5413,7 +5415,7 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
|
||||||
|
|
||||||
hessian_output << "gp" << LEFT_ARRAY_SUBSCRIPT(output_type) << eq+1 << ", " << var_col
|
hessian_output << "gp" << LEFT_ARRAY_SUBSCRIPT(output_type) << eq+1 << ", " << var_col
|
||||||
<< ", " << param_col << RIGHT_ARRAY_SUBSCRIPT(output_type) << " = ";
|
<< ", " << param_col << RIGHT_ARRAY_SUBSCRIPT(output_type) << " = ";
|
||||||
d2->writeOutput(hessian_output, output_type, params_derivs_temporary_terms, params_derivs_temporary_terms_idxs, tef_terms);
|
d2->writeOutput(hessian_output, output_type, temp_term_union, params_derivs_temporary_terms_idxs, tef_terms);
|
||||||
hessian_output << ";" << endl;
|
hessian_output << ";" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5435,7 +5437,7 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param2_col << ";" << endl
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param2_col << ";" << endl
|
||||||
<< "rpp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",4"
|
<< "rpp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",4"
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
||||||
d2->writeOutput(hessian1_output, output_type, params_derivs_temporary_terms, params_derivs_temporary_terms_idxs, tef_terms);
|
d2->writeOutput(hessian1_output, output_type, temp_term_union, params_derivs_temporary_terms_idxs, tef_terms);
|
||||||
hessian1_output << ";" << endl;
|
hessian1_output << ";" << endl;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
|
@ -5462,7 +5464,7 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param2_col << ";" << endl
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param2_col << ";" << endl
|
||||||
<< "gpp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",5"
|
<< "gpp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",5"
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
||||||
d2->writeOutput(third_derivs_output, output_type, params_derivs_temporary_terms, params_derivs_temporary_terms_idxs, tef_terms);
|
d2->writeOutput(third_derivs_output, output_type, temp_term_union, params_derivs_temporary_terms_idxs, tef_terms);
|
||||||
third_derivs_output << ";" << endl;
|
third_derivs_output << ";" << endl;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
|
@ -5489,7 +5491,7 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param_col << ";" << endl
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param_col << ";" << endl
|
||||||
<< "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",5"
|
<< "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",5"
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
||||||
d2->writeOutput(third_derivs1_output, output_type, params_derivs_temporary_terms, params_derivs_temporary_terms_idxs, tef_terms);
|
d2->writeOutput(third_derivs1_output, output_type, temp_term_union, params_derivs_temporary_terms_idxs, tef_terms);
|
||||||
third_derivs1_output << ";" << endl;
|
third_derivs1_output << ";" << endl;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
|
@ -5509,8 +5511,7 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
|
||||||
// Check that we don't have more than 32 nested parenthesis because Matlab does not suppor this. See Issue #1201
|
// Check that we don't have more than 32 nested parenthesis because Matlab does not suppor this. See Issue #1201
|
||||||
map<string, string> tmp_paren_vars;
|
map<string, string> tmp_paren_vars;
|
||||||
bool message_printed = false;
|
bool message_printed = false;
|
||||||
fixNestedParenthesis(model_output, tmp_paren_vars, message_printed);
|
fixNestedParenthesis(tt_output, tmp_paren_vars, message_printed);
|
||||||
fixNestedParenthesis(model_local_vars_output, tmp_paren_vars, message_printed);
|
|
||||||
fixNestedParenthesis(jacobian_output, tmp_paren_vars, message_printed);
|
fixNestedParenthesis(jacobian_output, tmp_paren_vars, message_printed);
|
||||||
fixNestedParenthesis(hessian_output, tmp_paren_vars, message_printed);
|
fixNestedParenthesis(hessian_output, tmp_paren_vars, message_printed);
|
||||||
fixNestedParenthesis(hessian1_output, tmp_paren_vars, message_printed);
|
fixNestedParenthesis(hessian1_output, tmp_paren_vars, message_printed);
|
||||||
|
@ -5561,8 +5562,7 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
|
||||||
<< "% Warning : this file is generated automatically by Dynare" << endl
|
<< "% Warning : this file is generated automatically by Dynare" << endl
|
||||||
<< "% from model file (.mod)" << endl << endl
|
<< "% from model file (.mod)" << endl << endl
|
||||||
<< "T = NaN(" << params_derivs_temporary_terms_idxs.size() << ",1);" << endl
|
<< "T = NaN(" << params_derivs_temporary_terms_idxs.size() << ",1);" << endl
|
||||||
<< model_local_vars_output.str()
|
<< tt_output.str()
|
||||||
<< model_output.str()
|
|
||||||
<< "rp = zeros(" << equations.size() << ", "
|
<< "rp = zeros(" << equations.size() << ", "
|
||||||
<< symbol_table.param_nbr() << ");" << endl
|
<< symbol_table.param_nbr() << ");" << endl
|
||||||
<< jacobian_output.str()
|
<< jacobian_output.str()
|
||||||
|
@ -5589,8 +5589,7 @@ DynamicModel::writeParamsDerivativesFile(const string &basename, bool julia) con
|
||||||
<< "export params_derivs" << endl << endl
|
<< "export params_derivs" << endl << endl
|
||||||
<< "function params_derivs(y, x, paramssteady_state, it_, "
|
<< "function params_derivs(y, x, paramssteady_state, it_, "
|
||||||
<< "ss_param_deriv, ss_param_2nd_deriv)" << endl
|
<< "ss_param_deriv, ss_param_2nd_deriv)" << endl
|
||||||
<< model_local_vars_output.str()
|
<< tt_output.str()
|
||||||
<< model_output.str()
|
|
||||||
<< "rp = zeros(" << equations.size() << ", "
|
<< "rp = zeros(" << equations.size() << ", "
|
||||||
<< symbol_table.param_nbr() << ");" << endl
|
<< symbol_table.param_nbr() << ");" << endl
|
||||||
<< jacobian_output.str()
|
<< jacobian_output.str()
|
||||||
|
|
|
@ -1432,6 +1432,7 @@ ModelTree::computeTemporaryTerms(bool is_matlab, bool no_tmp_terms)
|
||||||
|
|
||||||
void
|
void
|
||||||
ModelTree::writeModelLocalVariableTemporaryTerms(temporary_terms_t &temp_term_union,
|
ModelTree::writeModelLocalVariableTemporaryTerms(temporary_terms_t &temp_term_union,
|
||||||
|
const temporary_terms_idxs_t &tt_idxs,
|
||||||
ostream &output, ExprNodeOutputType output_type,
|
ostream &output, ExprNodeOutputType output_type,
|
||||||
deriv_node_temp_terms_t &tef_terms) const
|
deriv_node_temp_terms_t &tef_terms) const
|
||||||
{
|
{
|
||||||
|
@ -1444,9 +1445,9 @@ ModelTree::writeModelLocalVariableTemporaryTerms(temporary_terms_t &temp_term_un
|
||||||
if (isJuliaOutput(output_type))
|
if (isJuliaOutput(output_type))
|
||||||
output << " @inbounds const ";
|
output << " @inbounds const ";
|
||||||
|
|
||||||
it.first->writeOutput(output, output_type, tto, temporary_terms_idxs, tef_terms);
|
it.first->writeOutput(output, output_type, tto, tt_idxs, tef_terms);
|
||||||
output << " = ";
|
output << " = ";
|
||||||
it.second->writeOutput(output, output_type, temp_term_union, temporary_terms_idxs, tef_terms);
|
it.second->writeOutput(output, output_type, temp_term_union, tt_idxs, tef_terms);
|
||||||
|
|
||||||
if (isCOutput(output_type) || isMatlabOutput(output_type))
|
if (isCOutput(output_type) || isMatlabOutput(output_type))
|
||||||
output << ";";
|
output << ";";
|
||||||
|
@ -2184,6 +2185,9 @@ ModelTree::computeParamsDerivativesTemporaryTerms()
|
||||||
params_derivs_temporary_terms_split[{ 2, 1 }] = temp_terms_map[NodeTreeReference::hessianParamsDeriv];
|
params_derivs_temporary_terms_split[{ 2, 1 }] = temp_terms_map[NodeTreeReference::hessianParamsDeriv];
|
||||||
|
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
|
for (auto &it : temporary_terms_mlv)
|
||||||
|
params_derivs_temporary_terms_idxs[it.first] = idx++;
|
||||||
|
|
||||||
for (auto tt : params_derivs_temporary_terms_split[{ 0, 1 }])
|
for (auto tt : params_derivs_temporary_terms_split[{ 0, 1 }])
|
||||||
params_derivs_temporary_terms_idxs[tt] = idx++;
|
params_derivs_temporary_terms_idxs[tt] = idx++;
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,9 @@ protected:
|
||||||
temporary_terms_idxs_t temporary_terms_idxs;
|
temporary_terms_idxs_t temporary_terms_idxs;
|
||||||
|
|
||||||
//! Temporary terms for the file containing parameters derivatives
|
//! Temporary terms for the file containing parameters derivatives
|
||||||
|
/*! However does not contain the TT related to model local variables.
|
||||||
|
TODO: this variable should probably be removed, it is essentially the
|
||||||
|
same information as in params_derivs_temporary_terms_split */
|
||||||
temporary_terms_t params_derivs_temporary_terms;
|
temporary_terms_t params_derivs_temporary_terms;
|
||||||
|
|
||||||
//! Temporary terms for parameter derivatives, under a disaggregated form
|
//! Temporary terms for parameter derivatives, under a disaggregated form
|
||||||
|
@ -176,6 +179,7 @@ protected:
|
||||||
//! Tests if string contains more than 32 nested parens, Issue #1201
|
//! Tests if string contains more than 32 nested parens, Issue #1201
|
||||||
bool testNestedParenthesis(const string &str) const;
|
bool testNestedParenthesis(const string &str) const;
|
||||||
void writeModelLocalVariableTemporaryTerms(temporary_terms_t &temp_term_union,
|
void writeModelLocalVariableTemporaryTerms(temporary_terms_t &temp_term_union,
|
||||||
|
const temporary_terms_idxs_t &tt_idxs,
|
||||||
ostream &output, ExprNodeOutputType output_type,
|
ostream &output, ExprNodeOutputType output_type,
|
||||||
deriv_node_temp_terms_t &tef_terms) const;
|
deriv_node_temp_terms_t &tef_terms) const;
|
||||||
//! Writes model equations
|
//! Writes model equations
|
||||||
|
|
|
@ -1269,9 +1269,6 @@ StaticModel::computingPass(const eval_context_t &eval_context, bool no_tmp_terms
|
||||||
if (!nopreprocessoroutput)
|
if (!nopreprocessoroutput)
|
||||||
cout << " - derivatives of Jacobian/Hessian w.r. to parameters" << endl;
|
cout << " - derivatives of Jacobian/Hessian w.r. to parameters" << endl;
|
||||||
computeParamsDerivatives(paramsDerivsOrder);
|
computeParamsDerivatives(paramsDerivsOrder);
|
||||||
|
|
||||||
if (!no_tmp_terms)
|
|
||||||
computeParamsDerivativesTemporaryTerms();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (block)
|
if (block)
|
||||||
|
@ -1318,6 +1315,11 @@ StaticModel::computingPass(const eval_context_t &eval_context, bool no_tmp_terms
|
||||||
computeTemporaryTerms(true, no_tmp_terms);
|
computeTemporaryTerms(true, no_tmp_terms);
|
||||||
if (bytecode && !no_tmp_terms)
|
if (bytecode && !no_tmp_terms)
|
||||||
computeTemporaryTermsMapping(temporary_terms, map_idx);
|
computeTemporaryTermsMapping(temporary_terms, map_idx);
|
||||||
|
|
||||||
|
/* Must be called after computeTemporaryTerms(), because it depends on
|
||||||
|
temporary_terms_mlv to be filled */
|
||||||
|
if (paramsDerivsOrder > 0 && !no_tmp_terms)
|
||||||
|
computeParamsDerivativesTemporaryTerms();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1519,7 +1521,7 @@ StaticModel::writeStaticModel(const string &basename,
|
||||||
deriv_node_temp_terms_t tef_terms;
|
deriv_node_temp_terms_t tef_terms;
|
||||||
temporary_terms_t temp_term_union;
|
temporary_terms_t temp_term_union;
|
||||||
|
|
||||||
writeModelLocalVariableTemporaryTerms(temp_term_union,
|
writeModelLocalVariableTemporaryTerms(temp_term_union, temporary_terms_idxs,
|
||||||
model_tt_output, output_type, tef_terms);
|
model_tt_output, output_type, tef_terms);
|
||||||
|
|
||||||
writeTemporaryTerms(temporary_terms_derivatives[0],
|
writeTemporaryTerms(temporary_terms_derivatives[0],
|
||||||
|
@ -2640,8 +2642,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
|
|
||||||
ExprNodeOutputType output_type = (julia ? ExprNodeOutputType::juliaStaticModel : ExprNodeOutputType::matlabStaticModel);
|
ExprNodeOutputType output_type = (julia ? ExprNodeOutputType::juliaStaticModel : ExprNodeOutputType::matlabStaticModel);
|
||||||
|
|
||||||
ostringstream model_local_vars_output; // Used for storing model local vars
|
ostringstream tt_output; // Used for storing temporary terms
|
||||||
ostringstream model_output; // Used for storing model
|
|
||||||
ostringstream jacobian_output; // Used for storing jacobian equations
|
ostringstream jacobian_output; // Used for storing jacobian equations
|
||||||
ostringstream hessian_output; // Used for storing Hessian equations
|
ostringstream hessian_output; // Used for storing Hessian equations
|
||||||
ostringstream hessian1_output; // Used for storing Hessian equations
|
ostringstream hessian1_output; // Used for storing Hessian equations
|
||||||
|
@ -2651,6 +2652,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
temporary_terms_t temp_term_union;
|
temporary_terms_t temp_term_union;
|
||||||
deriv_node_temp_terms_t tef_terms;
|
deriv_node_temp_terms_t tef_terms;
|
||||||
|
|
||||||
|
writeModelLocalVariableTemporaryTerms(temp_term_union, params_derivs_temporary_terms_idxs, tt_output, output_type, tef_terms);
|
||||||
writeTemporaryTerms(params_derivs_temporary_terms, temp_term_union, params_derivs_temporary_terms_idxs, tt_output, output_type, tef_terms);
|
writeTemporaryTerms(params_derivs_temporary_terms, temp_term_union, params_derivs_temporary_terms_idxs, tt_output, output_type, tef_terms);
|
||||||
|
|
||||||
for (const auto & residuals_params_derivative : params_derivatives.find({ 0, 1 })->second)
|
for (const auto & residuals_params_derivative : params_derivatives.find({ 0, 1 })->second)
|
||||||
|
@ -2664,7 +2666,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
jacobian_output << "rp" << LEFT_ARRAY_SUBSCRIPT(output_type)
|
jacobian_output << "rp" << LEFT_ARRAY_SUBSCRIPT(output_type)
|
||||||
<< eq+1 << ", " << param_col
|
<< eq+1 << ", " << param_col
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << " = ";
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << " = ";
|
||||||
d1->writeOutput(jacobian_output, output_type, params_derivs_temporary_terms, params_derivs_temporary_terms_idxs, tef_terms);
|
d1->writeOutput(jacobian_output, output_type, temp_term_union, params_derivs_temporary_terms_idxs, tef_terms);
|
||||||
jacobian_output << ";" << endl;
|
jacobian_output << ";" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2680,7 +2682,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
hessian_output << "gp" << LEFT_ARRAY_SUBSCRIPT(output_type)
|
hessian_output << "gp" << LEFT_ARRAY_SUBSCRIPT(output_type)
|
||||||
<< eq+1 << ", " << var_col << ", " << param_col
|
<< eq+1 << ", " << var_col << ", " << param_col
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << " = ";
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << " = ";
|
||||||
d2->writeOutput(hessian_output, output_type, params_derivs_temporary_terms, params_derivs_temporary_terms_idxs, tef_terms);
|
d2->writeOutput(hessian_output, output_type, temp_term_union, params_derivs_temporary_terms_idxs, tef_terms);
|
||||||
hessian_output << ";" << endl;
|
hessian_output << ";" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2702,7 +2704,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param2_col << ";" << endl
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param2_col << ";" << endl
|
||||||
<< "rpp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",4"
|
<< "rpp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",4"
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
||||||
d2->writeOutput(hessian1_output, output_type, params_derivs_temporary_terms, params_derivs_temporary_terms_idxs, tef_terms);
|
d2->writeOutput(hessian1_output, output_type, temp_term_union, params_derivs_temporary_terms_idxs, tef_terms);
|
||||||
hessian1_output << ";" << endl;
|
hessian1_output << ";" << endl;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
|
@ -2729,7 +2731,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param2_col << ";" << endl
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param2_col << ";" << endl
|
||||||
<< "gpp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",5"
|
<< "gpp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",5"
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
||||||
d2->writeOutput(third_derivs_output, output_type, params_derivs_temporary_terms, params_derivs_temporary_terms_idxs, tef_terms);
|
d2->writeOutput(third_derivs_output, output_type, temp_term_union, params_derivs_temporary_terms_idxs, tef_terms);
|
||||||
third_derivs_output << ";" << endl;
|
third_derivs_output << ";" << endl;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
|
@ -2756,7 +2758,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param_col << ";" << endl
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=" << param_col << ";" << endl
|
||||||
<< "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",5"
|
<< "hp" << LEFT_ARRAY_SUBSCRIPT(output_type) << i << ",5"
|
||||||
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
<< RIGHT_ARRAY_SUBSCRIPT(output_type) << "=";
|
||||||
d2->writeOutput(third_derivs1_output, output_type, params_derivs_temporary_terms, params_derivs_temporary_terms_idxs, tef_terms);
|
d2->writeOutput(third_derivs1_output, output_type, temp_term_union, params_derivs_temporary_terms_idxs, tef_terms);
|
||||||
third_derivs1_output << ";" << endl;
|
third_derivs1_output << ";" << endl;
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
|
@ -2776,8 +2778,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
// Check that we don't have more than 32 nested parenthesis because Matlab does not suppor this. See Issue #1201
|
// Check that we don't have more than 32 nested parenthesis because Matlab does not suppor this. See Issue #1201
|
||||||
map<string, string> tmp_paren_vars;
|
map<string, string> tmp_paren_vars;
|
||||||
bool message_printed = false;
|
bool message_printed = false;
|
||||||
fixNestedParenthesis(model_output, tmp_paren_vars, message_printed);
|
fixNestedParenthesis(tt_output, tmp_paren_vars, message_printed);
|
||||||
fixNestedParenthesis(model_local_vars_output, tmp_paren_vars, message_printed);
|
|
||||||
fixNestedParenthesis(jacobian_output, tmp_paren_vars, message_printed);
|
fixNestedParenthesis(jacobian_output, tmp_paren_vars, message_printed);
|
||||||
fixNestedParenthesis(hessian_output, tmp_paren_vars, message_printed);
|
fixNestedParenthesis(hessian_output, tmp_paren_vars, message_printed);
|
||||||
fixNestedParenthesis(hessian1_output, tmp_paren_vars, message_printed);
|
fixNestedParenthesis(hessian1_output, tmp_paren_vars, message_printed);
|
||||||
|
@ -2817,8 +2818,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
<< "% Warning : this file is generated automatically by Dynare" << endl
|
<< "% Warning : this file is generated automatically by Dynare" << endl
|
||||||
<< "% from model file (.mod)" << endl << endl
|
<< "% from model file (.mod)" << endl << endl
|
||||||
<< "T = NaN(" << params_derivs_temporary_terms_idxs.size() << ",1);" << endl
|
<< "T = NaN(" << params_derivs_temporary_terms_idxs.size() << ",1);" << endl
|
||||||
<< model_local_vars_output.str()
|
<< tt_output.str()
|
||||||
<< model_output.str()
|
|
||||||
<< "rp = zeros(" << equations.size() << ", "
|
<< "rp = zeros(" << equations.size() << ", "
|
||||||
<< symbol_table.param_nbr() << ");" << endl
|
<< symbol_table.param_nbr() << ");" << endl
|
||||||
<< jacobian_output.str()
|
<< jacobian_output.str()
|
||||||
|
@ -2845,8 +2845,7 @@ StaticModel::writeParamsDerivativesFile(const string &basename, bool julia) cons
|
||||||
<< "#" << endl
|
<< "#" << endl
|
||||||
<< "export params_derivs" << endl << endl
|
<< "export params_derivs" << endl << endl
|
||||||
<< "function params_derivs(y, x, params)" << endl
|
<< "function params_derivs(y, x, params)" << endl
|
||||||
<< model_local_vars_output.str()
|
<< tt_output.str()
|
||||||
<< model_output.str()
|
|
||||||
<< "rp = zeros(" << equations.size() << ", "
|
<< "rp = zeros(" << equations.size() << ", "
|
||||||
<< symbol_table.param_nbr() << ");" << endl
|
<< symbol_table.param_nbr() << ");" << endl
|
||||||
<< jacobian_output.str()
|
<< jacobian_output.str()
|
||||||
|
|
Loading…
Reference in New Issue