Commit Graph

253 Commits (bb3aa0a206d3ef023206f7cf38334c6a05059160)

Author SHA1 Message Date
Sébastien Villemot 8cc646fbf6
Bytecode MEX: remove syntax where no MATLAB array is passed
Those arrays were then read via oo_ and options_.

As a consequence, this commit drops the dependency of bytecode MEX upon the oo_
global variable.
2023-10-10 17:44:14 -04: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 9525dbe3a8
Bytecode: do not restrict print_bytecode_{static,dynamic}_model to certain values of {stack_,}solve_algo 2023-10-10 17:32:33 -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 d584317a6a
Bytecode: remove unused methods 2023-10-10 16:54:09 -04:00
Sébastien Villemot 5e7b7ec7b0
Bytecode MEX: remove support for unused “plan” and “pfplan” arguments 2023-10-10 14:49:15 -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 d6ea315a18
Bytecode: further improve some informative messages 2023-06-15 15:37:45 +02:00
Sébastien Villemot 192f136b96
Bytecode: improve some informative messages 2023-06-13 16:59:08 +02:00
Sébastien Villemot 277c5d4c4f
Bytecode: display real iteration time instead of CPU time 2023-06-13 16:59:08 +02:00
Sébastien Villemot 7c9e261355
Bytecode: fix treatment of maxit option
It would do one extra iteration.
2023-06-13 16:59:08 +02:00
Sébastien Villemot dcf56b89cd
Bytecode: rework message verbosity
Now uses options_.verbosity to decide what to print:
– if options_.verbosity == 0, prints nothing
– if options_.verbosity >= 1, prints iteration counter and duration, and fatal errors
– if options_.verbosity >= 2, additionally print floating point exceptions and
  details about algorithmic decisions
2023-06-13 16:59:07 +02:00
Sébastien Villemot 73b1850cb5
Bytecode: remove unused function 2023-06-13 16:58:06 +02:00
Sébastien Villemot 08d378c244
Bytecode: in evaluate+dynamic mode, return residuals with as many columns as periods
Previously it would also include initial and terminal conditions (i.e.
residuals would have periods+maximum_lag+maximum_lead columns). But we do not
care about residuals at the initial and terminal conditions.

This change is for consistency with the perfect_foresight_problem MEX.
2023-06-12 19:18:44 +02:00
Sébastien Villemot 90d790f1c3
Bytecode: fix error message 2023-06-12 19:18:44 +02:00
Sébastien Villemot d814a4090b
Bytecode: improve display of residuals error during iterations 2023-06-12 15:12:00 +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 030316f2d8
Bytecode: misc simplifications 2023-04-18 22:25:58 +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 8128fd4cc3
Bytecode: minor improvements of interfacing with UMFPACK 2023-04-03 18:34:55 +02:00
Sébastien Villemot c4ad1d58e8
Bytecode: minor simplification to debug mode 2023-04-03 18:34:45 +02:00
Sébastien Villemot f0888468e6
Bytecode: optimize memory consumption during iterations
mxArray objects were not properly destroyed within the iteration loop, leading
to higher memory usage. Note that there was no memory leak, because these
objects would be destroyed later by MATLAB when exiting the MEX.
2023-04-03 14:14:33 +02:00
Sébastien Villemot 5a1abb1b87
Bytecode: cleanup memory management for UMPACK memory buffers
There was probably no bug but it is safer this way.
2023-03-31 18:43:16 +02:00
Sébastien Villemot 8dae5393f5
Bytecode: remove unused function 2023-03-31 17:37:31 +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 895ce96c61
Bytecode: fix memory management for FBEGINBLOCK and FCALL tags
FCALL was not properly deallocated, hence leading to a memory leak.
Also simplify the handling of FBEGINBLOCK through a std::unique_ptr.
2023-02-21 16:58:45 -05:00
Sébastien Villemot 1ad6b29936
Bytecode: misc minor simplifications 2023-02-21 16:31:08 -05:00
Sébastien Villemot 24b2976ac2
Bytecode: move CodeLoad class out of the preprocessor 2023-02-21 16:02:21 -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 c3e1480a52
C++17 modernization: use std::extent_v to get raw arrays size
This can prevent mistakes when the array is modified.
2023-01-24 13:43:02 +01: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 f84753025d
Bytecode: the block and non-block versions now coexist in parallel
As a consequence, a new “block_decomposed” option of the bytecode MEX has been
introduced to explicitly select the block-decomposed version.

Note that we do not always use the “block_decomposed” option even when the
“block” option has been passed to the user, in situations where the block
decomposition brings nothing (e.g. when evaluating the residuals of the whole
model).
2023-01-09 15:20:46 +01:00
Sébastien Villemot 24d7f569f1
Bytecode MEX: fix compilation under GCC ⩾ 11
Problem introduced in previous commit.
2022-07-29 14:30:45 +02:00