diff --git a/matlab/get_minimal_state_representation.m b/matlab/get_minimal_state_representation.m
index 0953298d7..9069c4134 100644
--- a/matlab/get_minimal_state_representation.m
+++ b/matlab/get_minimal_state_representation.m
@@ -1,166 +1,166 @@
-function [CheckCO,minnx,minA,minB,minC,minD,dminA,dminB,dminC,dminD] = get_minimal_state_representation(A,B,C,D,dA,dB,dC,dD)
-% [CheckCO,minnx,minA,minB,minC,minD,dminA,dminB,dminC,dminD] = get_minimal_state_representation(A,B,C,D,dA,dB,dC,dD)
-% Derives and checks the minimal state representation of the ABCD
-% representation of a state space model
-% -------------------------------------------------------------------------
-% INPUTS
-% A: [endo_nbr by endo_nbr] Transition matrix from Kalman filter
-% for all endogenous declared variables, in DR order
-% B: [endo_nbr by exo_nbr] Transition matrix from Kalman filter
-% mapping shocks today to endogenous variables today, in DR order
-% C: [obs_nbr by endo_nbr] Measurement matrix from Kalman filter
-% linking control/observable variables to states, in DR order
-% D: [obs_nbr by exo_nbr] Measurement matrix from Kalman filter
-% mapping shocks today to controls/observables today, in DR order
-% dA: [endo_nbr by endo_nbr by totparam_nbr] in DR order
-% Jacobian (wrt to all parameters) of transition matrix A
-% dB: [endo_nbr by exo_nbr by totparam_nbr] in DR order
-% Jacobian (wrt to all parameters) of transition matrix B
-% dC: [obs_nbr by endo_nbr by totparam_nbr] in DR order
-% Jacobian (wrt to all parameters) of measurement matrix C
-% dD: [obs_nbr by exo_nbr by totparam_nbr] in DR order
-% Jacobian (wrt to all parameters) of measurement matrix D
-% -------------------------------------------------------------------------
-% OUTPUTS
-% CheckCO: [scalar] indicator, equals to 1 if minimal state representation is found
-% minnx: [scalar] length of minimal state vector
-% minA: [minnx by minnx] Transition matrix A for evolution of minimal state vector
-% minB: [minnx by exo_nbr] Transition matrix B for evolution of minimal state vector
-% minC: [obs_nbr by minnx] Measurement matrix C for evolution of controls, depending on minimal state vector only
-% minD: [obs_nbr by minnx] Measurement matrix D for evolution of controls, depending on minimal state vector only
-% dminA: [minnx by minnx by totparam_nbr] in DR order
-% Jacobian (wrt to all parameters) of transition matrix minA
-% dminB: [minnx by exo_nbr by totparam_nbr] in DR order
-% Jacobian (wrt to all parameters) of transition matrix minB
-% dminC: [obs_nbr by minnx by totparam_nbr] in DR order
-% Jacobian (wrt to all parameters) of measurement matrix minC
-% dminD: [obs_nbr by exo_nbr by totparam_nbr] in DR order
-% Jacobian (wrt to all parameters) of measurement matrix minD
-% -------------------------------------------------------------------------
-% This function is called by
-% * get_identification_jacobians.m (previously getJJ.m)
-% -------------------------------------------------------------------------
-% This function calls
-% * check_minimality (embedded)
-% =========================================================================
-% 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 .
-% =========================================================================
-
-nx = size(A,2);
-ny = size(C,1);
-nu = size(B,2);
-
-% Check controllability and observability conditions for full state vector
-CheckCO = check_minimality(A,B,C);
-
-if CheckCO == 1 % If model is already minimal
- minnx = nx;
- minA = A;
- minB = B;
- minC = C;
- minD = D;
- if nargout > 6
- dminA = dA;
- dminB = dB;
- dminC = dC;
- dminD = dD;
- end
-else
- %Model is not minimal
- realsmall = 1e-7;
- % create indices for unnecessary states
- endogstateindex = find(abs(sum(A,1))realsmall);
- minnx = length(exogstateindex);
- % remove unnecessary states from solution matrices
- A_1 = A(endogstateindex,exogstateindex);
- A_2 = A(exogstateindex,exogstateindex);
- B_2 = B(exogstateindex,:);
- C_1 = C(:,endogstateindex);
- C_2 = C(:,exogstateindex);
- D = D;
- ind_A1 = endogstateindex;
- ind_A2 = exogstateindex;
- % minimal representation
- minA = A_2;
- minB = B_2;
- minC = C_2;
- minD = D;
- % Check controllability and observability conditions
- CheckCO = check_minimality(minA,minB,minC);
-
- if CheckCO ~=1
- j=1;
- while (CheckCO==0 && j 6
- dminA = dA(ind_A2,ind_A2,:);
- dminB = dB(ind_A2,:,:);
- dminC = dC(:,ind_A2,:);
- dminD = dD;
- end
-end
-
-function CheckCO = check_minimality(A,B,C)
-%% This function computes the controllability and the observability matrices of the ABCD system and checks if the system is minimal
-%
-% Inputs: Solution matrices A,B,C of ABCD representation of a DSGE model
-% Outputs: CheckCO: equals 1, if both rank conditions for observability and controllability are fullfilled
-n = size(A,1);
-CC = B; % Initialize controllability matrix
-OO = C; % Initialize observability matrix
-if n >= 2
- for indn = 1:1:n-1
- CC = [CC, (A^indn)*B]; % Set up controllability matrix
- OO = [OO; C*(A^indn)]; % Set up observability matrix
- end
-end
-CheckC = (rank(full(CC))==n); % Check rank of controllability matrix
-CheckO = (rank(full(OO))==n); % Check rank of observability matrix
-CheckCO = CheckC&CheckO; % equals 1 if minimal state
-end % check_minimality end
-
-end % Main function end
+function [CheckCO,minnx,minA,minB,minC,minD,dminA,dminB,dminC,dminD] = get_minimal_state_representation(A,B,C,D,dA,dB,dC,dD)
+% [CheckCO,minnx,minA,minB,minC,minD,dminA,dminB,dminC,dminD] = get_minimal_state_representation(A,B,C,D,dA,dB,dC,dD)
+% Derives and checks the minimal state representation of the ABCD
+% representation of a state space model
+% -------------------------------------------------------------------------
+% INPUTS
+% A: [endo_nbr by endo_nbr] Transition matrix from Kalman filter
+% for all endogenous declared variables, in DR order
+% B: [endo_nbr by exo_nbr] Transition matrix from Kalman filter
+% mapping shocks today to endogenous variables today, in DR order
+% C: [obs_nbr by endo_nbr] Measurement matrix from Kalman filter
+% linking control/observable variables to states, in DR order
+% D: [obs_nbr by exo_nbr] Measurement matrix from Kalman filter
+% mapping shocks today to controls/observables today, in DR order
+% dA: [endo_nbr by endo_nbr by totparam_nbr] in DR order
+% Jacobian (wrt to all parameters) of transition matrix A
+% dB: [endo_nbr by exo_nbr by totparam_nbr] in DR order
+% Jacobian (wrt to all parameters) of transition matrix B
+% dC: [obs_nbr by endo_nbr by totparam_nbr] in DR order
+% Jacobian (wrt to all parameters) of measurement matrix C
+% dD: [obs_nbr by exo_nbr by totparam_nbr] in DR order
+% Jacobian (wrt to all parameters) of measurement matrix D
+% -------------------------------------------------------------------------
+% OUTPUTS
+% CheckCO: [scalar] indicator, equals to 1 if minimal state representation is found
+% minnx: [scalar] length of minimal state vector
+% minA: [minnx by minnx] Transition matrix A for evolution of minimal state vector
+% minB: [minnx by exo_nbr] Transition matrix B for evolution of minimal state vector
+% minC: [obs_nbr by minnx] Measurement matrix C for evolution of controls, depending on minimal state vector only
+% minD: [obs_nbr by minnx] Measurement matrix D for evolution of controls, depending on minimal state vector only
+% dminA: [minnx by minnx by totparam_nbr] in DR order
+% Jacobian (wrt to all parameters) of transition matrix minA
+% dminB: [minnx by exo_nbr by totparam_nbr] in DR order
+% Jacobian (wrt to all parameters) of transition matrix minB
+% dminC: [obs_nbr by minnx by totparam_nbr] in DR order
+% Jacobian (wrt to all parameters) of measurement matrix minC
+% dminD: [obs_nbr by exo_nbr by totparam_nbr] in DR order
+% Jacobian (wrt to all parameters) of measurement matrix minD
+% -------------------------------------------------------------------------
+% This function is called by
+% * get_identification_jacobians.m (previously getJJ.m)
+% -------------------------------------------------------------------------
+% This function calls
+% * check_minimality (embedded)
+% =========================================================================
+% 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 .
+% =========================================================================
+
+nx = size(A,2);
+ny = size(C,1);
+nu = size(B,2);
+
+% Check controllability and observability conditions for full state vector
+CheckCO = check_minimality(A,B,C);
+
+if CheckCO == 1 % If model is already minimal
+ minnx = nx;
+ minA = A;
+ minB = B;
+ minC = C;
+ minD = D;
+ if nargout > 6
+ dminA = dA;
+ dminB = dB;
+ dminC = dC;
+ dminD = dD;
+ end
+else
+ %Model is not minimal
+ realsmall = 1e-7;
+ % create indices for unnecessary states
+ endogstateindex = find(abs(sum(A,1))realsmall);
+ minnx = length(exogstateindex);
+ % remove unnecessary states from solution matrices
+ A_1 = A(endogstateindex,exogstateindex);
+ A_2 = A(exogstateindex,exogstateindex);
+ B_2 = B(exogstateindex,:);
+ C_1 = C(:,endogstateindex);
+ C_2 = C(:,exogstateindex);
+ D = D;
+ ind_A1 = endogstateindex;
+ ind_A2 = exogstateindex;
+ % minimal representation
+ minA = A_2;
+ minB = B_2;
+ minC = C_2;
+ minD = D;
+ % Check controllability and observability conditions
+ CheckCO = check_minimality(minA,minB,minC);
+
+ if CheckCO ~=1
+ j=1;
+ while (CheckCO==0 && j 6
+ dminA = dA(ind_A2,ind_A2,:);
+ dminB = dB(ind_A2,:,:);
+ dminC = dC(:,ind_A2,:);
+ dminD = dD;
+ end
+end
+
+function CheckCO = check_minimality(A,B,C)
+%% This function computes the controllability and the observability matrices of the ABCD system and checks if the system is minimal
+%
+% Inputs: Solution matrices A,B,C of ABCD representation of a DSGE model
+% Outputs: CheckCO: equals 1, if both rank conditions for observability and controllability are fullfilled
+n = size(A,1);
+CC = B; % Initialize controllability matrix
+OO = C; % Initialize observability matrix
+if n >= 2
+ for indn = 1:1:n-1
+ CC = [CC, (A^indn)*B]; % Set up controllability matrix
+ OO = [OO; C*(A^indn)]; % Set up observability matrix
+ end
+end
+CheckC = (rank(full(CC))==n); % Check rank of controllability matrix
+CheckO = (rank(full(OO))==n); % Check rank of observability matrix
+CheckCO = CheckC&CheckO; % equals 1 if minimal state
+end % check_minimality end
+
+end % Main function end
diff --git a/tests/identification/BrockMirman/BrockMirman.mod b/tests/identification/BrockMirman/BrockMirman.mod
index 66f3f2da5..92d09e2ab 100644
--- a/tests/identification/BrockMirman/BrockMirman.mod
+++ b/tests/identification/BrockMirman/BrockMirman.mod
@@ -1,57 +1,57 @@
-% =========================================================================
-% Stochastic growth model of Brock and Mirman (1972) with technology shock
-% Willi Mutschler, January 2018
-% willi@mutschler.eu
-% =========================================================================
-
-var
- C ${C}$ (long_name='consumption')
- K ${K}$ (long_name='capital')
- A ${Z}$ (long_name='total factor productivity')
-;
-varobs C;
-
-varexo
- eps_A ${\varepsilon_A}$ (long_name='TFP shock')
-;
-
-parameters
- alph ${\alpha}$ (long_name='capital share')
- betta ${\beta}$ (long_name='discount factor')
- rhoA ${\rho_A}$ (long_name='persistence TFP')
- sigA ${\sigma_A}$ (long_name='standard deviation TFP shock')
-;
-
-alph = 0.35;
-betta = 0.99;
-rhoA = 0.9;
-sigA = 0.6;
-
-model;
-[name='Euler equation']
-C^(-1)=alph*betta*C(+1)^(-1)*A(+1)*K^(alph-1);
-[name='capital law of motion']
-K=A*K(-1)^alph-C;
-[name='exogenous TFP process']
-log(A)=rhoA*log(A(-1))+sigA*eps_A;
-end;
-
-shocks;
- var eps_A = 1;
-end;
-
-steady_state_model;
- A = 1; % technology level
- K = (alph*betta*A)^(1/(1-alph)); % capital level
- C = A*K^alph-K; % consumption level
-end;
-
-steady; % compute steady state given the starting values
-resid; % check the starting values for the steady state
-check; % check Blanchard & Khan rank condition
-
-@#ifdef kronflag
-identification(ar=3, useautocorr=1, nodisplay, nograph, parameter_set=calibration, analytic_derivation_mode=@{kronflag});
-@#else
-identification(ar=3, useautocorr=1, nodisplay, nograph, parameter_set=calibration, analytic_derivation_mode=0);
-@#endif
\ No newline at end of file
+% =========================================================================
+% Stochastic growth model of Brock and Mirman (1972) with technology shock
+% Willi Mutschler, January 2018
+% willi@mutschler.eu
+% =========================================================================
+
+var
+ C ${C}$ (long_name='consumption')
+ K ${K}$ (long_name='capital')
+ A ${Z}$ (long_name='total factor productivity')
+;
+varobs C;
+
+varexo
+ eps_A ${\varepsilon_A}$ (long_name='TFP shock')
+;
+
+parameters
+ alph ${\alpha}$ (long_name='capital share')
+ betta ${\beta}$ (long_name='discount factor')
+ rhoA ${\rho_A}$ (long_name='persistence TFP')
+ sigA ${\sigma_A}$ (long_name='standard deviation TFP shock')
+;
+
+alph = 0.35;
+betta = 0.99;
+rhoA = 0.9;
+sigA = 0.6;
+
+model;
+[name='Euler equation']
+C^(-1)=alph*betta*C(+1)^(-1)*A(+1)*K^(alph-1);
+[name='capital law of motion']
+K=A*K(-1)^alph-C;
+[name='exogenous TFP process']
+log(A)=rhoA*log(A(-1))+sigA*eps_A;
+end;
+
+shocks;
+ var eps_A = 1;
+end;
+
+steady_state_model;
+ A = 1; % technology level
+ K = (alph*betta*A)^(1/(1-alph)); % capital level
+ C = A*K^alph-K; % consumption level
+end;
+
+steady; % compute steady state given the starting values
+resid; % check the starting values for the steady state
+check; % check Blanchard & Khan rank condition
+
+@#ifdef kronflag
+identification(ar=3, useautocorr=1, nodisplay, nograph, parameter_set=calibration, analytic_derivation_mode=@{kronflag});
+@#else
+identification(ar=3, useautocorr=1, nodisplay, nograph, parameter_set=calibration, analytic_derivation_mode=0);
+@#endif
diff --git a/tests/identification/cgg/cgg_criteria_differ.mod b/tests/identification/cgg/cgg_criteria_differ.mod
index b40481e8b..dd4aa34b4 100644
--- a/tests/identification/cgg/cgg_criteria_differ.mod
+++ b/tests/identification/cgg/cgg_criteria_differ.mod
@@ -1,161 +1,161 @@
-% This is the Clarida, Gali and Gertler Basic New Keynesian model
-% This mod file illustrates that due to numerical errors and numerical
-% settings the identification criteria might differ
-% created by Willi Mutschler (willi@mutschler.eu)
-var
-y ${y}$ (long_name='output')
-c ${c}$ (long_name='consumption')
-lam ${\lambda}$ (long_name='marginal utility, i.e. lagrange multiplier budget')
-R ${R}$ (long_name='nominal interest rate')
-pie ${\pi}$ (long_name='inflation rate')
-n ${n}$ (long_name='labor')
-w ${w}$ (long_name='real wage')
-mc ${mc}$ (long_name='marginal costs')
-pstar ${p^\ast}$ (long_name='price dispersion')
-ptilde ${\tilde{p}}$ (long_name='reoptimized price')
-S1 ${S_{1}}$ (long_name='auxiliary variable for nonlinear pricing 1')
-S2 ${S_{2}}$ (long_name='auxiliary variable for nonlinear pricing 2')
-a ${a}$ (long_name='total factor productivity')
-RR ${R^{**}}$ (long_name='natural interest rate')
-yy ${y^{**}}$ (long_name='natural output')
-x ${x}$ (long_name='output gap')
-da ${\delta a}$ (long_name='technology growth')
-;
-
-varexo
-epsa ${\varepsilon^A}$ (long_name='TFP shock')
-epsR ${\varepsilon^R}$ (long_name='monetary policy shock')
-;
-
-parameters
-BETA ${\beta}$ (long_name='discount factor')
-PIESTAR ${\pi^\ast}$ (long_name='annual target inflation rate')
-PSIPIE ${\psi_\pi}$ (long_name='Taylor rule parameter inflation')
-PSIY ${\psi_y}$ (long_name='Taylor rule parameter output')
-RHOR ${\rho_R}$ (long_name='persistence Taylor rule')
-SIGR ${\sigma_R}$ (long_name='standard deviation monetary policy shock')
-ETA ${\eta}$ (long_name='elasticity of substitution')
-THETA ${\theta}$ (long_name='Calvo probability of resetting prices')
-PSI ${\psi}$ (long_name='labor disutility parameter')
-RHOA ${\rho_A}$ (long_name='persistence TFP')
-SIGA ${\sigma_A}$ (long_name='standard deviation TFP shock')
-SUBSIDY ${\nu}$ (long_name='subsidy')
-;
-
-%Calibration
-BETA = 0.99;
-PIESTAR = 1;
-PSIPIE = 1.5;
-PSIY = 0;
-RHOR = 0;
-SIGR = 0.2;
-ETA = 2;
-THETA = 3/4;
-PSI = 1;
-RHOA = 0.5;
-SIGA = 0.01;
-SUBSIDY = 1 - (ETA-1)/ETA;
-
-model;
-
-[name='marginal utility of consumption']
-lam = 1/c;
-
-[name='Euler equation']
-lam = BETA*R/pie(+1)*lam(+1);
-
-[name='labor supply']
-lam*w = n^PSI;
-
-[name='aggregate supply']
-pstar*y = a*n;
-
-[name='labor demand']
-w*(1-SUBSIDY) = mc*a;
-
-[name='market clearing']
-y = c;
-
-[name='recursive Price']
-ptilde*S1 = ETA/(ETA-1)*S2;
-
-[name='recursive Price 1']
-S1 = y + THETA*BETA*lam(+1)/lam*pie(+1)^(ETA-1)*S1(+1);
-
-[name='recursive Price 2']
-S2 = y*mc + THETA*BETA*lam(+1)/lam*pie(+1)^(ETA)*S2(+1);
-
-[name='aggregate price index']
-1 = (1-THETA)*ptilde^(1-ETA) + THETA*pie^(ETA-1);
-
-[name='overall price dispersion']
-pstar = (1-THETA)*ptilde^(-ETA) + THETA*pie^(ETA)*pstar(-1);
-
-[name='Taylor rule']
-R = steady_state(R)^(1-RHOR)*R(-1)^RHOR*(pie/PIESTAR)^PSIPIE*(y/steady_state(y))^PSIY*exp(epsR);
-
-[name='evolution of technology']
-log(a) = RHOA*log(a(-1)) + epsa;
-
-[name='technology growth']
-da = log(a/a(-1));
-
-[name='efficient interest rate']
-RR = 1/BETA * a(+1)/a;
-
-[name='efficient output']
-yy = a;
-
-[name='output gap']
-x = (y-yy);
-
-end;
-
-steady_state_model;
-a = 1;
-da = 0;
-pie = PIESTAR;
-R = pie/BETA;
-ptilde = ( (1-THETA*pie^(ETA-1))/ (1-THETA) )^(1/(1-ETA));
-pstar = ( (1-THETA) / (1-THETA*pie^(ETA)) )*ptilde^(-ETA);
-mc = (ETA-1)/ETA*ptilde* (1-THETA*BETA*pie^(ETA)) / (1-THETA*BETA*pie^(ETA-1));
-w = 1/(1-SUBSIDY)*mc*a;
-n = (pstar*mc/(1-SUBSIDY))^(1/(PSI+1));
-y = pstar^(-1)*a*n;
-c = y;
-lam = 1/c;
-S1 = y/(1-THETA*BETA*pie^(ETA-1));
-S2 = y*mc/(1-THETA*BETA*pie^(ETA));
-RR = 1/BETA;
-yy = a;
-x = y-yy;
-end;
-
-
-shocks;
-var epsa = SIGA^2;
-var epsR = SIGR^2;
-end;
-
-
-model_diagnostics;
-steady;
-resid;
-check;
-
-estimated_params;
-PIESTAR , 1;
-PSIPIE , 1.5;
-PSIY , 0;
-RHOR , 0;
-ETA , 1.5;
-end;
-
-varobs y c;
-identification(tol_rank=1e-13, tol_sv=1e-2, tol_deriv=1e-6, normalize_jacobians=0, checks_via_subsets=0);
-identification(tol_rank=1e-13, tol_sv=1e-2, tol_deriv=1e-6, normalize_jacobians=1, checks_via_subsets=0);
-identification(tol_rank=1e-13, tol_sv=1e-2, tol_deriv=1e-6, normalize_jacobians=0, checks_via_subsets=1);
-identification(tol_rank=1e-13, tol_sv=1e-2, tol_deriv=1e-6, normalize_jacobians=1, checks_via_subsets=1);
-
-estim_params_ = [];
-identification(checks_via_subsets=1, max_dim_subsets_groups=4);
\ No newline at end of file
+% This is the Clarida, Gali and Gertler Basic New Keynesian model
+% This mod file illustrates that due to numerical errors and numerical
+% settings the identification criteria might differ
+% created by Willi Mutschler (willi@mutschler.eu)
+var
+y ${y}$ (long_name='output')
+c ${c}$ (long_name='consumption')
+lam ${\lambda}$ (long_name='marginal utility, i.e. lagrange multiplier budget')
+R ${R}$ (long_name='nominal interest rate')
+pie ${\pi}$ (long_name='inflation rate')
+n ${n}$ (long_name='labor')
+w ${w}$ (long_name='real wage')
+mc ${mc}$ (long_name='marginal costs')
+pstar ${p^\ast}$ (long_name='price dispersion')
+ptilde ${\tilde{p}}$ (long_name='reoptimized price')
+S1 ${S_{1}}$ (long_name='auxiliary variable for nonlinear pricing 1')
+S2 ${S_{2}}$ (long_name='auxiliary variable for nonlinear pricing 2')
+a ${a}$ (long_name='total factor productivity')
+RR ${R^{**}}$ (long_name='natural interest rate')
+yy ${y^{**}}$ (long_name='natural output')
+x ${x}$ (long_name='output gap')
+da ${\delta a}$ (long_name='technology growth')
+;
+
+varexo
+epsa ${\varepsilon^A}$ (long_name='TFP shock')
+epsR ${\varepsilon^R}$ (long_name='monetary policy shock')
+;
+
+parameters
+BETA ${\beta}$ (long_name='discount factor')
+PIESTAR ${\pi^\ast}$ (long_name='annual target inflation rate')
+PSIPIE ${\psi_\pi}$ (long_name='Taylor rule parameter inflation')
+PSIY ${\psi_y}$ (long_name='Taylor rule parameter output')
+RHOR ${\rho_R}$ (long_name='persistence Taylor rule')
+SIGR ${\sigma_R}$ (long_name='standard deviation monetary policy shock')
+ETA ${\eta}$ (long_name='elasticity of substitution')
+THETA ${\theta}$ (long_name='Calvo probability of resetting prices')
+PSI ${\psi}$ (long_name='labor disutility parameter')
+RHOA ${\rho_A}$ (long_name='persistence TFP')
+SIGA ${\sigma_A}$ (long_name='standard deviation TFP shock')
+SUBSIDY ${\nu}$ (long_name='subsidy')
+;
+
+%Calibration
+BETA = 0.99;
+PIESTAR = 1;
+PSIPIE = 1.5;
+PSIY = 0;
+RHOR = 0;
+SIGR = 0.2;
+ETA = 2;
+THETA = 3/4;
+PSI = 1;
+RHOA = 0.5;
+SIGA = 0.01;
+SUBSIDY = 1 - (ETA-1)/ETA;
+
+model;
+
+[name='marginal utility of consumption']
+lam = 1/c;
+
+[name='Euler equation']
+lam = BETA*R/pie(+1)*lam(+1);
+
+[name='labor supply']
+lam*w = n^PSI;
+
+[name='aggregate supply']
+pstar*y = a*n;
+
+[name='labor demand']
+w*(1-SUBSIDY) = mc*a;
+
+[name='market clearing']
+y = c;
+
+[name='recursive Price']
+ptilde*S1 = ETA/(ETA-1)*S2;
+
+[name='recursive Price 1']
+S1 = y + THETA*BETA*lam(+1)/lam*pie(+1)^(ETA-1)*S1(+1);
+
+[name='recursive Price 2']
+S2 = y*mc + THETA*BETA*lam(+1)/lam*pie(+1)^(ETA)*S2(+1);
+
+[name='aggregate price index']
+1 = (1-THETA)*ptilde^(1-ETA) + THETA*pie^(ETA-1);
+
+[name='overall price dispersion']
+pstar = (1-THETA)*ptilde^(-ETA) + THETA*pie^(ETA)*pstar(-1);
+
+[name='Taylor rule']
+R = steady_state(R)^(1-RHOR)*R(-1)^RHOR*(pie/PIESTAR)^PSIPIE*(y/steady_state(y))^PSIY*exp(epsR);
+
+[name='evolution of technology']
+log(a) = RHOA*log(a(-1)) + epsa;
+
+[name='technology growth']
+da = log(a/a(-1));
+
+[name='efficient interest rate']
+RR = 1/BETA * a(+1)/a;
+
+[name='efficient output']
+yy = a;
+
+[name='output gap']
+x = (y-yy);
+
+end;
+
+steady_state_model;
+a = 1;
+da = 0;
+pie = PIESTAR;
+R = pie/BETA;
+ptilde = ( (1-THETA*pie^(ETA-1))/ (1-THETA) )^(1/(1-ETA));
+pstar = ( (1-THETA) / (1-THETA*pie^(ETA)) )*ptilde^(-ETA);
+mc = (ETA-1)/ETA*ptilde* (1-THETA*BETA*pie^(ETA)) / (1-THETA*BETA*pie^(ETA-1));
+w = 1/(1-SUBSIDY)*mc*a;
+n = (pstar*mc/(1-SUBSIDY))^(1/(PSI+1));
+y = pstar^(-1)*a*n;
+c = y;
+lam = 1/c;
+S1 = y/(1-THETA*BETA*pie^(ETA-1));
+S2 = y*mc/(1-THETA*BETA*pie^(ETA));
+RR = 1/BETA;
+yy = a;
+x = y-yy;
+end;
+
+
+shocks;
+var epsa = SIGA^2;
+var epsR = SIGR^2;
+end;
+
+
+model_diagnostics;
+steady;
+resid;
+check;
+
+estimated_params;
+PIESTAR , 1;
+PSIPIE , 1.5;
+PSIY , 0;
+RHOR , 0;
+ETA , 1.5;
+end;
+
+varobs y c;
+identification(tol_rank=1e-13, tol_sv=1e-2, tol_deriv=1e-6, normalize_jacobians=0, checks_via_subsets=0);
+identification(tol_rank=1e-13, tol_sv=1e-2, tol_deriv=1e-6, normalize_jacobians=1, checks_via_subsets=0);
+identification(tol_rank=1e-13, tol_sv=1e-2, tol_deriv=1e-6, normalize_jacobians=0, checks_via_subsets=1);
+identification(tol_rank=1e-13, tol_sv=1e-2, tol_deriv=1e-6, normalize_jacobians=1, checks_via_subsets=1);
+
+estim_params_ = [];
+identification(checks_via_subsets=1, max_dim_subsets_groups=4);