Because at some point throwing exceptions from MEX files (with mexErrMsgTxt())
was not working under Windows 64-bit, we had designed a workaround to avoid
using exceptions.
Most MEX files were returning an error code as their first (or sometimes last)
argument, and that code would have to be checked from the MATLAB code.
Since this workaround is no longer needed, this commit removes it. As a
consequence, the interface of many MEX files is modified.
For some background, see https://www.dynare.org/pipermail/dev/2010-September/000895.html
The method `desc_addname` adds arguments to the name of the node, and hence does not allow for line breaks. In the case of Dynare commands we don't run into a problem with this but we run into this problem with longer MATLAB/Octave commands.
For Dynare commands, we don't run into the problem with commands running over the page width as we use placeholders like `OPTIONS` since the order of the parameters passed to a command is irrelevant
For MATLAB/Octave commands, the order of parameters passed to a function is important, hence we cannot use a placeholder such as `OPTIONS`
closes#1688
- `dynasave`: if a variable being saved was named `n` or `s`, the `eval` statements would break the code
- `dynasave`: use the `-struct` option to `save` to avoid `eval` statements
- `dynasave` and `dynatype`: do everything in 1 loop instead of 2
- `dynasave` and `dynatype`: use `strcmp` instead of `strfind`
- preprocessor update contains:
- Partial reversion of global indentation of macro processor header files introduced in e2d5a83592634f0604d8c86409748cd2ec5906d2
- Symbol List check pass: allow caller to specify the valid types of variables in a Symbol List
- Allow `dynasave` and `dynatype` to support exogenous variables in their var_list
issue #1691
Note that I still need to do a code clean up (provide some licenses for functions from other people) and to double check order=3. There is also much room for speed and memory improvement, but the code works fine for now. I will also provide more information to the merge request soon about the detailed changes for future reference.
It applies the approximated policy function to a set of particles, using
Dynare++ routines.
There is support for parallelization, using Dynare++ multithreading
model (itself based on C++11 threads; we don’t use OpenMP because it is
incompatible with MKL). For the time being, default to a single thread. This
should be later refined through empirical testing.