Sébastien Villemot
0b9b69f638
Dynare++: various simplifications
2019-04-24 17:47:15 +02:00
Sébastien Villemot
f5e2bfc30a
Ask GCC to warn about C-style casts (-Wold-style-cast)
...
Adapt the code accordingly.
2019-04-23 13:03:20 +02:00
Sébastien Villemot
e0280d067b
Dynare++: improvements to comments
2019-04-16 15:20:56 +02:00
Sébastien Villemot
c9bdc2c885
Dynare++: simplify methods for getting number of columns and rows of a matrix
...
Previously there were GeneralMatrix::numRows() and TwoDMatrix::nrows() for doing
the same thing (and same for columns and Const versions).
Merge these two into GeneralMatrix::nrows().
2019-04-16 12:44:02 +02:00
Sébastien Villemot
57848930c6
Use Unicode copyright symbol (in UTF-8 encoding)
...
Do not use it in MATLAB source files, since unfortunately the MATLAB editor
does not support UTF-8.
2019-04-16 11:42:16 +02:00
Sébastien Villemot
c10d8daf9f
Dynare++: add safety check to avoid overflow in tensor indices
...
Ref #217
2019-04-15 18:32:59 +02:00
Sébastien Villemot
a6d7baabea
Dynare++: improvements to comments
2019-04-12 18:26:30 +02:00
Sébastien Villemot
85f472c74b
Dynare++: new helpers for constructing {Const,}{TwoD,General}Matrix from mxArray*
2019-04-10 19:00:49 +02:00
Sébastien Villemot
e67c172000
Dynare++: improvements to comments
...
[skip ci]
2019-04-05 18:39:47 +02:00
Sébastien Villemot
960deff5a9
Dynare++: improvements to comments
2019-04-01 18:42:35 +02:00
Sébastien Villemot
860e1e1c75
Dynare++: improve comments
2019-03-29 18:46:52 +01:00
Sébastien Villemot
44b40bbf09
Dynare++: improvements to comments
...
[skip ci]
2019-03-28 18:59:34 +01:00
Sébastien Villemot
5958848145
Dynare++: improve comments using Unicode (first batch)
...
[skip ci]
2019-03-27 19:22:51 +01:00
Sébastien Villemot
4c11e9e9ec
Dynare++ kord and MEX: various modernizations and improvements
2019-03-07 19:46:15 +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
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
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
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
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
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
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
af722f438f
Dynare++: drop remaining "using namespace std"
2019-02-06 19:00:46 +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