From cb81e4a99728ba1e2d51099c18c89c2c8ef7cd13 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Sedna=29?=
 <stephane.adjemian@univ-lemans.fr>
Date: Fri, 13 May 2011 12:46:11 +0200
Subject: [PATCH] Allow empty hessian in mode_check routine
 (options_.cova_compute==0) (cherry picked from commit
 6302abd7bdf557557f6b8c630b23129d2bf71f18)

---
 matlab/dynare_estimation_1.m |  6 +++++-
 matlab/mode_check.m          | 23 ++++++++++++++---------
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m
index dff1119751..b821aeb93a 100644
--- a/matlab/dynare_estimation_1.m
+++ b/matlab/dynare_estimation_1.m
@@ -438,7 +438,11 @@ if ~options_.mh_posterior_mode_estimation && options_.cova_compute
 end
 
 if options_.mode_check == 1 && ~options_.mh_posterior_mode_estimation && options_.cova_compute
-    mode_check(xparam1,0,hh,gend,data,lb,ub,data_index,number_of_observations,no_more_missing_observations);
+    if options_.cova_compute
+        mode_check(xparam1,0,hh,gend,data,lb,ub,data_index,number_of_observations,no_more_missing_observations);
+    else
+        mode_check(xparam1,0,[],gend,data,lb,ub,data_index,number_of_observations,no_more_missing_observations);
+    end
 end
 
 if ~options_.mh_posterior_mode_estimation && options_.cova_compute
diff --git a/matlab/mode_check.m b/matlab/mode_check.m
index b32eaefc37..b8eaa71fae 100644
--- a/matlab/mode_check.m
+++ b/matlab/mode_check.m
@@ -38,20 +38,25 @@ function mode_check(x,fval,hessian,gend,data,lb,ub,data_index,number_of_observat
 global bayestopt_ M_ options_
 
 TeX = options_.TeX;
-[ s_min, k ] = min(diag(hessian)) ;
+if ~isempty(hessian);
+    [ s_min, k ] = min(diag(hessian));
+end
 if options_.dsge_var
     fval = DsgeVarLikelihood(x,gend);
 else
     fval = DsgeLikelihood(x,gend,data,data_index,number_of_observations,no_more_missing_observations);    
 end    
-bayestopt_.penalty=fval;  
-disp(' ')
-disp('MODE CHECK')
-disp(' ')
-disp(sprintf('Fval obtained by the minimization routine: %f', fval))
-disp(' ')
-if s_min<eps
-    disp(sprintf('Most negative variance %f for parameter %d (%s = %f)', s_min, k , bayestopt_.name{k}, x(k)))
+bayestopt_.penalty=fval;
+
+if ~isempty(hessian);
+    disp(' ')
+    disp('MODE CHECK')
+    disp(' ')
+    disp(sprintf('Fval obtained by the minimization routine: %f', fval))
+    disp(' ')
+    if s_min<eps
+        disp(sprintf('Most negative variance %f for parameter %d (%s = %f)', s_min, k , bayestopt_.name{k}, x(k)))
+    end
 end
 
 [nbplt,nr,nc,lr,lc,nstar] = pltorg(length(x));
-- 
GitLab