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>
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
||||
%bcond_without doc
|
||||
%endif
|
||||
Name: dynare
|
||||
Version: 5.1
|
||||
Version: 5.3
|
||||
Release: 0
|
||||
Summary: A platform for handling a wide class of economic models
|
||||
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
|
||||
# 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
|
||||
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: gcc%{gccver}-c++
|
||||
BuildRequires: gcc%{gccver}-fortran
|
||||
@ -84,8 +81,6 @@ This package provides documentation for %{name} in HTML format.
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1 -d preprocessor
|
||||
|
||||
%build
|
||||
autoreconf -fvi
|
||||
|
Loading…
Reference in New Issue
Block a user