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