Commit Graph

153 Commits (cf0c2858706d8201183527c0fab2a9b8bd10086d)

Author SHA1 Message Date
Sébastien Villemot 6a26926892
Add new block_trust_region MEX
This MEX solves nonlinear systems of equations using a trust region algorithm.
The problem is subdivided in smaller problems by doing a block
triangularisation of the Jacobian at the guess value, using the
Dulmage-Mendelsohn algorithm.

The interface of the MEX is simply:

  [x, info] = block_trust_region(f, guess_value);

Where f is either a function handle or a string designating a function.
f must take one argument (the evaluation point), and return either one or two
arguments (the residuals and, optionally, the Jacobian).

On success, info=0; on failure, info=1.
2019-12-03 16:17:16 +01:00
Sébastien Villemot 93bd817ccb
Add Fortran 2008 interface for a subset of BLAS/LAPACK functions 2019-12-03 16:17:12 +01:00
Sébastien Villemot ba466d22c8
Add Fortran 2008 interface for a subset of MEX functions 2019-12-03 16:17:08 +01:00
Sébastien Villemot fedeeaad9f
Add support for Fortran 2008 in MEX files
By the same token, remove unused support for Fortran 77.
2019-12-03 16:17:00 +01:00
Sébastien Villemot 5cae192487
Build system: really error out if some dependency is missing
The changes in 8065e9d439 were not working as
intended, because AC_CHECK_PROG expect values and not actions. Hence
AC_MSG_ERROR was not properly executed.

By the way, simplify some test conditions using && instead of if/then/fi
blocks.
2019-11-28 14:43:44 +01:00
Sébastien Villemot 8065e9d439
Build system: by default, error out if some dependency is missing
In particular, if either MATLAB or Octave is missing, one needs to pass either
--disable-matlab or --disable-octave.

Moreover, several new configure flags have been introduced for disabling some
components:
--disable-doc
--disable-dynare++
--disable-mex-dynare++
--disable-mex-ms-sbvar
--disable-mex-kalman-steady-state
2019-11-26 13:53:42 +01:00
Houtan Bastani f8eb982767
octave configure: remove unnecessary library linking for macOS 2019-09-24 15:22:36 +02:00
Sébastien Villemot 0d0a0a9bbb
Bump to C++17
This means we now require GCC 8.

Boost filesystem library is no longer needed.

Ref preprocessor#16
2019-09-11 15:06:12 +02:00
Sébastien Villemot 35acc111ff
Windows package: fix random build failure due to race condition
The MEX files are built out-of-tree (because we want to do them in parallel).
This would create a potential race condition if several builds want to create
the symlinks under mex/matlab/ or mex/octave/.

The solution is to disable those symlinks for out-of-tree builds.
2019-09-04 11:39:52 +02:00
Sébastien Villemot bae1fa255a
Add scripts and CI job for building Windows package
The scripts are based the former “dynare-build” project. They have been
overhauled and simplified.

Building a Windows package (both installer and zip archive) is as easy as
running “make -C windows” (provided the right Debian packages are installed,
use the “windows/install-packages.sh” script for that purpose).

The layout of MEX files for Octave in the package has been
changed (mex/octave/win32/ and mex/octave/win64/ instead of mex/octave32/ and
mex/octave/), for consistency with MATLAB MEX.
2019-09-03 21:36:47 +02:00
Sébastien Villemot 9557061fa3
Add new num_procs MEX file for getting number of available processing units 2019-06-27 14:34:09 +02:00
Sébastien Villemot 7c39b12b7b
Always compile MEX files with OpenMP (when they can take advantage of it)
As a consequence, remove the --enable-openmp option of the configure script.
2019-06-25 17:26:17 +02:00
Sébastien Villemot 5b591fac42
New perfect_foresight_problem MEX file
It constructs the stacked residuals and jacobian of the perfect foresight
problem.

It is an almost perfect replacement for the perfect_foresight_problem.m
routine, while being much more efficient.

Note however that the DLL never return complex numbers (it instead puts NaNs at
the place where there would have been complex). This may create problems for
some MOD files; the algorithms will need to be adapted to use a more
line-search method.
2019-06-24 17:53:59 +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 f953374dba
More Unicode copyright symbol 2019-04-16 14:34:05 +02:00
Sébastien Villemot c46023ad56
POSIX shell stylistic improvements 2019-03-25 18:47:49 +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 c6f5c804d9
Gensylv MEX also needs MatIO (because Dynare++ code does) 2018-11-12 12:56:01 +01:00
Sébastien Villemot feeda74dfb Remove spurious executable permission 2018-09-27 12:24:57 +02:00
Sébastien Villemot e669321eec Require C++14 for MEX files
Needed because bytecode DLL uses some preprocessor code which is C++14.
2018-06-05 11:34:41 +02:00
Sébastien Villemot 02084ce310 Remove qzcomplex Oct-file
It's actually not needed. The QZ complex decomposition can be obtained in
Octave on real matrices by casting them to the complex type.
2018-05-17 12:11:15 +02:00
Sébastien Villemot 3f674f0f26 Enforce minimal Octave version in the configure script 2018-05-16 10:50:27 +02:00
Sébastien Villemot e2c2f2d966 Remove fallbacks for ilu, linsolve and ordschur under Octave
These functions are all included in Octave 4.2.
2018-05-16 10:48:44 +02:00
Sébastien Villemot fbddfc0aae Require C99 when compiling MEX files, since mjdgges now uses C99 features 2018-05-15 14:53:56 +02:00
Houtan Bastani fb6a11f544 move estimation-dll to its own repository: https://github.com/DynareTeam/estimation-dll.git 2017-09-22 15:31:23 +02:00
Stéphane Adjemian (Charybdis) e3769670df Updated AC_INIT 2017-05-19 18:54:32 +02:00
Stéphane Adjemian (Charybdis) 537e384122 Fixed make parallel mode (missing dependency in automake). 2016-12-01 23:25:01 +01:00
Sébastien Villemot d0628af1f2 No longer compile ordschur.oct for Octave >= 4.0.
The function is now an Octave builtin.
2015-03-17 17:53:11 +01:00
Sébastien Villemot 9b5a09958c Fixes to make install.
- fix DESTDIR for preprocessor and MEX files (it was duplicated)
- don't install libdynare++.a
2014-07-18 12:15:36 +02:00
Houtan Bastani 8d2b79a224 make install, closes #576 2014-07-16 16:18:06 +02:00
Sébastien Villemot 75ae191d33 Upgrade to a newer version of the AX_BOOST_BASE macro.
Our workaround for cross-compilation has been incorporated upstream.
2014-03-03 11:13:27 +01:00
Sébastien Villemot 66d48f5917 Compatibility fixes for Octave 3.8.
- no longer use OCTAVE_QUIT in MEX files; this seems now only possible in
  oct-files. (Ref #304)
- do not build linsolve.oct on Octave >= 3.8, it is available natively.
- do not add strjoin.m to the patch on Octave >= 3.8, it is available natively.
- default_save_options has been renamed save_default_options.
2014-01-03 11:05:39 +01:00
Sébastien Villemot 7ada720e7b Bump version number 2013-12-02 17:55:10 +01:00
Sébastien Villemot 82edf48256 No longer consider automake warnings as fatal
With automake 1.14 there are a lot of new warnings related to the way we deal
with MEX files (they are compiled from source files located in a different
tree). Automake wants us to use the 'subdir-objects' option, but it breaks in
our case.

In automake 2.0, the 'subdir-objects' option will be activated by default, so
we will have to refactor the build system for MEX files. But for now we can
live with the automake warnings.
2013-09-09 14:50:32 +02:00
Sébastien Villemot d8e9bc978d Revert "Compatibility fix with automake 1.14"
This reverts commit 7541bb52f5.

This commit was breaking compilation of MEX files: the subdir-objects option
does not deal well with source files that are under a distinct tree.
2013-09-09 14:47:29 +02:00
Sébastien Villemot 7541bb52f5 Compatibility fix with automake 1.14 2013-09-06 15:00:37 +02:00
Houtan Bastani 47b53dbeea build system: osx fix for bytecode mex in octave 2013-04-17 17:45:28 +02:00
Sébastien Villemot c8e59f1361 Do not put -lumfpack in LIBS, rather use a special variable for it 2013-03-29 15:30:31 +01:00
Sébastien Villemot 513ae741e3 Build system for MEX/Octave: use Octave's LDFLAGS in the configure script
This will facilitate the detection of UMFPACK under Windows
2013-03-29 15:07:58 +01:00
Sébastien Villemot 86db8d805c Add configure test for UMFPACK 2013-03-23 17:09:00 +01:00
Sébastien Villemot 1db892efc4 Fix compilation problems of bytecode with UMFPACK and MATLAB's libut 2013-03-23 13:02:07 +01:00
Sébastien Villemot 82930ee29a Implementation of steady state computation in estim DLL, using the GSL
Does not seem very robust (fails on fs2000), need to investigate why.
2013-03-06 16:58:22 +01:00
Sébastien Villemot 3d39d77917 Remove spurious executable permissions 2012-10-13 16:10:01 +02:00
Sébastien Villemot 3e612e0211 Fix build system with Automake 1.12 2012-09-28 17:31:39 +02:00
Sébastien Villemot 5d5771a823 Another typo 2012-09-25 19:58:03 +02:00
Sébastien Villemot 6cfec3f6ad More CPPFLAGS_MATIO fun 2012-09-25 19:53:20 +02:00
Sébastien Villemot 4d98c2007f Rename CFLAGS_MATIO to CPPFLAGS_MATIO 2012-09-20 22:53:47 +02:00
Houtan Bastani 4f54391e94 add --with-matio option to configure 2012-09-19 12:11:57 +02:00
Houtan Bastani e48f535004 bug fix: ms_sbvar requires matio under octave but configure output doesn't state that it's missing. 2012-09-19 12:11:57 +02:00
Houtan Bastani a54af094f2 bug fix: slicot configuration (allow path specification using --with-slicot flag) 2012-09-18 14:45:32 +02:00
Sébastien Villemot c07ffd8705 Merge branch 'slicot' 2012-09-13 11:11:46 +02:00
Sébastien Villemot 0332309647 Remove embedded SLICOT, rely on external binary 2012-09-13 11:08:42 +02:00
Sébastien Villemot 5f861cb0d8 Use MatIO in Dynare++ instead of the home-made engine 2012-08-23 18:31:07 +02:00
Sébastien Villemot 2e65a9ab96 Provide a better implementation of linsolve for Octave
Closes: #273
2012-08-06 18:26:16 +02:00
Houtan Bastani 7c4b36695d change autoconf min version to match that of root config file 2012-08-02 16:17:08 +02:00
Sébastien Villemot 91967eac6d Bump version numbers 2012-06-11 12:07:10 +02:00
Sébastien Villemot ff4285d6fb matio is a requirement for ms-sbvar under Octave 2012-04-20 11:50:03 +02:00
Houtan Bastani f402d59acf ms-sbvar: link to Matio library for Octave compilation 2012-04-13 15:54:48 +02:00
Stéphane Adjemian (Charybdis) 40329e3e29 Added routine to compute one step ahead state space iteration (mex and m). The state space
equations are approximated at order two around the deterministic steady state.
2012-03-04 22:07:27 +01:00
Sébastien Villemot a66594caed Add MEXEXT define to build system, adapt relevant DLL and Windows packaging
Closes: #235
2012-01-09 12:39:09 +01:00
Sébastien Villemot 2185924081 Build system: fix for Octave 3.4 2011-12-28 13:05:30 +01:00
Sébastien Villemot d33f149178 Windows package: build against Octave 3.4.3 2011-12-26 18:00:08 +01:00
Stéphane Adjemian (Charybdis) bdee23876d Fixed Octave's mex extension for qmc_sequence. 2011-12-22 14:32:32 +01:00
Stéphane Adjemian (Charybdis) f28084e79b Removed binary. 2011-12-22 14:32:07 +01:00
Stéphane Adjemian (Charybdis) 4869fff243 Added new mex file for computing Quasi Monte-Carlo sequences (Sobol), texinfo headers and unitary tests are available in <DYNARE_PATH>/matlab/qmc_sequence.m. 2011-12-21 18:23:15 +01:00
Sébastien Villemot a3ec794f48 Build system: adding files forgotten in a1ee7f1ee4 2011-09-26 10:17:01 +02:00
Sébastien Villemot a1ee7f1ee4 block_kalman_filter: add MEX to build system 2011-09-23 18:22:15 +02:00
Houtan Bastani 75f5b88f86 SWZ: integrate ms-sbvar in build system 2011-02-22 15:16:51 +01:00
Houtan Bastani 6cdbf51a54 SWZ: Revert "SWZ: remove gsl from build system, to be reintstated if gsl remains a requirement in the ms new code"
This reverts commit e19026d130.
2011-02-22 15:06:38 +01:00
Stéphane Adjemian (Scylla) 478b13eb7c Changed default fortran compiler to gfortran. 2011-02-11 16:00:15 +01:00
Sébastien Villemot fcb12985c1 Bump version number 2011-02-04 17:45:54 +01:00
Houtan Bastani 6674b5ffcf SWZ: remove from swz from mex build system 2011-02-02 19:00:14 +01:00
Houtan Bastani e19026d130 SWZ: remove gsl from build system, to be reintstated if gsl remains a requirement in the ms new code 2011-02-02 18:58:36 +01:00
Sébastien Villemot 80b5c23346 Build system for MEX files:
- remove the dirty vpath hack
- factorize between the two estimation DLLs
- factorize within SWZ makefile
2011-01-25 17:13:00 -05:00
Sébastien Villemot afeaf1ead0 bump min boost to 1.36 to accord with 72008502c1 2011-01-24 17:52:33 -05:00
Sébastien Villemot e39cb94954 Build system: remove warning about parentheses (we know the priority rules of C++, no need to be reminded) 2011-01-13 19:05:58 +01:00
Houtan Bastani e7843e349a Modify configure script to show Kalman Steady State seperately from other mex files 2010-12-14 10:27:39 +01:00
Sébastien Villemot e826fb8239 Build system: kalman_steady_state depends on libslicot and must be built after 2010-12-14 09:57:15 +01:00
Houtan Bastani 41bda1eb07 Mac libslicot compilation optional (because a Fortran compiler is not standard on OS X) 2010-12-13 18:15:11 +01:00
Sébastien Villemot 965ea7280a Build system: add detection and linking of MatIO library for Estimation DLL under Octave 2010-12-08 10:22:44 +01:00
Stéphane Adjemian (Charybdis) 160922a189 Added mex file for computing the fixed point of the riccati equation in the kalman filter.
The mex works with octave but not with matlab (lapack issue again ;-).
2010-11-19 14:39:54 +01:00
Sébastien Villemot 479b2be602 Build system: added missing PIC flag for Fortran code in Octave DLLs 2010-11-18 11:10:49 +01:00
Stéphane Adjemian (Charybdis) 382ab96cde Added the Slicot library (distributed under the GNU General Public Licence at www.slicot.org). This library provides routines
for the design and analysis of control systems. Adapted the building system to handle fortran 77 source files.
2010-11-18 10:11:27 +01:00
Sébastien Villemot 48096db2ff Build system: add logMHMCMC DLL 2010-10-28 10:17:58 +02:00
Sébastien Villemot a2367e9ecb Build system: fixed typo introduced in 69fc0e320b 2010-10-22 11:50:16 +02:00
Sébastien Villemot 81823ad035 New oct-file for "ordschur": the diffuse filter now works under Octave 2010-10-21 15:43:13 +02:00
Sébastien Villemot 69fc0e320b New oct-file "qzcomplex" for bringing the complex QZ decomposition to Octave. Fixes issues with partial information under Octave. 2010-10-21 12:33:18 +02:00
Sébastien Villemot 1a27ed9f38 OpenMP support:
- removed build_matlab_multithread.m and isopenmp MEX file
- introduced a new option "--enable-openmp" in configure script
- when openmp support is compiled in, the default is still one thread; the user can set the number of threads with "set_dynare_threads(n)"
- closes #68
2010-09-27 15:56:19 +02:00
Sébastien Villemot 0893e963cb Build system: change the way we detect the GSL, to make it work when cross-compiling 2010-08-24 16:24:03 +02:00
Sébastien Villemot acf5451c1f Build system: rename 'loglikelihood' to 'logposterior' 2010-07-09 12:48:08 +02:00
Houtan Bastani ad28c2054d Add boost/math and boost/random to configure script for mex build system 2010-07-01 14:15:08 +02:00
Sébastien Villemot 04905660b8 Added new loglikelihood DLL (does not yet contain prior computation, only the likelihood) 2010-06-11 19:18:16 +02:00
Sébastien Villemot e347f2ae7a Build system: adding -Wall when building MEX files 2010-06-11 18:40:58 +02:00
Sébastien Villemot 9318856a4e SWZ: finalize build system for MEX by adding a test for GSL 2010-06-01 15:33:45 +02:00
Houtan Bastani 28602be1e8 include in build system 2010-06-01 11:18:55 +02:00
Sébastien Villemot ef521882cc Fixed 4.2 version numbers 2010-02-02 18:23:31 +01:00
Sébastien Villemot 00c73845e0 Build system: further fixes for possibly empty directories (needed because of Git migration) 2010-02-01 10:50:29 +01:00
Sébastien Villemot d6aa4f1329 Build system: create empty directories (needed because of Git migration) 2010-01-29 15:13:34 +01:00
sebastien 03600d9131 k_order_perturbation DLL:
* no longer use mexPrintf()/mexErrMsgTxt() outside mexFunction(): use exceptions to report errors, in order to be able to integrate the code in a standalone executable
* fixed a few memory leaks (other still remain)
* fixed a buffer overflow issue in the filename of the dynamic MEX (using C++ string object)
* various cosmetic cleanups


git-svn-id: https://www.dynare.org/svn/dynare/trunk@3177 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-11-30 16:31:27 +00:00
sebastien e5f31e4ed3 Build system:
* added dynare_simul_ DLL
* factorized in a library object the Dynare++ code shared between gensylv, k_order_perturbation and dynare_simul_


git-svn-id: https://www.dynare.org/svn/dynare/trunk@3114 ac1d8469-bf42-47a9-8791-bf33cf982152
2009-11-02 12:04:07 +00:00