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
Sébastien Villemot
3eb7063838
Merge branch 'julia-2' into 'master'
...
Julia 2
See merge request Dynare/preprocessor!64
2022-07-12 11:29:23 +00: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
Sébastien Villemot
ed22904568
Merge branch 'dyn_forecast' into 'master'
...
dyn_forecast: remove unused output argument
See merge request Dynare/preprocessor!62
2022-07-04 13:08:54 +00: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