1. 11 Feb, 2019 1 commit
    • Sébastien Villemot's avatar
      Dynare++ tensor library: modernize the Symmetry class · 1f7d3bed
      Sébastien Villemot authored
      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.
  2. 06 Feb, 2019 3 commits
  3. 05 Feb, 2019 1 commit
    • Sébastien Villemot's avatar
      Dynare++: fix computation of IRFs · 8698b4c5
      Sébastien Villemot authored
      Since the introduction of the --burn option (in Dynare++ shipped with Dynare
      4.3.0), the IRFs reported by Dynare++ were wrong.
      The IRFs are computed using a generalized IRF method: the result is
      the (average) difference between a simulation with shock and a simulation
      without shock. The problem was that the two simulations were not using the same
      starting point.
      Closes #1634
  4. 02 Feb, 2019 1 commit
    • Sébastien Villemot's avatar
      Dynare++: fix bug in new threading code · 3e5b4084
      Sébastien Villemot authored
      At the end of a thread, we must first notify the main thread waiting on the
      condition variable, then unlock the mutex. We must do these two operations in
      that order, otherwise there is a possibility of having the main process
      destroying the condition variable before the thread tries to notify it (if all
      other threads terminate at the same time and bring the counter down to zero).
      For that reason, we cannot use std::notify_all_at_thread_exit().
      Bug introduced in commit 752a02a3.
  5. 31 Jan, 2019 5 commits
  6. 30 Jan, 2019 1 commit
    • Sébastien Villemot's avatar
      Dynare++: add LaTeX overview of the Tensor Library · 4f7330cb
      Sébastien Villemot authored
      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.
  7. 29 Jan, 2019 3 commits
  8. 28 Jan, 2019 1 commit
    • Sébastien Villemot's avatar
      Dynare++: use C++11 threads (instead of POSIX threads API) · 752a02a3
      Sébastien Villemot authored
      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).
  9. 25 Jan, 2019 2 commits
  10. 24 Jan, 2019 2 commits
    • Sébastien Villemot's avatar
      Refactor GeneralMatrix and ConstGeneralMatrix classes · 1ef1dedc
      Sébastien Villemot authored
      - 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{}
      - 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
      - Add GeneralMatrix::operator=(const ConstGeneralMatrix &).
      - Delete ConstGeneralMatrix::operator=().
    • Sébastien Villemot's avatar
      Dynare++: ensure that all calls to BLAS/LAPACK use the correct LD values · a2f2814c
      Sébastien Villemot authored
      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).
  11. 22 Jan, 2019 4 commits
  12. 17 Jan, 2019 1 commit
  13. 15 Jan, 2019 5 commits
  14. 14 Jan, 2019 2 commits
  15. 10 Jan, 2019 5 commits
  16. 09 Jan, 2019 3 commits