preprocessor: replace no_2nd_order_params_derivs with params_deriv_order. #1187
parent
253e6c8dfb
commit
6b7a77d5a9
|
@ -780,9 +780,12 @@ line numbering directives.
|
||||||
Instructs Dynare to no create a logfile of this run in
|
Instructs Dynare to no create a logfile of this run in
|
||||||
@file{@var{FILENAME}.log}. The default is to create the logfile.
|
@file{@var{FILENAME}.log}. The default is to create the logfile.
|
||||||
|
|
||||||
@item no_2nd_order_params_derivs
|
@item params_derivs_order=0|1|2
|
||||||
Instructs Dynare not to compute the second order derivative of the jacobian or
|
When @ref{identification}, @ref{dynare_sensitivity} (with identification), or
|
||||||
the derivative of the hessian with respect to the parameters.
|
@ref{estimation_cmd} are present, this option is used to limit the order of the
|
||||||
|
derivatives with respect to the parameters that are calculated by the
|
||||||
|
preprocessor. @code{0} means no derivatives, @code{1} means first derivatives,
|
||||||
|
and @code{2} means second derivatives. Default: @code{2}
|
||||||
|
|
||||||
@item nowarn
|
@item nowarn
|
||||||
Suppresses all warnings.
|
Suppresses all warnings.
|
||||||
|
@ -7514,6 +7517,7 @@ estimation environment is set up.
|
||||||
@node Performing sensitivity analysis
|
@node Performing sensitivity analysis
|
||||||
@subsection Performing sensitivity analysis
|
@subsection Performing sensitivity analysis
|
||||||
|
|
||||||
|
@anchor{dynare_sensitivity}
|
||||||
@deffn Command dynare_sensitivity ;
|
@deffn Command dynare_sensitivity ;
|
||||||
@deffnx Command dynare_sensitivity (@var{OPTIONS}@dots{});
|
@deffnx Command dynare_sensitivity (@var{OPTIONS}@dots{});
|
||||||
|
|
||||||
|
@ -7828,6 +7832,7 @@ end;
|
||||||
@node Performing identification analysis
|
@node Performing identification analysis
|
||||||
@subsection Performing identification analysis
|
@subsection Performing identification analysis
|
||||||
|
|
||||||
|
@anchor{identification}
|
||||||
@deffn Command identification ;
|
@deffn Command identification ;
|
||||||
@deffnx Command identification (@var{OPTIONS}@dots{});
|
@deffnx Command identification (@var{OPTIONS}@dots{});
|
||||||
|
|
||||||
|
|
|
@ -3113,11 +3113,11 @@ DynamicModel::runTrendTest(const eval_context_t &eval_context)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
DynamicModel::computingPass(bool jacobianExo, bool hessian, bool thirdDerivatives, FileOutputType paramsDerivatives,
|
DynamicModel::computingPass(bool jacobianExo, bool hessian, bool thirdDerivatives, int paramsDerivsOrder,
|
||||||
const eval_context_t &eval_context, bool no_tmp_terms, bool block, bool use_dll,
|
const eval_context_t &eval_context, bool no_tmp_terms, bool block, bool use_dll,
|
||||||
bool bytecode, bool compute_xrefs)
|
bool bytecode, bool compute_xrefs)
|
||||||
{
|
{
|
||||||
assert(jacobianExo || !(hessian || thirdDerivatives || paramsDerivatives));
|
assert(jacobianExo || !(hessian || thirdDerivatives || paramsDerivsOrder));
|
||||||
|
|
||||||
initializeVariablesAndEquations();
|
initializeVariablesAndEquations();
|
||||||
|
|
||||||
|
@ -3148,10 +3148,10 @@ DynamicModel::computingPass(bool jacobianExo, bool hessian, bool thirdDerivative
|
||||||
computeHessian(vars);
|
computeHessian(vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (paramsDerivatives != none)
|
if (paramsDerivsOrder > 0)
|
||||||
{
|
{
|
||||||
cout << " - derivatives of Jacobian/Hessian w.r. to parameters" << endl;
|
cout << " - derivatives of Jacobian/Hessian w.r. to parameters" << endl;
|
||||||
computeParamsDerivatives(paramsDerivatives);
|
computeParamsDerivatives(paramsDerivsOrder);
|
||||||
|
|
||||||
if (!no_tmp_terms)
|
if (!no_tmp_terms)
|
||||||
computeParamsDerivativesTemporaryTerms();
|
computeParamsDerivativesTemporaryTerms();
|
||||||
|
|
|
@ -208,11 +208,11 @@ public:
|
||||||
\param jacobianExo whether derivatives w.r. to exo and exo_det should be in the Jacobian (derivatives w.r. to endo are always computed)
|
\param jacobianExo whether derivatives w.r. to exo and exo_det should be in the Jacobian (derivatives w.r. to endo are always computed)
|
||||||
\param hessian whether 2nd derivatives w.r. to exo, exo_det and endo should be computed (implies jacobianExo = true)
|
\param hessian whether 2nd derivatives w.r. to exo, exo_det and endo should be computed (implies jacobianExo = true)
|
||||||
\param thirdDerivatives whether 3rd derivatives w.r. to endo/exo/exo_det should be computed (implies jacobianExo = true)
|
\param thirdDerivatives whether 3rd derivatives w.r. to endo/exo/exo_det should be computed (implies jacobianExo = true)
|
||||||
\param paramsDerivatives whether 2nd derivatives w.r. to a pair (endo/exo/exo_det, parameter) should be computed (implies jacobianExo = true)
|
\param paramsDerivsOrder order of derivatives w.r. to a pair (endo/exo/exo_det, parameter) to be computed (>0 implies jacobianExo = true)
|
||||||
\param eval_context evaluation context for normalization
|
\param eval_context evaluation context for normalization
|
||||||
\param no_tmp_terms if true, no temporary terms will be computed in the dynamic files
|
\param no_tmp_terms if true, no temporary terms will be computed in the dynamic files
|
||||||
*/
|
*/
|
||||||
void computingPass(bool jacobianExo, bool hessian, bool thirdDerivatives, FileOutputType paramsDerivatives,
|
void computingPass(bool jacobianExo, bool hessian, bool thirdDerivatives, int paramsDerivsOrder,
|
||||||
const eval_context_t &eval_context, bool no_tmp_terms, bool block, bool use_dll, bool bytecode, bool compute_xrefs);
|
const eval_context_t &eval_context, bool no_tmp_terms, bool block, bool use_dll, bool bytecode, bool compute_xrefs);
|
||||||
//! Writes model initialization and lead/lag incidence matrix to output
|
//! Writes model initialization and lead/lag incidence matrix to output
|
||||||
void writeOutput(ostream &output, const string &basename, bool block, bool byte_code, bool use_dll, int order, bool estimation_present, bool compute_xrefs, bool julia) const;
|
void writeOutput(ostream &output, const string &basename, bool block, bool byte_code, bool use_dll, int order, bool estimation_present, bool compute_xrefs, bool julia) const;
|
||||||
|
|
|
@ -41,7 +41,7 @@ void main2(stringstream &in, string &basename, bool debug, bool clear_all, bool
|
||||||
bool nograph, bool nointeractive, bool parallel, ConfigFile &config_file,
|
bool nograph, bool nointeractive, bool parallel, ConfigFile &config_file,
|
||||||
WarningConsolidation &warnings_arg, bool nostrict, bool check_model_changes,
|
WarningConsolidation &warnings_arg, bool nostrict, bool check_model_changes,
|
||||||
bool minimal_workspace, bool compute_xrefs, FileOutputType output_mode,
|
bool minimal_workspace, bool compute_xrefs, FileOutputType output_mode,
|
||||||
LanguageOutputType lang, bool sec_order_param_deriv
|
LanguageOutputType lang, int params_derivs_order
|
||||||
#if defined(_WIN32) || defined(__CYGWIN32__)
|
#if defined(_WIN32) || defined(__CYGWIN32__)
|
||||||
, bool cygwin, bool msvc
|
, bool cygwin, bool msvc
|
||||||
#endif
|
#endif
|
||||||
|
@ -57,7 +57,7 @@ usage()
|
||||||
cerr << "Dynare usage: dynare mod_file [debug] [noclearall] [onlyclearglobals] [savemacro[=macro_file]] [onlymacro] [nolinemacro] [notmpterms] [nolog] [warn_uninit]"
|
cerr << "Dynare usage: dynare mod_file [debug] [noclearall] [onlyclearglobals] [savemacro[=macro_file]] [onlymacro] [nolinemacro] [notmpterms] [nolog] [warn_uninit]"
|
||||||
<< " [console] [nograph] [nointeractive] [parallel[=cluster_name]] [conffile=parallel_config_path_and_filename] [parallel_slave_open_mode] [parallel_test]"
|
<< " [console] [nograph] [nointeractive] [parallel[=cluster_name]] [conffile=parallel_config_path_and_filename] [parallel_slave_open_mode] [parallel_test]"
|
||||||
<< " [-D<variable>[=<value>]] [-I/path] [nostrict] [fast] [minimal_workspace] [compute_xrefs] [output=dynamic|first|second|third] [language=C|C++|julia]"
|
<< " [-D<variable>[=<value>]] [-I/path] [nostrict] [fast] [minimal_workspace] [compute_xrefs] [output=dynamic|first|second|third] [language=C|C++|julia]"
|
||||||
<< " [no_2nd_order_params_derivs]"
|
<< " [params_derivs_order=0|1|2]"
|
||||||
#if defined(_WIN32) || defined(__CYGWIN32__)
|
#if defined(_WIN32) || defined(__CYGWIN32__)
|
||||||
<< " [cygwin] [msvc]"
|
<< " [cygwin] [msvc]"
|
||||||
#endif
|
#endif
|
||||||
|
@ -91,7 +91,7 @@ main(int argc, char **argv)
|
||||||
bool no_line_macro = false;
|
bool no_line_macro = false;
|
||||||
bool no_log = false;
|
bool no_log = false;
|
||||||
bool no_warn = false;
|
bool no_warn = false;
|
||||||
bool sec_order_param_deriv = true;
|
int params_derivs_order = 2;
|
||||||
bool warn_uninit = false;
|
bool warn_uninit = false;
|
||||||
bool console = false;
|
bool console = false;
|
||||||
bool nograph = false;
|
bool nograph = false;
|
||||||
|
@ -121,8 +121,16 @@ main(int argc, char **argv)
|
||||||
debug = true;
|
debug = true;
|
||||||
else if (!strcmp(argv[arg], "noclearall"))
|
else if (!strcmp(argv[arg], "noclearall"))
|
||||||
clear_all = false;
|
clear_all = false;
|
||||||
else if (!strcmp(argv[arg], "no_2nd_order_params_derivs"))
|
else if (strlen(argv[arg]) >= 19 && !strncmp(argv[arg], "params_derivs_order", 19))
|
||||||
sec_order_param_deriv = false;
|
{
|
||||||
|
if (strlen(argv[arg]) >= 22 || argv[arg][19] != '=' ||
|
||||||
|
!(argv[arg][20] == '0' || argv[arg][20] == '1' || argv[arg][20] == '2'))
|
||||||
|
{
|
||||||
|
cerr << "Incorrect syntax for params_derivs_order option" << endl;
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
params_derivs_order = stoi(string(argv[arg] + 20));
|
||||||
|
}
|
||||||
else if (!strcmp(argv[arg], "onlyclearglobals"))
|
else if (!strcmp(argv[arg], "onlyclearglobals"))
|
||||||
{
|
{
|
||||||
clear_all = false;
|
clear_all = false;
|
||||||
|
@ -322,7 +330,7 @@ main(int argc, char **argv)
|
||||||
main2(macro_output, basename, debug, clear_all, clear_global,
|
main2(macro_output, basename, debug, clear_all, clear_global,
|
||||||
no_tmp_terms, no_log, no_warn, warn_uninit, console, nograph, nointeractive,
|
no_tmp_terms, no_log, no_warn, warn_uninit, console, nograph, nointeractive,
|
||||||
parallel, config_file, warnings, nostrict, check_model_changes, minimal_workspace,
|
parallel, config_file, warnings, nostrict, check_model_changes, minimal_workspace,
|
||||||
compute_xrefs, output_mode, language, sec_order_param_deriv
|
compute_xrefs, output_mode, language, params_derivs_order
|
||||||
#if defined(_WIN32) || defined(__CYGWIN32__)
|
#if defined(_WIN32) || defined(__CYGWIN32__)
|
||||||
, cygwin, msvc
|
, cygwin, msvc
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -30,7 +30,7 @@ main2(stringstream &in, string &basename, bool debug, bool clear_all, bool clear
|
||||||
bool nograph, bool nointeractive, bool parallel, ConfigFile &config_file,
|
bool nograph, bool nointeractive, bool parallel, ConfigFile &config_file,
|
||||||
WarningConsolidation &warnings, bool nostrict, bool check_model_changes,
|
WarningConsolidation &warnings, bool nostrict, bool check_model_changes,
|
||||||
bool minimal_workspace, bool compute_xrefs, FileOutputType output_mode,
|
bool minimal_workspace, bool compute_xrefs, FileOutputType output_mode,
|
||||||
LanguageOutputType language, bool sec_order_param_deriv
|
LanguageOutputType language, int params_derivs_order
|
||||||
#if defined(_WIN32) || defined(__CYGWIN32__)
|
#if defined(_WIN32) || defined(__CYGWIN32__)
|
||||||
, bool cygwin, bool msvc
|
, bool cygwin, bool msvc
|
||||||
#endif
|
#endif
|
||||||
|
@ -51,7 +51,7 @@ main2(stringstream &in, string &basename, bool debug, bool clear_all, bool clear
|
||||||
mod_file->evalAllExpressions(warn_uninit);
|
mod_file->evalAllExpressions(warn_uninit);
|
||||||
|
|
||||||
// Do computations
|
// Do computations
|
||||||
mod_file->computingPass(no_tmp_terms, output_mode, compute_xrefs, sec_order_param_deriv);
|
mod_file->computingPass(no_tmp_terms, output_mode, compute_xrefs, params_derivs_order);
|
||||||
|
|
||||||
// Write outputs
|
// Write outputs
|
||||||
if (output_mode != none)
|
if (output_mode != none)
|
||||||
|
|
|
@ -469,7 +469,7 @@ ModFile::transformPass(bool nostrict)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ModFile::computingPass(bool no_tmp_terms, FileOutputType output, bool compute_xrefs, bool sec_order_param_deriv)
|
ModFile::computingPass(bool no_tmp_terms, FileOutputType output, bool compute_xrefs, int params_derivs_order)
|
||||||
{
|
{
|
||||||
// Mod file may have no equation (for example in a standalone BVAR estimation)
|
// Mod file may have no equation (for example in a standalone BVAR estimation)
|
||||||
if (dynamic_model.equation_number() > 0)
|
if (dynamic_model.equation_number() > 0)
|
||||||
|
@ -489,13 +489,11 @@ ModFile::computingPass(bool no_tmp_terms, FileOutputType output, bool compute_xr
|
||||||
|
|
||||||
const bool static_hessian = mod_file_struct.identification_present
|
const bool static_hessian = mod_file_struct.identification_present
|
||||||
|| mod_file_struct.estimation_analytic_derivation;
|
|| mod_file_struct.estimation_analytic_derivation;
|
||||||
FileOutputType paramsDerivatives = none;
|
int paramsDerivsOrder = 0;
|
||||||
if (mod_file_struct.estimation_analytic_derivation)
|
if (mod_file_struct.identification_present || mod_file_struct.estimation_analytic_derivation)
|
||||||
paramsDerivatives = third;
|
paramsDerivsOrder = params_derivs_order;
|
||||||
if (mod_file_struct.identification_present || !sec_order_param_deriv)
|
|
||||||
paramsDerivatives = first;
|
|
||||||
static_model.computingPass(global_eval_context, no_tmp_terms, static_hessian,
|
static_model.computingPass(global_eval_context, no_tmp_terms, static_hessian,
|
||||||
false, paramsDerivatives, block, byte_code);
|
false, paramsDerivsOrder, block, byte_code);
|
||||||
}
|
}
|
||||||
// Set things to compute for dynamic model
|
// Set things to compute for dynamic model
|
||||||
if (mod_file_struct.perfect_foresight_solver_present || mod_file_struct.check_present
|
if (mod_file_struct.perfect_foresight_solver_present || mod_file_struct.check_present
|
||||||
|
@ -526,12 +524,10 @@ ModFile::computingPass(bool no_tmp_terms, FileOutputType output, bool compute_xr
|
||||||
bool thirdDerivatives = mod_file_struct.order_option == 3
|
bool thirdDerivatives = mod_file_struct.order_option == 3
|
||||||
|| mod_file_struct.estimation_analytic_derivation
|
|| mod_file_struct.estimation_analytic_derivation
|
||||||
|| output == third;
|
|| output == third;
|
||||||
FileOutputType paramsDerivatives = none;
|
int paramsDerivsOrder = 0;
|
||||||
if (mod_file_struct.estimation_analytic_derivation)
|
if (mod_file_struct.identification_present || mod_file_struct.estimation_analytic_derivation)
|
||||||
paramsDerivatives = third;
|
paramsDerivsOrder = params_derivs_order;
|
||||||
if (mod_file_struct.identification_present || !sec_order_param_deriv)
|
dynamic_model.computingPass(true, hessian, thirdDerivatives, paramsDerivsOrder, global_eval_context, no_tmp_terms, block, use_dll, byte_code, compute_xrefs);
|
||||||
paramsDerivatives = first;
|
|
||||||
dynamic_model.computingPass(true, hessian, thirdDerivatives, paramsDerivatives, global_eval_context, no_tmp_terms, block, use_dll, byte_code, compute_xrefs);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // No computing task requested, compute derivatives up to 2nd order by default
|
else // No computing task requested, compute derivatives up to 2nd order by default
|
||||||
|
|
|
@ -132,8 +132,8 @@ public:
|
||||||
//! Execute computations
|
//! Execute computations
|
||||||
/*! \param no_tmp_terms if true, no temporary terms will be computed in the static and dynamic files */
|
/*! \param no_tmp_terms if true, no temporary terms will be computed in the static and dynamic files */
|
||||||
/*! \param compute_xrefs if true, equation cross references will be computed */
|
/*! \param compute_xrefs if true, equation cross references will be computed */
|
||||||
/*! \param sec_order_param_deriv if true, compute second order param derivatives*/
|
/*! \param params_derivs_order compute this order of derivs wrt parameters */
|
||||||
void computingPass(bool no_tmp_terms, FileOutputType output, bool compute_xrefs, bool sec_order_param_deriv);
|
void computingPass(bool no_tmp_terms, FileOutputType output, bool compute_xrefs, int params_derivs_order);
|
||||||
//! Writes Matlab/Octave output files
|
//! Writes Matlab/Octave output files
|
||||||
/*!
|
/*!
|
||||||
\param basename The base name used for writing output files. Should be the name of the mod file without its extension
|
\param basename The base name used for writing output files. Should be the name of the mod file without its extension
|
||||||
|
|
|
@ -1657,9 +1657,9 @@ ModelTree::sparseHelper(int order, ostream &output, int row_nb, int col_nb, Expr
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ModelTree::computeParamsDerivatives(FileOutputType paramsDerivatives)
|
ModelTree::computeParamsDerivatives(int paramsDerivsOrder)
|
||||||
{
|
{
|
||||||
if (!(paramsDerivatives == first || paramsDerivatives == second || paramsDerivatives == third))
|
if (!(paramsDerivsOrder == 1 || paramsDerivsOrder == 2))
|
||||||
return;
|
return;
|
||||||
set<int> deriv_id_set;
|
set<int> deriv_id_set;
|
||||||
addAllParamDerivId(deriv_id_set);
|
addAllParamDerivId(deriv_id_set);
|
||||||
|
@ -1677,7 +1677,7 @@ ModelTree::computeParamsDerivatives(FileOutputType paramsDerivatives)
|
||||||
residuals_params_derivatives[make_pair(eq, param)] = d1;
|
residuals_params_derivatives[make_pair(eq, param)] = d1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (paramsDerivatives == second || paramsDerivatives == third)
|
if (paramsDerivsOrder == 2)
|
||||||
for (first_derivatives_t::const_iterator it2 = residuals_params_derivatives.begin();
|
for (first_derivatives_t::const_iterator it2 = residuals_params_derivatives.begin();
|
||||||
it2 != residuals_params_derivatives.end(); it2++)
|
it2 != residuals_params_derivatives.end(); it2++)
|
||||||
{
|
{
|
||||||
|
@ -1704,7 +1704,8 @@ ModelTree::computeParamsDerivatives(FileOutputType paramsDerivatives)
|
||||||
jacobian_params_derivatives[make_pair(eq, make_pair(var, param))] = d2;
|
jacobian_params_derivatives[make_pair(eq, make_pair(var, param))] = d2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (paramsDerivatives == second || paramsDerivatives == third)
|
if (paramsDerivsOrder == 2)
|
||||||
|
{
|
||||||
for (second_derivatives_t::const_iterator it2 = jacobian_params_derivatives.begin();
|
for (second_derivatives_t::const_iterator it2 = jacobian_params_derivatives.begin();
|
||||||
it2 != jacobian_params_derivatives.end(); it2++)
|
it2 != jacobian_params_derivatives.end(); it2++)
|
||||||
{
|
{
|
||||||
|
@ -1719,7 +1720,6 @@ ModelTree::computeParamsDerivatives(FileOutputType paramsDerivatives)
|
||||||
jacobian_params_second_derivatives[make_pair(eq, make_pair(var, make_pair(param1, param)))] = d2;
|
jacobian_params_second_derivatives[make_pair(eq, make_pair(var, make_pair(param1, param)))] = d2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (paramsDerivatives == third)
|
|
||||||
for (second_derivatives_t::const_iterator it2 = second_derivatives.begin();
|
for (second_derivatives_t::const_iterator it2 = second_derivatives.begin();
|
||||||
it2 != second_derivatives.end(); it2++)
|
it2 != second_derivatives.end(); it2++)
|
||||||
{
|
{
|
||||||
|
@ -1735,6 +1735,7 @@ ModelTree::computeParamsDerivatives(FileOutputType paramsDerivatives)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ModelTree::computeParamsDerivativesTemporaryTerms()
|
ModelTree::computeParamsDerivativesTemporaryTerms()
|
||||||
|
|
|
@ -177,7 +177,7 @@ protected:
|
||||||
/*! \param vars the derivation IDs w.r. to which derive the 2nd derivatives */
|
/*! \param vars the derivation IDs w.r. to which derive the 2nd derivatives */
|
||||||
void computeThirdDerivatives(const set<int> &vars);
|
void computeThirdDerivatives(const set<int> &vars);
|
||||||
//! Computes derivatives of the Jacobian and Hessian w.r. to parameters
|
//! Computes derivatives of the Jacobian and Hessian w.r. to parameters
|
||||||
void computeParamsDerivatives(FileOutputType paramsDerivatives);
|
void computeParamsDerivatives(int paramsDerivsOrder);
|
||||||
//! Write derivative of an equation w.r. to a variable
|
//! Write derivative of an equation w.r. to a variable
|
||||||
void writeDerivative(ostream &output, int eq, int symb_id, int lag, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms) const;
|
void writeDerivative(ostream &output, int eq, int symb_id, int lag, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms) const;
|
||||||
//! Computes temporary terms (for all equations and derivatives)
|
//! Computes temporary terms (for all equations and derivatives)
|
||||||
|
|
|
@ -1047,7 +1047,7 @@ StaticModel::collect_first_order_derivatives_endogenous()
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
StaticModel::computingPass(const eval_context_t &eval_context, bool no_tmp_terms, bool hessian, bool thirdDerivatives, FileOutputType paramsDerivatives, bool block, bool bytecode)
|
StaticModel::computingPass(const eval_context_t &eval_context, bool no_tmp_terms, bool hessian, bool thirdDerivatives, int paramsDerivsOrder, bool block, bool bytecode)
|
||||||
{
|
{
|
||||||
initializeVariablesAndEquations();
|
initializeVariablesAndEquations();
|
||||||
|
|
||||||
|
@ -1095,10 +1095,10 @@ StaticModel::computingPass(const eval_context_t &eval_context, bool no_tmp_terms
|
||||||
computeThirdDerivatives(vars);
|
computeThirdDerivatives(vars);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (paramsDerivatives != none)
|
if (paramsDerivsOrder > 0)
|
||||||
{
|
{
|
||||||
cout << " - derivatives of Jacobian/Hessian w.r. to parameters" << endl;
|
cout << " - derivatives of Jacobian/Hessian w.r. to parameters" << endl;
|
||||||
computeParamsDerivatives(paramsDerivatives);
|
computeParamsDerivatives(paramsDerivsOrder);
|
||||||
|
|
||||||
if (!no_tmp_terms)
|
if (!no_tmp_terms)
|
||||||
computeParamsDerivativesTemporaryTerms();
|
computeParamsDerivativesTemporaryTerms();
|
||||||
|
|
|
@ -162,9 +162,9 @@ public:
|
||||||
\param eval_context evaluation context for normalization
|
\param eval_context evaluation context for normalization
|
||||||
\param no_tmp_terms if true, no temporary terms will be computed in the static files
|
\param no_tmp_terms if true, no temporary terms will be computed in the static files
|
||||||
\param hessian whether 2nd derivatives w.r. to exo, exo_det and endo should be computed
|
\param hessian whether 2nd derivatives w.r. to exo, exo_det and endo should be computed
|
||||||
\param paramsDerivatives whether 2nd derivatives w.r. to a pair (endo/exo/exo_det, parameter) should be computed
|
\param paramsDerivsOrder order of derivatives w.r. to a pair (endo/exo/exo_det, parameter) to be computed
|
||||||
*/
|
*/
|
||||||
void computingPass(const eval_context_t &eval_context, bool no_tmp_terms, bool hessian, bool thirdDerivatices, FileOutputType paramsDerivatives, bool block, bool bytecode);
|
void computingPass(const eval_context_t &eval_context, bool no_tmp_terms, bool hessian, bool thirdDerivatices, int paramsDerivsOrder, bool block, bool bytecode);
|
||||||
|
|
||||||
//! Adds informations for simulation in a binary file for a block decomposed model
|
//! Adds informations for simulation in a binary file for a block decomposed model
|
||||||
void Write_Inf_To_Bin_File_Block(const string &static_basename, const string &bin_basename, const int &num,
|
void Write_Inf_To_Bin_File_Block(const string &static_basename, const string &bin_basename, const int &num,
|
||||||
|
|
Loading…
Reference in New Issue