Sébastien Villemot
8953007440
MEX files: remove unused variables or values
...
Automatically detected by clang-tidy using
clang-diagnostic-unused-but-set-variable, clang-analyzer-deadcode.DeadStores
and clang-diagnostic-unused-const-variable checks.
2023-12-06 22:24:55 +01:00
Sébastien Villemot
d82eecfd39
C++11 modernization: use std::array and std::vector instead of C arrays
...
Automatically detected by clang-tidy using modernize-avoid-c-arrays check.
2023-12-06 22:24:52 +01:00
Sébastien Villemot
c6a7801ba8
clang-format configuration: set “PackConstructorInitializers: NextLine”
2023-11-30 14:37:05 +01:00
Sébastien Villemot
ed332e3ba1
MEX files: reformat C++ source code using clang-format 15
2023-11-29 19:00:51 +01:00
Sébastien Villemot
93ab67acab
🐛 Bytecode MEX: fix bug with evaluation of recursive variables with block+mfs>0
...
In “evaluate” mode, with mfs>0, if the value of variable would depend on a
previously re-evaluated recursive variable, then the value used for that recursive
variable would be incorrect (it would be the value before re-evaluation of the
recursive variable, as passed by the caller).
2023-11-07 15:37:51 +01:00
Sébastien Villemot
7e512af074
Bytecode MEX: refactor handling of temporary terms
...
In particular:
– properly return temporary terms as output argument in evaluate+dynamic mode
(with periods in rows and the temporary terms in column)
– drop the unused “global_temporary_terms” keyword input argument
2023-11-07 15:37:32 +01:00
Sébastien Villemot
dcdbd85b10
Bytecode: fix indentation in output of print_bytecode_{static,dynamic}_model commands
2023-10-10 17:41:38 -04:00
Sébastien Villemot
c329b4ff11
Bytecode: fix bug in print_bytecode_{static,dynamic}_model commands
...
The FENDEQU tag was not properly handled when printing.
2023-10-10 17:31:48 -04:00
Sébastien Villemot
bd9943a695
Bytecode: fix memory leak in Evaluate class
...
The newly-created FBEGINBLOCK_ and FCALL_ instances were freed using a
base-class pointer. But the latter does not have a virtual destructor.
Those class instances are now stored by value in containers, so that the
destructor of the derived class is used.
2023-09-01 14:52:57 +02:00
Sébastien Villemot
e86aeaf787
C++20 modernization: use new standard mathematical constants
2023-05-25 19:07:23 +02:00
Sébastien Villemot
afe147d88d
Bytecode: the class dynSparseMatrix is no longer derived from Evaluate
2023-04-18 18:10:45 +02:00
Sébastien Villemot
e22972849b
Bytecode: make Evaluate::{symbol_table, steady_state} private and const
2023-04-18 17:46:48 +02:00
Sébastien Villemot
4313640f80
Bytecode: allow better compiler optimization of the main evaluation function
...
Use the __restrict__ GCC extension on double* pointers, to avoid aliasing.
NB: the C “restrict” keyword does not exist in C++.
2023-04-18 17:45:15 +02:00
Sébastien Villemot
d71db85c71
Bytecode: move more cached information about current block out of the Evaluate class
2023-04-18 17:44:55 +02:00
Sébastien Villemot
36e8062e25
Bytecode: remove Evaluate::{EQN_block,EQN_block_number}
2023-04-18 17:37:35 +02:00
Sébastien Villemot
d789e6a4c5
Bytecode: move storage for variable and parameter values out of the Evaluate class
2023-04-18 17:37:33 +02:00
Sébastien Villemot
d0864689d2
Bytecode: minor simplification related to Evaluate::steady_state
2023-04-18 14:23:26 +02:00
Sébastien Villemot
9f29e2f292
Bytecode: add missing floating point exception handling for sqrt and several trigonometric functions
2023-04-07 17:32:36 +02:00
Sébastien Villemot
2740bdee58
Bytecode: remove default clause in switch/case clauses for opcodes
...
This ensures that we will get a compiler warning reminding us to support
opcodes that may be added in the future.
2023-04-07 16:46:35 +02:00
Sébastien Villemot
1622c74a53
Bytecode: add missing support for cbrt(), abs() and sign() operators
2023-04-07 16:46:35 +02:00
Sébastien Villemot
f27c3abd2f
Bytecode: refactor floating point exception handling
2023-04-07 16:46:32 +02:00
Sébastien Villemot
fbaa051489
Bytecode: minor simplification
2023-04-07 10:26:57 +02:00
Sébastien Villemot
c7d2ea0a62
Bytecode: remove meaningless initializations
2023-02-24 15:29:52 -05:00
Sébastien Villemot
325e6487d4
Bytecode: move computation routines out of the Evaluate class
2023-02-24 15:18:43 -05:00
Sébastien Villemot
17df930eb9
Bytecode: remove unused function
2023-02-24 15:01:35 -05:00
Sébastien Villemot
0e1678c13a
Bytecode: no longer have instruction pointer as a member variable of Evaluate class
2023-02-24 14:30:15 -05:00
Sébastien Villemot
13b3208cdb
Bytecode: move all logic for navigating through the .cod file into the Evaluate class
2023-02-23 17:37:08 -05:00
Sébastien Villemot
aaab993ccf
Bytecode: merge CodeLoad class into Evaluate
2023-02-23 11:21:22 -05:00
Sébastien Villemot
05ba2970be
Bytecode: diminish the number of data members in Evaluate class
2023-02-17 13:46:41 -05:00
Sébastien Villemot
4ecc78a931
Preprocessor: drop unused per-block max lead/lag fields
2023-01-17 14:43:56 +01:00
Sébastien Villemot
0c5c96e724
Bytecode w/ block decomposition: no longer output derivatives w.r.t. exogenous and endogenous outside the block
2023-01-17 14:24:02 +01:00
Sébastien Villemot
e22ca82ab6
Bytecode MEX: drop the ErrorMsg class and integrate most of its members inside the Evaluate class
2022-07-29 13:04:31 +02:00
Sébastien Villemot
034a981daa
Bytecode MEX: streamline error handling
2022-07-29 13:04:29 +02:00
Sébastien Villemot
6e1635658f
Bytecode MEX: split out code for dealing with variable names into a dedicated BasicSymbolTable class
2022-07-28 16:56:40 +02:00
Sébastien Villemot
1b13bb2e6e
Bytecode MEX: simplify type for storing list of instructions
2022-07-26 18:27:23 +02:00
Sébastien Villemot
8c01912a50
Bytecode MEX: simplify printing of numerical errors in expression
...
In particular, no longer rely on a duplicate implementation of the evaluator to
locate where the NaN or Inf is produced. Rather directly pass the pointer to
the faulty operator.
2022-07-25 18:07:18 +02:00
Sébastien Villemot
feb10b75e6
Bytecode MEX: minor fix to debug mode
2022-07-20 16:19:49 +02:00
Sébastien Villemot
e87d643084
Preprocessor: various refactorings, mainly bytecode-related
2022-07-20 16:18:02 +02:00
Sébastien Villemot
b29dde227d
Preprocessor: various refactorings (mainly bytecode)
2022-07-08 16:05:33 +02:00
Sébastien Villemot
b3cff2d34d
Bytecode: remove incomplete/buggy support for exogenous deterministic
2022-07-05 13:02:17 +02:00
Sébastien Villemot
8dba4ec68c
Bytecode: minor fixes to debug mode
2022-06-24 12:53:19 +02:00
Sébastien Villemot
0107365f6a
Bytecode: stop using unsigned integers where signed ones avoid unnecessary casts
2022-06-20 17:52:01 +02:00
Sébastien Villemot
8bee62fa5e
Bytecode: directly use several enums inside instruction classes
2022-06-20 17:51:59 +02:00
Sébastien Villemot
a2d0ac3586
Bytecode: remove unused expression types
2022-06-17 16:32:59 +02:00
Sébastien Villemot
0719f749e7
Bytecode: remove unused opcodes
2022-06-17 16:32:50 +02:00
Sébastien Villemot
3cc4aeb826
Preprocessor: split CodeInterpreter.hh into two headers
2022-06-16 18:05:00 +02:00
Sébastien Villemot
b4ce69db3a
Remove options_.slowc field
...
There was no user interface, and the feature that it provides has lost
relevance over time.
Note that algorithms for block and/or bytecode still internally use some
equivalent of this parameter, but its initial value will no longer be
modifiable (which could lead to bugs, see commit
e49e7e906f
).
2022-03-31 17:39:43 +02:00
Sébastien Villemot
8536b63827
Bytecode: remove superfluous debug information
2022-02-18 14:17:37 +01:00
Sébastien Villemot
ceb3ec2487
Bytecode: remove unused constructors
2022-02-15 16:54:41 +01:00
Sébastien Villemot
5f675eee18
Add erfc() primitive
2021-12-07 17:00:59 +01:00