Houtan Bastani
a93c6681c7
clang: can’t print non POD type through variadic function
2019-04-01 16:05:47 +02:00
Sébastien Villemot
fb4d14c0a2
Fix build failure with MATLAB ≤ R2011a with recent GCC
2019-03-25 18:47:50 +01:00
Sébastien Villemot
c46023ad56
POSIX shell stylistic improvements
2019-03-25 18:47:49 +01:00
Sébastien Villemot
4c11e9e9ec
Dynare++ kord and MEX: various modernizations and improvements
2019-03-07 19:46:15 +01:00
Sébastien Villemot
14f85cf448
Dynare++ kord library: various modernizations and improvements
...
Note that I removed several #define whose purpose was to avoid typing "typename
ctraits<t>::…". Even though this tends to complicates the code, this is
probably safer, especially since the #define was capturing a free variable (t).
2019-03-06 18:43:04 +01:00
Sébastien Villemot
6d99b6d120
Dynare++ kord library: various modernizations and simplifications
2019-03-05 18:35:35 +01:00
Sébastien Villemot
7fd95a6b72
Dynare++ kord library: use modern pseudo-random number generators
2019-03-05 12:29:17 +01:00
Sébastien Villemot
58bdee12c3
Dynare++ tensor library: refactor static stuff
...
- encapsulate it more clearly
- make it thread safe
- put back the Pascal triangle initialization stuff removed in 9512a32ad0
2019-02-21 19:00:50 +01:00
Sébastien Villemot
b72857d4ce
Dynare++: the get() method of tensor containers now return a reference
...
Previously it was returning a pointer, which is non-standard for containers,
and was leading to ugly dereferencing everywhere.
2019-02-20 18:06:58 +01:00
Sébastien Villemot
b5793ddd22
Dynare++: use std::unique_ptr for storage inside tensor containers
2019-02-20 17:04:34 +01:00
Sébastien Villemot
9f4986e90e
Add missing Dynare++ header file to MEX builds
2019-02-19 18:53:21 +01:00
Sébastien Villemot
9512a32ad0
Dynare++: remove duplicate implementation of the Pascal triangle
...
As a consequence, the singleton implementation has to be made thread-safe.
Also implement the singleton pattern using a namespace, rather than a static
instance.
2019-02-19 16:46:04 +01:00
Sébastien Villemot
5fcf563c61
Dynare++: factorize and optimize code for integer exponentiation
...
There were two implementations of integer exponentiation. Merge them into a new
file under utils/cc/.
By the way, optimize it using exponentiation by squaring.
2019-02-19 15:50:07 +01:00
Sébastien Villemot
9dfb556740
k-order DLL: fix bug introduced in 1f7d3beddc
...
For the IntSequence class, the initialization with {} and () are no longer
equivalent.
2019-02-12 19:09:28 +01:00
Sébastien Villemot
1f7d3beddc
Dynare++ tensor library: modernize the Symmetry class
...
We now use a initializer list constructor for creating symmetries of the form
$y^n$, $y^n u^m$, $y^nu^m\sigma^k$.
The constructor taking a single integer is used to initialize a symmetry of a
given length.
Similar changes are made to IntSequence.
This behavior is similar to std::vector.
2019-02-11 16:45:07 +01:00
Sébastien Villemot
af722f438f
Dynare++: drop remaining "using namespace std"
2019-02-06 19:00:46 +01:00
Sébastien Villemot
733308807d
Dynare++: by default, use as many threads as there are logical CPUs
...
The former default was 2 threads, since Dynare++ was written at a time when
hyper-threading was being generalized (but multiple cores were not).
2019-01-29 16:34:25 +01:00
Sébastien Villemot
752a02a36c
Dynare++: use C++11 threads (instead of POSIX threads API)
...
On Windows, this means that a POSIX threads implementation is no longer needed,
since C++11 threads are implemented using native Windows threads.
On GNU/Linux and macOS, POSIX threads are still used under the hood.
A new m4 macro (AX_CXX11_THREAD) is used to add the proper compilation
flags (instead of AX_PTHREAD).
2019-01-28 18:44:24 +01:00
Sébastien Villemot
a9e51ac4c0
Dynare++ sylvester equation solver: remove the SylvMemory class, not actually used
2019-01-25 18:43:21 +01:00
Sébastien Villemot
1ef1dedc65
Refactor GeneralMatrix and ConstGeneralMatrix classes
...
- Remove the GeneralMatrix(const ConstVector &) constructor, since it is hides
a memory allocation (copying the ConstVector into a fresh Vector). This
helped detecting and fixing several unneeded memory allocations. Some other
memory allocations are now more visible (with an explicit Vector{}
constructor).
- Add checks in GeneralMatrix(Vector, …) and ConstGeneralMatrix(ConstVector, …)
constructors for verifying that the {Const,}Vector has unit-stride (this was
an implicit assumption so far) and is large enough for storing rows*cols
elements.
- Add GeneralMatrix::operator=(const ConstGeneralMatrix &).
- Delete ConstGeneralMatrix::operator=().
2019-01-24 15:27:23 +01:00
Sébastien Villemot
c711d34d1d
Dynare++ / sylvester equation solver: refactor Vector and ConstVector classes
...
- these classes now encapsulate a std::shared_ptr<{const, }double>, so that
they do not perform memory management, and several {Const,}Vector instances
can transparently share the same underlying data
- make converting constructor from ConstVector to Vector explicit, since that
entails memory allocation (but the reverse conversion is almost costless, so
keep it implicit); do the same for GeneralMatrix/ConstGeneralMatrix,
TwoDMatrix/ConstTwoDMatrix
- remove the constructors that were extracting a row/column from a matrix, and
replace them by getRow() and getCol() methods on {Const,}GeneralMatrix
- rename and change the API of the complex version Vector::add(), so that it is
explicit that it deals with complex numbers
- add constructors that take a MATLAB mxArray
2019-01-22 16:13:22 +01:00
Sébastien Villemot
3c5afded8e
k-order DLL: fix build failure
2019-01-10 19:45:11 +01:00
Sébastien Villemot
e45d230a3d
Rename .dat file to standard .hh extension
2019-01-10 14:29:58 +01:00
Sébastien Villemot
188d6296d7
Dynare++: finish to apply Dynare C++ coding style and extensions (.cc/.hh)
2019-01-08 17:12:05 +01:00
Sébastien Villemot
ce1ef47093
dynare++ / tensor library (TL): move away from CWEB
...
By the way apply Dynare C++ coding style and extensions (.cc/.hh).
2019-01-08 16:09:25 +01:00
Sébastien Villemot
84255f9e9a
dynare++/integ: move away from CWEB
...
By the way apply Dynare C++ coding style and extensions (.cc/.hh).
2019-01-04 17:28:20 +01:00
Sébastien Villemot
df772325a2
dynare++/kord: move away from CWEB
...
By the way apply Dynare C++ coding style and extensions (.cc/.hh).
2019-01-04 16:32:05 +01:00
Sébastien Villemot
dcac799289
Fix check for QZ eigenvalue criterium
...
The criterium was previously incorrectly applied to the square absolute value of
eigenvalues. Rather apply it to the absolute value itself (as done in
mjdgges.m and the AIM solver).
Closes #1632
2019-01-02 16:37:30 +01:00
Sébastien Villemot
736d43c4e6
Bump minimal MATLAB version requirement to 7.9 (R2009b)
2018-11-13 15:59:16 +01:00
Sébastien Villemot
c6f5c804d9
Gensylv MEX also needs MatIO (because Dynare++ code does)
2018-11-12 12:56:01 +01:00
Sébastien Villemot
331a27398a
Fix another memory leak in k-order DLL
...
Re Dynare/dynare#1490 .
2018-11-08 17:30:48 +01:00
Sébastien Villemot
50a09a687e
C++11 modernization
...
Incidentally, fix a memory leak related to DynamicModelAC instantiation, using
a std::unique_ptr (see Dynare/dynare#1490 ).
2018-11-08 17:24:19 +01:00
Sébastien Villemot
afc9f94854
On Windows, statically link the pthread library
...
Otherwise the DLL is dynamically linked against libwinpthread. This regression
was introduced by commit 671fe4bcd
.
2018-11-07 14:38:04 +01:00
Sébastien Villemot
671fe4bcd4
Build system improvements on Windows (MinGW / MSYS2)
...
- Use the -static flag when linking Dynare++, so that shipping libquadmath and
libgcc DLL in the installer is no longer needed.
- Use AM_CXXFLAGS and AM_LDFLAGS variables for changing flags, since CXXFLAGS
and LDFLAGS are user variables. Also, this avoids passing these flags down to
configure scripts in subdirectories.
- Check for the SZIP library in the configure test for the MatIO, this is
needed under MSYS2.
- Statically link MatIO and GSL in MEX files for MATLAB, this is needed under
MSYS2.
2018-11-06 12:17:56 +01:00
Sébastien Villemot
ffb36e5713
Remove obsolete kludges for MinGW
2018-10-02 17:10:36 +02:00
Sébastien Villemot
59642c3312
C output of preprocessor now splits generated fcts into several smaller fcts
...
Adapt the k-order DLL as a consequence.
2018-10-01 16:13:12 +02:00
Sébastien Villemot
feeda74dfb
Remove spurious executable permission
2018-09-27 12:24:57 +02:00
Sébastien Villemot
d03cc56587
solve_algo=7 and stack_solve_algo=2 are now allowed under Octave
...
The gmres() function has been implemented (actually since Octave 3.4.1!).
2018-08-02 15:20:39 +02:00
Sébastien Villemot
932e5f946c
Update preprocessor submodule
...
Adapt bytecode DLL as a consequence.
2018-07-18 17:52:44 +02:00
Sébastien Villemot
cb46a2697e
Fix invalid memory write in k-order DLL
...
The bug would show at order 3 when the last output argument (derivs) is not
requested (in practice every 3rd order solution without pruning). The DLL would
still attempt to write into it, causing an invalid memory access.
2018-07-02 16:37:46 +02:00
Sébastien Villemot
b2c554623f
Various fixes related to the new layout of generated files
2018-06-28 18:14:40 +02:00
Sébastien Villemot
a1b8bd39b2
Move the location of various generated files on the filesystem
...
- M and MEX files are now under +${MODELNAME}/
- bytecode, C source and JSON now under ${MODELNAME}/model/
2018-06-27 17:03:39 +02:00
Houtan Bastani
f5bf76deb5
fix mex build system for macOS
2018-06-27 15:04:33 +02:00
Sébastien Villemot
a71e0ebee4
Add a compile-time check for MATLAB version, as we already do for Octave
2018-06-06 14:31:25 +02:00
Sébastien Villemot
e1a3c40ef0
Fix compilation of MS-SBVAR DLL under Octave 4.4
2018-06-05 17:07:45 +02:00
Sébastien Villemot
e669321eec
Require C++14 for MEX files
...
Needed because bytecode DLL uses some preprocessor code which is C++14.
2018-06-05 11:34:41 +02:00
Sébastien Villemot
02084ce310
Remove qzcomplex Oct-file
...
It's actually not needed. The QZ complex decomposition can be obtained in
Octave on real matrices by casting them to the complex type.
2018-05-17 12:11:15 +02:00
Sébastien Villemot
3f674f0f26
Enforce minimal Octave version in the configure script
2018-05-16 10:50:27 +02:00
Sébastien Villemot
e2c2f2d966
Remove fallbacks for ilu, linsolve and ordschur under Octave
...
These functions are all included in Octave 4.2.
2018-05-16 10:48:44 +02:00
Sébastien Villemot
f665379fcc
Kludge for bug in MinGW, that defines __STDC_UTF_16__ but not char16_t
...
This breaks the matrix.h of older MATLABs (e.g. R2009a). Also see <uchar.h>.
2018-05-15 19:29:17 +02:00
Sébastien Villemot
fbddfc0aae
Require C99 when compiling MEX files, since mjdgges now uses C99 features
2018-05-15 14:53:56 +02:00
Sébastien Villemot
7a2aa211bf
Make mjdgges DLL compatible with MATLAB interleaved complex API
...
This API was introduced in MATLAB 9.4 (R2018a), because the internal
representation of complex numbers has changed.
2018-05-14 15:16:09 +02:00
Houtan Bastani
fdf9a8a453
move preprocessor to submodule
2018-02-16 16:44:16 +01:00
Houtan Bastani
fb6a11f544
move estimation-dll to its own repository: https://github.com/DynareTeam/estimation-dll.git
2017-09-22 15:31:23 +02:00
Sébastien Villemot
1ff5c3f571
Fix various typos (thanks lintian).
2017-06-28 15:06:54 +02:00
Ferhat Mihoubi
119e5b4dfa
Corrects bugs in bytecode related to the use of finite instead of isfinite and to mxMalloc tests
2017-06-05 18:51:43 +02:00
Stéphane Adjemian (Charybdis)
e3769670df
Updated AC_INIT
2017-05-19 18:54:32 +02:00
Stéphane Adjemian (Charybdis)
1bf81c9f5a
Fixed copyright notices.
2017-05-18 18:36:38 +02:00
Stéphane Adjemian (Charybdis)
b4448937cc
Fixed indentation of c/h/cc/hh files.
2017-05-16 16:30:27 +02:00
Stéphane Adjemian (Charybdis)
a53636e24e
Fixed copyright notices.
2017-05-16 14:11:15 +02:00
Ferhat Mihoubi
981e31c8c3
Fix issues in bytecode with option extended_path related to the size of endo_simul and exo_simul
...
(cherry picked from commit ab7acc49e30fbcb292d63d58281581a308716b4c)
2017-05-08 18:40:18 +02:00
Ferhat Mihoubi
e248d8bf59
Fix memory and periods issues in bytecode
...
(cherry picked from commit fa5dd681abcb3243a5ee9be1f71fdfc51bced1cd)
2017-05-08 18:39:44 +02:00
Ferhat Mihoubi
857fc3c4f4
Corrects several bugs related to bytecode:
...
- Memory allocation is checked
- The amount of memory allocated for conditional forecast is corrected
2017-04-05 11:48:40 +02:00
Stéphane Adjemian (Charybdis)
8925e7ca1f
Cosmetic patch (remove some warnings about potentially uninitialized variables in bytecode).
2017-02-13 19:22:26 +01:00
Stéphane Adjemian (Charybdis)
537e384122
Fixed make parallel mode (missing dependency in automake).
2016-12-01 23:25:01 +01:00
Stéphane Adjemian (Charybdis)
1229372a6c
Defines M_PI (cross compilation for Octave).
2016-12-01 13:32:54 +01:00
Stéphane Adjemian (Charybdis)
23642b3b6b
Defines M_PI, M_SQRT2 and finite() in bytecode...
...
... Which are not in standard C/C++ (otherwise compilation of the mex for Octave
with -std=c++11 fails).
2016-12-01 13:32:54 +01:00
Houtan Bastani
e3fbefc616
mjdgges: fix bug where qz_criterium was not taken into account if a threshold argument is also passed
2016-10-27 11:19:34 +02:00
Houtan Bastani
8b17af05d5
bytecode: work around for isnan and isinf bug in C++ standard, glibc <= 2.23.
...
Fixed by https://sourceware.org/bugzilla/show_bug.cgi?id=19439
2016-10-11 16:01:27 +02:00
Michel Juillard
5d38280f27
remove one instance of dynamic exception specification
...
closes issue #1250
2016-07-16 00:13:47 +02:00
ferhat
ac2e5cfd52
- In extended path
...
- fix an error with results print out
- fix an error withe exogenous initialization
2015-11-19 17:03:05 +01:00
ferhat
77f5d572de
Fix the output arguments in case of bytecode failure
2015-11-06 15:06:17 +01:00
Stéphane Adjemian (Charybdis)
2ec1579cd0
Fixed warnings in bytecode compilation.
...
Removed unused variables.
2015-10-19 18:01:38 +02:00
ferhat
7c5272d852
Allows to compute the extended path and the conditional forecasts with bytecode
2015-09-22 15:39:49 +02:00
Sébastien Villemot
d0628af1f2
No longer compile ordschur.oct for Octave >= 4.0.
...
The function is now an Octave builtin.
2015-03-17 17:53:11 +01:00
Houtan Bastani
1b869b26a7
fix dates for changes in 86c3c0fb1b
and a40323d2fb
2015-01-08 18:39:04 +01:00
ferhat
86c3c0fb1b
Checks that fields endo_names, exo_names and param_names exist
2015-01-06 10:30:52 +01:00
ferhat
24b2993f50
Solves issues in deterministic simulation:
...
- replaces maximum_endo_(lead|lag) by maximum_(lead|lag) to determine the maximum number of lead and lag in deterministic simulation
- allows to use bytecode in solve_perfect_foresight_model.m
- Adds model information in bytecode
2014-12-17 09:37:43 +01:00
Houtan Bastani
cf910cb64f
build system: add flag for mex compilation on OS X 10.9
2014-07-24 12:18:38 +02:00
Sébastien Villemot
9b5a09958c
Fixes to make install.
...
- fix DESTDIR for preprocessor and MEX files (it was duplicated)
- don't install libdynare++.a
2014-07-18 12:15:36 +02:00
Houtan Bastani
8d2b79a224
make install, closes #576
2014-07-16 16:18:06 +02:00
Sébastien Villemot
41295ad602
Minor cleanups in k_order_perturbation DLL.
2014-03-21 17:26:55 +01:00
Sébastien Villemot
050b495a52
Fix an invalid memory access in k_order_perturbation DLL.
...
In the case where a 2nd/3rd derivative is symbolically not zero but numerically
zero at the evaluation point, the last lines of the g2/g3 matrices (in
KordpDynare::calcDerivativesAtSteady()) where uninitialized (these matrices
store the sparse hessian/3rd-deriv in coordinate list form, i.e. with 3 columns
and as many rows as non-zero elements). When reconstructing the dense
hessian/3rd-deriv matrix out of g2/g3, this would result in invalid memory
accesses.
2014-03-21 17:26:48 +01:00
Sébastien Villemot
9d32204790
Ensure that -lpthread is statically linked under MinGW.
2014-03-10 17:25:39 +01:00
Sébastien Villemot
75ae191d33
Upgrade to a newer version of the AX_BOOST_BASE macro.
...
Our workaround for cross-compilation has been incorporated upstream.
2014-03-03 11:13:27 +01:00
Michel Juillard
45f7de33e8
sobol qmc_sequence MEX: dimension larger than 1111 returns a proper
...
Matlab error message instead of crashing
2014-02-15 21:11:42 +01:00
Sébastien Villemot
5308da2cad
Upgrade the minimum requirement to MATLAB 7.5 (R2007b).
2014-02-03 15:52:54 +01:00
Sébastien Villemot
e5d4defb41
Fix handling of qz_criterium in k_order_perturbation MEX.
...
If the MEX file was called with options_.qz_criterium=[], it would not use a
correct default value (but would use NaN).
Closes #574
2014-01-27 15:33:37 +01:00
Sébastien Villemot
66d48f5917
Compatibility fixes for Octave 3.8.
...
- no longer use OCTAVE_QUIT in MEX files; this seems now only possible in
oct-files. (Ref #304 )
- do not build linsolve.oct on Octave >= 3.8, it is available natively.
- do not add strjoin.m to the patch on Octave >= 3.8, it is available natively.
- default_save_options has been renamed save_default_options.
2014-01-03 11:05:39 +01:00
Sébastien Villemot
85f001885e
Estimation DLL: fix bug with creating MAT files
...
Similar problem to #446
2013-12-06 14:46:44 +01:00
Houtan Bastani
a8d07308a9
ms-sbvar: support ctrl-c changes in submodule, #304
2013-12-05 16:13:58 +01:00
Sébastien Villemot
7ada720e7b
Bump version number
2013-12-02 17:55:10 +01:00
Houtan Bastani
830c09760e
preprocessor: remove clang warning on declaration of const static double in class definition
2013-11-22 14:59:34 +01:00
Houtan Bastani
3c75923e2d
revert £ change as 156 is an extended ascii code
2013-11-05 19:06:20 +01:00
Houtan Bastani
0e4bb3f8e9
fix typo
2013-11-05 18:06:24 +01:00
Houtan Bastani
5352fb4d16
preprocessor and matlab mex fixes for clang compilation
2013-11-05 18:04:57 +01:00
ferhat
f4cee9d5e5
Corrects a bug in the way to test for the presence of the global variables
2013-10-28 14:26:42 +01:00
Stéphane Adjemian (Charybdis)
399b6d2615
Specialized maxit in bytecode mex (dynamic simulation vs steady state).
2013-10-09 16:55:46 +02:00
Stéphane Adjemian (Charybdis)
d8052342f3
Fixed bug introduced in cc0d9b42f0
(bytecode.cc).
...
Problem when reading nested structures.
2013-10-09 16:26:29 +02:00
Stéphane Adjemian (Charybdis)
cc0d9b42f0
Changed name of options_.maxit as options_.simul.maxit.
2013-10-09 13:06:06 +02:00