Houtan Bastani
21fe0f4bdc
avoid cast warnings when compiling boost headers
2019-04-23 14:57:03 +02:00
Sébastien Villemot
b73d554ad2
Use Unicode copyright symbol (in UTF-8 encoding)
2019-04-16 11:35:31 +02:00
Sébastien Villemot
bbab112d65
Support for output of arbitrary derivation order (in MATLAB and DLL modes)
...
Does not work for Julia mode, neither with block and bytecode.
Note: in DLL mode, the number of temporary terms in no longer given in the
‘ntt’ symbol; it must be computed using ‘M_.dynamic_tmp_nbr’.
Ref dynare#217
2019-04-12 18:13:50 +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
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
Houtan Bastani
8502ebfc06
json output: print statements in original model output
2019-03-06 11:43:30 +01:00
Houtan Bastani
341b9c6667
pac_model: allow diff as argument to growth option
2019-02-28 19:22:34 +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
84104a695e
don’t initialize string to empty
2019-02-21 10:53:11 +01:00
Houtan Bastani
f88682d683
pac: output model type in M_.pac.(model_name)
2019-02-20 16:43:24 +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
c1cf5c8d18
fix comment
2019-02-19 12:51:05 +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
1e071ca499
make simplifications in dynamic model before copying to original
2019-01-28 17:53:04 +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
Houtan Bastani
d922ae8ffc
pac_model: permit lag on growth option
2019-01-25 14:52:26 +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
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
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
Sébastien Villemot
67ac4bf8ea
Allow diff() and log() in "expression" option of var_expectation_model
2018-11-29 16:01:49 +01:00
Houtan Bastani
41af0841c3
extend nopreprocessoroutput option to substitution output
2018-11-28 11:53:50 +01:00
Sébastien Villemot
6fa115aedd
Derivation engine w.r.t. endogenous generalized to any order
2018-11-22 17:13:55 +01:00
Houtan Bastani
5f5fd569dd
add onlymodel command line option
2018-11-07 15:35:03 +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
Houtan Bastani
bef7c2a193
remove need to declare equations nonstationary
2018-10-24 16:04:51 +02:00
Houtan Bastani
55b625b016
undiff expansion of var_expectation
2018-10-12 15:21:03 +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
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
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
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
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
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
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
dc9ecbb49a
fix bug in columns of EC matrix
2018-09-12 17:56:30 +02:00
Houtan Bastani
46709ada3f
output AR matrix in file for trend component models
2018-09-10 14:51:33 +02:00
Houtan Bastani
acc197f539
output AR matrix in file
2018-09-06 18:00:05 +02:00
Sébastien Villemot
e19a14869e
Convert ExprNodeOutputType into a class enum
...
Incidentally, replace the IS_* macros by inline functions.
2018-09-05 18:28:32 +02:00
Sébastien Villemot
5d2e1cf7b9
Use smart pointers for storage of Statement in ModFile class
2018-09-05 18:28:27 +02:00
Houtan Bastani
9f0c30740e
introduce epilogue block
2018-09-05 12:31:49 +02:00
Houtan Bastani
7a438a3ce7
ensure that trend_variable found is actually a trend variable as declared in the trend_component_model statement
2018-09-03 15:05:30 +02:00
Houtan Bastani
1ae729929b
fix bug when var_expectation_model uses trend_component_model as auxiliary model
2018-08-27 14:51:54 +02:00
Houtan Bastani
d5d6e8beb0
simplify updating of RHS variables for trend component and var models
2018-08-23 13:57:27 +02:00
Houtan Bastani
97af0ff711
fix bug in updating variables in var model table
2018-08-23 10:28:19 +02:00
Houtan Bastani
54df07d0e0
remove unnecessary comment
2018-08-22 17:01:03 +02:00
Houtan Bastani
7d9072a227
var_expectation: rename var_model_name to aux_model_name
2018-08-22 16:57:36 +02:00
Stéphane Adjemia (Scylla)
a406c18598
Allow trend_component_model in var_expectations.
2018-08-22 16:50:01 +02:00
Houtan Bastani
1874fa5cce
remove unused variable
2018-08-22 16:01:10 +02:00
Houtan Bastani
80c45ee116
fix bug with max_lag of var model
2018-08-22 15:59:12 +02:00
Houtan Bastani
0af91c26f8
aesthetic fix
2018-08-22 15:12:17 +02:00
Houtan Bastani
1918a56a70
fix bug in 539fddc9f6
2018-08-22 12:56:16 +02:00
Houtan Bastani
539fddc9f6
introduce var model table
2018-08-22 12:15:02 +02:00
Houtan Bastani
6015b0e57b
fixes to trend component model
2018-08-22 12:15:02 +02:00
Houtan Bastani
afe0e475b1
trend_component_model statement
2018-08-17 16:52:48 +02:00
Houtan Bastani
c5c61f99ba
fix bug with max_lag reported for PAC equation
2018-08-13 12:12:20 +02:00
Stéphane Adjemian(Charybdis)
b20da7c43f
Fixed timing issue in VAR_EXPECTATION expansion.
2018-08-06 21:36:52 +02:00
Sébastien Villemot
f3c2a1bf87
New var_expectation_model statement and re-design of var_expectation operator
...
Given a previously declared var_model, the var_expectation_model statement is
used to declare a way of forming expectations with this VAR (possibly using a
finite or infinite discounted sum). The var_expectation operator now takes a
single argument, the name of the var_expectation_model.
For the moment, this only works when the var_model is using equations
explicitly declared in the model block.
2018-08-02 08:39:09 +02:00
Sébastien Villemot
122e154764
PlannerObjectiveStatement now owns its model_tree
...
By the way, error out if the planner_objective statement is used two times.
2018-07-31 13:00:41 +02:00
Sébastien Villemot
762f25abe9
Remove useless separate list for diff auxiliary variables
...
This table serves no useful purpose. It is better to append auxiliary equations
at the time they are created, to avoid messing with the recursive ordering.
2018-07-26 17:41:58 +02:00
Sébastien Villemot
4a04a38374
C++11: convert ExtendedPreprocessorTypes to class enums
2018-07-18 17:28:26 +02:00
Sébastien Villemot
4ad0e500d4
C++11: convert {Unary,Binary,Trinary}Opcode to class enums
2018-07-18 16:18:26 +02:00
Sébastien Villemot
d6055c1407
C++11: convert SymbolType to a class enum
2018-07-17 18:55:26 +02:00
Sébastien Villemot
946d105c04
Remove C and C++ preprocessor output types
...
This code is broken since the temporary terms array changes. It is probably not
worth maintaining it.
2018-07-17 16:52:11 +02:00
Sébastien Villemot
7baee73126
Fix bug under MATLAB+Windows when "+" subdirectory is already present
...
Under MATLAB+Windows (but not under Octave nor under GNU/Linux or macOS), if we
directly remove the "+" subdirectory, then the preprocessor is not able to
recreate it afterwards (presumably because MATLAB maintains some sort of lock
on it). The workaround is to rename it before deleting it.
2018-07-09 18:18:26 +02:00
Sébastien Villemot
e376267a28
Move json generated files to ${MODFILE}/model/json/
2018-06-27 16:08:31 +02:00
Sébastien Villemot
988a9f6e2d
std::open and std::fstream constructor accept a std::string for filename in C++11
2018-06-27 15:30:45 +02:00
Sébastien Villemot
b91ed6f78c
Move the location of static and dynamic files on the filesystem
...
- M and MEX files are now under +${MODELNAME}/
- bytecode and C source now under ${MODELNAME}/model/
2018-06-27 15:30:25 +02:00
Houtan Bastani
b8ae9f6935
Fix max lags for var
2018-06-11 15:18:06 +02:00
Houtan Bastani
84c2dc5f36
transform_unary_ops now introduces aux variables/equations for all unary ops specified by UnaryOpNode::createAuxVarForUnaryOpNode()
...
In the absence of this option, if a var_model statement(s) is present, then aux vars/eqs are created for the same types of unary operators but only for equations specified in the var_model statement
In the absence of both this option and var_model statements, no unary op auxiliary variables are created
diffs continue to be substituted everywhere; for the moment auxiliary variables are created for diffs of expressions. A forthcoming change will allow auxiliary variables created for diffs of expressions to be linked with their lagged expressions as is currently the case for diffs of variables
2018-06-07 17:16:12 +02:00
Houtan Bastani
a30f8f365e
Only create auxiliary variables for diffs that appear in VAR equations or equations that have pac_expectations in them
...
Otherwise, substitute the diff (i.e. `diff(x)` -> `x-x(-1)`)
2018-06-05 18:39:13 +02:00
Houtan Bastani
27320a07f6
update statement loops to use C++11 syntax
2018-06-05 18:39:13 +02:00
Houtan Bastani
2cd3aa95cc
When `transform_unary_ops` is passed, only substitute unary operators that appear in VAR equations
2018-06-05 17:41:15 +02:00
Houtan Bastani
16a049f0d8
Make changes to pac code for C++11
2018-06-05 11:14:03 +02:00
Sébastien Villemot
608c43450c
Replace most calls to make_pair by braced-initializer lists or emplace()/emplace_back()
2018-06-04 16:36:46 +02:00
Sébastien Villemot
182c53273e
Remove useless spaces in type qualifiers
...
In C++11, it is no longer necessary to put a space between two consecutive ">".
2018-06-04 15:03:31 +02:00
Sébastien Villemot
1e56c73377
Port to C++11 nullptr keyword
...
Performed using modernize-use-nullptr from clang-tidy.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-nullptr.html
2018-06-04 15:03:31 +02:00
Sébastien Villemot
c0ed97d247
Port to C++11 auto keyword
...
Performed using modernize-use-auto from clang-tidy.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-auto.html
2018-06-04 15:03:26 +02:00
Sébastien Villemot
6cf4e6dc0c
Port to C++11 range-based for loops
...
Performed using modernize-loop-convert from clang-tidy.
Manual intervention was needed in MacroValue.cc because of a variable name
capture issue.
https://clang.llvm.org/extra/clang-tidy/checks/modernize-loop-convert.html
2018-06-04 12:26:16 +02:00
Sébastien Villemot
59e427cf66
Merge branch 'master' into temporary_terms_array
2018-05-30 17:20:48 +02:00
Houtan Bastani
0aea4f0cc4
introduce dynare command transform_unary_ops to create auxiliary variables for certain unary ops. This will be used for VARs and VECMs but can also be used for OLS, for example
2018-05-30 16:48:08 +02:00
Houtan Bastani
856f6f508a
Revert "create aux vars for certain unary ops contained in diff operator"
...
This reverts commit f600a65c0e
.
2018-05-30 15:50:42 +02:00
Sébastien Villemot
0b617ceb4b
Merge branch 'master' into temporary_terms_array
2018-05-29 17:25:11 +02:00
Houtan Bastani
f600a65c0e
create aux vars for certain unary ops contained in diff operator
2018-05-29 17:00:56 +02:00
Sébastien Villemot
143e0888b6
Clean generated files for temporary terms array interface
2018-05-24 19:35:35 +02:00
Houtan Bastani
732a317030
Merge branch 'master' into temporary_terms_array
2018-05-18 16:40:12 +02:00
Houtan Bastani
3d946ec8b7
var: check for leaded/contemporaneous variables
2018-05-16 12:17:06 +02:00
Houtan Bastani
3a71215ae1
pac: change auxiliary variable creation, fix VAR max lag
2018-05-15 14:42:36 +02:00
Houtan Bastani
7ac33099f8
support undiff in pac model
2018-04-17 16:56:27 +02:00
Houtan Bastani
bb1cc0bebf
simplify var_model statement calls
2018-04-17 16:56:02 +02:00
Houtan Bastani
09e73f3bb4
var_model: fix lag info when diff present
2018-04-17 16:55:55 +02:00
Houtan Bastani
fb8d9258d0
add pac_model statement
2018-04-04 11:48:59 +02:00
Stéphane Adjemian(Charybdis)
46a2272ef9
Added new member in model_ (julia output).
...
temporaries.static and temporaries.dynamic are 4*1 vectors of
integers, each element is the number of temporary variables used for
to evaluate the residuals, the jacobian matrix, the hessian matrix and
the matrix of third order derivatives.
2018-03-29 14:10:34 +02:00
Houtan Bastani
5d339b69de
simplify pac_expectation code
2018-03-07 15:04:07 +01:00
Houtan Bastani
81f2258228
var_model: store max lag info
2018-03-06 15:17:39 +01:00
Houtan Bastani
a69c53b0c8
clean up var_model code
2018-03-06 14:42:11 +01:00
Houtan Bastani
feb5b93eea
create function to calculate aux vars as dseries
2018-03-02 17:50:35 +01:00
Houtan Bastani
1e20717f58
fix bug in substitution of diff operator
2018-02-28 17:33:00 +01:00