forked from pool/dynare
Accepting request 1045813 from home:StefanBruens:branches:science
- Update to version 5.3: * Long list of changes, see https://www.dynare.org/new-dynare-release/dynare-5.3-released/ - Remove upstream patches: * dynare-5.1-gcc-12.patch * dynare-octave7-compat.patch OBS-URL: https://build.opensuse.org/request/show/1045813 OBS-URL: https://build.opensuse.org/package/show/science/dynare?expand=0&rev=7
This commit is contained in:
parent
eb2f3e6009
commit
4e37aa23f0
@ -1,27 +0,0 @@
|
|||||||
From 3823379966f15a377c863b0d15694b146854dfd8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
|
|
||||||
Date: Mon, 2 May 2022 17:03:42 +0200
|
|
||||||
Subject: [PATCH] Compatibility fix for GCC 12
|
|
||||||
|
|
||||||
Ref. dynare#1852
|
|
||||||
|
|
||||||
(cherry picked from commit 8c07fb5e4310b2ec2988dc62256e1cf0971c05dd)
|
|
||||||
---
|
|
||||||
src/DataTree.hh | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/src/DataTree.hh b/src/DataTree.hh
|
|
||||||
index 62da5681..6e9f818d 100644
|
|
||||||
--- a/src/DataTree.hh
|
|
||||||
+++ b/src/DataTree.hh
|
|
||||||
@@ -29,6 +29,7 @@ using namespace std;
|
|
||||||
#include <iomanip>
|
|
||||||
#include <cmath>
|
|
||||||
#include <utility>
|
|
||||||
+#include <memory>
|
|
||||||
|
|
||||||
#include "SymbolTable.hh"
|
|
||||||
#include "NumericalConstants.hh"
|
|
||||||
--
|
|
||||||
GitLab
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:269b2b52d9e7af0bf06041b48e730dd5c2fb89577bed24ad5e4b51e0dca9dbbe
|
|
||||||
size 18000696
|
|
3
dynare-5.3.tar.xz
Normal file
3
dynare-5.3.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:bbbbd319f9a1cb7ffd4f7012be105a7c95842ca76d9d96e96305e1fbf8d8b585
|
||||||
|
size 17889036
|
@ -1,611 +0,0 @@
|
|||||||
Index: dynare-5.1/doc/manual/source/installation-and-configuration.rst
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/doc/manual/source/installation-and-configuration.rst
|
|
||||||
+++ dynare-5.1/doc/manual/source/installation-and-configuration.rst
|
|
||||||
@@ -15,10 +15,10 @@ compilation steps are necessary in that
|
|
||||||
In order to run Dynare, you need one of the following:
|
|
||||||
|
|
||||||
* MATLAB, any version ranging from 8.3 (R2014a) to 9.12 (R2022a);
|
|
||||||
-* GNU Octave, any version ranging from 5.2.0 to 6.4.0, with the statistics
|
|
||||||
- package from `Octave-Forge`_. Note however that the Dynare installer for
|
|
||||||
- Windows requires a more specific version of Octave, as indicated on the
|
|
||||||
- download page.
|
|
||||||
+* GNU Octave version ranging from 6.2.0 to 7.1.0, with the statistics package
|
|
||||||
+ from `Octave-Forge`_. Note however that the Dynare installer for Windows
|
|
||||||
+ requires a more specific version of Octave, as indicated on the download
|
|
||||||
+ page.
|
|
||||||
|
|
||||||
The following optional extensions are also useful to benefit from
|
|
||||||
extra features, but are in no way required:
|
|
||||||
Index: dynare-5.1/matlab/+estimate/nls.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/+estimate/nls.m
|
|
||||||
+++ dynare-5.1/matlab/+estimate/nls.m
|
|
||||||
@@ -253,9 +253,8 @@ fclose(fid);
|
|
||||||
|
|
||||||
% Workaround for Octave bug https://savannah.gnu.org/bugs/?46282
|
|
||||||
% Octave will randomly fail to read the ssr_* file generated in the +folder
|
|
||||||
-if isoctave
|
|
||||||
- rename(['+' M_.fname], ['+' M_.fname '-tmp']);
|
|
||||||
- rename(['+' M_.fname '-tmp'], ['+' M_.fname]);
|
|
||||||
+if isoctave && octave_ver_less_than('7')
|
|
||||||
+ path(path)
|
|
||||||
end
|
|
||||||
|
|
||||||
% Create a function handle returning the sum of square residuals for a given vector of parameters.
|
|
||||||
Index: dynare-5.1/matlab/+mom/run.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/+mom/run.m
|
|
||||||
+++ dynare-5.1/matlab/+mom/run.m
|
|
||||||
@@ -63,7 +63,7 @@ function [oo_, options_mom_, M_] = run(b
|
|
||||||
% o set_all_parameters.m
|
|
||||||
% o test_for_deep_parameters_calibration.m
|
|
||||||
% =========================================================================
|
|
||||||
-% Copyright (C) 2020-2021 Dynare Team
|
|
||||||
+% Copyright © 2020-2022 Dynare Team
|
|
||||||
%
|
|
||||||
% This file is part of Dynare.
|
|
||||||
%
|
|
||||||
@@ -1017,11 +1017,7 @@ fprintf('\n==== Method of Moments Estima
|
|
||||||
% Step 9: Clean up
|
|
||||||
% -------------------------------------------------------------------------
|
|
||||||
%reset warning state
|
|
||||||
-if isoctave
|
|
||||||
- warning('on')
|
|
||||||
-else
|
|
||||||
- warning on
|
|
||||||
-end
|
|
||||||
+warning_config;
|
|
||||||
|
|
||||||
if isoctave && isfield(options_, 'prior_restrictions') && ...
|
|
||||||
isfield(options_.prior_restrictions, 'routine')
|
|
||||||
Index: dynare-5.1/matlab/+occbin/kalman_update_algo_1.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/+occbin/kalman_update_algo_1.m
|
|
||||||
+++ dynare-5.1/matlab/+occbin/kalman_update_algo_1.m
|
|
||||||
@@ -42,7 +42,7 @@ function [a, a1, P, P1, v, T, R, C, regi
|
|
||||||
% Philipp Pfeiffer, Marco Ratto (2021), Efficient and robust inference of models with occasionally binding
|
|
||||||
% constraints, Working Papers 2021-03, Joint Research Centre, European Commission
|
|
||||||
|
|
||||||
-% Copyright (C) 2021 Dynare Team
|
|
||||||
+% Copyright © 2021-2022 Dynare Team
|
|
||||||
%
|
|
||||||
% This file is part of Dynare.
|
|
||||||
%
|
|
||||||
@@ -323,7 +323,7 @@ P(:,:,2) = T(:,:,2)*P(:,:,1)*transpose(T
|
|
||||||
regimes_=regimes_(1:3);
|
|
||||||
etahat=etahat(:,2);
|
|
||||||
|
|
||||||
-warning on
|
|
||||||
+warning_config;
|
|
||||||
end
|
|
||||||
|
|
||||||
function [a, a1, P, P1, v, alphahat, etahat, lik] = occbin_kalman_update0(a,a1,P,P1,data_index,Z,v,Y,H,QQQ,TT,RR,CC,iF,L,mm, rescale_prediction_error_covariance, IF_likelihood)
|
|
||||||
@@ -424,5 +424,5 @@ while t > 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-warning on
|
|
||||||
+warning_config;
|
|
||||||
end
|
|
||||||
Index: dynare-5.1/matlab/+pac/+estimate/nls.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/+pac/+estimate/nls.m
|
|
||||||
+++ dynare-5.1/matlab/+pac/+estimate/nls.m
|
|
||||||
@@ -166,9 +166,8 @@ fclose(fid);
|
|
||||||
|
|
||||||
% Workaround for Octave bug https://savannah.gnu.org/bugs/?46282
|
|
||||||
% Octave will randomly fail to read the ssr_* file generated in the +folder
|
|
||||||
-if isoctave
|
|
||||||
- rename(['+' M_.fname], ['+' M_.fname '-tmp']);
|
|
||||||
- rename(['+' M_.fname '-tmp'], ['+' M_.fname]);
|
|
||||||
+if isoctave && octave_ver_less_than('7')
|
|
||||||
+ path(path)
|
|
||||||
end
|
|
||||||
|
|
||||||
% Copy (sub)sample data in a matrix.
|
|
||||||
Index: dynare-5.1/matlab/WriteShockDecomp2Excel.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/WriteShockDecomp2Excel.m
|
|
||||||
+++ dynare-5.1/matlab/WriteShockDecomp2Excel.m
|
|
||||||
@@ -11,7 +11,7 @@ function WriteShockDecomp2Excel(z,shock_
|
|
||||||
% DynareModel [structure] Dynare model structure
|
|
||||||
% DynareOptions [structure] Dynare options structure
|
|
||||||
|
|
||||||
-% Copyright (C) 2016-2021 Dynare Team
|
|
||||||
+% Copyright © 2016-2022 Dynare Team
|
|
||||||
%
|
|
||||||
% This file is part of Dynare.
|
|
||||||
%
|
|
||||||
@@ -124,7 +124,7 @@ for j=1:nvar
|
|
||||||
else
|
|
||||||
writetable(cell2table(d0), [OutputDirectoryName,filesep,DynareModel.fname,'_shock_decomposition',fig_mode,fig_name1 '.xls'], 'Sheet', endo_names{i_var(j)},'WriteVariableNames',false);
|
|
||||||
end
|
|
||||||
- warning on
|
|
||||||
+ warning_config;
|
|
||||||
|
|
||||||
clear d0
|
|
||||||
|
|
||||||
Index: dynare-5.1/matlab/dynare_estimation_1.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/dynare_estimation_1.m
|
|
||||||
+++ dynare-5.1/matlab/dynare_estimation_1.m
|
|
||||||
@@ -12,7 +12,7 @@ function dynare_estimation_1(var_list_,d
|
|
||||||
% SPECIAL REQUIREMENTS
|
|
||||||
% none
|
|
||||||
|
|
||||||
-% Copyright (C) 2003-2021 Dynare Team
|
|
||||||
+% Copyright © 2003-2022 Dynare Team
|
|
||||||
%
|
|
||||||
% This file is part of Dynare.
|
|
||||||
%
|
|
||||||
@@ -32,7 +32,7 @@ function dynare_estimation_1(var_list_,d
|
|
||||||
global M_ options_ oo_ estim_params_ bayestopt_ dataset_ dataset_info
|
|
||||||
|
|
||||||
if ~exist([M_.dname filesep 'Output'],'dir')
|
|
||||||
- if isoctave && ~exist(M_.dname)
|
|
||||||
+ if isoctave && octave_ver_less_than('7') && ~exist(M_.dname)
|
|
||||||
% See https://savannah.gnu.org/bugs/index.php?61166
|
|
||||||
% This workaround is needed for recursive estimation.
|
|
||||||
mkdir(M_.dname)
|
|
||||||
Index: dynare-5.1/matlab/dynare_identification.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/dynare_identification.m
|
|
||||||
+++ dynare-5.1/matlab/dynare_identification.m
|
|
||||||
@@ -46,7 +46,7 @@ function [pdraws, STO_REDUCEDFORM, STO_M
|
|
||||||
% * skipline
|
|
||||||
% * vnorm
|
|
||||||
% =========================================================================
|
|
||||||
-% Copyright (C) 2010-2021 Dynare Team
|
|
||||||
+% Copyright © 2010-2022 Dynare Team
|
|
||||||
%
|
|
||||||
% This file is part of Dynare.
|
|
||||||
%
|
|
||||||
@@ -968,11 +968,7 @@ if SampleSize > 1
|
|
||||||
end
|
|
||||||
|
|
||||||
%reset warning state
|
|
||||||
-if isoctave
|
|
||||||
- warning('on')
|
|
||||||
-else
|
|
||||||
- warning on
|
|
||||||
-end
|
|
||||||
+warning_config;
|
|
||||||
|
|
||||||
fprintf('\n==== Identification analysis completed ====\n\n')
|
|
||||||
|
|
||||||
Index: dynare-5.1/matlab/dynare_solve.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/dynare_solve.m
|
|
||||||
+++ dynare-5.1/matlab/dynare_solve.m
|
|
||||||
@@ -80,14 +80,14 @@ if ismember(options.solve_algo, [12, 14]
|
|
||||||
isauxdiffloggedrhs = varargin{2};
|
|
||||||
endo_names = varargin{3};
|
|
||||||
lhs = varargin{4};
|
|
||||||
- arguments = varargin(5:end);
|
|
||||||
+ args = varargin(5:end);
|
|
||||||
else
|
|
||||||
- arguments = varargin;
|
|
||||||
+ args = varargin;
|
|
||||||
end
|
|
||||||
|
|
||||||
% checking initial values
|
|
||||||
if jacobian_flag
|
|
||||||
- [fvec, fjac] = feval(f, x, arguments{:});
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
wrong_initial_guess_flag = false;
|
|
||||||
if ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:)))) ...
|
|
||||||
|| any(~isreal(fvec)) || any(~isreal(fjac(:)))
|
|
||||||
@@ -103,7 +103,7 @@ if jacobian_flag
|
|
||||||
while wrong_initial_guess_flag && tentative_number<=in0*10
|
|
||||||
tentative_number = tentative_number+1;
|
|
||||||
x(idx) = rand(in0, 1)*10;
|
|
||||||
- [fvec, fjac] = feval(f, x, arguments{:});
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
wrong_initial_guess_flag = ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:))));
|
|
||||||
end
|
|
||||||
% If all previous attempts failed, try with real numbers.
|
|
||||||
@@ -111,7 +111,7 @@ if jacobian_flag
|
|
||||||
while wrong_initial_guess_flag && tentative_number<=in0*10
|
|
||||||
tentative_number = tentative_number+1;
|
|
||||||
x(idx) = randn(in0, 1)*10;
|
|
||||||
- [fvec, fjac] = feval(f, x, arguments{:});
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
wrong_initial_guess_flag = ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:))));
|
|
||||||
end
|
|
||||||
% Last tentative, ff all previous attempts failed, try with negative numbers.
|
|
||||||
@@ -119,12 +119,12 @@ if jacobian_flag
|
|
||||||
while wrong_initial_guess_flag && tentative_number<=in0*10
|
|
||||||
tentative_number = tentative_number+1;
|
|
||||||
x(idx) = -rand(in0, 1)*10;
|
|
||||||
- [fvec, fjac] = feval(f, x, arguments{:});
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
wrong_initial_guess_flag = ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:))));
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
- fvec = feval(f, x, arguments{:});
|
|
||||||
+ fvec = feval(f, x, args{:});
|
|
||||||
fjac = zeros(nn, nn);
|
|
||||||
wrong_initial_guess_flag = false;
|
|
||||||
if ~all(isfinite(fvec))
|
|
||||||
@@ -135,7 +135,7 @@ else
|
|
||||||
while wrong_initial_guess_flag && tentative_number<=in0*10
|
|
||||||
tentative_number = tentative_number+1;
|
|
||||||
x(idx) = rand(in0, 1)*10;
|
|
||||||
- fvec = feval(f, x, arguments{:});
|
|
||||||
+ fvec = feval(f, x, args{:});
|
|
||||||
wrong_initial_guess_flag = ~all(isfinite(fvec));
|
|
||||||
end
|
|
||||||
% If all previous attempts failed, try with real numbers.
|
|
||||||
@@ -143,7 +143,7 @@ else
|
|
||||||
while wrong_initial_guess_flag && tentative_number<=in0*10
|
|
||||||
tentative_number = tentative_number+1;
|
|
||||||
x(idx) = randn(in0, 1)*10;
|
|
||||||
- fvec = feval(f, x, arguments{:});
|
|
||||||
+ fvec = feval(f, x, args{:});
|
|
||||||
wrong_initial_guess_flag = ~all(isfinite(fvec));
|
|
||||||
end
|
|
||||||
% Last tentative, ff all previous attempts failed, try with negative numbers.
|
|
||||||
@@ -151,7 +151,7 @@ else
|
|
||||||
while wrong_initial_guess_flag && tentative_number<=in0*10
|
|
||||||
tentative_number = tentative_number+1;
|
|
||||||
x(idx) = -rand(in0, 1)*10;
|
|
||||||
- fvec = feval(f, x, arguments{:});
|
|
||||||
+ fvec = feval(f, x, args{:});
|
|
||||||
wrong_initial_guess_flag = ~all(isfinite(fvec));
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -191,7 +191,7 @@ if options.solve_algo == 0
|
|
||||||
options4fsolve.Jacobian = 'off';
|
|
||||||
end
|
|
||||||
if ~isoctave
|
|
||||||
- [x, ~, exitval] = fsolve(f, x, options4fsolve, arguments{:});
|
|
||||||
+ [x, ~, errorcode] = fsolve(f, x, options4fsolve, args{:});
|
|
||||||
else
|
|
||||||
% Under Octave, use a wrapper, since fsolve() does not have a 4th arg
|
|
||||||
if ischar(f)
|
|
||||||
@@ -199,13 +199,19 @@ if options.solve_algo == 0
|
|
||||||
else
|
|
||||||
f2 = f;
|
|
||||||
end
|
|
||||||
- f = @(x) f2(x, arguments{:});
|
|
||||||
- % The Octave version of fsolve does not converge when it starts from the solution
|
|
||||||
- fvec = feval(f, x);
|
|
||||||
- if max(abs(fvec)) >= tolf
|
|
||||||
- [x, ~,exitval] = fsolve(f, x, options4fsolve);
|
|
||||||
- else
|
|
||||||
- exitval = 3;
|
|
||||||
+ f = @(x) f2(x, args{:});
|
|
||||||
+ [x, ~, errorcode] = fsolve(f, x, options4fsolve);
|
|
||||||
+ end
|
|
||||||
+ if errorcode==1
|
|
||||||
+ errorflag = false;
|
|
||||||
+ elseif errorcode>1
|
|
||||||
+ if ~isoctave
|
|
||||||
+ if ischar(f)
|
|
||||||
+ f2 = str2func(f);
|
|
||||||
+ else
|
|
||||||
+ f2 = f;
|
|
||||||
+ end
|
|
||||||
+ f = @(x) f2(x, args{:});
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -227,14 +233,13 @@ if options.solve_algo == 0
|
|
||||||
else
|
|
||||||
errorflag = true;
|
|
||||||
end
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
elseif options.solve_algo==1
|
|
||||||
- [x, errorflag] = solve1(f, x, 1:nn, 1:nn, jacobian_flag, options.gstep, ...
|
|
||||||
- tolf, tolx, ...
|
|
||||||
- maxit, options.debug, arguments{:});
|
|
||||||
+ [x, errorflag, errorcode] = solve1(f, x, 1:nn, 1:nn, jacobian_flag, options.gstep, tolf, tolx, maxit, [], options.debug, args{:});
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
elseif options.solve_algo==9
|
|
||||||
- [x, errorflag] = trust_region(f, x, 1:nn, 1:nn, jacobian_flag, options.gstep, ...
|
|
||||||
- tolf, tolx, ...
|
|
||||||
- maxit, options.debug, arguments{:});
|
|
||||||
+ [x, errorflag, errorcode] = trust_region(f, x, 1:nn, 1:nn, jacobian_flag, options.gstep, tolf, tolx, maxit, options.trust_region_initial_step_bound_factor, options.debug, args{:});
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
elseif ismember(options.solve_algo, [2, 12, 4])
|
|
||||||
if ismember(options.solve_algo, [2, 12])
|
|
||||||
solver = @solve1;
|
|
||||||
@@ -248,7 +253,7 @@ elseif ismember(options.solve_algo, [2,
|
|
||||||
for j = 1:nn
|
|
||||||
xdh = x ;
|
|
||||||
xdh(j) = xdh(j)+dh(j) ;
|
|
||||||
- fjac(:,j) = (feval(f, xdh, arguments{:})-fvec)./dh(j) ;
|
|
||||||
+ fjac(:,j) = (feval(f, xdh, args{:})-fvec)./dh(j) ;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
[j1,j2,r,s] = dmperm(fjac);
|
|
||||||
@@ -273,13 +278,13 @@ elseif ismember(options.solve_algo, [2,
|
|
||||||
if fre || any(JAC(r(i), s(i)+(1:l)))
|
|
||||||
% Reevaluation of the residuals is required because the current RHS depends on
|
|
||||||
% variables that potentially have been updated previously.
|
|
||||||
- z = feval(f, x, arguments{:});
|
|
||||||
+ z = feval(f, x, args{:});
|
|
||||||
l = 0;
|
|
||||||
fre = false;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
% First iteration requires the evaluation of the residuals.
|
|
||||||
- z = feval(f, x, arguments{:});
|
|
||||||
+ z = feval(f, x, args{:});
|
|
||||||
end
|
|
||||||
l = l+1;
|
|
||||||
if isequal(lhs{j1(j)}, endo_names{j2(j)}) || isequal(lhs{j1(j)}, sprintf('log(%s)', endo_names{j2(j)}))
|
|
||||||
@@ -310,38 +315,47 @@ elseif ismember(options.solve_algo, [2,
|
|
||||||
dprintf('DYNARE_SOLVE (solve_algo=2|4|12): solving block %u with trust_region routine.', i);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
- [x, errorflag] = solver(f, x, j1(j), j2(j), jacobian_flag, ...
|
|
||||||
- options.gstep, ...
|
|
||||||
- tolf, options.solve_tolx, ...
|
|
||||||
- maxit, options.debug, arguments{:});
|
|
||||||
+ [x, errorflag, errorcode] = solver(f, x, j1(j), j2(j), jacobian_flag, ...
|
|
||||||
+ options.gstep, ...
|
|
||||||
+ tolf, options.solve_tolx, maxit, ...
|
|
||||||
+ options.trust_region_initial_step_bound_factor, ...
|
|
||||||
+ options.debug, args{:});
|
|
||||||
fre = true;
|
|
||||||
if errorflag
|
|
||||||
return
|
|
||||||
end
|
|
||||||
end
|
|
||||||
- fvec = feval(f, x, arguments{:});
|
|
||||||
+ fvec = feval(f, x, args{:});
|
|
||||||
if max(abs(fvec))>tolf
|
|
||||||
disp_verbose('Call solver on the full nonlinear problem.',options.verbosity)
|
|
||||||
- [x, errorflag] = solver(f, x, 1:nn, 1:nn, jacobian_flag, ...
|
|
||||||
- options.gstep, tolf, options.solve_tolx, ...
|
|
||||||
- maxit, options.debug, arguments{:});
|
|
||||||
+ [x, errorflag, errorcode] = solver(f, x, 1:nn, 1:nn, jacobian_flag, ...
|
|
||||||
+ options.gstep, tolf, options.solve_tolx, maxit, ...
|
|
||||||
+ options.trust_region_initial_step_bound_factor, ...
|
|
||||||
+ options.debug, args{:});
|
|
||||||
end
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
elseif options.solve_algo==3
|
|
||||||
if jacobian_flag
|
|
||||||
- [x, errorflag] = csolve(f, x, f, tolf, maxit, arguments{:});
|
|
||||||
+ [x, errorcode] = csolve(f, x, f, tolf, maxit, args{:});
|
|
||||||
else
|
|
||||||
- [x, errorflag] = csolve(f, x, [], tolf, maxit, arguments{:});
|
|
||||||
+ [x, errorcode] = csolve(f, x, [], tolf, maxit, args{:});
|
|
||||||
+ end
|
|
||||||
+ if errorcode==0
|
|
||||||
+ errorflag = false;
|
|
||||||
+ else
|
|
||||||
+ errorflag = true;
|
|
||||||
end
|
|
||||||
- [fvec, fjac] = feval(f, x, arguments{:});
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
elseif options.solve_algo==10
|
|
||||||
% LMMCP
|
|
||||||
olmmcp = options.lmmcp;
|
|
||||||
- [x, ~, exitflag] = lmmcp(f, x, olmmcp.lb, olmmcp.ub, olmmcp, arguments{:});
|
|
||||||
- if exitflag==1
|
|
||||||
+ [x, fvec, errorcode, ~, fjac] = lmmcp(f, x, olmmcp.lb, olmmcp.ub, olmmcp, args{:});
|
|
||||||
+ if errorcode==1
|
|
||||||
errorflag = false;
|
|
||||||
else
|
|
||||||
errorflag = true;
|
|
||||||
end
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
elseif options.solve_algo == 11
|
|
||||||
% PATH mixed complementary problem
|
|
||||||
% PATH linear mixed complementary problem
|
|
||||||
@@ -353,12 +367,14 @@ elseif options.solve_algo == 11
|
|
||||||
omcppath = options.mcppath;
|
|
||||||
global mcp_data
|
|
||||||
mcp_data.func = f;
|
|
||||||
- mcp_data.args = arguments;
|
|
||||||
+ mcp_data.args = args;
|
|
||||||
try
|
|
||||||
[x, fval, jac, mu] = pathmcp(x,omcppath.lb,omcppath.ub,'mcp_func',omcppath.A,omcppath.b,omcppath.t,omcppath.mu0);
|
|
||||||
catch
|
|
||||||
errorflag = true;
|
|
||||||
end
|
|
||||||
+ errorcode = nan; % There is no error code for this algorithm, as PATH is closed source it is unlikely we can fix that.
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
elseif ismember(options.solve_algo, [13, 14])
|
|
||||||
if ~jacobian_flag
|
|
||||||
error('DYNARE_SOLVE: option solve_algo=13|14 needs computed Jacobian')
|
|
||||||
@@ -370,8 +386,8 @@ elseif ismember(options.solve_algo, [13,
|
|
||||||
auxstruct.isloggedlhs = isloggedlhs;
|
|
||||||
auxstruct.isauxdiffloggedrhs = isauxdiffloggedrhs;
|
|
||||||
end
|
|
||||||
- [x, errorflag] = block_trust_region(f, x, tolf, options.solve_tolx, maxit, options.debug, auxstruct, arguments{:});
|
|
||||||
- [fvec, fjac] = feval(f, x, arguments{:});
|
|
||||||
+ [x, errorflag, errorcode] = block_trust_region(f, x, tolf, options.solve_tolx, maxit, options.trust_region_initial_step_bound_factor, options.debug, auxstruct, args{:});
|
|
||||||
+ [fvec, fjac] = feval(f, x, args{:});
|
|
||||||
else
|
|
||||||
error('DYNARE_SOLVE: option solve_algo must be one of [0,1,2,3,4,9,10,11,12,13,14]')
|
|
||||||
end
|
|
||||||
Index: dynare-5.1/matlab/loadjson_.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/loadjson_.m
|
|
||||||
+++ dynare-5.1/matlab/loadjson_.m
|
|
||||||
@@ -9,11 +9,10 @@ function o = loadjson_(jsonfilename)
|
|
||||||
% - o [struct] content of the JSON file.
|
|
||||||
%
|
|
||||||
% REMARKS
|
|
||||||
-% jsondecode builtin was introduced in Matlab R2016b and is not
|
|
||||||
-% available under Octave. Old Matlab versions and Octave use
|
|
||||||
-% jsonlab as fallback.
|
|
||||||
+% jsondecode builtin was introduced in MATLAB R2016b and in Octave 7.
|
|
||||||
+% Older MATLAB and Octave versions use jsonlab as fallback.
|
|
||||||
|
|
||||||
-% Copyright (C) 2020-2021 Dynare Team
|
|
||||||
+% Copyright © 2020-2022 Dynare Team
|
|
||||||
%
|
|
||||||
% This file is part of Dynare.
|
|
||||||
%
|
|
||||||
@@ -30,7 +29,7 @@ function o = loadjson_(jsonfilename)
|
|
||||||
% You should have received a copy of the GNU General Public License
|
|
||||||
% along with Dynare. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
-if isoctave() || matlab_ver_less_than('9.1')
|
|
||||||
+if (isoctave && octave_ver_less_than('7')) || (~isoctave && matlab_ver_less_than('9.1'))
|
|
||||||
o = loadjson(jsonfilename);
|
|
||||||
return
|
|
||||||
end
|
|
||||||
Index: dynare-5.1/matlab/missing/mex/mjdgges/mjdgges.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/missing/mex/mjdgges/mjdgges.m
|
|
||||||
+++ dynare-5.1/matlab/missing/mex/mjdgges/mjdgges.m
|
|
||||||
@@ -18,7 +18,7 @@ function [ss, tt, zz, sdim, eigval, info
|
|
||||||
% SPECIAL REQUIREMENTS
|
|
||||||
% none.
|
|
||||||
|
|
||||||
-% Copyright (C) 1996-2020 Dynare Team
|
|
||||||
+% Copyright © 1996-2022 Dynare Team
|
|
||||||
%
|
|
||||||
% This file is part of Dynare.
|
|
||||||
%
|
|
||||||
@@ -40,7 +40,7 @@ if nargin > 5 || nargin < 2 || nargout >
|
|
||||||
end
|
|
||||||
|
|
||||||
if isoctave
|
|
||||||
- error('Octave unsupported, since it does not have real qz, ordqz and ordeig')
|
|
||||||
+ error('Octave unsupported, since it does not have real qz')
|
|
||||||
end
|
|
||||||
|
|
||||||
[me, ne] = size(e);
|
|
||||||
@@ -80,4 +80,4 @@ end
|
|
||||||
%$ t(1) = 0;
|
|
||||||
%$ end
|
|
||||||
%$ T = all(t);
|
|
||||||
-%@eof:1
|
|
||||||
\ No newline at end of file
|
|
||||||
+%@eof:1
|
|
||||||
Index: dynare-5.1/matlab/warning_config.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/matlab/warning_config.m
|
|
||||||
+++ dynare-5.1/matlab/warning_config.m
|
|
||||||
@@ -41,6 +41,7 @@ if isoctave
|
|
||||||
warning('off', 'Octave:num-to-str');
|
|
||||||
warning('off', 'Octave:resize-on-range-error');
|
|
||||||
warning('off', 'Octave:str-to-num');
|
|
||||||
+ warning('off', 'Octave:array-as-logical');
|
|
||||||
warning('off', 'Octave:array-to-scalar');
|
|
||||||
warning('off', 'Octave:array-to-vector');
|
|
||||||
warning('off', 'Octave:mixed-string-concat');
|
|
||||||
Index: dynare-5.1/mex/build/octave/configure.ac
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/mex/build/octave/configure.ac
|
|
||||||
+++ dynare-5.1/mex/build/octave/configure.ac
|
|
||||||
@@ -34,7 +34,9 @@ AR=$($MKOCTFILE -p AR)
|
|
||||||
RANLIB=$($MKOCTFILE -p RANLIB)
|
|
||||||
CFLAGS=$($MKOCTFILE -p CFLAGS)
|
|
||||||
CXXFLAGS=$($MKOCTFILE -p CXXFLAGS)
|
|
||||||
-LDFLAGS="$($MKOCTFILE -p LFLAGS) $($MKOCTFILE -p LDFLAGS)"
|
|
||||||
+# The --link-stand-alone is needed since Octave 7 to avoid inserting -shared, which
|
|
||||||
+# is undesirable for generic LDFLAGS.
|
|
||||||
+LDFLAGS=$($MKOCTFILE --link-stand-alone -p LDFLAGS)
|
|
||||||
|
|
||||||
AC_CANONICAL_HOST
|
|
||||||
|
|
||||||
Index: dynare-5.1/tests/Makefile.am
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/tests/Makefile.am
|
|
||||||
+++ dynare-5.1/tests/Makefile.am
|
|
||||||
@@ -1383,7 +1383,7 @@ check-matlab-ols: $(M_OLS_TRS_FILES)
|
|
||||||
%.o.trs %.o.log: %.mod
|
|
||||||
@echo "`tput bold``tput setaf 8`OCTAVE: $(CURDIR)/$*... `tput sgr0`"
|
|
||||||
@DYNARE_VERSION="$(PACKAGE_VERSION)" TOP_TEST_DIR="$(CURDIR)" FILESTEM="$*" \
|
|
||||||
- $(OCTAVE) --no-init-file --silent --no-history --path "$*.mod" run_test_octave.m > $*.o.log 2>&1 || \
|
|
||||||
+ xvfb-run -a $(OCTAVE) --no-init-file --silent --no-history --path "$*.mod" run_test_octave.m > $*.o.log 2>&1 || \
|
|
||||||
printf ":test-result: FAIL\n:number-tests: 1\n:number-failed-tests: 1\n:list-of-failed-tests: $*.mod\n:elapsed-time: 0.0\n" > $*.o.trs
|
|
||||||
@if test -z "$(filter $*.o.trs,$(O_XFAIL_TRS_FILES))"; then pass_color=2; fail_color=1; else pass_color=1; fail_color=2; fi; \
|
|
||||||
if grep -q ":test-result: PASS" $*.o.trs; then \
|
|
||||||
@@ -1398,7 +1398,7 @@ check-matlab-ols: $(M_OLS_TRS_FILES)
|
|
||||||
%.o.trs %.o.log : %.m
|
|
||||||
@echo "`tput bold``tput setaf 8`OCTAVE: $(CURDIR)/$*... `tput sgr0`"
|
|
||||||
@DYNARE_VERSION="$(PACKAGE_VERSION)" TOP_TEST_DIR="$(CURDIR)" \
|
|
||||||
- $(OCTAVE) --no-init-file --silent --no-history $< > $*.o.log 2>&1 || \
|
|
||||||
+ xvfb-run -a $(OCTAVE) --no-init-file --silent --no-history $< > $*.o.log 2>&1 || \
|
|
||||||
printf ":test-result: FAIL\n:number-tests: 1\n:number-failed-tests: 1\n:list-of-failed-tests: $*.m\n:elapsed-time: 0.0\n" > $*.o.trs
|
|
||||||
@echo "`tput bold``tput setaf 8`OCTAVE: $(CURDIR)/$* Done!`tput sgr0`"
|
|
||||||
|
|
||||||
@@ -1412,7 +1412,7 @@ check-matlab-ols: $(M_OLS_TRS_FILES)
|
|
||||||
%.o.tls : %.m
|
|
||||||
@echo "`tput bold``tput setaf 8`OCTAVE: $(CURDIR)/$*... `tput sgr0`"
|
|
||||||
@TOP_TEST_DIR="$(CURDIR)" FILESTEM="$*" \
|
|
||||||
- $(OCTAVE) --no-init-file --silent --no-history run_o_script.m 2>&1
|
|
||||||
+ xvfb-run -a $(OCTAVE) --no-init-file --silent --no-history run_o_script.m 2>&1
|
|
||||||
@touch $*.o.tls
|
|
||||||
@echo "`tput bold``tput setaf 8`OCTAVE: $(CURDIR)/$* Done!`tput sgr0`"
|
|
||||||
|
|
||||||
Index: dynare-5.1/tests/external_function/no_deriv_given_dll.mod
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/tests/external_function/no_deriv_given_dll.mod
|
|
||||||
+++ dynare-5.1/tests/external_function/no_deriv_given_dll.mod
|
|
||||||
@@ -55,7 +55,7 @@ end
|
|
||||||
if max(max(abs(L.oo_.dr.ghxu - oo_.dr.ghxu))) > 1e-4
|
|
||||||
error('Failure in external function')
|
|
||||||
end
|
|
||||||
-if max(max(abs(L.oo_.dr.ghxx - oo_.dr.ghxx))) > 1e-3
|
|
||||||
+if max(max(abs(L.oo_.dr.ghxx - oo_.dr.ghxx))) > 2e-3
|
|
||||||
error('Failure in external function')
|
|
||||||
end
|
|
||||||
if max(max(abs(L.oo_.dr.ghuu - oo_.dr.ghuu))) > 1e-5
|
|
||||||
Index: dynare-5.1/tests/run_all_unitary_tests.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/tests/run_all_unitary_tests.m
|
|
||||||
+++ dynare-5.1/tests/run_all_unitary_tests.m
|
|
||||||
@@ -1,4 +1,4 @@
|
|
||||||
-% Copyright (C) 2013-2020 Dynare Team
|
|
||||||
+% Copyright © 2013-2022 Dynare Team
|
|
||||||
%
|
|
||||||
% This file is part of Dynare.
|
|
||||||
%
|
|
||||||
@@ -39,7 +39,7 @@ if isoctave
|
|
||||||
end
|
|
||||||
|
|
||||||
% Set random seed, for reproducibility
|
|
||||||
-if isoctave
|
|
||||||
+if isoctave && octave_ver_less_than('7')
|
|
||||||
randn('state',1);
|
|
||||||
rand('state',1);
|
|
||||||
else
|
|
||||||
Index: dynare-5.1/tests/run_block_byte_tests_octave.m
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/tests/run_block_byte_tests_octave.m
|
|
||||||
+++ dynare-5.1/tests/run_block_byte_tests_octave.m
|
|
||||||
@@ -61,8 +61,10 @@ for blockFlag = 0:1
|
|
||||||
|
|
||||||
# Workaround for strange race condition related to the static/dynamic
|
|
||||||
# files (especially when we switch to/from use_dll)
|
|
||||||
- rmdir('+ls2003_tmp', 's');
|
|
||||||
- pause(1)
|
|
||||||
+ if exist('+ls2003_tmp')
|
|
||||||
+ rmdir('+ls2003_tmp', 's');
|
|
||||||
+ pause(1)
|
|
||||||
+ endif
|
|
||||||
|
|
||||||
for i = 1:length(solve_algos)
|
|
||||||
num_block_tests = num_block_tests + 1;
|
|
||||||
Index: dynare-5.1/windows/deps/mkoctfile64
|
|
||||||
===================================================================
|
|
||||||
--- dynare-5.1.orig/windows/deps/mkoctfile64
|
|
||||||
+++ dynare-5.1/windows/deps/mkoctfile64
|
|
||||||
@@ -1,10 +1,10 @@
|
|
||||||
#! /bin/sh
|
|
||||||
|
|
||||||
-## Make sure to keep -static-libgcc, -static-libstdc++ and -static-libgfortran in LDFLAGS and
|
|
||||||
-## DL_LDFLAGS when updating this file.
|
|
||||||
-## This is needed to cope for differences between the MinGW libraries shipped by the official Octave
|
|
||||||
-## package for Windows, and the MinGW libraries from Debian used on the runners.
|
|
||||||
-## Also keep BINDIR in DEFAULT_LFLAGS (for UMFPACK)
|
|
||||||
+## Make sure to keep -static-libgcc, -static-libstdc++ and -static-libgfortran
|
|
||||||
+## in DL_LDFLAGS when updating this file.
|
|
||||||
+## Do not add -shared in LDFLAGS (i.e. this file should mimick “mkoctfile
|
|
||||||
+## --link-stand-alone”, see the top of mex/build/configure.ac).
|
|
||||||
+## Also keep BINDIR in DEFAULT_LDFLAGS (for UMFPACK).
|
|
||||||
|
|
||||||
# Exit immediately on any error.
|
|
||||||
set -e
|
|
@ -1,3 +1,13 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Dec 30 10:21:23 UTC 2022 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
|
||||||
|
|
||||||
|
- Update to version 5.3:
|
||||||
|
* Long list of changes, see
|
||||||
|
https://www.dynare.org/new-dynare-release/dynare-5.3-released/
|
||||||
|
- Remove upstream patches:
|
||||||
|
* dynare-5.1-gcc-12.patch
|
||||||
|
* dynare-octave7-compat.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Jun 27 20:34:53 UTC 2022 - Antoine Belvire <antoine.belvire@opensuse.org>
|
Mon Jun 27 20:34:53 UTC 2022 - Antoine Belvire <antoine.belvire@opensuse.org>
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
%bcond_without doc
|
%bcond_without doc
|
||||||
%endif
|
%endif
|
||||||
Name: dynare
|
Name: dynare
|
||||||
Version: 5.1
|
Version: 5.3
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: A platform for handling a wide class of economic models
|
Summary: A platform for handling a wide class of economic models
|
||||||
License: GPL-3.0-or-later
|
License: GPL-3.0-or-later
|
||||||
@ -34,9 +34,6 @@ URL: https://www.dynare.org/
|
|||||||
Source: https://www.dynare.org/release/source/%{name}-%{version}.tar.xz
|
Source: https://www.dynare.org/release/source/%{name}-%{version}.tar.xz
|
||||||
# PATCH-FIX-UPSTREAM dynare-no-return-in-non-void-function.patch badshah400@gmail.com -- Return trivial value from a function that is not declared as returning void
|
# PATCH-FIX-UPSTREAM dynare-no-return-in-non-void-function.patch badshah400@gmail.com -- Return trivial value from a function that is not declared as returning void
|
||||||
Patch0: dynare-no-return-in-non-void-function.patch
|
Patch0: dynare-no-return-in-non-void-function.patch
|
||||||
Patch1: dynare-octave7-compat.patch
|
|
||||||
# PATCH-FIX-UPSTREAM dynare-5.1-gcc-12.patch -- Fix build with gcc 12 (https://git.dynare.org/Dynare/dynare/-/issues/1852)
|
|
||||||
Patch2: dynare-5.1-gcc-12.patch
|
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: gcc%{gccver}-c++
|
BuildRequires: gcc%{gccver}-c++
|
||||||
BuildRequires: gcc%{gccver}-fortran
|
BuildRequires: gcc%{gccver}-fortran
|
||||||
@ -84,8 +81,6 @@ This package provides documentation for %{name} in HTML format.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1 -d preprocessor
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
autoreconf -fvi
|
autoreconf -fvi
|
||||||
|
Loading…
Reference in New Issue
Block a user