Commit Graph

3039 Commits (11a81e304711b73c2d862e19d925fad8078f3dba)

Author SHA1 Message Date
Sébastien Villemot 11a81e3047
Add a couple of missing “explicit” keywords on single-argument constructors 2022-03-01 12:15:03 +01:00
Sébastien Villemot 17c5e1935d
Fix error message when “ramsey_policy” follows a “ramsey_model” statement
By the way, also fix error message when there are several “ramsey_model” or
“ramsey_policy” statements.

Closes: #90
2022-02-21 16:45:56 +01:00
Sébastien Villemot b78ac1d31f
Bytecode: fix temporary terms for dynamic derivatives in “evaluate” mode
The temporary terms for dynamic derivatives were only computed in the
“simulate” mode.
2022-02-18 12:38:06 +01:00
Sébastien Villemot cb78300e95
Transform predetermined variables before simplifying equations
Equation simplification takes leads/lags into account, so those need to be
correct upon entry of the procedure.
2022-02-17 18:27:08 +01:00
Sébastien Villemot c03f4a559a
Fix JSON output when there are multiple “var_expectation_model” statements
Ref. Madysson/estimation-codes#19
2022-02-15 20:58:36 +01:00
Sébastien Villemot 7df6781982
Add interface for “static” and “incidence” options of “model_info” 2022-02-09 12:26:00 +01:00
Sébastien Villemot adab6c7f93
Comment improvement + cosmetics 2022-01-28 17:24:48 +01:00
Sébastien Villemot 01bea3f5e7
TCM: remove useless 3rd dimension of A0 and A0star (supposedly for lags) 2022-01-28 16:38:50 +01:00
Sébastien Villemot 1e77f7c5a7
SymbolTable::getOrigSymbIdForAuxVar() now also works on unaryOp and diffForward auxvars
This is a more natural semantics.

Incidentally, this fixes a bug in the variable mapping (M_.mapping) where some
endogenous, appearing in a log() in a VAR or TCM, would not be mentioned (e.g.
in the var-expectations/7/example1.mod test, and many others).
2022-01-28 16:30:11 +01:00
Sébastien Villemot 28f89261ab
Minor simplification of SymbolTable::addDiffAuxiliaryVar()
For symmetry with SymbolTable::addUnaryOpAuxiliaryVar().
2022-01-28 16:01:44 +01:00
Sébastien Villemot a93e264c2c
Harmonize “diffForward” auxvar with “diff” auxvar by giving it an orig_lead_lag as well
By the way:
– Fix and improve the explanation of the purpose of the orig_symb_id and
  orig_lead_lag fields for auxvars
– Factorize the code that prints those fields in MATLAB and JSON output
2022-01-28 15:53:41 +01:00
Sébastien Villemot 289b4773d7
Fix matching of diff leads/lags in TCM and PAC models
The logic was flawed in several ways. In particular, the test files
pac/trend-component-{3,10,11}/example1.mod would return A0 and A0star matrices
where the (2,2) element was incorrectly zero.
2022-01-28 15:53:41 +01:00
Sébastien Villemot b709da7f17
Fix SymbolTable’s getOrigSymbIdForAuxVar() and getUltimateOrigSymbID() so that they never return -1
The case of a diff aux var corresponding to a complex expression was not
correctly handled, and could lead to a value -1 being returned by these
methods.
2022-01-28 15:53:39 +01:00
Sébastien Villemot 2c84d500d9
Add GDB pretty-printer for ExprNode class hierarchy 2022-01-26 15:40:40 +01:00
Sébastien Villemot ff0e094d6f
Macroprocessor: MinGW bug for filesystem::path→string implicit conversion is still present in Debian 11 2022-01-25 12:57:12 +01:00
Sébastien Villemot 3d894b3a47
Macroprocessor: under Windows, trim trailing slashes and backslashes in the value of “@#includepath”
This is a  workaround for a GCC/MinGW bug present in version 10.2
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88881), that affects
gcc-mingw-w64 in Debian “Bullseye” 11. It is fixed in GCC 10.3, and thus should
be fixed in Debian “Bookworm” 12.

Ref. Madysson/estimation-codes#11
2022-01-25 12:57:09 +01:00
Sébastien Villemot 6936e54d42
Remove unused field M_.pac.(model_name).lhs
It contains symbol IDs, so it cannot be used from MATLAB/Octave code.
2022-01-25 10:34:46 +01:00
Stéphane Adjemian (Charybdis) c56d58822e
Get the value of periods returned by the initval_file command. 2022-01-21 16:43:46 +01:00
Stéphane Adjemian (Charybdis) ddddf89d9c
Add new option last_simulation_period for initval_file command. 2022-01-21 16:43:46 +01:00
Sébastien Villemot 5e8b478ccf
Add check to ensure that column indices in derivative matrices do not overflow
Closes: #89
2022-01-21 14:31:29 +01:00
Sébastien Villemot f17c40f272
Cosmetics 2022-01-21 11:31:35 +01:00
Sébastien Villemot 6c7c2bc321
Simplification using std::set range constructor 2022-01-21 11:05:17 +01:00
Sébastien Villemot 49fa876444
Add missing “time_shift” option to JSON output of var_expectation_model 2022-01-20 16:26:17 +01:00
Sébastien Villemot aa0e06bc7d
Refactor handling of var_expectation_model statements
Creates a VarExpectationModelTable analogous to PacModelTable.
2022-01-20 16:26:15 +01:00
Sébastien Villemot e1e5118373
Refactor the code that substitutes unary ops in model equations
In particular, make it more visible that the substitution also occurs in PAC
equations (and not only in VAR and TCM equations).
2022-01-19 15:56:44 +01:00
Sébastien Villemot 96e2a8f971
Fix orig_lead_lag field for diff lag aux vars 2022-01-19 15:52:46 +01:00
Sébastien Villemot a71100b971
Fix comment 2022-01-19 15:41:37 +01:00
Sébastien Villemot 0d7d5f1ae7
In case of nested unary ops (e.g. log(log())), ensure that the definition of the external aux var references the internal aux var 2022-01-19 15:40:52 +01:00
Sébastien Villemot 064a3dcd77
Fix orig_lead_lag field for unary op auxiliary variables
Ref. dynare#1843
2022-01-19 15:40:24 +01:00
Sébastien Villemot d149d3a76c
PAC: substitute unary ops in “growth” expressions (in “pac_model” and “pac_target_info”)
Ref. dynare#1837
2022-01-18 12:40:15 +01:00
Sébastien Villemot f05b552f31
PAC: correctly handle log() and diff() operators in the equation defining the target
By default, the preprocessor substitutes logs and diffs by auxiliary variables
only in equations of auxiliary models (VAR, PAC). Hence they are not
substituted in the equation defining the target, since it is outside the
auxiliary model.

The fix consists in doing the substitution in that equation as well, when we
parse the linear combination within that equation.

Ref. dynare#1837
2022-01-17 12:57:37 +01:00
Sébastien Villemot 8c528f4f9a
Add missing include
(“endl” is defined in “ostream”)
2022-01-06 14:55:57 +01:00
Sébastien Villemot 0db05a886a
Move “using namespace std” statement after inclusion of standard headers
Otherwise clang emits this warning:
 using directive refers to implicitly-defined namespace 'std'
2022-01-06 14:54:57 +01:00
Sébastien Villemot 75a26b6d11
Remove unused member in the RamseyPolicyStatement class 2022-01-06 14:47:34 +01:00
Sébastien Villemot 5572e478f1
Indentation fix 2022-01-06 14:46:38 +01:00
Sébastien Villemot ebf7b6c51d
Clang compatibility fix 2022-01-06 14:35:39 +01:00
Sébastien Villemot 3417fb716f
Update copyright years
[skip ci]
2022-01-04 13:53:39 +01:00
Sébastien Villemot a8fce06dc4
PAC: new options “auxname” and “kind” to “pac_model” 2021-12-16 15:40:47 +01:00
Sébastien Villemot ea6fb40db7
PAC: new “pac_target_info” block and “pac_target_nonstationary” operator
Ref. Madysson/estimation-codes#5
2021-12-16 15:40:47 +01:00
Sébastien Villemot 6a31ba4b62
PAC: minor simplification in the matching of the growth expression
Simple variable nodes are already correctly matched by
ExprNode::matchLinearCombinationOfVariables().

Also improve the related documentation.
2021-12-16 15:40:47 +01:00
Sébastien Villemot 7dde09169e
estimated_params: check that no parameter is declared twice across concatenated blocks
The existing check (in AbstractEstimatedParamsStatement::commonCheckPass()) was
only working inside a given estimated_params block, but not across blocks.
2021-12-16 15:22:48 +01:00
Sébastien Villemot ea44aa19d6
New option “overwrite” to “estimated_params” block
This option provides the same behaviour as before the change in
60ef6bbdbd.

It is typically useful when doing several estimations in the same .mod file.
2021-12-16 14:22:31 +01:00
Sébastien Villemot 5ffbc5bad3
New estimated_params_remove statement 2021-12-15 16:02:57 +01:00
Sébastien Villemot 06a436fdf0
Minors simplification in EstimatedParams* classes
Also use a better name for the type-specific ID variable.
2021-12-15 16:02:53 +01:00
Sébastien Villemot 342c4faf8d
New var_remove statement 2021-12-15 12:20:29 +01:00
Sébastien Villemot 60ef6bbdbd
Allow multiple estimated_params statements 2021-12-15 12:20:29 +01:00
Sébastien Villemot 2d07186b8b
New model_options statement
The purpose of this statement is to specify the options that apply to the whole
model, when there are several “model” blocks, so as to restore the symmetry
between those blocks (since otherwise one “model” block would typically bear
the options, while the other ones would typically have no option).

It still remains possible to specify the options on one “model” block, or even
spread accross several ones.

Closes: #19
2021-12-15 12:20:14 +01:00
Sébastien Villemot 1f004584e9
New model_remove statement and model_replace block
Factorize the implementation with the existing code for the include_eqs and
exclude_eqs options (which has been refactored by the way).

Ref. #19
2021-12-15 12:11:25 +01:00
Sébastien Villemot a73b0d911a
Fix logic of include_eqs in the presence of [static]/[dynamic] equations
In a model with [static]/[dynamic] equations, if the user was using include_eqs
with a list of equations that does *not* contain equations marked
[static]/[dynamic], then the call to ModelTree::includeExcludeEquations(…,
static_equations=true) would have an empty list of equation tags (as stored
in tag_eqns).

The right behaviour in this case is to exclude all static equations. However,
the code would exclude none, and this would disrupt the equilibrium between
[static] and [dynamic] equations (since all [dynamic] equations were excluded
by the other call to the same method).

The fix consists in removing the shortcut that returns from the method if
tag_eqns is empty.
2021-12-10 12:50:10 +01:00
Sébastien Villemot a492417a5b
Fix typo 2021-12-10 12:44:42 +01:00