Sébastien Villemot
46cc47266b
Refactor parsing of symbol lists
...
For symbol lists (such as those given to “var” or “stoch_simul”), return a
semantic value at the Bison level, rather than building the list through a
temporary object in ParsingDriver. This allows various simplifications, and
leads to a more functional code.
By the way, homogeneize the naming of the various flavours of symbol lists in
the Bison file (with TeX names, partitioning, or with a wildcard).
2022-03-29 14:59:34 +02:00
Sébastien Villemot
7fff8b3406
Fix detection of nonlinearity of blocks of type “Solve backward/forward simple”
...
They were always marked as linear.
2022-03-15 16:47:03 +01:00
Sébastien Villemot
9db21a231c
Handle “resid” command at the preprocessor level and add “non_zero” option
2022-03-01 14:23:18 +01:00
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