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).
- 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=().
- 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
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
- 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.
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.