Commit Graph

1433 Commits (dc966014a3eb37398c465cde9143d2c8d524dbec)

Author SHA1 Message Date
Sébastien Villemot f6053df754
use_dll: compile MEX files in parallel
Currently two threads are used (one for the dynamic MEX, one for the static
MEX). When the sparse representation is implemented, four threads will be used.

Closes: #41
2022-10-04 16:00:30 +02:00
Sébastien Villemot 36fcbf6cfe
Functions that write C files now return the paths to the generated files
This avoids computing those paths two times (the second time when compiling them).
2022-10-04 16:00:30 +02:00
Sébastien Villemot 895a866bb3
Optimization: use move semantics in more places 2022-10-04 16:00:30 +02:00
Sébastien Villemot 6ed033f202
Bugfix: “relative_irf” option passed to “irf_calibration” was also passed to next command 2022-10-04 16:00:30 +02:00
Sébastien Villemot 3d9ac26aa6
Remove all instances of the “map.find(key)->second” pattern
This is unsafe since the find() method can return a past-the-end iterator,
which should be tested for.

Replace most instances by calls to the std::map::at() method (which throws if
the key is unknown), and which is incidentally more readable.
2022-09-27 12:56:16 +02:00
Sébastien Villemot 18037fd29a
Drop code for supporting temporary terms corresponding to model-local variables
Since model-local variables are now substituted out of the model at an early
stage (see cfb41d291c), such temporary terms are
no longer generated.
2022-09-26 17:34:20 +02:00
Sébastien Villemot 64157d9083
Fix bug in ModelTree::writeParamsDerivativesFileHelper()
Elements of params_derivatives could be accessed without them being defined,
thus causing illegal memory read.

Ensure that these elements always exist. By the way, use std::map::at() instead
of std::map::find() to trigger an exception instead of an illegal memory read
in that case.
2022-09-26 17:17:47 +02:00
Sébastien Villemot b403cef871
Put driver output of static block decomposition in a separate function
For symmetry with the dynamic case, and for avoiding a call to “return” in the
middle of StaticModel::writeDriverOutput().
2022-09-21 18:48:35 +02:00
Sébastien Villemot 5b12354dc3
Minor performance improvement in copy constructors/assignments of ModelTree and DynamicModel 2022-09-21 17:37:02 +02:00
Sébastien Villemot 98d4f922ca
Cosmetics 2022-09-20 15:29:19 +02:00
Sébastien Villemot 7f1b4fcc20
Refactor OptionsList class
In particular, use a std::variant to store the values of options. This ensures
that a given option name can have only one value (previously, for a given
option name, it was possible to store several values as long as they were of
different types).
2022-09-20 11:56:43 +02:00
Sébastien Villemot e4449f1c4a
Add comment for special token name for “domain” keyword 2022-09-20 11:56:43 +02:00
Sébastien Villemot 8dcdcf1fd4
Fix check of “domain” option of new estimation prior syntax 2022-09-20 11:56:42 +02:00
Sébastien Villemot 3f674c1af9
Fix bug with “graph_format” option of “identification” and “dynare_sensitivity”
The local value of option was not copied to the top-level “options_” structure,
as it is done for “nograph” and “nodisplay”.
2022-09-20 11:56:42 +02:00
Sébastien Villemot 1088cc4242
Improve informative messages about derivatives and block decomposition
When computing the derivatives or block decomposition of the planner objective,
the epilogue or the original Ramsey model, the preprocessor would talk about
dynamic/static model, which was confusing. It now uses the right terminology.
2022-09-14 17:51:36 +02:00
Sébastien Villemot d67f569035
Always compute block decomposition, even if “block” option was not passed
If block decomposition fails, error out if “block” option was passed, but not
otherwise.

This commit does not modify the generated files.

This is a preliminary step for dynare#1859.
2022-09-13 16:16:00 +02:00
Sébastien Villemot 1aead92cd5
Fix bug in block derivatives w.r.t. exogenous deterministic 2022-09-12 17:38:47 +02:00
Sébastien Villemot 0b5e686c8c
Turn ramsey_FOC_equations_dynamic_model into a local variable instead of a data member 2022-09-09 17:13:21 +02:00
Sébastien Villemot 2fdc8b682e Merge branch 'BGP_space' into 'master'
Add missing whitespace in output of BGP warning

See merge request Dynare/preprocessor!65
2022-09-06 10:11:51 +00:00
Sébastien Villemot 482ec5fb67
macOS: bump to GCC 12 (for compilation and for use_dll) 2022-09-06 11:53:40 +02:00
Johannes Pfeifer da5b36704d Add missing whitespace in output of BGP warning 2022-08-03 10:52:08 +02:00
Sébastien Villemot fc4c9a73c9
Fix comment
[skip ci]
2022-07-27 16:50:08 +02:00
Sébastien Villemot c3cb7ca534
Bytecode: simplify type for storing list of instructions
Incidentally, make BytecodeInstruction an immutable struct, to facilitate
access to opcode in such a list.
2022-07-26 18:26:37 +02:00
Sébastien Villemot 613e0da782
Bytecode: add some comments to FNUMEXPR_
[skip ci]
2022-07-26 14:52:10 +02:00
Sébastien Villemot 21cecee599
Add “fsolve_options” option to “steady” command
Ref. dynare#1856
2022-07-22 13:43:41 +02:00
Sébastien Villemot ad40f1365c
Block decomposition: code factorization 2022-07-21 18:20:35 +02:00
Sébastien Villemot d4c453c422
Block decomposition: (likely) performance improvement in static file in relation to temp terms
Compute temporary terms for derivatives of “evaluate” mode, even though those
derivatives are not computed. This is because the temporary terms may be useful
for subsequent blocks.

By the way, add an explanatory comment for the equivalent code in dynamic file.
2022-07-21 17:31:48 +02:00
Sébastien Villemot a97a41f6c0
Bugfix with temporary terms in block+bytecode
There were actually two distinct bugs, leading to incorrect results in some
corner cases:

– in the “evaluate” mode of the bytecode MEX, the temporary terms of the
  derivatives “evaluate” blocks were not evaluated at runtime; but these
  temporary terms may be needed for residuals of subsequent blocks;

– when the bytecode MEX was only computing residuals of the model (and not 1st
  order derivatives), the temporary terms of the derivatives were not evaluated
  at runtime; but these temporary terms may be needed for residuals of subsequent
  blocks.
2022-07-21 17:22:08 +02:00
Sébastien Villemot 1401c85d6a
Bytecode: drop FCUML instruction
It’s redundant with FBINARY{BinaryOpcode::plus}.
2022-07-20 16:02:24 +02:00
Sébastien Villemot a58109d094
Bytecode: refactor methods for writing .cod and .bin files in the block decomposition case 2022-07-20 16:02:24 +02:00
Sébastien Villemot d598810329
Bytecode: minor simplification using syntax of sizeof operator without parentheses 2022-07-20 14:48:30 +02:00
Sébastien Villemot 50d5b916e2
Remove constructor and accessors for AuxVarInfo
Rather make all data members public and const, and use aggregate-initialization.
2022-07-20 14:48:30 +02:00
Sébastien Villemot f0629555a5
Remove useless constructors (aggregate initialization is enough for those)
By the way, turn those classes into structs since all their members are public.
2022-07-20 14:48:28 +02:00
Sébastien Villemot 83a94aca57
Replace most uses of std::string::compare() by operator==(), for clarity 2022-07-20 11:18:20 +02:00
Sébastien Villemot c0bfc99946
Minor simplification using std::vector::emplace_back() 2022-07-20 11:18:07 +02:00
Sébastien Villemot 435e56369c
Compatibility fixes with GCC 12 2022-07-16 12:46:16 +02:00
Sébastien Villemot 35dc7fcd81
Bytecode: fix treatment of temporary terms (in non-block mode)
The “temporary_terms_union.insert(it)” statement introduced in the previous
commit was in the wrong block.

By the way, replace the “switch” by an “if constexpr”.
2022-07-14 09:17:11 +02:00
Sébastien Villemot ae150d2b1f
Bytecode: refactor routines for creating .cod file in non-block mode 2022-07-13 18:51:01 +02:00
Sébastien Villemot 89debf429a
Factorize code for writing JSON output 2022-07-12 18:04:05 +02:00
Sébastien Villemot 6da24fc763
Fix bug in JSON output for dynamic derivatives w.r.t. parameters
Variable and parameter indices were wrong (offset by 1).
2022-07-12 17:45:00 +02:00
Sébastien Villemot 9e6c01f132
Streamline some function names 2022-07-12 17:04:41 +02:00
Sébastien Villemot a541d23055
Minor simplification 2022-07-12 16:39:17 +02:00
Sébastien Villemot 157c67e04b
New helpers to simplify common operations with derivation IDs 2022-07-12 16:30:45 +02:00
Sébastien Villemot 2013056a2c
Fix bug in JSON output for derivatives w.r.t. parameters
Confusion between a symbol ID and a derivation ID, which could lead to invalid
output or crash.
2022-07-12 16:23:44 +02:00
Sébastien Villemot 440173f2bc
Further simplification made possible by 75e453c5fe53ce9ce82e564577db073b41a0459a 2022-07-12 16:23:40 +02:00
Sébastien Villemot 7fd78606ae
Fix bug in MATLAB/Octave output introduced in 3e1f9dbb82 2022-07-12 16:23:32 +02:00
Sébastien Villemot 1d71386f01
Further templating of helpers for writing output files
So that more stuff is computed at compile-time (using constexpr features).
2022-07-12 16:23:28 +02:00
Sébastien Villemot 4370b76ce4
Remove unused function 2022-07-12 16:18:19 +02:00
Sébastien Villemot 9c3eeb7c8d
Refactor code for writing derivatives w.r.t. parameters 2022-07-12 16:18:16 +02:00
Sébastien Villemot 8da663a110
Further factorization in methods for writing static and dynamic files 2022-07-12 16:05:15 +02:00
MichelJuillard 3e1f9dbb82 use @inbounds blocks instead of @inbounds for each line 2022-07-12 13:07:33 +02:00
MichelJuillard a4556896db Julia functions Float64 -> <: Real 2022-07-12 11:15:51 +02:00
Sébastien Villemot 5174c3b52c
Minor simplification 2022-07-11 22:30:50 +02:00
Sébastien Villemot f38c8278ae
Refactor methods for writing static and dynamic files
– factorize common code between the static and the dynamic version
– reorganise language-specific code into dedicated functions
– use a function template in the main helper to do some computations
  at compile-time (using constexpr features)
2022-07-11 22:29:28 +02:00
Sébastien Villemot c8b046ec86
Simplification using non-default std::ofstream constructor 2022-07-11 22:17:36 +02:00
Sébastien Villemot 92047f547e
Minor simplification 2022-07-11 14:05:29 +02:00
Sébastien Villemot 9b34fe856f
Add missing “break” for consistency 2022-07-08 16:10:23 +02:00
Sébastien Villemot 4b30342dc2
Bytecode: various simplifications
Also improve the naming of the enum class used for identifying the type of
external function call.
2022-07-08 16:02:49 +02:00
Sébastien Villemot a7dc96516b
Minor cleanup 2022-07-08 15:13:21 +02:00
Sébastien Villemot 69354e0aec
More C++20 modernization 2022-07-08 14:52:21 +02:00
Sébastien Villemot 4867120757
Remove unused function 2022-07-08 14:44:01 +02:00
Sébastien Villemot 6d2d73a5d7
Bytecode: refactor output methods around an enum class similar to ExprNodeOutputType
By the way, add assertions to ensure that assignment LHS output type is only
used on VariableNode(s) and AbstractExternalFunctionNode(s).
2022-07-06 16:46:40 +02:00
Sébastien Villemot 93ef4c6feb
Small simplification 2022-07-05 17:08:29 +02:00
Sébastien Villemot 3d21821d0c
JSON output: remove duplicate “rhs” field when RHS of equation is non-zero constant 2022-07-05 17:08:29 +02:00
Sébastien Villemot c27342cfeb
Fix interaction of temporary terms with steady_state operator
When the same complex expression appears outside and inside a steady_state()
operator, the same temporary term would be used for both cases, which was
obviously wrong.

The fix consists in never substituting temporary terms for expressions inside
the steady_state operator().

Incidentally, this implies that external functions can no longer be used inside
steady_state operators (since their computed values are stored inside temporary
terms).
2022-07-05 17:08:27 +02:00
Sébastien Villemot db0d9290b5
Bytecode: remove hack for exogenous deterministic index
The support in the bytecode MEX was broken anyways.
2022-07-05 14:10:34 +02:00
Sébastien Villemot c27354ace0
Bytecode: change name of 2nd argument of ExprNode::writeBytecodeOutput(), for clarity 2022-07-04 17:10:44 +02:00
Johannes Pfeifer 99337ee32e dyn_forecast: remove unused output argument 2022-07-01 14:31:42 +02:00
Sébastien Villemot c3fc5b1dd7
Enable -Wunused-parameter
As a consequence, add many [[maybe_unused]] attributes for legitimate
cases (mainly in virtual functions).
2022-06-24 17:11:48 +02:00
Sébastien Villemot a6b5d40d4b
Pac{Expectation,TargetNonstationary}Node::writeOutput(): error out for non-LaTeX, as for VarExpectationNode 2022-06-24 17:11:48 +02:00
Sébastien Villemot 297f86a90e
NumConstNode::write{Bytecode,Json}Output(): check for temporary terms, as is done for MATLAB output 2022-06-24 17:11:48 +02:00
Sébastien Villemot 17f72d6162
Remove empty checkPass() methods 2022-06-24 17:11:48 +02:00
Sébastien Villemot 3b99ac5df0
Remove unused parameters to various methods 2022-06-24 17:11:38 +02:00
Sébastien Villemot e0c9a287c5
Remove unused StaticModel::copyHelper() 2022-06-24 15:28:42 +02:00
Sébastien Villemot b390390a98
Remove unnecessary inline specifiers
A function defined entirely inside a class/struct/union definition is
implicitly an inline function.
2022-06-24 15:09:08 +02:00
Sébastien Villemot b307097f85
Mark some functions as constexpr
This probably brings no benefit since those functions are currently not used at
compile time, but it’s nice…
2022-06-24 14:52:39 +02:00
Sébastien Villemot 7e01d01d80
VariableNode::writeBytecodeOutput(): check for temporary terms, as done for other types of output 2022-06-24 13:10:23 +02:00
Sébastien Villemot 9bd2973034
Refactor bytecode output around a new BytecodeWriter class and operator<< overloads 2022-06-24 13:10:04 +02:00
Sébastien Villemot 13dc0a1144
Use operator""s to replace some calls to std::string constructor
By the way, remove other unnecessary calls to that constructor.
2022-06-22 12:47:11 +02:00
Sébastien Villemot 83693e4427
Bytecode: stop using unsigned integers where signed ones avoid unnecessary casts 2022-06-20 17:49:31 +02:00
Sébastien Villemot 5cd5676c8e
Bytecode: directly use several enums inside instruction classes 2022-06-20 15:19:08 +02:00
Sébastien Villemot 4662a42c9a
Bytecode: in FNUMEXPR, store lag as int rather than int8_t
Otherwise lags are truncated at ±128.
2022-06-20 15:19:08 +02:00
Sébastien Villemot b1c8e24e01
Bytecode: store instruction opcode (Tags enum) directly inside instruction classes
This makes the code simpler. Incidentally, since Tags are no longer stored as
uint8_t, this makes the .cod files larger, but there is no clear performance impact.
2022-06-20 15:18:23 +02:00
Sébastien Villemot 09cb33d867
Bytecode: no longer bypass normal alignment rules in instructions representation
This change provides a (limited) performance gain, at the expense of
a (moderate) increase in .cod files.
2022-06-20 10:28:30 +02:00
Sébastien Villemot 2ea6a5244e
Bytecode: remove unused expression types and associated constructors 2022-06-17 16:31:47 +02:00
Sébastien Villemot 3613dbbe01
Bytecode: remove unused instruction class constructors 2022-06-17 16:10:17 +02:00
Sébastien Villemot aa4783fd86
Bytecode: move all instruction classes into a single class hierarchy
Class BytecodeInstruction is the root.
2022-06-17 15:33:54 +02:00
Sébastien Villemot 1383d2f344
Remove useless inline specifier
Functions entirely defined inside classes are automatically marked inline.

By the way, fix indentation in relation to the explicit specifier.
2022-06-17 14:29:12 +02:00
Sébastien Villemot 82751d21fe
Remove useless debugging code 2022-06-17 12:46:32 +02:00
Sébastien Villemot b3b8ed63e1
Bytecode: remove unused opcodes 2022-06-17 12:46:24 +02:00
Sébastien Villemot 4cfba74f57
Bytecode: streamline description of opcodes
An “FLD…” opcode loads onto the stack, an “FST…” opcode stores from the stack.

Also remove useless numerical values (which may change).
2022-06-17 12:26:43 +02:00
Sébastien Villemot 5a0c6ad206
Build system update following header split 2022-06-16 20:41:53 +02:00
Sébastien Villemot a85730313c
Split CodeInterpreter.hh into two headers
– a generic one: CommonEnums.hh
– and a bytecode-specific one: Bytecode.hh

By the way, rename global constant “near_zero” into “power_deriv_near_zero”,
for clarity.
2022-06-16 17:53:23 +02:00
Sébastien Villemot 41b1e89756
Macro-processor: when a variable is defined without a value, set it to “true”
Previously it was set to 1.

Also do the same change for variable defined on the command-line, for
consistency.

Closes: #43
2022-06-16 16:50:38 +02:00
Sébastien Villemot 2a68f5a3af
Use “follower” instead of “slave” in internal class and variable names 2022-06-15 15:39:20 +02:00
Sébastien Villemot 248dac4bc7
Rename “parallel_slave_open_mode” option to “parallel_follower_open_mode”
But still accept the old name for backward compatibility.

Closes: #86
2022-06-15 15:35:54 +02:00
Sébastien Villemot 9b04c5436e
Block decomposition: fix crash when a variable appears in an equation but has zero symbolic derivative 2022-06-13 16:32:58 +02:00
Sébastien Villemot 5d1264e2b9
Optimization: use a move_iterator 2022-06-13 15:06:58 +02:00
Sébastien Villemot ee8ee7c27f
Optimization: use move semantics in a few more places 2022-06-13 14:27:19 +02:00
Sébastien Villemot 8541179a56
Correctly clean up options list after a “pac_model” statement 2022-06-13 14:27:19 +02:00
Sébastien Villemot a5feb52f2f
Merge branch 'AppleSiliconPkg' of git.dynare.org:wmutschl/preprocessor
Ref. !61
2022-06-08 15:27:28 +02:00
Willi Mutschler fe8aaf44fd
🍎 provisions for Apple Silicon package 2022-06-08 15:11:02 +02:00
Sébastien Villemot 49277dbbf2
StaticModel::getDerivID() now throws an exception when arg is not endo or parameter
Previously it would return -1, which is bad practice.
2022-06-08 14:54:09 +02:00
Sébastien Villemot e3bc2d1b9b
Minor simplification 2022-06-08 14:37:59 +02:00
Sébastien Villemot 46b2c73565
C++17 modernization: more uses of std::optional 2022-06-08 12:34:25 +02:00
Sébastien Villemot c94dfb848c
C++20 modernization: use initialization within range-based for loop
In particular, use this feature in many loops which feature a special treatment
for the first iteration, using a boolean variable (replacing iterator
manipulation). By the way, also use std::exchange() to simultaneously test the
value of this variable and update it.
2022-06-07 14:35:59 +02:00
Sébastien Villemot 9ace2dc413
C++17 modernization: take advantage of class template argument deduction 2022-06-07 14:35:26 +02:00
Sébastien Villemot 0b5c88109f
Various simplifications 2022-06-07 14:34:30 +02:00
Sébastien Villemot 8b5e33b87a
Avoid name clash between function parameter and class member 2022-06-03 20:38:07 +02:00
Sébastien Villemot cecf14f29d
Improve comment 2022-06-03 20:30:40 +02:00
Sébastien Villemot 4da901d05f
Fix comment 2022-06-03 20:30:40 +02:00
Sébastien Villemot d859f59a10
Epilogue: improve error message 2022-06-03 20:30:40 +02:00
Sébastien Villemot edf75e48a3 Merge branch 'tolx_steady' into 'master'
Add tolx-option for steady

See merge request Dynare/preprocessor!60
2022-05-23 10:07:09 +00:00
Sébastien Villemot cec47cc78c
Implement bytecode compilation of 2nd deriv of external functions 2022-05-20 12:35:38 +02:00
Sébastien Villemot d1a3b227fd
Fix bug in bytecode compilation of 1st deriv of external functions 2022-05-20 12:35:23 +02:00
Sébastien Villemot 03dc9837d0
Comment improvement 2022-05-20 12:27:22 +02:00
Sébastien Villemot 171cd65566
Fix bytecode compilation of external function nodes 2022-05-20 11:43:02 +02:00
Johannes Pfeifer 1dbf9c8041 Add tolx-option for steady 2022-05-19 22:43:41 +02:00
Sébastien Villemot 591b5e5f9e
Always create bytecode output
And, symmetrically, when the “bytecode” option is requested by the user, always
create the .m static/dynamic files.

The “bytecode” option therefore no longer modifies the preprocessor output.
2022-05-19 14:49:46 +02:00
Sébastien Villemot af88f50d44
Forbid multiple identical clauses in “occbin_constraints” block
Closes: #97
2022-05-19 14:36:15 +02:00
Sébastien Villemot 0284b249f5
Remove unused “bytecode” argument in {Static,Dynamic}Model::computingPass() 2022-05-19 14:10:22 +02:00
Sébastien Villemot 25a32b1a32
Cosmetics 2022-05-19 12:27:44 +02:00
Sébastien Villemot 17ba60e587
Mark copy constructor and assignment of ModelTree as protected
This limits the risk of slicing.

The same is not possible for DataTree, since that base class is directly used
in some places.
2022-05-19 12:27:39 +02:00
Sébastien Villemot 2483639f4d
Fix bug introduced in 3516894a71 related to new estimation syntax 2022-05-18 19:27:00 +02:00
Sébastien Villemot 3516894a71
JSON output: fix handling of vector value options
The vectors were previously stored as strings internally, which would not
necessarily contain the commas which are required in JSON (but not in
MATLAB/Octave). The fix consists in internally storing those options as
std::vector.

Closes: #96
2022-05-18 17:44:36 +02:00
Sébastien Villemot 5b50c10229
Simplify OptionsList::writeJsonOutput() 2022-05-18 16:33:49 +02:00
Sébastien Villemot 29c683c6ad
JSON output: add missing comma for paired numerical options 2022-05-18 16:33:49 +02:00
Sébastien Villemot d64682f346
JSON output: fix possible spurious commas in vector of int or string options 2022-05-18 16:33:49 +02:00
Sébastien Villemot 2795207802
No longer delete move constructor/assignment operator
We follow the advice given by Josuttis in his book about move semantics.

Deleting those member fuctions can be a bug if we want to allow copy semantics,
because overload resolution will no longer fallback to the copy
constructor/assignment operator when given an rvalue.

In particular, this explain why it was not possible to delete the move
assignment operator of the StaticModel class.
2022-05-18 16:33:48 +02:00
Sébastien Villemot c6007aa780
C++17 modernization: use [[fallthrough]] attribute
This disables warnings when -Wimplicit-fallthrough is used (enabled by -Wextra).
2022-05-18 16:33:48 +02:00
Sébastien Villemot 701db61e09
JSON output: fix several bugs related to switch/case fallthrough 2022-05-18 16:33:42 +02:00
Sébastien Villemot ae97c4eb29
Factorization in OptionsList class 2022-05-17 18:08:10 +02:00
Sébastien Villemot 3e94250582
C++17 modernization: use std::optional in ExprNode::getPacOptimizingShareAndExprNodes() 2022-05-16 19:10:16 +02:00
Sébastien Villemot 0eb11d3323
C++17 modernization: use std::optional in expression matching functions 2022-05-16 19:10:16 +02:00
Sébastien Villemot 3496d77eb4
C++17 modernization: use std::optional to store orig diff vars in VAR and TCM
By the way, remove the unused TrendComponentModelTable::getOrigDiffVar() method.
2022-05-16 19:10:16 +02:00
Sébastien Villemot 34aa1d3bb4
Fix comment 2022-05-16 19:10:16 +02:00
Sébastien Villemot 06d05e9a8d
C++17 modernization: use std::optional for SymbolTable::getEquationNumberForMultiplier() 2022-05-16 19:10:16 +02:00
Sébastien Villemot fa7a926143
C++17 modernization: use std::optional for the storage of orig_symb_id and orig_lead_lag in SymbolTable
For the diff and unaryOp auxvar types, these value may be set or unset
depending on the complexity of the expression represented by the auxvar.
2022-05-16 19:10:15 +02:00
Sébastien Villemot 8fd1505ca2
C++17 modernization: use std::optional for “periods” option of “plot_conditional_forecast”
Incidentally, in the JSON output, no longer assign a value to the “periods”
field if not passed by the user (previously the value -1 was output in the JSON
file).
2022-05-16 19:10:15 +02:00
Sébastien Villemot fc037a4352
Simplify printing of booleans using std::boolalpha 2022-05-16 19:10:15 +02:00
Sébastien Villemot 92d3b8166a
C++17 modernization: use std::optional for equation line numbers 2022-05-16 19:10:15 +02:00
Sébastien Villemot 0b51294994
C++17 modernization: use std::optional for trend variables in TCM 2022-05-16 19:10:15 +02:00
Sébastien Villemot fb3b1c301f
endval(learnt_in=…) block: fix treatment of unused endogenous variables 2022-05-06 12:56:24 +02:00
Sébastien Villemot 46a85644d8
C++20 modernization: update comment about workaround for clang 2022-05-04 17:37:58 +02:00
Sébastien Villemot 7bd449d6c3
C++20 modernization: use new std::erase_if function 2022-05-04 17:37:58 +02:00
Sébastien Villemot b42ee40b55
C++20 modernization: use contains() method on containers 2022-05-04 17:37:57 +02:00
Sébastien Villemot ef02b79486
Various minor simplifications 2022-05-04 17:36:59 +02:00
Sébastien Villemot e0c3cb72b7
No longer link against libstdc++fs
That requirement was dropped in GCC 9.
2022-05-04 17:11:44 +02:00
Sébastien Villemot 3a820fffa2
New += and *= syntaxes in “endval(learnt_in=…)” blocks
Incidentally, forbid exogenous deterministic variables in “endval” blocks.
2022-05-03 16:52:04 +02:00
Sébastien Villemot 8c07fb5e43
Compatibility fix for GCC 12
Ref. dynare#1852
2022-05-02 17:03:42 +02:00