Commit Graph

190 Commits (bf60795e8e70ee76e417cb4a8bc0ad6a50c391af)

Author SHA1 Message Date
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 29daae72b4
Dynare++: minor modernization 2019-03-01 18:40:46 +01:00
Sébastien Villemot 81d9b08050
Dynare++ tensor library: various modernizations/improvements 2019-02-27 19:07:01 +01:00
Sébastien Villemot fc35f3a384
Dynare++: make more explicit the interface for extracting the Symmetry of an IntSequence 2019-02-27 17:01:37 +01:00
Sébastien Villemot 9751e6e199
Dynare++: simplify IntSequence by moving a special-purpose constructor into Symmetry 2019-02-27 15:43:22 +01:00
Sébastien Villemot 07ef21fdc7
Dynare++: more explicit interface for unfolding an IntSequence wrt a Symmetry 2019-02-27 15:29:06 +01:00
Sébastien Villemot d86101327e
Dynare++: more explicit interface for inserting into a IntSequence 2019-02-27 14:39:47 +01:00
Sébastien Villemot a062ea2b69
Dynare++ tensor library: various modernizations 2019-02-26 18:59:45 +01:00
Sébastien Villemot 1639f75a3c
Dynare++: improve interface to not-in-place matrix multiplications 2019-02-26 18:59:45 +01:00
Sébastien Villemot e3967bda9a
Dynare++: improve interface to matrix transpose 2019-02-26 18:59:45 +01:00
Sébastien Villemot 16cc191298
Dynare++ tensor library: last batch of modernizations of testsuite 2019-02-26 18:59:45 +01:00
Sébastien Villemot c44545bb18
Dynare++: add some comments 2019-02-26 12:43:04 +01:00
Sébastien Villemot 82e7f9250d
Dynare++: make the sparse tensors assignable 2019-02-22 17:44:07 +01:00
Sébastien Villemot 8751de896b
Dynare++: make tensor containers assignable 2019-02-22 16:54:00 +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 790c56612c
Dynare++ tensor library: changes to exception handling
- TL_RAISE now unconditionally raises an exception
- rathe use TL_RAISE_IF at some places, to save a test in non-debug mode
2019-02-20 18:07:07 +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 c8c6ec58a6
Dynare++: simplify TLException class 2019-02-20 17:23:37 +01:00
Sébastien Villemot ff57451474
Dynare++: simplifications made possible by new init-list constructor of IntSequence 2019-02-20 17:04:37 +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 9e1df25580
Dynare++: various simplifications 2019-02-20 14:36:35 +01:00
Sébastien Villemot 02d6f86487
Dynare++ tensor library: use smart pointers in fold() and unfold() methods 2019-02-20 14:25:32 +01:00
Sébastien Villemot 72a445c348
Dynare++ tensor library doc: update for TLStatic; fix typo 2019-02-20 14:00:00 +01:00
Sébastien Villemot c0224a640c
Dynare++: small optimization in unfolded tensor indexing 2019-02-20 13:06:17 +01:00
Sébastien Villemot 30b8681731
Dynare++: make multinomial coeffs computation a method of IntSequence
Also improve on the comments.
2019-02-20 12:37:59 +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 0f37649755
Dynare++ tensor library: modernize normal moments computation 2019-02-19 12:53:02 +01:00
Sébastien Villemot d08ca8ca7f
Dynare++ tensor library: modernization of Kronecker product classes 2019-02-19 12:47:40 +01:00
Sébastien Villemot e91f48f2ce
Dynare++: modernize kord tests 2019-02-14 15:47:58 +01:00
Sébastien Villemot db6df6c73c
Dynare++ kord test: use modern pseudo-random number generator 2019-02-14 11:45:15 +01:00
Sébastien Villemot 49f85ceaca
Dynare++: rollback the std::shared_ptr change in Vector and ConstVector
The performance cost is too high to warrant the change.
2019-02-14 11:29:18 +01:00
Sébastien Villemot 23c9257f00
Dynare++: rollback the std::shared_ptr change in IntSequence
The performance cost is too high to warrant the change.
2019-02-14 11:05:19 +01:00
Sébastien Villemot 8dbc08e2c2
Dynare++: display real time elapsed in kord tests
Previously, only CPU time was displayed, which is misleading with
multithreading.
2019-02-13 18:31:03 +01:00
Sébastien Villemot 08a91079ce
Dynare++: change default # of threads to # logical CPUs divided by 2
Having twice less threads seems to give a better performance, probably because
BLAS is parallel.
2019-02-13 18:29:34 +01:00
Sébastien Villemot 579be3c5e2
Dynare tensor library tests: further modernizations 2019-02-13 16:35:06 +01:00
Sébastien Villemot 002e3d3770
Dynare++ tensor library: various simplifications/modernizations 2019-02-12 17:30:10 +01:00
Sébastien Villemot d9f0345213
Drop support for MatIO < 1.5 2019-02-12 15:58:29 +01:00
Sébastien Villemot 8e52940181
Dynare++ tensor library: first batch of simplifications for tests
Also make test failures fatal.
2019-02-12 15:18:24 +01:00
Sébastien Villemot 44d47ee560
Dynare++: refactor iterator over symmetries
Simplify the logic of iteration. Adapt the range-based for loop syntax.
2019-02-12 12:17:07 +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 19cc08b7e5
Dynare++: modernization and simplification of the IntSequence class
Similarly to Vector, it now uses a std::shared_ptr for managing the underlying
data.
2019-02-06 19:00:46 +01:00
Sébastien Villemot 099a1de607
Dynare++: further simplification in Vector class 2019-02-06 19:00:46 +01:00
Sébastien Villemot af722f438f
Dynare++: drop remaining "using namespace std" 2019-02-06 19:00:46 +01:00
Sébastien Villemot 8698b4c540
Dynare++: fix computation of IRFs
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
2019-02-05 17:18:21 +01:00
Sébastien Villemot 3e5b4084b8
Dynare++: fix bug in new threading code
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 752a02a36.
2019-02-02 09:05:02 +01:00
Sébastien Villemot 566d237ec3
Dynare++ tensor library: small simplification 2019-01-31 19:01:41 +01:00
Sébastien Villemot 342e8c7508
Dynare++ tensor library: further notation fixes in documentation
Also fix extensions of source files.
2019-01-31 19:01:41 +01:00
Sébastien Villemot a612c59ff3
Dynare++: remove leftover file from the transition away from CWEB 2019-01-31 19:01:40 +01:00