From ea8ab0bb19a5889cc6aa3dbc62fb456520afc0c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?=
 <stephane.adjemian@univ-lemans.fr>
Date: Thu, 8 Jun 2017 11:52:32 +0200
Subject: [PATCH] Account for negative steady state in case of
 log-linearization.

(cherry picked from commit be61de1367ac2f263d57f23242bc6d327191d9d5)
---
 matlab/cli/prior.m     | 3 +++
 matlab/prior_sampler.m | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/matlab/cli/prior.m b/matlab/cli/prior.m
index b090aba76b..703297d73d 100644
--- a/matlab/cli/prior.m
+++ b/matlab/cli/prior.m
@@ -103,6 +103,9 @@ if ismember('simulate', varargin) % Prior simulations (BK).
     disp(['mjdgges crash share                   = ' num2str(results.dll.problem_share)])
     disp(['Steady state problem share            = ' num2str(results.ss.problem_share)])
     disp(['Complex steady state  share           = ' num2str(results.ss.complex_share)])
+    if options_.loglinear
+        disp(['Nonpositive steady state share        = ' num2str(results.ss.nonpositive_share)])
+    end
     disp(['Analytical steady state problem share = ' num2str(results.ass.problem_share)])
     skipline(2)
     donesomething = true;
diff --git a/matlab/prior_sampler.m b/matlab/prior_sampler.m
index b49523634d..e846cd0211 100644
--- a/matlab/prior_sampler.m
+++ b/matlab/prior_sampler.m
@@ -49,6 +49,7 @@ count_complex_steadystate = 0;
 count_nan_steadystate = 0;
 count_nan_params = 0;
 count_complex_params = 0;
+count_nonpositive_steadystate = 0;
 count_unknown_problem = 0;
 NumberOfSimulations = options_.prior_mc;
 NumberOfParameters = length(bayestopt_.p1);
@@ -135,6 +136,8 @@ while iteration < NumberOfSimulations
         count_complex_params = count_complex_params + 1 ;
       case 24
         count_nan_params = count_nan_params + 1 ;
+      case 26
+        count_nonpositive_steadystate = count_nonpositive_steadystate + 1;
       otherwise
         count_unknown_problem = count_unknown_problem + 1 ;
     end
@@ -162,6 +165,7 @@ results.dll.problem_share = count_dll_problem/loop_indx;
 results.ss.problem_share = count_no_steadystate/loop_indx;
 results.ss.complex_share = count_complex_steadystate/loop_indx;
 results.ass.problem_share = count_steadystate_file_exit/loop_indx;
+results.ss.nonpositive_share = count_nonpositive_steadystate/loop_indx;
 results.jacobian.problem_share = count_complex_jacobian/loop_indx;
 results.garbage_share = ...
     results.bk.indeterminacy_share + ...
@@ -170,6 +174,8 @@ results.garbage_share = ...
     results.dll.problem_share + ...
     results.ss.problem_share + ...
     results.ass.problem_share + ...
+    results.ss.complex_share + ...
+    results.ss.nonpositive_share + ...
     results.jacobian.problem_share + ...
     count_unknown_problem/loop_indx ;
 results.prior.mean = sampled_prior_expectation;
-- 
GitLab