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
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
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
9e6c01f132
Streamline some function names
2022-07-12 17:04:41 +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
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
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
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
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
e0c9a287c5
Remove unused StaticModel::copyHelper()
2022-06-24 15:28:42 +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
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
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
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
0b5c88109f
Various simplifications
2022-06-07 14:34:30 +02:00
Sébastien Villemot
171cd65566
Fix bytecode compilation of external function nodes
2022-05-20 11:43:02 +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
0284b249f5
Remove unused “bytecode” argument in {Static,Dynamic}Model::computingPass()
2022-05-19 14:10:22 +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
54ca5d9cc0
Improve messages during model normalization
...
– Indicate whether we are trying to normalize the static or dynamic model
– If failed to normalize the static model, suggest to use the “no_static”
option
– Remove a superfluous error message
2022-04-19 17:11:13 +02: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
a492417a5b
Fix typo
2021-12-10 12:44:42 +01:00
MichelJuillard
561bee0790
add NNZderivatives to JSON + use AbstractVector for Julia functions
2021-10-06 17:45:11 +02:00
Sébastien Villemot
90b1235a64
New utility to check if an expression contains an exogenous (possibly deterministic)
2021-07-20 12:10:58 +02:00
Sébastien Villemot
74ef3457b4
Use secure URL for link to GNU licenses
2021-06-09 17:21:00 +02:00
MichelJuillard
9773bafc5b
Julia: write definition of get_power_deriv inside generated static/dynamic files
2021-04-26 10:52:18 +00:00
Sébastien Villemot
dca294de3a
Julia: refactor the auxiliary variable/series files
...
— rename the files with camel case
— encapsulate the functions with modules
— change the signature of function <MODFILE>_dynamic_set_series!, by removing
the output argument and appending the exclamation mark, since this function
modifies one of its arguments, and for symmetry with the static version
Ref. DynareJulia/Dynare.jl#1
2021-04-23 17:57:33 +02:00
Sébastien Villemot
4354d8a578
Julia: do not overwrite steady state / auxiliary variables/series files if contents has not changed
...
Ref. DynareJulia/Dynare.jl#1
2021-04-23 17:56:54 +02:00
Sébastien Villemot
4cfc7a563b
Julia: do not overwrite Static/Dynamic files if contents has not changed
...
Ref. DynareJulia/Dynare.jl#1
2021-04-22 18:03:47 +02:00
Sébastien Villemot
81b1d02748
Julia: fix typo in StatsFuns package name
...
Ref. DynareJulia/Dynare.jl#1
2021-04-22 15:48:25 +02:00
Sébastien Villemot
1f17528383
Julia: update dependencies of Static/Dynamic modules
...
Ref. DynareJulia/Dynare.jl#1
2021-04-19 17:02:46 +02:00
MichelJuillard
c2009e2012
fix set_auxiliary_variables.jl
2021-04-01 17:05:13 +02:00
Sébastien Villemot
89e2daf7c7
C++17 modernization: convert the remaining enums to enum classes
2021-02-01 12:05:06 +01:00
Stéphane Adjemian (Charybdis)
b8f7b5846b
Fixed flags for temporaries (julia output).
2020-10-21 16:37:13 +02:00
Sébastien Villemot
4560639eb4
Block decomposition: fix evaluation of recursive variables in solved blocks
...
Ref. dynare#1726
2020-10-06 18:30:34 +02:00
Sébastien Villemot
5979885714
Block decomposition, chain rule derivation: code improvement
2020-10-02 18:31:55 +02:00
Sébastien Villemot
d347a92f14
Drop ExprNode::containsExogenous()
...
Replace it by calls to ExprNode::collectVariables() at the single place where
it was used.
2020-09-29 18:41:31 +02:00