Commit Graph

190 Commits (bf60795e8e70ee76e417cb4a8bc0ad6a50c391af)

Author SHA1 Message Date
Sébastien Villemot c15602c658
Dynare++: convert doc of Sylvester module to LaTeX
Previously it was plain TeX.

This allows us to remove the test for pdfetex.
2019-01-31 12:14:12 +01:00
Sébastien Villemot 268d540d58
Dynare++: add tl.tex to distributed tarball
By the way, simplify Makefile rules.
2019-01-31 12:11:28 +01:00
Sébastien Villemot 4f7330cb52
Dynare++: add LaTeX overview of the Tensor Library
The material of this document comes from the introduction to the library that
had been lost in the move away from CWEB (formerly tl/cc/main.web).

This file gives a good overview of the library. It has been adapted from TeX to
LaTeX. Also I fixed a mistake in the Faà di Bruno's tensor formula.
2019-01-30 19:07:57 +01:00
Sébastien Villemot a122927872
Dynare++: another change related to default number of threads
Forgotten in commit 733308807.
2019-01-29 20:31:06 +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 edda6e3038
Dynare++ multithreading: simplification of mutex interface 2019-01-29 15:53:44 +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 3ce051d819
Dynare++ sylvester equation solver: various simplifications and improvements
In particular, the test binary now errors out in case of test failure.
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 a2f2814cb2
Dynare++: ensure that all calls to BLAS/LAPACK use the correct LD values
Many BLAS/LAPACK calls were making the assumption that LD==rows when passing
matrices. In some cases this was correct (because of implementation details,
in particular because how the copy constructor of GeneralMatrix is implemented).
But in other cases it was a bug.

With this commit, the actual value for LD is systematically used (this fixes
existing bugs and prevent possible future ones if the implementation details
were changed).
2019-01-24 15:27:09 +01:00
Sébastien Villemot fefccd4a1b
Reverts changes mistakenly added to commit f484942154. 2019-01-22 18:21:57 +01:00
Sébastien Villemot f484942154
Update dseries submodule 2019-01-22 18:10:16 +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 49c06f5c7f
Dynare++ / sylvester equation solver: print solver method when debugging
By the way, simplify copy constructor/assignment.
2019-01-22 11:58:28 +01:00
Sébastien Villemot f655c170b6
Dynare++ / sylvester equation solver: second batch of modernizations 2019-01-17 10:20:49 +01:00
Sébastien Villemot b0a7826cb9
Dynare++ / sylvester equation solver: first batch of modernizations 2019-01-15 19:04:13 +01:00
Sébastien Villemot 2666a4ce45
Dynare++: "make check" now fails if a numerical integration test fails
By the way, reactivate two tests that actually pass.
2019-01-15 19:04:13 +01:00
Sébastien Villemot 325b1a3bb5
Dynare++: remove quasi-Monte Carlo Normal quadrature
This quadrature is supposed to generate quadrature points that are
quasi-normally distributed. Basically it applies the inverse normal CDF to the
Halton low-discrepancy sequence.

The problem is that it gives poor numerical accuracy, and therefore fails the
tests.

Since it is actually used nowhere in Dynare++, remove that code.
2019-01-15 19:04:10 +01:00
Sébastien Villemot 8ebcd7cae6
Dynare++: 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 now done in
Dynare).

Ref #1632
2019-01-15 19:04:04 +01:00
Sébastien Villemot 2a82177304
Dynare++: enforce C++ Emacs mode for bison/flex files 2019-01-15 19:03:58 +01:00
Sébastien Villemot b8791e9f13
Dynare++: various modernizations of numerical integration library 2019-01-14 18:56:49 +01:00
Sébastien Villemot 4a72266d05
Dynare++: use std::unique_ptr for memory management of workers in thread groups 2019-01-14 12:35:46 +01:00
Sébastien Villemot 8bc450f5ac
Various modernizations 2019-01-10 18:24:04 +01:00
Sébastien Villemot d5fcfb6566
Remove class MemoryFile, rather rely on C++ I/O streams 2019-01-10 17:52:02 +01:00
Sébastien Villemot a8f12c5b76
A few more modernizations with clang-tidy 2019-01-10 14:50:49 +01:00
Sébastien Villemot e45d230a3d
Rename .dat file to standard .hh extension 2019-01-10 14:29:58 +01:00
Sébastien Villemot 6076a4ff0c
Remove Emacs local mode variable
No longer needed now that files have C++-specific extensions.
2019-01-10 14:26:14 +01:00
Sébastien Villemot 38c24347ff
Use C++14 std::conditional_t (instead of custom IF template) 2019-01-09 17:26:28 +01:00
Sébastien Villemot 922014c2fa
Port to C++11 using keyword
Performed using modernize-use-using from clang-tidy.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-using.html
2019-01-09 17:21:14 +01:00
Sébastien Villemot 60fd92ddce
Port to C++11 override keyword
Performed using modernize-use-override from clang-tidy.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-override.html
2019-01-09 16:26:42 +01:00
Sébastien Villemot 9656904d41
Port to C++11 nullptr keyword
Performed using modernize-use-nullptr from clang-tidy.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-nullptr.html
2019-01-09 16:25:31 +01:00
Sébastien Villemot 7df31f68d9
Port to C++ delete keyword
Performed using modernize-use-equals-delete from clang-tidy.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-equals-delete.html
2019-01-09 16:23:04 +01:00
Sébastien Villemot 197cbea919
Port to C++11 syntax for default constructors
Performed using modernize-use-equals-default from clang-tidy.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-equals-default.html
2019-01-09 16:16:29 +01:00
Sébastien Villemot 1052046954
Port to C++11 emplace() method on containers
Performed using modernize-use-emplace from clang-tidy.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-emplace.html
2019-01-09 16:00:05 +01:00
Sébastien Villemot cbcd0a6950
Port to C++11 default members initializers
Performed using modernize-use-default-member-init from clang-tidy.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-default-member-init.html
2019-01-09 15:58:45 +01:00
Sébastien Villemot 966a1c2ac0
Port to C++11 auto keyword
Performed using modernize-use-auto from clang-tidy.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-auto.html
2019-01-09 15:51:19 +01:00
Sébastien Villemot 7e003cc591
Port some constructors to pass-by-value using C++11 move semantics
Performed using modernize-pass-by-value from clang-tidy.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-pass-by-value.html
2019-01-09 15:46:04 +01:00
Sébastien Villemot 2024330568
Port to C++11 range-based for loops
Performed using modernize-loop-convert from clang-tidy.

https://clang.llvm.org/extra/clang-tidy/checks/modernize-loop-convert.html
2019-01-09 15:44:26 +01:00
Sébastien Villemot 8b56ab6f11
Use C++11 erf/erfc instead of custom one 2019-01-08 17:49:15 +01:00
Sébastien Villemot ba609cce07
No need to redefine PI constant for MinGW 2019-01-08 17:46:36 +01:00
Sébastien Villemot f9df2bee2f
Use C++11 unordered_{map,set} instead of boost's 2019-01-08 17:38:21 +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 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 1ff5c3f571 Fix various typos (thanks lintian). 2017-06-28 15:06:54 +02:00
Houtan Bastani c8b7908aed dynare++: make multi-line define because a single line is too long for pdf compilation on OS X 2017-05-23 11:16:13 +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) 1229372a6c Defines M_PI (cross compilation for Octave). 2016-12-01 13:32:54 +01:00
Stéphane Adjemian 9653568fb6 Merge pull request #1247 from JohannesPfeifer/dyn++timing
Clarify the timing convention in dynare++
2016-08-23 16:45:26 +02:00
Johannes Pfeifer 90affdd775 Clarify the timing convention in dynare++
Closes #1244
2016-08-21 10:22:56 +02:00
Michel Juillard e7a1988223 throwing exception if dgges reports an error 2016-07-17 14:40:15 +02:00
Stéphane Adjemian (Charybdis) 510c6641c9 Fixed compilation failure on Windows. 2015-03-27 10:55:48 +01:00
Stéphane Adjemian (Sedna) 82bd6bcdf3 Fixed c++ warnings. 2015-03-25 14:54:32 +01:00
Stéphane Adjemian (Sedna) a97973d01f Added method for recognizing unreferenced atoms. Call to this method replace catching the exception used before to recognize that an atom is not referenced. 2015-03-25 14:52:28 +01:00
Stéphane Adjemian (Sedna) 64346de401 Initial guess for Lagrange multipliers solved by SVD decomposition to improve conditioning. 2015-03-25 14:45:09 +01:00
Stéphane Adjemian (Sedna) 7ca3683281 Fixed bug. Uninitialized memory reads because the code was working with a std::map, which was volatile. 2015-03-25 14:37:58 +01:00
Michel Juillard 404f29e47e dynare++ adding missing header 2013-10-10 10:04:14 +02:00
Sébastien Villemot 77dd7239b5 Dynare++: prevent repeated assignment of a parameter/variable
This is not correctly handled by the evaluator.

Closes #415
2013-08-27 15:17:07 +02:00
Michel Juillard 0c40ba0420 making dynare++ code compatible with Bison 2.7. Fixes #461 2013-08-07 15:23:22 +02:00
Houtan Bastani fe7a1248ba fix typo 2013-04-23 14:32:39 +02:00
Michel Juillard ebae08a585 wrapped line too long for some versions of ctangle 2012-11-22 10:26:47 +01:00
Houtan Bastani 4fd6ebca50 add ldflags_matio to dynare++ tests 2012-09-26 12:36:09 +02:00
Sébastien Villemot 3589c04f49 Add missing CPPFLAGS_MATIO 2012-09-21 07:29:11 +02:00
Houtan Bastani 4f54391e94 add --with-matio option to configure 2012-09-19 12:11:57 +02:00
Sébastien Villemot 8789151c73 Dynare++: compatibility fixes with MatIO 1.5 2012-09-11 15:22:29 +02:00
Sébastien Villemot cecb375be4 Link Dynare++ tests with MatIO 2012-09-11 15:01:26 +02:00
Sébastien Villemot 5f861cb0d8 Use MatIO in Dynare++ instead of the home-made engine 2012-08-23 18:31:07 +02:00
Michel Juillard 6dc64de7a9 fixing compiler warning about format argument 2012-07-31 21:50:59 +02:00
Michel Juillard 029d3dda08 dynare++: add steady state to first part of simulation when
interrupted by non finite result
2012-07-25 17:53:34 +02:00
Michel Juillard cf6772bc90 added method to access derivatives of approximated solution function 2012-07-25 14:59:06 +02:00
Sébastien Villemot c079ace8c3 Remove various compiler warnings 2012-06-08 19:06:03 +02:00
Sébastien Villemot 615535ad88 Fix compilation errors with GCC 4.7 2012-05-08 16:10:10 +02:00
Sébastien Villemot d4b4060d69 Fix build failure with -Werror=format-security
See Debian bug #646258 (http://bugs.debian.org/646258) and
http://wiki.debian.org/ReleaseGoals/SecurityHardeningBuildFlags for details.
2011-11-07 15:29:06 +01:00
Ondra Kamenik 7076fe31e9 When applying substitutions to the atom assignings, they are done also for non-referenced atoms, as they could still be referenced in evaluations. 2011-05-17 10:42:57 +02:00
Sébastien Villemot a23f4b7ebc Dynare++: compatibility fix for MATLAB 7.12 (R2011a) 2011-04-11 11:49:18 +02:00
Sébastien Villemot cdcfc23037 Dynare++ documentation: split comment lines (they are too long for old versions of pdftex)
(problem introduced in beb3b7f9c4)
2011-03-22 10:36:36 +01:00
Ondra Kamenik da664f5a26 Commented out not finished section. 2011-03-15 10:15:39 +01:00
Ondra Kamenik ee4fd757d9 Added a description of --burn <num> option. 2011-03-15 10:15:35 +01:00
Ondra Kamenik b05c7356ee Implemented burn-in periods in simulations, irfs, and in real-time simulations. 2011-03-15 10:15:14 +01:00
Sébastien Villemot beb3b7f9c4 Dynare++ documentation: fix invalid PDF problems 2011-03-11 12:33:43 +01:00
Sébastien Villemot b7d06ea629 Dynare++: fix typo (thanks to Thomas Weber) 2011-02-23 10:07:47 +01:00
Sébastien Villemot 2b8b32a2f0 Fixed warning in gensylv 2011-02-04 16:55:51 +01:00
Sébastien Villemot e0c0f2362b Dynare++: further updates to tutorial (date, instructions for running dynare_simul.m) 2011-01-24 17:55:13 -05:00
Houtan Bastani f21d54b7d5 dynare++: updated userguide installation procedure 2011-01-24 17:40:55 -05:00
Sébastien Villemot 696ee5c8f0 Dynare++ MATLAB simulation helper: add an error message when dynare_simul_ DLL not in the path 2011-01-20 16:03:54 -05:00
Sébastien Villemot 82a59bec79 Dynare++ MATLAB simulation helper: fixed commit 92cb073f3a 2011-01-20 15:56:26 -05:00
Sébastien Villemot e0261d258c Dynare++: fixed bug in tests 2011-01-20 15:42:53 -05:00
Sébastien Villemot 6b1f84ac27 Dynare++: in printf statements with size_t, remove %zd modifier introduced in
757d8c36e9 and replace it by %lu as a workaround.
The %zd modifier was introduced in C99 standard, but is not implemented by
MinGW.
2011-01-15 19:07:26 +01:00
Sébastien Villemot bc8b8e9c84 Build system: Dynare++ now depend on Boost 2011-01-15 11:33:01 +01:00
Sébastien Villemot 1bfbfbe73a Dynare++: update global copyright notices to span 2004-2011 2011-01-14 16:41:24 +01:00
Sébastien Villemot bf13ddcb74 Dynare++: replace obsolete hash_set and hash_map by unordered_set and unordered_map
- use the implementation from boost
- since these classes will probably be included in the next C++ standard, they are also available natively from g++ with option -std=c++0x, but boost is probably better for the moment
2011-01-14 16:40:59 +01:00
Sébastien Villemot 1ca828c134 Dynare++: fixed warning about unused functions 2011-01-14 16:29:11 +01:00
Sébastien Villemot ab87ccac06 Dynare++: fixed warning about conversion of string to char* and about non void functions returning nothing 2011-01-14 16:28:26 +01:00
Sébastien Villemot af0175443b Dynare++: fixed warning about comparison of signed with unsigned integers 2011-01-14 16:23:24 +01:00
Sébastien Villemot 610cb6387e Dynare++: fixed warning about redefined NOMINMAX macro 2011-01-14 16:22:58 +01:00
Sébastien Villemot 757d8c36e9 Dynare++: fixed warnings about printf format strings 2011-01-14 16:22:26 +01:00
Sébastien Villemot dbe288e3ca Make sure "min" and "max" macros are never defined under Windows, this can create conflicts with "std::min" and "std::max" 2010-10-29 12:01:47 +02:00