Sébastien Villemot
39926133b8
More automatic modernizations with clang-tidy
2019-04-03 16:46:20 +02:00
Sébastien Villemot
8a41a75c85
Apply modernize-raw-string-literal from clang-tidy
...
Use ReplaceShorterLiterals option to enforce replacement of all strings.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-raw-string-literal.html
2019-04-03 16:45:52 +02:00
Houtan Bastani
6ba31087ab
add check for parameter_set option to conditional_forecast
2019-04-03 14:26:02 +02:00
Houtan Bastani
92ada8e7e9
fix bug in writing of JSON output in options list
2019-03-29 17:30:39 +01:00
Houtan Bastani
7b6f23c55a
conditional_forecast_paths: add support to write JSON output
2019-03-29 17:30:39 +01:00
Sébastien Villemot
8dad93964d
Allow linear combination of targets in error correction term of trend component models
2019-03-29 17:06:24 +01:00
Sébastien Villemot
9bc6c57a5c
Factorization: create new utility SymbolTable::getUltimateOrigSymbID()
2019-03-29 17:06:24 +01:00
Sébastien Villemot
9b98da424a
Simplification in BinaryOpNode::getPacAREC()
2019-03-29 17:06:24 +01:00
Sébastien Villemot
4114b8a9e1
Simplification in BinaryOpNode::fillAutoregressiveRow
...
By the way, fix bug in detection of duplicate elements.
2019-03-29 17:06:23 +01:00
Sébastien Villemot
5497936e87
VarModelTable,TrendComponentModelTable: minor simplification
2019-03-29 17:06:23 +01:00
Sébastien Villemot
58adbdeddd
Compatibility fix with MATLAB ≤ R2011a
2019-03-26 15:41:48 +01:00
Sébastien Villemot
fd6e700ec7
Simplification: use std::max when computing maxima
2019-03-21 17:24:49 +01:00
Sébastien Villemot
36fa97e5c5
Merge remote-tracking branch 'origin/identification_wmutschl'
2019-03-20 10:48:20 +01:00
Sébastien Villemot
78583135df
Use true/false instead of 1/0 for boolean options
...
This is more elegant, and makes it easier to distinguish them from integer
options.
2019-03-19 15:15:10 +01:00
Sébastien Villemot
7d5e8a16c0
Add new options for identification
...
Ref Dynare/dynare#1648
2019-03-19 11:59:15 +01:00
Sébastien Villemot
1793078ba2
Minor stylistic improvements
2019-03-18 18:49:55 +01:00
Houtan Bastani
92af6ffbe7
pass flag because regex’s on matlab side depend on it
2019-03-15 16:12:54 +01:00
Houtan Bastani
da9f5dcffb
Revert "make pac expectation JSON output like that of var expectation"
...
This reverts commit 21d42e6010
.
2019-03-15 16:11:55 +01:00
Houtan Bastani
21d42e6010
make pac expectation JSON output like that of var expectation
2019-03-15 15:47:50 +01:00
Houtan Bastani
50c26f4945
further simplifications related to AR matrices
2019-03-15 14:35:57 +01:00
Houtan Bastani
f1d1c1e1c1
trend_component_model: simplify AR
2019-03-15 12:27:32 +01:00
Houtan Bastani
a3c08f932e
simplify code to find autoregressive matrix for VARs
2019-03-15 12:26:59 +01:00
Houtan Bastani
0544141545
pac: fix bug when checking for symb_ids
2019-03-15 12:06:10 +01:00
Stéphane Adjemian (Charybdis)
9632b18c24
Add in M_ a list of exogenous variables that needs to be excluded if the model is not used for estimation.
2019-03-14 11:03:02 +01:00
Houtan Bastani
1e21904496
use emplace_back instead of push_back
2019-03-11 15:51:41 +01:00
Sébastien Villemot
d9f7ac4c9b
Fix bug introduced in 7d16fff786
...
Here, emplace() and insert() are not interchangeable because this is a std::set of
std::vector<int>, and we really want the initializer-list constructor of
std::vector (and not the two int's constructor).
Fixes the test deterministic_simulations/lola_solve_one_boundary.mod
2019-03-08 18:57:17 +01:00
Houtan Bastani
fdefb0f52a
move variable initialization out of body
2019-03-08 16:21:01 +01:00
Houtan Bastani
958661b30f
update comment for map
2019-03-08 12:05:56 +01:00
Stéphane Adjemian (Charybdis)
e0acc669bd
Append a list of observed exogenous variables in M_ if varexo option status is used.
2019-03-07 16:55:20 +01:00
Houtan Bastani
69e7763490
pac: change vectors that store additive parts
2019-03-07 12:57:47 +01:00
Houtan Bastani
2201907245
pac: support additive elements whether optimizing agents are present or not
2019-03-07 12:36:08 +01:00
Houtan Bastani
583c8373d7
pac: add residual to additive part
2019-03-07 12:23:19 +01:00
Houtan Bastani
9b1b4113d9
pac: keep order of variables in ec part of pac equation and add scaling factor to output
2019-03-07 11:31:45 +01:00
Houtan Bastani
b0dac547e9
shorten writing of istarget output
2019-03-07 11:31:45 +01:00
Houtan Bastani
14e7c92f14
pac: fix bug in setting of target variable
2019-03-07 11:31:45 +01:00
Sébastien Villemot
bd7a1f4b44
Minor simplifications in the lexers
...
In particular, no need to put both upper and lower case letters in the
patterns, since the lexer is case-insensitive.
The only simplification that we do not perform is removing the quoting of
single quotes (i.e. replacing \' by '), since it confuses the C++ mode of
Emacs.
2019-03-06 13:58:22 +01:00
Houtan Bastani
8502ebfc06
json output: print statements in original model output
2019-03-06 11:43:30 +01:00
Sébastien Villemot
abfe1a70e7
Fix typo
2019-03-05 18:59:40 +01:00
Houtan Bastani
68850536e6
stop processing if we substitute a unary op with a lead. closes #20
2019-03-05 15:20:32 +01:00
Houtan Bastani
7c9f272e15
always substitute diffs of expressions that contain leads. closes #21
2019-03-05 12:43:54 +01:00
Houtan Bastani
a1c79e6a4c
remove code that should have been removed in 9963686e72
2019-03-05 12:33:21 +01:00
Houtan Bastani
9963686e72
handle additive terms when PAC equation does NOT have non/optimizing agents
2019-03-05 12:20:45 +01:00
Houtan Bastani
a3fc7a7752
pac_model: fix input tests
2019-03-04 11:07:06 +01:00
Stéphane Adjemian (Charybdis)
34f02a37e3
Fixed logic in pac_model command.
...
If option aux_model_name is assigned a value, this value must not be
discarded if options growth and steady_state_growth are simultaneously
used.
2019-03-02 16:37:00 +01:00
Houtan Bastani
e56f994d28
pac_model: write growth argument as string
2019-03-01 11:20:26 +01:00
Houtan Bastani
341b9c6667
pac_model: allow diff as argument to growth option
2019-02-28 19:22:34 +01:00
Houtan Bastani
5f013756f2
find additive parts to pac equation
2019-02-27 23:12:05 +01:00
Stéphane Adjemian (Charybdis)
2312ce13dc
Changed non_optimizing_behaviour.type field to non_optimizing_behaviour.isendo.
...
The elements are logicals true/false (true iff corresponding variable is an endogenous variable).
2019-02-27 15:35:19 +01:00
Houtan Bastani
ec21208ed7
pac: specify type of variables in non optimizing part of equation
2019-02-27 15:10:48 +01:00
Houtan Bastani
effa40543e
pac: find correct target variable when pac equation accounts for share of optimizing agents
2019-02-25 18:46:44 +01:00
Sébastien Villemot
3d42e6468d
Octave compatibility fix
2019-02-25 16:56:11 +01:00
Stéphane Adjemian (Charybdis)
abde60fbea
pac: Changed logic of the tests on growth and steady_state_growth options.
2019-02-25 16:21:30 +01:00
Houtan Bastani
64f55e4a5e
pac: declare endogenous variables needed by pac model consistent expectation before the creation of auxiliary variables
2019-02-25 15:29:46 +01:00
Houtan Bastani
36b2ae5026
pac: model consistent expectation: add 1 to max lag from pac equation to obtain correct `m` for substitution
2019-02-25 10:48:53 +01:00
Stéphane Adjemian (Charybdis)
b8f756fa35
Fixed option name in error message.
2019-02-22 23:11:06 +01:00
Sébastien Villemot
8ae7f81fd9
Fix bug with var_expectation nodes introduced in 38152c34a4
...
We must provide a return value for
VarExpectationNode::maxLagWithDiffsExpanded().
Return zero, which will lead to the right overall result even if it is not
strictly the right choice (see the comment in the code).
2019-02-22 17:30:09 +01:00
Houtan Bastani
20690e1664
change ordering of aux vars in enum
2019-02-22 17:15:11 +01:00
Stéphane Adjemian (Charybdis)
6a34603f91
Conform to spelling used in Matlab codes.
2019-02-22 12:31:58 +01:00
Houtan Bastani
d8c9bbc353
ensure that h1/h0_param_indices are created regardless of whether there are parameters or not
2019-02-22 11:52:07 +01:00
Houtan Bastani
4160e48dab
output info relative to A0star column indices
...
(cherry picked from commit 70f73d9bd5232044f3e31f1e4b26425bd149a869)
2019-02-21 12:57:18 +01:00
Sébastien Villemot
7d16fff786
Further simplifications
2019-02-21 12:16:22 +01:00
Sébastien Villemot
be023bdab9
Simplification: the [] operator already inserts the new element
...
See https://en.cppreference.com/w/cpp/container/map/operator_at
2019-02-21 12:15:50 +01:00
Houtan Bastani
f41e681122
use emplace instead of insert and emplace_back instead of push_back
2019-02-21 10:59:53 +01:00
Houtan Bastani
84104a695e
don’t initialize string to empty
2019-02-21 10:53:11 +01:00
Houtan Bastani
520c7fc9b2
use auto instead of specific initializer
2019-02-21 10:52:59 +01:00
Houtan Bastani
469a328cfc
replace make_pair and make_tuple
2019-02-21 10:42:10 +01:00
Houtan Bastani
b09b50472b
pac: fix writing to use modstruct instead of M_
2019-02-20 16:46:52 +01:00
Houtan Bastani
f88682d683
pac: output model type in M_.pac.(model_name)
2019-02-20 16:43:24 +01:00
Houtan Bastani
5e1521f42b
don’t save unnecessary pac model info
2019-02-20 16:38:44 +01:00
Houtan Bastani
240aba6709
move pac info out of pac expectation node
2019-02-20 15:35:13 +01:00
Houtan Bastani
34756833ae
pac: output info into substructures based on pac model name & equation tag
2019-02-19 18:32:42 +01:00
Houtan Bastani
760eaf6712
fix compilation warning
2019-02-19 18:32:42 +01:00
Houtan Bastani
af54c7a187
ensure steady_state_growth option is a parameter or a number
2019-02-19 14:08:37 +01:00
Houtan Bastani
c1cf5c8d18
fix comment
2019-02-19 12:51:05 +01:00
Houtan Bastani
fc6d04b015
create A0 and A0star matrices for trend component models
2019-02-19 12:26:30 +01:00
Houtan Bastani
fe69dced1d
fix check for pac_model growth option introduced in 0ea84fa9a4
2019-02-18 17:23:33 +01:00
Houtan Bastani
0ea84fa9a4
pac: allow steady state growth and model consistent expectation substitution in pac equation
2019-02-18 15:11:45 +01:00
Houtan Bastani
b3fbb86214
relieve constraint that max lag on EC matrix is 1
2019-02-15 11:12:07 +01:00
Houtan Bastani
f4837e6c94
fix AR and EC matrices when `equation = C` results in a simplified equation
2019-02-14 17:09:57 +01:00
Houtan Bastani
6e680c0159
simplify in accordance with 02ae0af3e5
2019-01-29 17:52:19 +01:00
Houtan Bastani
302fec4dec
remove comparisons to nullptr
2019-01-29 17:46:09 +01:00
Houtan Bastani
02ae0af3e5
change map type for readability
2019-01-29 17:43:17 +01:00
Houtan Bastani
1e071ca499
make simplifications in dynamic model before copying to original
2019-01-28 17:53:04 +01:00
Houtan Bastani
90c45b2cd6
remove unused function added in d922ae8ffc
2019-01-28 15:34:38 +01:00
Houtan Bastani
f5df7e7567
when an equation is of the form `X` = `constant`, replace all occurrences of `X` in other equations with `constant`
2019-01-28 15:32:12 +01:00
Sébastien Villemot
c5fc2e38c1
Simplify log(1/x) into -log(x) (and similarly for log10)
2019-01-28 15:15:58 +01:00
Houtan Bastani
71be51c464
pac_growth: ensure symbol has been declared
2019-01-28 10:45:48 +01:00
Houtan Bastani
d922ae8ffc
pac_model: permit lag on growth option
2019-01-25 14:52:26 +01:00
Houtan Bastani
9c95bfa33f
fix typos
2019-01-18 12:48:45 +01:00
Houtan Bastani
027b59b449
fix typos
2019-01-18 12:36:19 +01:00
Houtan Bastani
a3e7547857
fix bug when defining variable with value on the command line with -D option (problem introduced in ee5fc6b16b
)
2019-01-16 11:51:14 +01:00
Sébastien Villemot
e7c9c26d2d
More modernizations with clang-tidy
2019-01-15 11:08:47 +01:00
Sébastien Villemot
4f9b384984
Use C++11 override keyword
2019-01-09 15:43:46 +01:00
Houtan Bastani
4c71d143f3
substitute leads/lags appropriately when identification or sensitivity statements are present. Issue: https://git.dynare.org/Dynare/dynare/issues/1631
2019-01-09 14:48:25 +01:00
Houtan Bastani
280b764ca5
onlymodel: read estimated_params block as well
2018-12-27 19:07:51 +01:00
Houtan Bastani
7d37c35a3d
onlymodel: read initval and endval too
2018-12-27 12:06:39 +01:00
Sébastien Villemot
f2b0bdf0a2
Fix bug when histval is used and there is no auxiliary variable
...
Problem introduced in a69c65361c
.
2018-12-20 17:45:54 +01:00
Sébastien Villemot
01385d1f80
Simplify implementation of nopreprocessoroutput option
...
Simply redirect cout to /dev/null, instead of propagating a boolean
everywhere.
2018-12-20 17:08:45 +01:00
Sébastien Villemot
5784dce1ca
Remove the possibility of passing the mod-file as a string in the first shell argument
...
This feature is ill-designed and no longer needed by the GUI. And is not very
useful: it is not possible to interact with the preprocessor without using the
filesystem, since the preprocessor creates many files anyways.
If we really need to reimplement such a feature, it should rather be redesigned
by reading the modfile from standard input (cin). That could be triggered by
using "-" as the filename argument (as is already done by several standard Unix
utilities).
2018-12-20 17:08:05 +01:00
Sébastien Villemot
b2e3a481e3
Fix for histval with auxiliary lead variables corresponding to non-linear terms
...
The M_.params structure was not correctly passed to
dynamic_set_auxiliary_series.m, leading to crashes if a parameter was needed to
compute an auxiliary variable (typically an auxiliayr lead variable
corresponding to a non-linear term in stochastic setup).
2018-12-20 15:05:18 +01:00
Sébastien Villemot
a69c65361c
Fix ramsey_policy with histval
...
Since 38152c34a4
, the M_.endo_histval variable is
generated via dynamic_set_auxiliary_dseries.m. But the latter file does not
handle auxiliary variables for Lagrange multiplier. We therefore now set them
by hand (at an initial value of zero).
2018-12-20 15:05:18 +01:00
Sébastien Villemot
9e66627375
Fix for histval block in the presence of auxiliary lead variables
...
Since 38152c34a4
, the M_.endo_histval variable is
generated via dynamic_set_auxiliary_dseries.m. The problem is that, for
auxiliary variables corresponding to a lead, this will generate a NaN in
M_.endo_histval. This is conceptually correct, since such variables are never
used as initial conditions, but this is inconsistent with what we do with the
"initval" block, and leads to crashes in some routines where we fail when there
is a NaN. Therefore, replace these with a zero, as it used to be.
2018-12-20 15:05:17 +01:00
Stéphane Adjemia (Scylla)
8b81474a2e
On macOS use gcc-7 from homebrew instead of gcc-clang.
...
To install this version of gcc:
~$ brew install gcc@7
Does not seem to work with gcc-8 (missing headers…).
2018-12-20 14:38:37 +01:00
Houtan Bastani
ea76bc8636
epilogue: use different syntax for firstobservedperiod call
2018-12-19 16:20:30 +01:00
Sébastien Villemot
1393bf1d7e
Parse the options list at the top of the mod-file
...
Ref Dynare/dynare#1630
2018-12-19 16:14:40 +01:00
Houtan Bastani
bb624ec6a7
epilogue: allow for simulations in epilogue block
2018-12-19 16:09:30 +01:00
Sébastien Villemot
38152c34a4
Make histval compatible with diff operator
...
The idea is to make use of the dynamic_set_auxiliary_dseries.m file to generate
the initial conditions for all auxiliary variables, including the diffs.
Also remove the check done by the preprocessor for the lags in histval, since
it does not work correctly with the diff operator.
2018-12-11 17:32:05 +01:00
Houtan Bastani
aad8414f94
allow the use of previously assigned variables in epilogue block in later equations in epilogue block
2018-12-10 16:30:19 +01:00
Houtan Bastani
9d3f104b8c
fix epilogue block
2018-12-10 12:27:27 +01:00
Sébastien Villemot
82b1467074
Improve consistency of ExprNode methods for calculating max lead/lag
...
- ExprNode::maxLag() and ExprNode::maxLead() now take into account exogenous
deterministic variables, for consistency with M_.maximum_{lead,lag}
- ExprNode::maxLag() no longer behaves as if diff() operators were
expanded (i.e. it now returns 1 on diff(x(-1))), for consistency with
maxEndoLag() and maxExoLag()
- New ExprNode::maxLagWithDiffsExpanded() method, that behaves as maxLag() used
to behave (except that it also takes exogenous deterministic into account)
2018-12-05 15:30:03 +01:00
Sébastien Villemot
fe6d4e9bca
Modify semantics of ExprNode::countDiffs()
...
Previously, this function was counting the total number of diff() operators in
an expression. But this is not very useful, and is potentially misleading,
because in practice we use this function to compute the maximum lag on
variables in levels.
This function now returns the maximum number of nested diffs.
For example, on diff(x)+diff(diff(y)), this function was returning 3, and it
now returns 2.
2018-12-05 12:41:13 +01:00
Sébastien Villemot
66a766b0b7
Small modernization
2018-12-04 18:41:04 +01:00
Sébastien Villemot
8bda21c504
Remove workaround for Bison 3.2
...
This was a bug, now fixed in Bison 3.2.2. The latter version is now available
on most platforms (Debian unstable/testing, Homebrew, MSYS2).
2018-12-04 17:10:34 +01:00
Sébastien Villemot
018068de91
Fix typo
2018-12-03 17:29:53 +01:00
Sébastien Villemot
a08ce3de2b
Yet more simplifactions using std::tuple
2018-12-03 16:07:13 +01:00
Sébastien Villemot
571b5d0816
Computation of temporary terms generalized to any derivation order
2018-11-30 12:22:13 +01:00
Sébastien Villemot
67ac4bf8ea
Allow diff() and log() in "expression" option of var_expectation_model
2018-11-29 16:01:49 +01:00
Sébastien Villemot
e9341c7153
Implement option "expression" of var_expectation_model
...
The data structure written in the driver file is changed also in the case of
the "variable" option.
2018-11-28 17:33:59 +01:00
Sébastien Villemot
b88e0de53f
Remove useless accessor methods for data members that are const in ExprNode classes
...
Those const data members are simply made public.
2018-11-28 14:35:30 +01:00
Sébastien Villemot
cac65b071e
Fix visibility of matchVTCTPHelper method in subclasses of ExprNode
2018-11-28 14:18:08 +01:00
Houtan Bastani
41af0841c3
extend nopreprocessoroutput option to substitution output
2018-11-28 11:53:50 +01:00
Sébastien Villemot
16a97a96fd
Rewrite engine for matching the non-optimizing agents part in PAC
...
The engine is now more robust and should reject any expression that does not
conform to the expected form. It is also able to deal with more cases, such as
terms appearing with a minus sign, or variables in the middle of a
three-factors product.
BTW, use a std::tuple for storing the result of the matching inside
PacExpectationNode, and change the order of components within the
structure (variable first, scalar last).
2018-11-27 19:03:35 +01:00
Sébastien Villemot
003df49e7d
Remove useless "virtual" keyword in various ExprNode methods
2018-11-27 09:50:41 +01:00
Sébastien Villemot
fa039b8c41
Fix bug in block decomposition with treatment of varexo_det
2018-11-23 17:39:18 +01:00
Sébastien Villemot
d733f3fb5a
Various simplifications and modernizations of the block/bytecode part
2018-11-23 17:19:59 +01:00
Sébastien Villemot
fc9cc2dc50
Output symmetric elements in derivatives of hessian w.r.t. parameters
...
The preprocessor now writes all the symmetric elements in the "hp"
matrix (derivatives of the hessian w.r.t. parameters), for consistency with all
other derivatives output.
Previously it was only writing one of the two symmetric elements, when indices
of endogenous were different.
2018-11-22 17:51:14 +01:00
Sébastien Villemot
e3a3992c1c
Derivation engine w.r.t. parameters generalized to any order
...
Also, no longer compute two times symmetric elements in derivation w.r.t.
parameters at order 2, for consistency with derivation w.r.t. endogenous.
It is therefore now necessary to duplicate them in the output to keep behavior
unchanged.
2018-11-22 17:13:55 +01:00
Sébastien Villemot
6fa115aedd
Derivation engine w.r.t. endogenous generalized to any order
2018-11-22 17:13:55 +01:00
Sébastien Villemot
b7d50560f8
Move ModelTree constructor up in the file for clarity
2018-11-22 17:13:55 +01:00
Sébastien Villemot
dfe1a005af
Bison bug has been fixed in 3.2.2
2018-11-22 11:46:36 +01:00
Sébastien Villemot
fb883bbfb0
Small simplification of Bison file
...
Thanks to Akim Demaille for the suggestion.
2018-11-21 14:38:06 +01:00
Sébastien Villemot
f01c4f85c2
Fix Julia bug introduced in previous commit
2018-11-19 16:39:05 +01:00
Sébastien Villemot
33994dde03
Optimization for use_dll at 2nd and 3rd order
...
When creating the sparse matrix (in MATLAB or C mode), since storage is in
column-major order, output the first column, then the second, then the third.
This gives a significant performance boost in use_dll mode (at both compilation
and runtime), because it facilitates memory accesses and expression reusage.
2018-11-19 16:03:47 +01:00
Sébastien Villemot
b524e19cde
Remove duplicate storage of temp terms for params derivs in ModelTree
2018-11-16 18:26:36 +01:00
Sébastien Villemot
e9b5f239df
Properly deal with model local variables in params derivatives file
...
Closes #13
2018-11-16 18:26:11 +01:00
Sébastien Villemot
3d2125287a
Temporary terms: various simplifications and added comments
2018-11-16 17:11:06 +01:00
Sébastien Villemot
e89dd9cb8b
Make storage of derivatives ready for k-order
...
This is the first step towards computing k-order derivatives.
Ref Dynare/dynare#217, #10
2018-11-15 17:48:46 +01:00
Houtan Bastani
3eff2b91c2
rename ds variable in epilogue to a longer name
2018-11-15 15:04:02 +01:00
Houtan Bastani
a8c7fb694b
fix typo
2018-11-15 14:48:31 +01:00
Houtan Bastani
987465365c
Revert "macroprocessor: allow inline comments. closes #1550"
...
This reverts commit 17dd443341
.
2018-11-15 12:34:05 +01:00
Houtan Bastani
eca82834a1
Revert "Fix parsing of empty strings in macro-processor"
...
This reverts commit 158f027db2
.
2018-11-15 12:33:59 +01:00
Houtan Bastani
8e1cb261c5
Revert "only allow inline comments on statement lines. #4"
...
This reverts commit 3776e3b890
.
2018-11-15 12:24:40 +01:00
Houtan Bastani
989532a6a2
add `string`, vec_str key/value option to posterior_sampler_options
2018-11-09 15:11:15 +01:00
Sébastien Villemot
e22aa1c162
Compatibility issue with Bison 3.2
2018-11-08 15:01:43 +01:00
Houtan Bastani
5f5fd569dd
add onlymodel command line option
2018-11-07 15:35:03 +01:00
Sébastien Villemot
beb99d98cd
Build system improvements for MSYS2
...
On Windows/MinGW, use the -static linking flag. This enforces static linking of
Boost libraries, which is needed on MSYS2.
Also, use AM_CXXFLAGS and AM_LDFLAGS variables for changing flags, since
CXXFLAGS and LDFLAGS are user variables.
2018-11-06 12:14:49 +01:00
Sébastien Villemot
f223af91af
Improve the fix in 366701c094
...
Now both x+(-y) and (-x)+y are simplified using a minus operator.
Also simplify some code using std::swap().
2018-11-05 12:31:12 +01:00
Sébastien Villemot
366701c094
Apply x+(-y) ⇒ x-y simplification even when x and y are permuted
...
Incidentally, this fixes an issue in DataTree::operator=(), where this would
cause to the copy to have a different number of nodes than the original.
2018-11-05 11:28:00 +01:00
Sébastien Villemot
ee5fc6b16b
Simplify parsing of options using C++ strings
2018-10-31 11:17:26 +01:00
Houtan Bastani
08caaa0744
backslashes not used in escape sequences are not allowed in strings in Julia v1.0
...
See: https://github.com/JuliaLang/julia/issues/21284
2018-10-30 12:14:26 +01:00
Sébastien Villemot
b337a5aec0
Fix usage
2018-10-29 14:55:02 +01:00
Sébastien Villemot
4a974bb428
The preprocessor now compiles the MEX when use_dll is specified
...
New options "mexext" and "matlabroot" are introduced, so that the preprocessor
knows where to find MATLAB and which architecture to compile for.
Only recent gcc is now supported. A set of optimization flags is used so that
compilation goes reasonably fast on large models.
Consequently, options "msvc", "mingw" and "cygwin" have been removed.
2018-10-26 18:09:13 +02:00
Sébastien Villemot
1c33af4844
Fix bug introduced in bfd93f4ac0
with correlations in estim_params
...
For correlations, there is one extra columns (since there are two symbol
indices). MATLAB automatically adds the missing column, while Octave is
stricter when verifying dimensions.
By the way, add a missing comma.
2018-10-26 11:11:10 +02:00
Stéphane Adjemia (Scylla)
bfd93f4ac0
Fixed estimated_params_init behaviour...
...
... when an initial value is given to a parameter that is not
estimated.
The generated driver file was crashing with cryptic error message
because we were searching in the first (and second) column of a
potentially empty array with 0 columns. The fix is to initialize the
fields of estimated_params_ with empty arrays with 10 columns (ie
zeros(0, 10)). Also print a message in the matlab command window if
parameter declared in estimated_params_init is not estimated.
2018-10-25 10:24:25 +02:00
Houtan Bastani
bef7c2a193
remove need to declare equations nonstationary
2018-10-24 16:04:51 +02:00
Houtan Bastani
9968f5c971
fix bug in JSON output: JSON values that are decimals must be preceded by a 0
...
e.g. 0.5 is valid but .5 is not.
2018-10-23 14:00:36 +02:00
Houtan Bastani
9eaf39235e
write aux_unary_op function to output
2018-10-15 12:04:53 +02:00
Houtan Bastani
55b625b016
undiff expansion of var_expectation
2018-10-12 15:21:03 +02:00
Sébastien Villemot
1089a223c4
Clean up default constructors/destructors
2018-10-11 17:08:44 +02:00
Sébastien Villemot
ac94ad906e
Various fixes for silencing errors and warnings under Clang 6
2018-10-11 11:21:58 +02:00
Sébastien Villemot
bcdfb43fd3
Replate DynamicModel::toStatic() by a converting constructor in StaticModel
...
It is therefore now possible to write:
static_model = static_cast<StaticModel>(dynamic_model);
2018-10-10 17:08:54 +02:00
Sébastien Villemot
0e7d831e6f
Remove redundant private keyword
2018-10-10 17:08:10 +02:00
Sébastien Villemot
52ce0d8ba9
Fix bug with discretionary_policy
...
Since, in this case, there are less equations than endogenous, the
variable_reordered structure was not filled with enough element, leading to an
invalid memory read when printing M_.state_var.
Ref #637
2018-10-10 17:08:01 +02:00
Sébastien Villemot
63a5ffb761
Rename ExprNode::cloneDynamic into ExprNode::clone, for clarity
2018-10-10 13:08:11 +02:00
Sébastien Villemot
24f1276b42
Make all DataTree::*_map private
...
Introducing a new DataTree::getVariable() const method was necessary in the process.
2018-10-10 13:03:52 +02:00
Sébastien Villemot
f2cf86b734
Add copy constructors / assignment operators for the DataTree class hierarchy
...
In particular, it is necessary to turn back DataTree::AddVariable() into a
non-virtual method, because it is called from DataTree's constructor. Enforcing
the absence of leads/lags is now done using a new boolean DataTree::is_static.
Take advantage of the new copy constructor for handling
PlannerObjectiveStatement more elegantly.
Unfortunately it is not possible to implement *move* constructor / assigment
operators, because the reference ExprNode::datatree is not mutable.
2018-10-10 12:53:55 +02:00
Sébastien Villemot
215283005e
No longer store symbol type in VariableNode
...
This facilitates switching variable types on the fly. In particular, this
allows removing the hack in DynamicModel::updateAfterVariableChange() that way
basically recreating all the nodes after the type change.
2018-10-10 12:34:05 +02:00
Sébastien Villemot
c47b6e6e4c
Fix bug with notmpterms option
...
Commit c6cb9aa1b8
was not the right fix.
2018-10-05 17:14:27 +02:00
Sébastien Villemot
9043efab32
Replace "class" by "typename" in template declarations
2018-10-04 18:08:19 +02:00
Sébastien Villemot
6d26dc2349
Remove implicitly-defined copy/move constructors/assignments in several classes
2018-10-04 18:08:17 +02:00
Sébastien Villemot
7bb5382428
Always use brace-initializer in constructors
...
The syntax makes clearer the distinction between a function call and an
initialization. Also, it prevents bugs due to implicit type conversions.
2018-10-04 17:19:18 +02:00
Sébastien Villemot
a4aefb4c65
Mark all constructors taking a single argument as "explicit"
...
For a rationale, see http://www.sjbrown.co.uk/2004/05/01/always-use-explicit/
2018-10-04 17:19:18 +02:00
Stéphane Adjemian (Charybdis)
ec872e63fd
Cosmetic change.
2018-10-04 16:54:57 +02:00
Sébastien Villemot
38f13eb0ad
Remove nonsensical check on MS Visual C++ version
...
The check is done at the time the preprocessor is compiled, but it ought to be
done at the time when the C source file generated by the preprocessor is compiled…
Anyways, it is probably irrelevant now, since MSVC has supported
acosh/asinh/atanh for a long time now.
2018-10-02 18:23:39 +02:00
Sébastien Villemot
48940ff899
Convert SvarRestrictionType into a class enum
2018-10-02 18:15:31 +02:00
Sébastien Villemot
3f26933f44
Replace ExternalFunctionSetOrNot enum by integer constants
...
This was not conceptually an enum, but rather a collection of unrelated
constants:
- two constants for use as placeholder for symbol IDs at different places
- one constant for the default number of arguments
2018-10-02 18:10:12 +02:00
Sébastien Villemot
5e6b8f0a6b
No longer test for __MINGW32__ macro, testing for _WIN32 is enough
...
Closes : Dynare/dynare#1315
2018-10-02 16:50:07 +02:00
Sébastien Villemot
15d026e54e
C output: split generated function into several smaller subfunctions
...
This mimicks the structure of M-functions (though the logic for filling the
temporary terms vector is a bit different).
This change implied a modification in the way we compute the checksum in case
of block decomposition (the temporary terms for the C output are not correctly
computed in that case).
2018-10-01 16:04:01 +02:00
Sébastien Villemot
42e31ad6e1
Ensure that linear_decomposition is false by default
2018-10-01 10:52:19 +02:00
Ferhat Mihoubi
139e3efa82
Adds a new model option "linear_decomposition" that creates a block composed of the non-linear equations o the model
2018-09-28 14:54:52 +02:00
Michel Juillard
680fb72d0d
allowing for different number of periods in conditional_forecast_path
2018-09-27 15:19:30 +02:00
Houtan Bastani
63a334cfd3
fix typo
2018-09-27 10:47:13 +02:00
Sébastien Villemot
c6cb9aa1b8
Fix bug in option notmpterms with model local variables
...
Since model local variables are now treated as temporary terms, they must be
marked as such even when option notmpterms is present.
2018-09-25 15:57:56 +02:00
Houtan Bastani
fbeae9619a
aesthetic fix
2018-09-25 15:48:05 +02:00
Houtan Bastani
7282b7bf32
fix bug in filling of var AR matrix
2018-09-25 15:47:52 +02:00
Houtan Bastani
6c7d7f5d44
don’t create file if trend_component_model/var_model statement not present
2018-09-25 12:18:52 +02:00
Sébastien Villemot
913bc2f8c2
Macro-processor, comprehension: fix error message, add comments
2018-09-24 18:17:28 +02:00
Sébastien Villemot
3e5c8dd80d
Macro-processor: implement comprehensions
...
Due to a limitation of the current implementation, this breaks syntaxes like
[ (i,j) ] (but not [ (2,j) ]; the problem only occurs when an array is
constructed by specifying as first element a tuple whose first element is a
variable name). Solving this problem requires an overhaul of the
macro-processor, with construction of ASTs at parsing time, and evaluation
later on (instead of doing on-the-fly evaluation).
Ref #5
2018-09-24 18:00:59 +02:00
Sébastien Villemot
7a5cc7e54b
Minor fixes to comments
2018-09-18 19:12:25 +02:00
Houtan Bastani
c9f5cef99b
write AST in JSON
2018-09-18 17:48:04 +02:00
Houtan Bastani
8ec06dddc4
fix typo and remove unnecessary braces
2018-09-18 17:31:51 +02:00
Houtan Bastani
9f9c8fdfbf
fix typo
2018-09-18 14:50:54 +02:00
Houtan Bastani
85dbb649b7
move trend_component_table and var_model_table to DynamicModel as they are only used there
2018-09-14 17:04:06 +02:00
Houtan Bastani
eb74d48393
trend_component_model: replace `trends` option with `targets`
2018-09-13 12:21:23 +02:00
Houtan Bastani
dfb0629c25
fix typo
2018-09-12 18:21:34 +02:00
Houtan Bastani
dc9ecbb49a
fix bug in columns of EC matrix
2018-09-12 17:56:30 +02:00
Houtan Bastani
0376f7f173
fix bugs in creation of AR/EC matrices
2018-09-12 11:57:14 +02:00
Houtan Bastani
aa120abd02
simplify code
2018-09-12 11:57:14 +02:00
Houtan Bastani
8acee8fd54
fix AR and EC matrices for double diff
2018-09-11 16:56:05 +02:00
Houtan Bastani
f71c861d5e
output EC matrix in file for trend component models
2018-09-10 17:44:04 +02:00