Bump minimal MATLAB version to R2014a

Ref. #1713
time-shift
Sébastien Villemot 2020-04-07 12:24:16 +02:00
parent e95b93f783
commit 6e0f104d7e
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
62 changed files with 109 additions and 607 deletions

View File

@ -2,7 +2,7 @@ variables:
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
TERM: linux TERM: linux
MATLAB_VERSION: R2020a MATLAB_VERSION: R2020a
OLD_MATLAB_VERSION: R2009b OLD_MATLAB_VERSION: R2014a
# The next stanza creates the version number used for the source tarball and the # The next stanza creates the version number used for the source tarball and the
# binary packages. Here are the following possible cases: # binary packages. Here are the following possible cases:

View File

@ -14,7 +14,7 @@ are necessary in that case.
In order to run Dynare, you need one of the following: In order to run Dynare, you need one of the following:
* MATLAB version 7.9 (R2009b) or above; * MATLAB version 8.3 (R2014a) or above;
* GNU Octave version 4.4 or above, with the statistics package from * GNU Octave version 4.4 or above, with the statistics package from
`Octave-Forge`_. Note however that the Dynare installers for Windows and `Octave-Forge`_. Note however that the Dynare installers for Windows and
macOS require a more specific version of Octave, as indicated on the download macOS require a more specific version of Octave, as indicated on the download

View File

@ -207,12 +207,6 @@ Copyright: 1993-1996 Kurt Hornik
2016-2017 Dynare Team 2016-2017 Dynare Team
License: GPL-3+ License: GPL-3+
Files: matlab/missing/strjoin/strjoin.m
Copyright: 2013-2019 Ben Abbott
2007 Muthiah Annamalai
2019 Dynare Team
License: GPL-3+
Files: matlab/lmmcp/catstruct.m Files: matlab/lmmcp/catstruct.m
Copyright: 2005 Jos van der Geest <jos@jasen.nl> Copyright: 2005 Jos van der Geest <jos@jasen.nl>
2013 Christophe Gouel 2013 Christophe Gouel

View File

@ -22,7 +22,7 @@ AC_REQUIRE([AX_MATLAB_ARCH])
AC_REQUIRE([AX_MATLAB_VERSION]) AC_REQUIRE([AX_MATLAB_VERSION])
AC_REQUIRE([AC_PROG_SED]) AC_REQUIRE([AC_PROG_SED])
AX_COMPARE_VERSION([$MATLAB_VERSION], [lt], [7.9], [AC_MSG_ERROR([Your MATLAB is too old, please upgrade to 7.9 (R2009b) at least.])]) AX_COMPARE_VERSION([$MATLAB_VERSION], [lt], [8.3], [AC_MSG_ERROR([Your MATLAB is too old, please upgrade to 8.3 (R2014a) at least.])])
AC_MSG_CHECKING([for options to compile MEX for MATLAB]) AC_MSG_CHECKING([for options to compile MEX for MATLAB])
@ -80,10 +80,6 @@ case ${MATLAB_ARCH} in
;; ;;
esac esac
# Kludge for incompatibility of older MATLABs (≤ R2011a) with recent gcc
# Include <uchar.h>, because matrix.h needs char16_t
AX_COMPARE_VERSION([$MATLAB_VERSION], [le], [7.12], [MATLAB_CFLAGS="$MATLAB_CFLAGS -include uchar.h"])
# Converts the MATLAB version number into comparable integers with only major and minor version numbers # Converts the MATLAB version number into comparable integers with only major and minor version numbers
# For example, 7.4.2 will become 0704 # For example, 7.4.2 will become 0704
ax_matlab_ver=$(echo "$MATLAB_VERSION" | $SED -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/Z\1ZZ\2Z/' \ ax_matlab_ver=$(echo "$MATLAB_VERSION" | $SED -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/Z\1ZZ\2Z/' \

View File

@ -88,7 +88,7 @@ make -j"$NTHREADS"
NAME=dynare-"$VERSION" NAME=dynare-"$VERSION"
PKGFILES="$ROOTDIR"/macOS/pkg/"$NAME" PKGFILES="$ROOTDIR"/macOS/pkg/"$NAME"
mkdir -p \ mkdir -p \
"$PKGFILES"/mex/matlab/maci64-7.9-9.3 \ "$PKGFILES"/mex/matlab/maci64-8.3-9.3 \
"$PKGFILES"/mex/matlab/maci64-9.4-9.8 \ "$PKGFILES"/mex/matlab/maci64-9.4-9.8 \
"$PKGFILES"/mex/octave \ "$PKGFILES"/mex/octave \
"$PKGFILES"/doc/dynare++ \ "$PKGFILES"/doc/dynare++ \
@ -107,7 +107,7 @@ cp -p "$ROOTDIR"/license.txt "$PKGFILES"
cp -pr "$ROOTDIR"/matlab "$PKGFILES" cp -pr "$ROOTDIR"/matlab "$PKGFILES"
cp -pr "$ROOTDIR"/examples "$PKGFILES" cp -pr "$ROOTDIR"/examples "$PKGFILES"
cp -L "$ROOTDIR"/mex/matlab/* "$PKGFILES"/mex/matlab/maci64-7.9-9.3 cp -L "$ROOTDIR"/mex/matlab/* "$PKGFILES"/mex/matlab/maci64-8.3-9.3
cp -p "$ROOTDIR"/scripts/dynare.el "$PKGFILES"/scripts cp -p "$ROOTDIR"/scripts/dynare.el "$PKGFILES"/scripts
cp -pr "$ROOTDIR"/contrib/ms-sbvar/TZcode/MatlabFiles "$PKGFILES"/contrib/ms-sbvar/TZcode cp -pr "$ROOTDIR"/contrib/ms-sbvar/TZcode/MatlabFiles "$PKGFILES"/contrib/ms-sbvar/TZcode

View File

@ -1,6 +1,6 @@
function mexpath = add_path_to_mex_files(dynareroot, modifypath) function mexpath = add_path_to_mex_files(dynareroot, modifypath)
% Copyright (C) 2015-2019 Dynare Team % Copyright (C) 2015-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -54,7 +54,7 @@ if isoctave
else else
% Add win32 specific paths for Dynare Windows package % Add win32 specific paths for Dynare Windows package
if strcmp(computer, 'PCWIN') if strcmp(computer, 'PCWIN')
tmp = [dynareroot '../mex/matlab/win32-7.9-8.6/']; tmp = [dynareroot '../mex/matlab/win32-8.3-8.6/'];
if exist(tmp, 'dir') if exist(tmp, 'dir')
mexpath = tmp; mexpath = tmp;
if modifypath if modifypath
@ -65,7 +65,7 @@ else
% Add win64 specific paths for Dynare Windows package % Add win64 specific paths for Dynare Windows package
if strcmp(computer, 'PCWIN64') if strcmp(computer, 'PCWIN64')
if matlab_ver_less_than('9.4') if matlab_ver_less_than('9.4')
tmp = [dynareroot '../mex/matlab/win64-7.9-9.3/']; tmp = [dynareroot '../mex/matlab/win64-8.3-9.3/'];
if exist(tmp, 'dir') if exist(tmp, 'dir')
mexpath = tmp; mexpath = tmp;
if modifypath if modifypath
@ -85,7 +85,7 @@ else
% Add macOS paths for Dynare Mac package % Add macOS paths for Dynare Mac package
if strcmp(computer, 'MACI64') if strcmp(computer, 'MACI64')
if matlab_ver_less_than('9.4') if matlab_ver_less_than('9.4')
tmp = [dynareroot '../mex/matlab/maci64-7.9-9.3/']; tmp = [dynareroot '../mex/matlab/maci64-8.3-9.3/'];
if exist(tmp, 'dir') if exist(tmp, 'dir')
mexpath = tmp; mexpath = tmp;
if modifypath if modifypath

View File

@ -17,7 +17,7 @@ function oo_ = compute_moments_varendo(type, options_, M_, oo_, var_list_)
% SPECIAL REQUIREMENTS % SPECIAL REQUIREMENTS
% none % none
% Copyright (C) 2008-2018 Dynare Team % Copyright (C) 2008-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -145,7 +145,7 @@ if M_.exo_nbr > 1
end end
skipline(); skipline();
if ~all(M_.H==0) if ~all(M_.H==0)
if isoctave || matlab_ver_less_than('8.1') if isoctave
[observable_name_requested_vars, varlist_pos] = intersect_stable(var_list_, options_.varobs); [observable_name_requested_vars, varlist_pos] = intersect_stable(var_list_, options_.varobs);
else else
[observable_name_requested_vars, varlist_pos] = intersect(var_list_, options_.varobs, 'stable'); [observable_name_requested_vars, varlist_pos] = intersect(var_list_, options_.varobs, 'stable');

View File

@ -17,7 +17,7 @@ function [ConditionalVarianceDecomposition, ConditionalVarianceDecomposition_ME]
% h is the number of Steps % h is the number of Steps
% p is the number of state innovations and % p is the number of state innovations and
% Copyright (C) 2010-2017 Dynare Team % Copyright (C) 2010-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -89,7 +89,7 @@ end
% Measurement error % Measurement error
if ~all(StateSpaceModel.measurement_error==0) if ~all(StateSpaceModel.measurement_error==0)
if isoctave || matlab_ver_less_than('8.1') if isoctave
[observable_pos,index_subset,index_observables]=intersect_stable(SubsetOfVariables,StateSpaceModel.observable_pos); [observable_pos,index_subset,index_observables]=intersect_stable(SubsetOfVariables,StateSpaceModel.observable_pos);
else else
[observable_pos,index_subset,index_observables]=intersect(SubsetOfVariables,StateSpaceModel.observable_pos,'stable'); [observable_pos,index_subset,index_observables]=intersect(SubsetOfVariables,StateSpaceModel.observable_pos,'stable');

View File

@ -22,7 +22,7 @@ function oo_ = ...
% OUTPUTS % OUTPUTS
% oo_ [structure] Dynare structure where the results are saved. % oo_ [structure] Dynare structure where the results are saved.
% Copyright (C) 2017-2018 Dynare Team % Copyright (C) 2017-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -63,7 +63,7 @@ if isempty(exogenous_variable_index)
end end
end end
if isoctave || matlab_ver_less_than('8.1') if isoctave
[observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(var_list,options_.varobs); [observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(var_list,options_.varobs);
else else
[observable_pos_requested_vars,index_subset,index_observables]=intersect(var_list,options_.varobs,'stable'); [observable_pos_requested_vars,index_subset,index_observables]=intersect(var_list,options_.varobs,'stable');

View File

@ -11,7 +11,7 @@ function oo_=disp_moments(y,var_list,M_,options_,oo_)
% OUTPUTS % OUTPUTS
% oo_ [structure] Dynare's results structure, % oo_ [structure] Dynare's results structure,
% Copyright (C) 2001-2019 Dynare Team % Copyright (C) 2001-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -50,7 +50,7 @@ y = y(ivar,options_.drop+1:end)';
ME_present=0; ME_present=0;
if ~all(M_.H==0) if ~all(M_.H==0)
if isoctave || matlab_ver_less_than('8.1') if isoctave
[observable_pos_requested_vars, index_subset, index_observables] = intersect_stable(ivar, options_.varobs_id); [observable_pos_requested_vars, index_subset, index_observables] = intersect_stable(ivar, options_.varobs_id);
else else
[observable_pos_requested_vars, index_subset, index_observables] = intersect(ivar, options_.varobs_id, 'stable'); [observable_pos_requested_vars, index_subset, index_observables] = intersect(ivar, options_.varobs_id, 'stable');

View File

@ -2,7 +2,7 @@ function oo_ = disp_th_moments(dr, var_list, M_, options_, oo_)
% Display theoretical moments of variables % Display theoretical moments of variables
% Copyright (C) 2001-2018 Dynare Team % Copyright (C) 2001-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -55,7 +55,7 @@ oo_.var = oo_.gamma_y{1};
ME_present=0; ME_present=0;
if ~all(M_.H==0) if ~all(M_.H==0)
if isoctave || matlab_ver_less_than('8.1') if isoctave
[observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(ivar,options_.varobs_id); [observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(ivar,options_.varobs_id);
else else
[observable_pos_requested_vars,index_subset,index_observables]=intersect(ivar,options_.varobs_id,'stable'); [observable_pos_requested_vars,index_subset,index_observables]=intersect(ivar,options_.varobs_id,'stable');
@ -105,7 +105,7 @@ if size(stationary_vars, 1) > 0
lh = cellofchararraymaxlength(M_.endo_names(ivar(stationary_vars)))+2; lh = cellofchararraymaxlength(M_.endo_names(ivar(stationary_vars)))+2;
dyntable(options_, title, headers, M_.endo_names(ivar(stationary_vars)), 100*oo_.gamma_y{options_.ar+2}(stationary_vars,:), lh, 8, 2); dyntable(options_, title, headers, M_.endo_names(ivar(stationary_vars)), 100*oo_.gamma_y{options_.ar+2}(stationary_vars,:), lh, 8, 2);
if ME_present if ME_present
if isoctave || matlab_ver_less_than('8.1') if isoctave
[stationary_observables, pos_index_subset] = intersect_stable(index_subset, stationary_vars); [stationary_observables, pos_index_subset] = intersect_stable(index_subset, stationary_vars);
else else
[stationary_observables, pos_index_subset] = intersect(index_subset, stationary_vars, 'stable'); [stationary_observables, pos_index_subset] = intersect(index_subset, stationary_vars, 'stable');

View File

@ -16,7 +16,7 @@ function [ldens,Dldens,D2ldens] = lpdfgweibull(x,a,b,c) % --*-- Unitary tests -
% SPECIAL REQUIREMENTS % SPECIAL REQUIREMENTS
% none % none
% Copyright (C) 2015-2017 Dynare Team % Copyright (C) 2015-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -205,7 +205,7 @@ end
%$ density = @(x) exp(lpdfgweibull(x,shape,scale)); %$ density = @(x) exp(lpdfgweibull(x,shape,scale));
%$ %$
%$ try %$ try
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ s = quadl(density, .0000000001, 100000, 1e-10); %$ s = quadl(density, .0000000001, 100000, 1e-10);
%$ else %$ else
%$ s = integral(density, 0, 100000); %$ s = integral(density, 0, 100000);
@ -228,7 +228,7 @@ end
%$ density = @(x) exp(lpdfgweibull(x,shape,scale)); %$ density = @(x) exp(lpdfgweibull(x,shape,scale));
%$ %$
%$ try %$ try
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ s = quadl(density, .0000000001, 100000, 1e-10); %$ s = quadl(density, .0000000001, 100000, 1e-10);
%$ else %$ else
%$ s = integral(density, 0, 100000); %$ s = integral(density, 0, 100000);
@ -251,7 +251,7 @@ end
%$ density = @(x) exp(lpdfgweibull(x,shape,scale)); %$ density = @(x) exp(lpdfgweibull(x,shape,scale));
%$ %$
%$ try %$ try
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ s = quadl(density, .0000000001, 100000, 1e-10); %$ s = quadl(density, .0000000001, 100000, 1e-10);
%$ else %$ else
%$ s = integral(density, 0, 100000); %$ s = integral(density, 0, 100000);
@ -262,7 +262,7 @@ end
%$ end %$ end
%$ %$
%$ if t(1) %$ if t(1)
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ t(2) = abs(s-1)<5e-5; %$ t(2) = abs(s-1)<5e-5;
%$ else %$ else
%$ t(2) = abs(s-1)<1e-6; %$ t(2) = abs(s-1)<1e-6;
@ -280,8 +280,6 @@ end
%$ try %$ try
%$ if isoctave %$ if isoctave
%$ s = quadgk(xdens, .0000000001, 100000, 1e-10); %$ s = quadgk(xdens, .0000000001, 100000, 1e-10);
%$ elseif matlab_ver_less_than('7.14')
%$ s = quadgk(xdens, .0000000001, 100000, 'AbsTol', 1e-10);
%$ else %$ else
%$ s = integral(xdens, 0, 100000); %$ s = integral(xdens, 0, 100000);
%$ end %$ end
@ -303,7 +301,7 @@ end
%$ xdens = @(x) x.*exp(lpdfgweibull(x,shape,scale)); %$ xdens = @(x) x.*exp(lpdfgweibull(x,shape,scale));
%$ %$
%$ try %$ try
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ s = quadl(xdens, .0000000001, 100000, 1e-10); %$ s = quadl(xdens, .0000000001, 100000, 1e-10);
%$ else %$ else
%$ s = integral(xdens, 0, 100000); %$ s = integral(xdens, 0, 100000);
@ -326,7 +324,7 @@ end
%$ xdens = @(x) x.*exp(lpdfgweibull(x,shape,scale)); %$ xdens = @(x) x.*exp(lpdfgweibull(x,shape,scale));
%$ %$
%$ try %$ try
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ s = quadl(xdens, .0000000001, 100000, 1e-10); %$ s = quadl(xdens, .0000000001, 100000, 1e-10);
%$ else %$ else
%$ s = integral(xdens, 0, 100000); %$ s = integral(xdens, 0, 100000);
@ -352,7 +350,7 @@ end
%$ try %$ try
%$ s = NaN(n, 1); %$ s = NaN(n, 1);
%$ for i=1:n %$ for i=1:n
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ s(i) = quadl(density, .0000000001, .1*i, 1e-10); %$ s(i) = quadl(density, .0000000001, .1*i, 1e-10);
%$ else %$ else
%$ s(i) = integral(density, 0, .1*i); %$ s(i) = integral(density, 0, .1*i);
@ -383,7 +381,7 @@ end
%$ try %$ try
%$ s = NaN(n, 1); %$ s = NaN(n, 1);
%$ for i=1:n %$ for i=1:n
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ s(i) = quadl(density, .0000000001, .1*i, 1e-10); %$ s(i) = quadl(density, .0000000001, .1*i, 1e-10);
%$ else %$ else
%$ s(i) = integral(density, 0, .1*i); %$ s(i) = integral(density, 0, .1*i);
@ -414,7 +412,7 @@ end
%$ try %$ try
%$ s = NaN(n, 1); %$ s = NaN(n, 1);
%$ for i=1:n %$ for i=1:n
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ s(i) = quadl(density, .0000000001, .1*i, 1e-10); %$ s(i) = quadl(density, .0000000001, .1*i, 1e-10);
%$ else %$ else
%$ s(i) = integral(density, 0, .1*i); %$ s(i) = integral(density, 0, .1*i);
@ -429,7 +427,7 @@ end
%$ for i=1:n %$ for i=1:n
%$ x = .1*i; %$ x = .1*i;
%$ q = 1-exp(-(x/scale)^shape); %$ q = 1-exp(-(x/scale)^shape);
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ t(i+1) = abs(s(i)-q)<5e-5; %$ t(i+1) = abs(s(i)-q)<5e-5;
%$ else %$ else
%$ t(i+1) = abs(s(i)-q)<1e-6; %$ t(i+1) = abs(s(i)-q)<1e-6;

View File

@ -83,7 +83,7 @@ MaXNumberOfConditionalDecompLines = ceil(options_.MaxNumberOfBytes/NumberOfSaved
ME_present=0; ME_present=0;
if ~all(M_.H==0) if ~all(M_.H==0)
if isoctave || matlab_ver_less_than('8.1') if isoctave
[observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(ivar,options_.varobs_id); [observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(ivar,options_.varobs_id);
else else
[observable_pos_requested_vars,index_subset,index_observables]=intersect(ivar,options_.varobs_id,'stable'); [observable_pos_requested_vars,index_subset,index_observables]=intersect(ivar,options_.varobs_id,'stable');

View File

@ -86,7 +86,7 @@ MaXNumberOfDecompLines = ceil(options_.MaxNumberOfBytes/NumberOfSavedElementsPer
ME_present=0; ME_present=0;
if ~all(M_.H==0) if ~all(M_.H==0)
if isoctave || matlab_ver_less_than('8.1') if isoctave
[observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(ivar,options_.varobs_id); [observable_pos_requested_vars,index_subset,index_observables]=intersect_stable(ivar,options_.varobs_id);
else else
[observable_pos_requested_vars,index_subset,index_observables]=intersect(ivar,options_.varobs_id,'stable'); [observable_pos_requested_vars,index_subset,index_observables]=intersect(ivar,options_.varobs_id,'stable');

View File

@ -82,10 +82,10 @@ if isoctave
skipline() skipline()
end end
else else
if matlab_ver_less_than('7.9') % Should match the test in mex/build/matlab/configure.ac if matlab_ver_less_than('8.3') % Should match the test in mex/build/matlab/configure.ac
% and in m4/ax_mexopts.m4 % and in m4/ax_mexopts.m4
skipline() skipline()
warning('This version of Dynare has only been tested on MATLAB 7.9 (R2009b) and above. Since your MATLAB version is older than that, Dynare may fail to run, or give unexpected results. Consider upgrading your MATLAB installation, or switch to Octave.'); warning('This version of Dynare has only been tested on MATLAB 8.3 (R2014a) and above. Since your MATLAB version is older than that, Dynare may fail to run, or give unexpected results. Consider upgrading your MATLAB installation, or switch to Octave.');
skipline() skipline()
end end
end end

View File

@ -87,8 +87,8 @@ if isoctave && octave_ver_less_than('5')
p{end+1} = '/missing/ordeig'; p{end+1} = '/missing/ordeig';
end end
%% intersect(…, 'stable') doesn't exist in Octave and in MATLAB < R2013a %% intersect(…, 'stable') doesn't exist in Octave
if isoctave || matlab_ver_less_than('8.1') if isoctave
p{end+1} = '/missing/intersect_stable'; p{end+1} = '/missing/intersect_stable';
end end
@ -116,33 +116,12 @@ if (isoctave && octave_ver_less_than('5')) || (~isoctave && matlab_ver_less_than
p{end+1} = '/missing/isfile'; p{end+1} = '/missing/isfile';
end end
% strsplit and strjoin are missing in MATLAB < R2013a
if ~isoctave && matlab_ver_less_than('8.1')
p{end+1} = '/missing/strsplit';
p{end+1} = '/missing/strjoin';
end
% contains and splitlines don't exist in Octave and in MATLAB < R2016b % contains and splitlines don't exist in Octave and in MATLAB < R2016b
if isoctave || matlab_ver_less_than('9.1') if isoctave || matlab_ver_less_than('9.1')
p{end+1} = '/missing/contains'; p{end+1} = '/missing/contains';
p{end+1} = '/missing/splitlines'; p{end+1} = '/missing/splitlines';
end end
% isrow, iscolumn and ismatrix are missing in Matlab<R2010b
if ~isoctave && matlab_ver_less_than('7.11')
p{end+1} = '/missing/is-row-column-matrix';
end
%% isdiag is missing in MATLAB < R2014a
if ~isoctave && matlab_ver_less_than('8.3')
p{end+1} = '/missing/isdiag';
end
%% narginchk is missing in MATLAB < R2011b
if ~isoctave && matlab_ver_less_than('7.13')
p{end+1} = '/missing/narginchk';
end
P = cellfun(@(c)[dynareroot(1:end-1) c], p, 'uni',false); P = cellfun(@(c)[dynareroot(1:end-1) c], p, 'uni',false);
% Get mex files folder(s) % Get mex files folder(s)

View File

@ -6,7 +6,7 @@ function [state_u,state_n] = get_dynare_random_generator_state()
% For backward compatibility, we return two vectors, but, in recent % For backward compatibility, we return two vectors, but, in recent
% versions of Matlab and in Octave, we return two identical vectors. % versions of Matlab and in Octave, we return two identical vectors.
% Copyright (C) 2010-2017 Dynare Team % Copyright (C) 2010-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -23,14 +23,8 @@ function [state_u,state_n] = get_dynare_random_generator_state()
% You should have received a copy of the GNU General Public License % You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>. % along with Dynare. If not, see <http://www.gnu.org/licenses/>.
matlab_random_streams = ~isoctave; if ~isoctave
s = RandStream.getGlobalStream();
if matlab_random_streams% Use new matlab interface.
if matlab_ver_less_than('7.12')
s = RandStream.getDefaultStream();
else
s = RandStream.getGlobalStream();
end
if isequal(s.Type,'legacy') if isequal(s.Type,'legacy')
state_u = rand('state'); state_u = rand('state');
state_n = randn('state'); state_n = randn('state');
@ -38,7 +32,7 @@ if matlab_random_streams% Use new matlab interface.
state_u = s.State; state_u = s.State;
state_n = state_u; state_n = state_u;
end end
else% Use old matlab interface. else
state_u = rand('state'); state_u = rand('state');
state_n = randn('state'); state_n = randn('state');
end end

View File

@ -327,7 +327,7 @@ if info(1) == 0 %no errors in solution
cmm = simulated_moment_uncertainty(ind_dMOMENTS, periods, replic,options_,M_,oo_); %covariance matrix of moments cmm = simulated_moment_uncertainty(ind_dMOMENTS, periods, replic,options_,M_,oo_); %covariance matrix of moments
sd = sqrt(diag(cmm)); sd = sqrt(diag(cmm));
cc = cmm./(sd*sd'); cc = cmm./(sd*sd');
if isoctave || matlab_ver_less_than('8.3') if isoctave
[VV,DD] = eig(cc); [VV,DD] = eig(cc);
%fix for older Matlab versions that do not support computing left eigenvalues, see http://mathworks.com/help/releases/R2012b/matlab/ref/eig.html %fix for older Matlab versions that do not support computing left eigenvalues, see http://mathworks.com/help/releases/R2012b/matlab/ref/eig.html
[WW,~] = eig(cc.'); [WW,~] = eig(cc.');
@ -536,4 +536,4 @@ if info(1) == 0 %no errors in solution
identification_checks(tilda_dSPECTRUM, 3, tol_rank, tol_sv, totparam_nbr); identification_checks(tilda_dSPECTRUM, 3, tol_rank, tol_sv, totparam_nbr);
end end
end end
end end

View File

@ -1,20 +0,0 @@
function r = iscolumn(V)
% Copyright (C) 2018 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
sz = size(V);
r = (length(sz) == 2) && (sz(2) == 1);

View File

@ -1,19 +0,0 @@
function r = ismatrix(V)
% Copyright (C) 2018 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
r = (ndims(V) == 2);

View File

@ -1,20 +0,0 @@
function r = isrow(V)
% Copyright (C) 2018 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
sz = size(V);
r = (length(sz) == 2) && (sz(1) == 1);

View File

@ -1,62 +0,0 @@
function b = isdiag(A) % --*-- Unitary tests --*--
% Copyright (C) 2014-2017 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
if isnumeric(A)
if isquare(A)
% Find non zero elements in matrix A...
[ir, ic] = find(A);
% If the non zero elements are on the diagonal, the corresponding elements
% in ir and ic (row and column numbers) should be equal.
b = isequal(ir, ic);
else
error('isdiag: Input must be a square matrix!')
end
else
error('isdiag: Input must be numeric!')
end
%@test:1
%$ A = zeros(3,3);
%$ t = isdiag(A);
%$ T = all(t);
%@eof:1
%@test:2
%$ A = zeros(3,3); A(1,3) = 1;
%$ t = ~isdiag(A);
%$ T = all(t);
%@eof:2
%@test:3
%$ A = randn(3,3);
%$ t = ~isdiag(A);
%$ T = all(t);
%@eof:3
%@test:4
%$ A = diag(randn(3,1));
%$ t = isdiag(A);
%$ T = all(t);
%@eof:4
%@test:5
%$ A = diag(randn(3,1)); A(1,1) = 0;
%$ t = isdiag(A);
%$ T = all(t);
%@eof:5

View File

@ -1,28 +0,0 @@
function narginchk(minArgs,maxArgs)
% Copyright (C) 2019 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
n = evalin('caller', 'nargin;');
if n < minArgs
error('narginchk: not enough input arguments');
end
if n > maxArgs
error('narginchk: too many input arguments');
end

View File

@ -10,7 +10,7 @@ function t = wblinv(proba, scale, shape) % --*-- Unitary tests --*--
% OUTPUTS % OUTPUTS
% - t [double] scalar such that P(X<=t)=proba % - t [double] scalar such that P(X<=t)=proba
% Copyright (C) 2015-2017 Dynare Team % Copyright (C) 2015-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -147,7 +147,7 @@ t = exp(log(scale)+log(-log(1-proba))/shape);
%$ if debug %$ if debug
%$ [shape, scale, x(k-1)] %$ [shape, scale, x(k-1)]
%$ end %$ end
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ s = quadv(density, 0, x(k-1),1e-10); %$ s = quadv(density, 0, x(k-1),1e-10);
%$ else %$ else
%$ s = integral(density, 0, x(k-1)); %$ s = integral(density, 0, x(k-1));
@ -155,7 +155,7 @@ t = exp(log(scale)+log(-log(1-proba))/shape);
%$ if debug %$ if debug
%$ [s, abs(p-s)] %$ [s, abs(p-s)]
%$ end %$ end
%$ if isoctave || matlab_ver_less_than('7.14') %$ if isoctave
%$ t(k) = abs(p-s)<1e-9; %$ t(k) = abs(p-s)<1e-9;
%$ else %$ else
%$ t(k) = abs(p-s)<1e-12; %$ t(k) = abs(p-s)<1e-12;

View File

@ -1,62 +0,0 @@
function rval = strjoin (cstr, delimiter)
% Adapted from Octave's implementation of strjoin
%
% Limitation: escaped characters (e.g. '\n') in delimiters will not be
% interpreted as the characters they represent.
% Copyright (C) 2013-2019 Ben Abbott
% Copyright (C) 2007 Muthiah Annamalai
% Copyright (C) 2019 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
if nargin == 1
delimiter = ' ';
elseif nargin < 1 || nargin > 2
error('strjoin: must have either one or two arguments')
end
if ~(iscellstr(cstr) && (ischar(delimiter) || iscellstr(delimiter)))
error('strjoin: first argument must be a cell array, second array either a char array or a cell array')
end
if numel(cstr) == 1
rval = cstr{1};
return;
end
if ischar(delimiter)
% There is no equivalent to do_string_escapes in MATLAB
%delimiter = do_string_escapes(delimiter);
delimiter = {delimiter};
end
num = numel(cstr);
if numel(delimiter) == 1 && num > 1
delimiter = repmat(delimiter, 1, num);
delimiter(end) = {''};
elseif num > 0 && numel(delimiter) ~= num - 1
error('strjoin: the number of delimiters does not match the number of strings');
else
delimiter(end+1) = {''};
end
if num == 0
rval = '';
else
tmp = [cstr(:).'; delimiter(:).'];
rval = [tmp{:}];
end

View File

@ -1,27 +0,0 @@
function l = ischarint(x)
% Returns true if and only if char x represents an integer.
% Copyright © 2018 DynareTeam
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
s = warning;
warning off;
l = isint(str2double(x));
warning(s);

View File

@ -1,35 +0,0 @@
function l = ischarnum(x)
% Returns true if and only if char x represents a real number.
% Copyright © 2018 DynareTeam
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
l = false;
s = warning;
warning off;
number = str2double(x);
warning(s);
if ~isempty(number)
if isreal(number)
l = true;
end
end

View File

@ -1,90 +0,0 @@
function tok = strsplit(str, delimiters)
% Splits a string into multiple terms.
%
% INPUTS
% - str [char] String to be splitted.
% - delimiters [char, cell(char)] Delimiters.
%
% OUTPUTS
% - tok [cell(char)] Terms.
% Copyright © 2018 DynareTeam
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
remove_empty = true;
remove_numbers = false;
% Check first input arguments
assert(ischar(str) && ndims(str)==2 && size(str,1)<=1, 'The first arugment has to be a row char array!');
% Set default value for second input arguments
if nargin<2
delimiters = {' '};
end
% If second input argument is a char transform it into a sigleton cell of char
if nargin>1
if ischar(delimiters)
assert(ndims(delimiters)==2 && size(delimiters,1)==1, 'The second input argument has to be be a char string!');
delimiters = {delimiters};
end
end
% Check that `delimiters` is a one dimensional cell
assert(ndim(delimiters)<=1, 'The second input argument has to be a one dimensional cell array!')
% Check that `delimiters` is a cell of row char arrays
assert(all(cellfun(@ischar, delimiters)) && all(cellfun(@rows, delimiters)==1), 'The second input argument has to be a cell of row char arrays!')
% If space is one of the delimiters obtain the index in `delimiters`
idspace = strmatch(' ', delimiters);
% Get the number of delimiters
n = length(delimiters);
% Remove unnecessary spaces
delimiters(setdiff(1:n, idspace)) = strtrim(delimiters(setdiff(1:n, idspace)));
% Join all the delimiters (strjoin is not available with matlab version less than R2013a)
if n>1
delimiter = '';
for i=1:n
if isspace(delimiters{i})
delimiter = horzcat(delimiter, '\s');
else
delimiter = horzcat(delimiter, delimiters{i});
end
delimiter = horzcat(delimiter,'|');
end
delimiter = horzcat(delimiter, '\W');
else
delimiter = delimiters{1};
end
% Get tokens
tok = regexp(str, delimiter, 'split');
if remove_empty
% Remove empty tokens
tok = tok(find(~cellfun(@isempty, tok)));
end
if remove_numbers
% Remove numbers
tok = tok(find(~cellfun(@ischarnum, tok)));
end

@ -1 +1 @@
Subproject commit 59739c38d9253990dddf8f6a7c88a81f6a72d66b Subproject commit a4479b5cb56b0f2b83d567652735c5410254f0fb

@ -1 +1 @@
Subproject commit a25d3abdb6312d619352a7b276c70ec98b3d5f00 Subproject commit 13c98b256d8d42f62692aa9d48d379e897f2ca5e

View File

@ -1,6 +1,6 @@
function oo_ = posterior_analysis(type,arg1,arg2,arg3,options_,M_,oo_) function oo_ = posterior_analysis(type,arg1,arg2,arg3,options_,M_,oo_)
% Copyright (C) 2008-2018 Dynare Team % Copyright (C) 2008-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -66,7 +66,7 @@ switch type
M_.exo_names,arg2,vartan,arg1,options_.mh_conf_sig,oo_,options_); M_.exo_names,arg2,vartan,arg1,options_.mh_conf_sig,oo_,options_);
if ~all(M_.H==0) if ~all(M_.H==0)
if strmatch(arg1,options_.varobs,'exact') if strmatch(arg1,options_.varobs,'exact')
if isoctave || matlab_ver_less_than('8.1') if isoctave
[observable_name_requested_vars,index_subset,index_observables]=intersect_stable(vartan,options_.varobs); [observable_name_requested_vars,index_subset,index_observables]=intersect_stable(vartan,options_.varobs);
else else
[observable_name_requested_vars,index_subset,index_observables]=intersect(vartan,options_.varobs,'stable'); [observable_name_requested_vars,index_subset,index_observables]=intersect(vartan,options_.varobs,'stable');

View File

@ -6,7 +6,7 @@ function [state_u,state_n] = set_dynare_random_generator_state(state_u,state_n)
% For backward compatibility, we return two vectors, but, in recent % For backward compatibility, we return two vectors, but, in recent
% versions of Matlab and in Octave, we return two identical vectors. % versions of Matlab and in Octave, we return two identical vectors.
% %
% Copyright (C) 2010-2017 Dynare Team % Copyright (C) 2010-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -23,14 +23,8 @@ function [state_u,state_n] = set_dynare_random_generator_state(state_u,state_n)
% You should have received a copy of the GNU General Public License % You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>. % along with Dynare. If not, see <http://www.gnu.org/licenses/>.
matlab_random_streams = ~isoctave; if ~isoctave
s = RandStream.getGlobalStream();
if matlab_random_streams% Use new matlab interface.
if matlab_ver_less_than('7.12')
s = RandStream.getDefaultStream();
else
s = RandStream.getGlobalStream();
end
if isequal(s.Type,'legacy') if isequal(s.Type,'legacy')
rand('state',state_u); rand('state',state_u);
randn('state',state_n); randn('state',state_n);
@ -47,13 +41,9 @@ if matlab_random_streams% Use new matlab interface.
'please, contact Dynare''s development team.']) 'please, contact Dynare''s development team.'])
end end
s.State = state_u; s.State = state_u;
if matlab_ver_less_than('7.12') RandStream.setGlobalStream(s);
RandStream.setDefaultStream(s);
else
RandStream.setGlobalStream(s);
end
end end
else% Use old matlab interface. else
rand('state',state_u); rand('state',state_u);
randn('state',state_n); randn('state',state_n);
end end

View File

@ -2,7 +2,7 @@ function set_dynare_seed(a,b)
% Set seeds depending on matlab (octave) version. This routine is called in dynare_config and can be called by the % Set seeds depending on matlab (octave) version. This routine is called in dynare_config and can be called by the
% user in the mod file. % user in the mod file.
% %
% Copyright (C) 2010-2017 Dynare Team % Copyright (C) 2010-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -32,20 +32,12 @@ if matlab_random_streams% Use new matlab interface.
options_.DynareRandomStreams.algo = 'mt19937ar'; options_.DynareRandomStreams.algo = 'mt19937ar';
options_.DynareRandomStreams.seed = 0; options_.DynareRandomStreams.seed = 0;
s = RandStream(options_.DynareRandomStreams.algo,'Seed',options_.DynareRandomStreams.seed); s = RandStream(options_.DynareRandomStreams.algo,'Seed',options_.DynareRandomStreams.seed);
if matlab_ver_less_than('7.12') reset(RandStream.setGlobalStream(s));
reset(RandStream.setDefaultStream(s));
else
reset(RandStream.setGlobalStream(s));
end
return return
end end
if ischar(a) && strcmpi(a,'reset') if ischar(a) && strcmpi(a,'reset')
s = RandStream(options_.DynareRandomStreams.algo,'Seed',options_.DynareRandomStreams.seed); s = RandStream(options_.DynareRandomStreams.algo,'Seed',options_.DynareRandomStreams.seed);
if matlab_ver_less_than('7.12') reset(RandStream.setGlobalStream(s));
reset(RandStream.setDefaultStream(s));
else
reset(RandStream.setGlobalStream(s));
end
return return
end end
if ~ischar(a) || (ischar(a) && strcmpi(a, 'clock')) if ~ischar(a) || (ischar(a) && strcmpi(a, 'clock'))
@ -56,11 +48,7 @@ if matlab_random_streams% Use new matlab interface.
options_.DynareRandomStreams.seed = a; options_.DynareRandomStreams.seed = a;
end end
s = RandStream(options_.DynareRandomStreams.algo,'Seed',options_.DynareRandomStreams.seed); s = RandStream(options_.DynareRandomStreams.algo,'Seed',options_.DynareRandomStreams.seed);
if matlab_ver_less_than('7.12') reset(RandStream.setGlobalStream(s));
reset(RandStream.setDefaultStream(s));
else
reset(RandStream.setGlobalStream(s));
end
return return
end end
error('set_dynare_seed:: something is wrong in the calling sequence!') error('set_dynare_seed:: something is wrong in the calling sequence!')
@ -84,11 +72,7 @@ if matlab_random_streams% Use new matlab interface.
options_.DynareRandomStreams.algo = a; options_.DynareRandomStreams.algo = a;
options_.DynareRandomStreams.seed = b; options_.DynareRandomStreams.seed = b;
s = RandStream(options_.DynareRandomStreams.algo,'Seed',options_.DynareRandomStreams.seed); s = RandStream(options_.DynareRandomStreams.algo,'Seed',options_.DynareRandomStreams.seed);
if matlab_ver_less_than('7.12') reset(RandStream.setGlobalStream(s));
reset(RandStream.setDefaultStream(s));
else
reset(RandStream.setGlobalStream(s));
end
end end
else% Use old matlab interface. else% Use old matlab interface.
if nargin==1 if nargin==1
@ -122,4 +106,4 @@ else% Use old matlab interface.
else else
error('set_dynare_seed:: Cannot use more than one input argument with your version of Matlab/Octave!') error('set_dynare_seed:: Cannot use more than one input argument with your version of Matlab/Octave!')
end end
end end

View File

@ -14,7 +14,7 @@ function [param,sigma] = simulated_moments_estimation(dataset,options,parallel)
% SPECIAL REQUIREMENTS % SPECIAL REQUIREMENTS
% The user has to provide a file where the moment conditions are defined. % The user has to provide a file where the moment conditions are defined.
% Copyright (C) 2010-2018 Dynare Team % Copyright (C) 2010-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -269,11 +269,7 @@ fprintf(fid,['tmp([' num2str(variance_idx) ']) = xparams(1:' int2str(nv) ').^2;
fprintf(fid,'M_.Sigma_e = diag(tmp);') fprintf(fid,'M_.Sigma_e = diag(tmp);')
fprintf(fid,['stream=RandStream(''mt19937ar'',''Seed'',' int2str(slave_number) ');\n']); fprintf(fid,['stream=RandStream(''mt19937ar'',''Seed'',' int2str(slave_number) ');\n']);
if matlab_ver_less_than('7.12') fprintf(fid,['RandStream.setGlobalStream(stream);\n\n']);
fprintf(fid,['RandStream.setDefaultStream(stream);\n\n']);
else
fprintf(fid,['RandStream.setGlobalStream(stream);\n\n']);
end
fprintf(fid,['maxNumCompThreads(' int2str(threads_per_job) ');\n\n']); fprintf(fid,['maxNumCompThreads(' int2str(threads_per_job) ');\n\n']);
@ -299,4 +295,4 @@ if ((job_number>1) && strcmpi(hostname,remotename)) || ~strcmpi(hostname,remoten
fprintf(fid,'exit'); fprintf(fid,'exit');
end end
fclose(fid); fclose(fid);

View File

@ -15,7 +15,7 @@ function [r,flag] = smm_objective(xparams,sample_moments,weighting_matrix,option
% SPECIAL REQUIREMENTS % SPECIAL REQUIREMENTS
% The user has to provide a file where the moment conditions are defined. % The user has to provide a file where the moment conditions are defined.
% Copyright (C) 2010-2019 Dynare Team % Copyright (C) 2010-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -40,11 +40,7 @@ flag = 1;
if nargin<5 if nargin<5
if isempty(mainStream) if isempty(mainStream)
if matlab_ver_less_than('7.12') mainStream = RandStream.getGlobalStream;
mainStream = RandStream.getDefaultStream;
else
mainStream = RandStream.getGlobalStream;
end
mainState = mainStream.State; mainState = mainStream.State;
else else
mainStream.State = mainState; mainStream.State = mainState;
@ -156,4 +152,4 @@ if (options.optimization_routine>0) && exist('optimization_path.mat')
new_state = [ r; xparams]; new_state = [ r; xparams];
estimated_parameters_optimization_path = [ estimated_parameters_optimization_path , new_state ]; estimated_parameters_optimization_path = [ estimated_parameters_optimization_path , new_state ];
save('optimization_path.mat','estimated_parameters_optimization_path'); save('optimization_path.mat','estimated_parameters_optimization_path');
end end

View File

@ -11,7 +11,7 @@ function [hasLicense] = user_has_matlab_license(toolbox)
% SPECIAL REQUIREMENTS % SPECIAL REQUIREMENTS
% none % none
% Copyright (C) 2012-2017 Dynare Team % Copyright (C) 2012-2020 Dynare Team
% %
% This file is part of Dynare. % This file is part of Dynare.
% %
@ -28,11 +28,8 @@ function [hasLicense] = user_has_matlab_license(toolbox)
% You should have received a copy of the GNU General Public License % You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>. % along with Dynare. If not, see <http://www.gnu.org/licenses/>.
if matlab_ver_less_than('7.12') [hasLicense, ~] = license('checkout',toolbox);
hasLicense = license('test', toolbox);
else
[hasLicense, ~] = license('checkout',toolbox);
end
if ~hasLicense if ~hasLicense
return return
end end
@ -68,4 +65,4 @@ else
hasInstallation=1; hasInstallation=1;
end end
end end
end end

@ -1 +1 @@
Subproject commit 371f3f0e6ec209b4277a2fd7911ccf80570d7473 Subproject commit bc4df1c1ec89a338424b5eb617fa568a76f14b45

View File

@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script. dnl Process this file with autoconf to produce a configure script.
dnl Copyright © 2009-2019 Dynare Team dnl Copyright © 2009-2020 Dynare Team
dnl dnl
dnl This file is part of Dynare. dnl This file is part of Dynare.
dnl dnl
@ -35,7 +35,7 @@ if test "$ax_enable_matlab" != yes -o "$ax_matlab_version_ok" != yes -o "$ax_mex
AC_MSG_ERROR([MATLAB cannot be found]) AC_MSG_ERROR([MATLAB cannot be found])
fi fi
AX_COMPARE_VERSION([$MATLAB_VERSION], [lt], [7.9], [AC_MSG_ERROR([Your MATLAB is too old, please upgrade to version 7.9 (R2009b) at least (or disable MATLAB support with --disable-matlab).])]) AX_COMPARE_VERSION([$MATLAB_VERSION], [lt], [8.3], [AC_MSG_ERROR([Your MATLAB is too old, please upgrade to version 8.3 (R2014a) at least (or disable MATLAB support with --disable-matlab).])])
case ${host_os} in case ${host_os} in
*cygwin*) *cygwin*)

View File

@ -8,7 +8,7 @@
* and MATLAB_VERSION (for version 7.4, define it to 0x0704). * and MATLAB_VERSION (for version 7.4, define it to 0x0704).
* *
* *
* Copyright © 2009-2013 Dynare Team * Copyright © 2009-2020 Dynare Team
* *
* This file is part of Dynare. * This file is part of Dynare.
* *
@ -29,8 +29,7 @@
#ifndef _DYNBLAS_H #ifndef _DYNBLAS_H
#define _DYNBLAS_H #define _DYNBLAS_H
/* Starting from version 7.8, MATLAB BLAS expects ptrdiff_t arguments for integers */ #if defined(MATLAB_MEX_FILE)
#if defined(MATLAB_MEX_FILE) && MATLAB_VERSION >= 0x0708
# ifdef __cplusplus # ifdef __cplusplus
# include <cstddef> # include <cstddef>
# else # else

View File

@ -8,7 +8,7 @@
* and MATLAB_VERSION (for version 7.4, define it to 0x0704). * and MATLAB_VERSION (for version 7.4, define it to 0x0704).
* *
* *
* Copyright © 2009-2011 Dynare Team * Copyright © 2009-2020 Dynare Team
* *
* This file is part of Dynare. * This file is part of Dynare.
* *
@ -29,8 +29,7 @@
#ifndef _DYNLAPACK_H #ifndef _DYNLAPACK_H
#define _DYNLAPACK_H #define _DYNLAPACK_H
/* Starting from version 7.8, MATLAB LAPACK expects ptrdiff_t arguments for integers */ #if defined(MATLAB_MEX_FILE)
#if defined(MATLAB_MEX_FILE) && MATLAB_VERSION >= 0x0708
# ifdef __cplusplus # ifdef __cplusplus
# include <cstddef> # include <cstddef>
# else # else

View File

@ -55,10 +55,6 @@ subroutine mexFunction(nlhs, plhs, nrhs, prhs) bind(c, name='mexFunction')
#else #else
real(real64), dimension(:), pointer :: gev_r, gev_i real(real64), dimension(:), pointer :: gev_r, gev_i
#endif #endif
#if defined(MATLAB_MEX_FILE) && MATLAB_VERSION < 0x0904
! Workaround for MKL bug, see below
real(real64), dimension(:), allocatable, target :: vsl_target
#endif
if (nrhs < 2 .or. nrhs > 4 .or. nlhs /= 6) then if (nrhs < 2 .or. nrhs > 4 .or. nlhs /= 6) then
call mexErrMsgTxt("MJDGGES: takes 2, 3 or 4 input arguments and exactly 6 output arguments.") call mexErrMsgTxt("MJDGGES: takes 2, 3 or 4 input arguments and exactly 6 output arguments.")
@ -113,19 +109,7 @@ subroutine mexFunction(nlhs, plhs, nrhs, prhs) bind(c, name='mexFunction')
#endif #endif
info => mxGetPr(plhs(6)) info => mxGetPr(plhs(6))
z => mxGetPr(plhs(3)) z => mxGetPr(plhs(3))
#if defined(MATLAB_MEX_FILE) && MATLAB_VERSION < 0x0904
! The left Schur vectors (VSL) are normally not computed, since JOBVSL="N".
! But old MKL versions (at least the one shipped with MATLAB R2009b/7.9,
! which is MKL 10.1) are buggy, and passing nullptr for VSL leads to a crash.
! Hence we need to allocate space for it.
! The bug seems to be fixed in MATLAB R2010a/7.10 (MKL 10.2), but we use the
! workaround for all versions < R2018a/9.4, since those share the same
! ABI and hence the same executables.
allocate(vsl_target(n1*n1))
vsl => vsl_target
#else
vsl => null() vsl => null()
#endif
! Copy input matrices, since we cant modify them ! Copy input matrices, since we cant modify them
associate (a => mxGetPr(prhs(1)), b => mxGetPr(prhs(2))) associate (a => mxGetPr(prhs(1)), b => mxGetPr(prhs(2)))

View File

@ -832,7 +832,6 @@ EXTRA_DIST = \
block_bytecode/run_ls2003.m \ block_bytecode/run_ls2003.m \
bvar_a_la_sims/bvar_sample.m \ bvar_a_la_sims/bvar_sample.m \
dates/fsdat_simul.m \ dates/fsdat_simul.m \
dates/data_uav.xls \
dates/data_uav.xlsx \ dates/data_uav.xlsx \
external_function/extFunDeriv.m \ external_function/extFunDeriv.m \
external_function/extFunNoDerivs.m \ external_function/extFunNoDerivs.m \
@ -842,7 +841,6 @@ EXTRA_DIST = \
expectations/expectation_ss_old_steadystate.m \ expectations/expectation_ss_old_steadystate.m \
filter_step_ahead/trend_cycle_decomposition_data.m \ filter_step_ahead/trend_cycle_decomposition_data.m \
steady_state/walsh1_old_ss_steadystate.m \ steady_state/walsh1_old_ss_steadystate.m \
data/test.xls \
data/test.xlsx \ data/test.xlsx \
gsa/morris/nk_est_data.m \ gsa/morris/nk_est_data.m \
gsa/data_ca1.m \ gsa/data_ca1.m \
@ -877,7 +875,6 @@ EXTRA_DIST = \
ms-sbvar/archive-files/specification_2v2c.dat \ ms-sbvar/archive-files/specification_2v2c.dat \
recursive/data_ca1.m \ recursive/data_ca1.m \
recursive/data_ca1_csv.csv \ recursive/data_ca1_csv.csv \
recursive/data_ca1_xls.xls \
recursive/data_ca1_xls.xlsx \ recursive/data_ca1_xls.xlsx \
kalman_filter_smoother/fsdat_simul.m \ kalman_filter_smoother/fsdat_simul.m \
kalman/lik_init/fs2000_common.inc \ kalman/lik_init/fs2000_common.inc \

View File

@ -125,10 +125,6 @@ end;
calib_params = M_.params; calib_params = M_.params;
calib_Sigma_e = M_.Sigma_e; calib_Sigma_e = M_.Sigma_e;
/* Skip test under MATLAB R2009b
MATLAB crashes, most likely due to an internal bug */
if isoctave || ~matlab_ver_less_than('7.10')
stoch_simul(order=@{ORDER},nograph,irf=0,periods=0); stoch_simul(order=@{ORDER},nograph,irf=0,periods=0);
identification(order=@{ORDER},nograph,no_identification_strength); identification(order=@{ORDER},nograph,no_identification_strength);
@ -475,5 +471,3 @@ for jj = 1:2
end end
end end
end end
end % Skip test under old MATLAB

View File

@ -21,7 +21,7 @@ end;
verbatim; verbatim;
bgp.write(M_); bgp.write(M_);
if isoctave || matlab_ver_less_than('8.1') if isoctave
options = optimset('Display', 'iter', 'MaxFunEvals', 1000000,'MaxIter',100000,'Jacobian','on','TolFun',1e-8,'TolX',1e-8); options = optimset('Display', 'iter', 'MaxFunEvals', 1000000,'MaxIter',100000,'Jacobian','on','TolFun',1e-8,'TolX',1e-8);
else else
options = optimoptions('fsolve','Display','iter','Algorithm','levenberg-marquardt','MaxFunctionEvaluations',1000000,'MaxIterations',100000,'SpecifyObjectiveGradient',true,'FunctionTolerance',1e-8,'StepTolerance',1e-8); options = optimoptions('fsolve','Display','iter','Algorithm','levenberg-marquardt','MaxFunctionEvaluations',1000000,'MaxIterations',100000,'SpecifyObjectiveGradient',true,'FunctionTolerance',1e-8,'StepTolerance',1e-8);

View File

@ -16,7 +16,7 @@ end;
verbatim; verbatim;
bgp.write(M_); bgp.write(M_);
if isoctave || matlab_ver_less_than('8.1') if isoctave
options = optimset('Display', 'iter', 'MaxFunEvals', 1000000,'MaxIter',100000,'Jacobian','on','TolFun',1e-6,'TolX',1e-6); options = optimset('Display', 'iter', 'MaxFunEvals', 1000000,'MaxIter',100000,'Jacobian','on','TolFun',1e-6,'TolX',1e-6);
else else
options = optimoptions('fsolve','Display','iter','Algorithm','levenberg-marquardt','MaxFunctionEvaluations',1000000,'MaxIterations',100000,'SpecifyObjectiveGradient',true,'FunctionTolerance',1e-6,'StepTolerance',1e-6); options = optimoptions('fsolve','Display','iter','Algorithm','levenberg-marquardt','MaxFunctionEvaluations',1000000,'MaxIterations',100000,'SpecifyObjectiveGradient',true,'FunctionTolerance',1e-6,'StepTolerance',1e-6);

View File

@ -45,7 +45,7 @@ verbatim;
GY = NaN(MC,1); GY = NaN(MC,1);
GK = NaN(MC,1); GK = NaN(MC,1);
EG = NaN(MC,1); EG = NaN(MC,1);
if isoctave || matlab_ver_less_than('8.1') if isoctave
options = optimset('Display', 'off', 'MaxFunEvals', 1000000,'MaxIter',100000,'Jacobian','on','TolFun',1e-8,'TolX',1e-8); options = optimset('Display', 'off', 'MaxFunEvals', 1000000,'MaxIter',100000,'Jacobian','on','TolFun',1e-8,'TolX',1e-8);
else else
options = optimoptions('fsolve','Display','off','Algorithm','levenberg-marquardt','MaxFunctionEvaluations',1000000,'MaxIterations',100000,'SpecifyObjectiveGradient',true,'FunctionTolerance',1e-8,'StepTolerance',1e-8); options = optimoptions('fsolve','Display','off','Algorithm','levenberg-marquardt','MaxFunctionEvaluations',1000000,'MaxIterations',100000,'SpecifyObjectiveGradient',true,'FunctionTolerance',1e-8,'StepTolerance',1e-8);

View File

@ -76,7 +76,7 @@ for i=1:nvar
SubsetOfVariables(i) = i_tmp; SubsetOfVariables(i) = i_tmp;
end end
if isoctave || matlab_ver_less_than('8.1') if isoctave
[observable_pos,index_observables,index_subset]=intersect_stable(SubsetOfVariables,options_.varobs_id); [observable_pos,index_observables,index_subset]=intersect_stable(SubsetOfVariables,options_.varobs_id);
else else
[observable_pos,index_observables,index_subset]=intersect(SubsetOfVariables,options_.varobs_id,'stable'); [observable_pos,index_observables,index_subset]=intersect(SubsetOfVariables,options_.varobs_id,'stable');
@ -114,7 +114,7 @@ if max(abs(sum(oo_.variance_decomposition,2)-100))>2
error(['Variance decomposition at order ',num2str(options_.order),' does not work']) error(['Variance decomposition at order ',num2str(options_.order),' does not work'])
end end
if isoctave || matlab_ver_less_than('8.1') if isoctave
[observable_pos,index_observables,index_subset]=intersect_stable(SubsetOfVariables,options_.varobs_id); [observable_pos,index_observables,index_subset]=intersect_stable(SubsetOfVariables,options_.varobs_id);
else else
[observable_pos,index_observables,index_subset]=intersect(SubsetOfVariables,options_.varobs_id,'stable'); [observable_pos,index_observables,index_subset]=intersect(SubsetOfVariables,options_.varobs_id,'stable');

View File

@ -20,8 +20,4 @@ end;
varobs dx dy; varobs dx dy;
check; check;
if isoctave || ~matlab_ver_less_than('7.14') % xlsread is able to read XLSX without Excel installed since R2012a
estimation(datafile='test.xlsx',nobs=1000,mh_replic=2000,mh_jscale=1.3); estimation(datafile='test.xlsx',nobs=1000,mh_replic=2000,mh_jscale=1.3);
else
estimation(datafile='test.xls',nobs=1000,mh_replic=2000,mh_jscale=1.3);
end

Binary file not shown.

Binary file not shown.

View File

@ -41,17 +41,9 @@ varobs log_nn;
%reading Excel sheet from column A on creates quarterly dseries starting in %reading Excel sheet from column A on creates quarterly dseries starting in
%1950 %1950
if isoctave || ~matlab_ver_less_than('7.14') % xlsread is able to read XLSX without Excel installed since R2012a
estimation(first_obs=2,datafile='data_uav.xlsx', xls_sheet=Tabelle1, xls_range=a1:b54, mh_replic=2, mh_nblocks=1, mh_jscale=1.1, mh_drop=0.8, plot_priors=0, smoother) log_nn nn hh ; estimation(first_obs=2,datafile='data_uav.xlsx', xls_sheet=Tabelle1, xls_range=a1:b54, mh_replic=2, mh_nblocks=1, mh_jscale=1.1, mh_drop=0.8, plot_priors=0, smoother) log_nn nn hh ;
else
estimation(first_obs=2,datafile='data_uav.xls', xls_sheet=Tabelle1, xls_range=a1:b54, mh_replic=2, mh_nblocks=1, mh_jscale=1.1, mh_drop=0.8, plot_priors=0, smoother) log_nn nn hh ;
end
shock_decomposition( parameter_set=posterior_median ) nn hh; shock_decomposition( parameter_set=posterior_median ) nn hh;
%reading Excel sheet from column B on creates annual dseries starting with 1 %reading Excel sheet from column B on creates annual dseries starting with 1
if isoctave || ~matlab_ver_less_than('7.14') % xlsread is able to read XLSX without Excel installed since R2012a
estimation(first_obs=2,datafile='data_uav.xlsx', xls_sheet=Tabelle1, xls_range=b1:b54, mh_replic=2, mh_nblocks=1, mh_jscale=1.1, mh_drop=0.8, plot_priors=0, smoother) log_nn nn hh ; estimation(first_obs=2,datafile='data_uav.xlsx', xls_sheet=Tabelle1, xls_range=b1:b54, mh_replic=2, mh_nblocks=1, mh_jscale=1.1, mh_drop=0.8, plot_priors=0, smoother) log_nn nn hh ;
else
estimation(first_obs=2,datafile='data_uav.xls', xls_sheet=Tabelle1, xls_range=b1:b54, mh_replic=2, mh_nblocks=1, mh_jscale=1.1, mh_drop=0.8, plot_priors=0, smoother) log_nn nn hh ;
end
shock_decomposition( parameter_set=posterior_median ) nn hh; shock_decomposition( parameter_set=posterior_median ) nn hh;

View File

@ -370,10 +370,6 @@ steady;
resid; resid;
check; check;
/* Skip test under MATLAB R2009b
MATLAB crashes, most likely due to an internal bug */
if isoctave || ~matlab_ver_less_than('7.10')
identification(order=1,no_identification_strength,analytic_derivation_mode= 0,ar=5); %works identification(order=1,no_identification_strength,analytic_derivation_mode= 0,ar=5); %works
%identification(no_identification_strength,analytic_derivation_mode= 1,ar=5); %works, this takes the longest due to Kronecker products %identification(no_identification_strength,analytic_derivation_mode= 1,ar=5); %works, this takes the longest due to Kronecker products
options_.dynatol.x = 1e-9; options_.dynatol.x = 1e-9;
@ -382,7 +378,3 @@ identification(order=1,no_identification_strength,analytic_derivation_mode=-2,ar
options_.dynatol.x = 1e-5; %this is the default value options_.dynatol.x = 1e-5; %this is the default value
identification(order=1,no_identification_strength,analytic_derivation_mode=-1,ar=5); %works only if GBAR_o_YBAR is uncommented identification(order=1,no_identification_strength,analytic_derivation_mode=-1,ar=5); %works only if GBAR_o_YBAR is uncommented
identification(order=1,no_identification_strength,analytic_derivation_mode=-2,ar=5); %works only if GBAR_o_YBAR is uncommented identification(order=1,no_identification_strength,analytic_derivation_mode=-2,ar=5); %works only if GBAR_o_YBAR is uncommented
else % Skip test under old MATLAB
error('Test failed as expected')
end

View File

@ -81,10 +81,6 @@ end;
varobs c i; varobs c i;
/* Skip test under MATLAB R2009b
MATLAB crashes, most likely due to an internal bug */
if isoctave || ~matlab_ver_less_than('7.10')
identification(advanced=1,max_dim_cova_group=3); identification(advanced=1,max_dim_cova_group=3);
//varobs c i lam; //to check if observing lam identifies phi and theta //varobs c i lam; //to check if observing lam identifies phi and theta
//identification(ar=1,advanced=1,max_dim_cova_group=3,prior_mc=250); //identification(ar=1,advanced=1,max_dim_cova_group=3,prior_mc=250);
@ -93,5 +89,3 @@ identification(advanced=1,max_dim_cova_group=3);
estim_params_=[]; estim_params_=[];
identification(advanced=1,max_dim_cova_group=3); identification(advanced=1,max_dim_cova_group=3);
end

View File

@ -1,7 +1,5 @@
@#include "fs2000.common.inc" @#include "fs2000.common.inc"
% Skip the test under R2009b, because fminunc fails due to Inf value. if exist('fminunc','file')
% It remains to be determined in which version it started to work.
if exist('fminunc','file') && (isoctave || ~matlab_ver_less_than('7.10'))
estimation(mode_compute=3,order=1, datafile='../fs2000/fsdat_simul', nobs=192, mh_replic=0); estimation(mode_compute=3,order=1, datafile='../fs2000/fsdat_simul', nobs=192, mh_replic=0);
end end

Binary file not shown.

View File

@ -61,8 +61,4 @@ stderr e_ys,inv_gamma_pdf,1.2533,0.6551;
stderr e_pies,inv_gamma_pdf,1.88,0.9827; stderr e_pies,inv_gamma_pdf,1.88,0.9827;
end; end;
if isoctave || ~matlab_ver_less_than('7.14') % xlsread is able to read XLSX without Excel installed since R2012a
estimation(datafile='data_ca1_xls.xlsx',first_obs=8,nobs=[76 79],mh_nblocks=1,prefilter=1,mh_jscale=0.5,mh_replic=2000,forecast=8) y_obs R_obs pie_obs dq de; estimation(datafile='data_ca1_xls.xlsx',first_obs=8,nobs=[76 79],mh_nblocks=1,prefilter=1,mh_jscale=0.5,mh_replic=2000,forecast=8) y_obs R_obs pie_obs dq de;
else
estimation(datafile='data_ca1_xls.xls',first_obs=8,nobs=[76 79],mh_nblocks=1,prefilter=1,mh_jscale=0.5,mh_replic=2000,forecast=8) y_obs R_obs pie_obs dq de;
end

View File

@ -39,7 +39,7 @@ if isoctave
end end
% Set random seed, for reproducibility % Set random seed, for reproducibility
if isoctave || matlab_ver_less_than('7.12') if isoctave
randn('state',1); randn('state',1);
rand('state',1); rand('state',1);
else else

View File

@ -21,7 +21,7 @@ Note: Dynare comes with an automated uninstaller, which you can run from the
Using Dynare with MATLAB® Using Dynare with MATLAB®
───────────────────────── ─────────────────────────
Dynare requires MATLAB® version 7.9 (R2009b) or above. With older versions of Dynare requires MATLAB® version 8.3 (R2014a) or above. With older versions of
MATLAB®, it may fail or give unexpected results. MATLAB®, it may fail or give unexpected results.
To use Dynare, you just have to add the matlab subdirectory of your Dynare To use Dynare, you just have to add the matlab subdirectory of your Dynare

View File

@ -108,7 +108,7 @@ cp dynare++/src/dynare++.exe dynare++/32-bit/
## Note that we do out-of-tree compilation, since we want to do these in ## Note that we do out-of-tree compilation, since we want to do these in
## parallel ## parallel
# Create Windows 32-bit DLL binaries for MATLAB ≥ R2009b # Create Windows 32-bit DLL binaries for MATLAB ≥ R2014a
build_windows_matlab_mex_32 () build_windows_matlab_mex_32 ()
{ {
mkdir -p "$TMP_DIRECTORY"/matlab-win32/ mkdir -p "$TMP_DIRECTORY"/matlab-win32/
@ -118,18 +118,18 @@ build_windows_matlab_mex_32 ()
--with-gsl="$LIB32_MSYS2" \ --with-gsl="$LIB32_MSYS2" \
--with-matio="$LIB32_MSYS2" \ --with-matio="$LIB32_MSYS2" \
--with-slicot="$LIB32"/Slicot/without-underscore \ --with-slicot="$LIB32"/Slicot/without-underscore \
--with-matlab="$ROOT_DIRECTORY"/deps/matlab32/R2009b \ --with-matlab="$ROOT_DIRECTORY"/deps/matlab32/R2014a \
MATLAB_VERSION=R2009b \ MATLAB_VERSION=R2014a \
MEXEXT=mexw32 \ MEXEXT=mexw32 \
PACKAGE_VERSION="$VERSION" \ PACKAGE_VERSION="$VERSION" \
PACKAGE_STRING="dynare $VERSION" PACKAGE_STRING="dynare $VERSION"
make -j"$NTHREADS" all make -j"$NTHREADS" all
i686-w64-mingw32-strip -- **/*.mexw32 i686-w64-mingw32-strip -- **/*.mexw32
mkdir -p "$ROOT_DIRECTORY"/../mex/matlab/win32-7.9-8.6 mkdir -p "$ROOT_DIRECTORY"/../mex/matlab/win32-8.3-8.6
mv -- **/*.mexw32 "$ROOT_DIRECTORY"/../mex/matlab/win32-7.9-8.6 mv -- **/*.mexw32 "$ROOT_DIRECTORY"/../mex/matlab/win32-8.3-8.6
} }
# Create Windows 64-bit DLL binaries for MATLAB ≥ R2009b and ≤ R2017b # Create Windows 64-bit DLL binaries for MATLAB ≥ R2014a and ≤ R2017b
build_windows_matlab_mex_64_a () build_windows_matlab_mex_64_a ()
{ {
mkdir -p "$TMP_DIRECTORY"/matlab-win64-a/ mkdir -p "$TMP_DIRECTORY"/matlab-win64-a/
@ -139,15 +139,15 @@ build_windows_matlab_mex_64_a ()
--with-gsl="$LIB64_MSYS2" \ --with-gsl="$LIB64_MSYS2" \
--with-matio="$LIB64_MSYS2" \ --with-matio="$LIB64_MSYS2" \
--with-slicot="$LIB64"/Slicot/without-underscore \ --with-slicot="$LIB64"/Slicot/without-underscore \
--with-matlab="$ROOT_DIRECTORY"/deps/matlab64/R2009b \ --with-matlab="$ROOT_DIRECTORY"/deps/matlab64/R2014a \
MATLAB_VERSION=R2009b \ MATLAB_VERSION=R2014a \
MEXEXT=mexw64 \ MEXEXT=mexw64 \
PACKAGE_VERSION="$VERSION" \ PACKAGE_VERSION="$VERSION" \
PACKAGE_STRING="dynare $VERSION" PACKAGE_STRING="dynare $VERSION"
make -j"$NTHREADS" all make -j"$NTHREADS" all
x86_64-w64-mingw32-strip -- **/*.mexw64 x86_64-w64-mingw32-strip -- **/*.mexw64
mkdir -p "$ROOT_DIRECTORY"/../mex/matlab/win64-7.9-9.3 mkdir -p "$ROOT_DIRECTORY"/../mex/matlab/win64-8.3-9.3
mv -- **/*.mexw64 "$ROOT_DIRECTORY"/../mex/matlab/win64-7.9-9.3 mv -- **/*.mexw64 "$ROOT_DIRECTORY"/../mex/matlab/win64-8.3-9.3
} }
# Create Windows 64-bit DLL binaries for MATLAB ≥ R2018a # Create Windows 64-bit DLL binaries for MATLAB ≥ R2018a

View File

@ -1,4 +1,4 @@
# Copyright © 2017-2019 Dynare Team # Copyright © 2017-2020 Dynare Team
# #
# This file is part of Dynare. # This file is part of Dynare.
# #
@ -195,13 +195,13 @@ tarballs/matlab%.tar.xz:
matlab32: tarballs/matlab32-$(MATLAB32_VERSION).tar.xz matlab32: tarballs/matlab32-$(MATLAB32_VERSION).tar.xz
rm -rf $@ rm -rf $@
mkdir -p $@ mkdir -p $@
tar xf $< --directory $@ --strip-components=1 tar xf $< --directory $@
touch $@ touch $@
matlab64: tarballs/matlab64-$(MATLAB64_VERSION).tar.xz matlab64: tarballs/matlab64-$(MATLAB64_VERSION).tar.xz
rm -rf $@ rm -rf $@
mkdir -p $@ mkdir -p $@
tar xf $< --directory $@ --strip-components=1 tar xf $< --directory $@
touch $@ touch $@
matlab: matlab32 matlab64 matlab: matlab32 matlab64

View File

@ -5,8 +5,8 @@ OCTAVE_VERSION = 5.2.0
OCTAVE_W32_BUILD = _1 OCTAVE_W32_BUILD = _1
OCTAVE_W64_BUILD = _1 OCTAVE_W64_BUILD = _1
MATLAB32_VERSION = 20181204 MATLAB32_VERSION = 20200407
MATLAB64_VERSION = 20181204 MATLAB64_VERSION = 20200407
### MSYS2 packages ### MSYS2 packages

View File

@ -91,9 +91,9 @@ SectionEnd
SectionGroup "Dynare support for 64-bit MATLAB and Octave" SectionGroup "Dynare support for 64-bit MATLAB and Octave"
Section "MEX files for MATLAB 64-bit, version 7.9 to 9.3 (R2009b to R2017b)" Section "MEX files for MATLAB 64-bit, version 8.3 to 9.3 (R2014a to R2017b)"
SetOutPath $INSTDIR\mex\matlab\win64-7.9-9.3 SetOutPath $INSTDIR\mex\matlab\win64-8.3-9.3
File ..\mex\matlab\win64-7.9-9.3\*.mexw64 File ..\mex\matlab\win64-8.3-9.3\*.mexw64
SectionEnd SectionEnd
Section "MEX files for MATLAB 64-bit, version 9.4 to 9.8 (R2018a to R2020a)" Section "MEX files for MATLAB 64-bit, version 9.4 to 9.8 (R2018a to R2020a)"
@ -116,9 +116,9 @@ SectionGroupEnd
SectionGroup "Dynare support for 32-bit MATLAB and Octave" SectionGroup "Dynare support for 32-bit MATLAB and Octave"
Section "MEX files for MATLAB 32-bit, version 7.9 to 8.6 (R2009b to R2015b)" Section "MEX files for MATLAB 32-bit, version 8.3 to 8.6 (R2014a to R2015b)"
SetOutPath $INSTDIR\mex\matlab\win32-7.9-8.6 SetOutPath $INSTDIR\mex\matlab\win32-8.3-8.6
File ..\mex\matlab\win32-7.9-8.6\*.mexw32 File ..\mex\matlab\win32-8.3-8.6\*.mexw32
SectionEnd SectionEnd
Section "MEX files for Octave 5.2.0 (32-bit)" Section "MEX files for Octave 5.2.0 (32-bit)"