From 3fa584737d62f05fd6536395322f36df1f4f965c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?=
 <stepan@dynare.org>
Date: Fri, 21 Jun 2019 11:18:45 +0200
Subject: [PATCH] Explicitly list input arguments.

Do not use varargin.
---
 matlab/backward/backward_model_inversion.m       |  4 +---
 matlab/backward/simul_backward_linear_model.m    | 12 ++++++++----
 matlab/backward/simul_backward_model_init.m      | 12 +++---------
 matlab/backward/simul_backward_nonlinear_model.m | 16 ++++++++++------
 4 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/matlab/backward/backward_model_inversion.m b/matlab/backward/backward_model_inversion.m
index fe4ae51528..99198771f5 100644
--- a/matlab/backward/backward_model_inversion.m
+++ b/matlab/backward/backward_model_inversion.m
@@ -87,17 +87,15 @@ model_dtransf = str2func('dynamic_backward_model_for_inversion');
 
 % Initialization of the returned simulations (endogenous variables).
 Y = NaN(DynareModel.endo_nbr, nobs(constraints));
-
 Y = [transpose(initialconditions{DynareModel.endo_names{:}}(constraints.dates(1)-1).data), Y];
 for i=1:nyctrl
     Y(controlledendogenousvariables_id(i),2:end) = transpose(constraints.data(:,i));
 end
 
 % Exogenous variables.
-X = exogenousvariables.data; %{exo_names{:}}(constraints.dates(1)-max(1,DynareModel.orig_maximum_exo_lag):constraints.dates(end)).data;
+X = exogenousvariables.data;
 
 % Inversion of the model, solvers for the free endogenous and exogenous variables (call a Newton-like algorithm in each period).
-
 ity = 2;
 itx = find(exogenousvariables.dates==constraints.dates(1));
 DynareOptions.solve_algo=4;
diff --git a/matlab/backward/simul_backward_linear_model.m b/matlab/backward/simul_backward_linear_model.m
index da055a2bbc..3816429982 100644
--- a/matlab/backward/simul_backward_linear_model.m
+++ b/matlab/backward/simul_backward_linear_model.m
@@ -1,4 +1,4 @@
-function simulations = simul_backward_linear_model(varargin)
+function simulations = simul_backward_linear_model(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations)
 
 % Simulates a stochastic linear backward looking model.
 %
@@ -38,16 +38,20 @@ function simulations = simul_backward_linear_model(varargin)
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-if M_.maximum_lead
+if DynareModel.maximum_lead
     error('Model defined in %s.mod is not backward.', M_.fname)
 end
 
-if M_.maximum_lag
+if ~DynareModel.maximum_lag
     error('Model defined in %s.mod is not backward.', M_.fname)
 end
 
+if nargin<6
+    innovations = [];
+end
+
 [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, nx, ny1, iy1, jdx, model_dynamic] = ...
-    simul_backward_model_init(varargin{:});
+    simul_backward_model_init(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations);
 
 [ysim, xsim] = simul_backward_linear_model_(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations, nx, ny1, iy1, jdx, model_dynamic);
 
diff --git a/matlab/backward/simul_backward_model_init.m b/matlab/backward/simul_backward_model_init.m
index c519cebe56..ab1e30c6eb 100644
--- a/matlab/backward/simul_backward_model_init.m
+++ b/matlab/backward/simul_backward_model_init.m
@@ -1,4 +1,5 @@
-function [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, nx, ny1, iy1, jdx, model_dynamic, y] = simul_backward_model_init(varargin)
+function [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, nx, ny1, iy1, jdx, model_dynamic, y] = ...
+    simul_backward_model_init(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations)
 
 % Initialization of the routines simulating backward models.    
 
@@ -19,12 +20,6 @@ function [initialconditions, samplesize, innovations, DynareOptions, DynareModel
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-initialconditions = varargin{1};
-samplesize = varargin{2};
-DynareOptions = varargin{3};
-DynareModel = varargin{4};
-DynareOutput = varargin{5};
-
 % Test if the model is backward.
 if DynareModel.maximum_lead
     error('simul_backward_nonlinear_model:: The specified model is not backward looking!')
@@ -150,7 +145,7 @@ if missinginitialcondition
     error('Please fix the dseries object used for setting the initial conditions!')
 end
 
-if nargin<6 || isempty(varargin{6}) 
+if nargin<6 || isempty(innovations)
     % Set the covariance matrix of the structural innovations.
     variances = diag(DynareModel.Sigma_e);
     number_of_shocks = length(DynareModel.Sigma_e);
@@ -174,7 +169,6 @@ if nargin<6 || isempty(varargin{6})
     DynareOutput.exo_simul(:,positive_var_indx) = DynareOutput.bnlms.shocks;
     innovations = DynareOutput.exo_simul;
 else
-    innovations = varargin{6};
     DynareOutput.exo_simul = innovations; % innovations
 end
 
diff --git a/matlab/backward/simul_backward_nonlinear_model.m b/matlab/backward/simul_backward_nonlinear_model.m
index 048d85e4df..956af53aff 100644
--- a/matlab/backward/simul_backward_nonlinear_model.m
+++ b/matlab/backward/simul_backward_nonlinear_model.m
@@ -1,4 +1,4 @@
-function simulations = simul_backward_nonlinear_model(varargin)
+function simulations = simul_backward_nonlinear_model(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations)
 
 % Simulates a stochastic non linear backward looking model with arbitrary precision (a deterministic solver is used).
 %
@@ -38,16 +38,20 @@ function simulations = simul_backward_nonlinear_model(varargin)
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-if M_.maximum_lead
-    error('Model defined in %s.mod is not backward.', M_.fname)
+if DynareModel.maximum_lead
+    error('Model defined in %s.mod is not backward.', DynareModel.fname)
 end
 
-if M_.maximum_lag
-    error('Model defined in %s.mod is not backward.', M_.fname)
+if ~DynareModel.maximum_lag
+    error('Model defined in %s.mod is not backward.', DynareModel.fname)
+end
+
+if nargin<6
+    innovations = [];
 end
 
 [initialconditions, samplesize, innovations, DynareOptions, DynareModel, DynareOutput, endonames, exonames, ~, ~, iy1, ~, model_dynamic] = ...
-    simul_backward_model_init(varargin{:});
+    simul_backward_model_init(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations);
 
 [ysim, xsim] = simul_backward_nonlinear_model_(initialconditions, samplesize, DynareOptions, DynareModel, DynareOutput, innovations, iy1, model_dynamic);
 
-- 
GitLab