From 133b77c061a2e1937e38348a169b4c7d2954f2bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Thu, 13 Feb 2020 18:20:07 +0100
Subject: [PATCH] Conditional forecasting: compatibility fix with MATLAB <
 R2016b

Implicit expansion (a.k.a. automatic broadcasting) was introduced in MATLAB
R2016b (and it has been present in Octave for quite some time).

Hence use bsxfun() instead.

The problem had been introduced in 228b2a532.
---
 matlab/imcforecast.m | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/matlab/imcforecast.m b/matlab/imcforecast.m
index f7fa729519..e1fafcfa9b 100644
--- a/matlab/imcforecast.m
+++ b/matlab/imcforecast.m
@@ -28,7 +28,7 @@ function imcforecast(constrained_paths, constrained_vars, options_cond_fcst)
 % [1] Results are stored in oo_.conditional_forecast.
 % [2] Use the function plot_icforecast to plot the results.
 
-% Copyright (C) 2006-2019 Dynare Team
+% Copyright (C) 2006-2020 Dynare Team
 %
 % This file is part of Dynare.
 %
@@ -249,7 +249,7 @@ for b=1:options_cond_fcst.replic %conditional forecast using cL set to constrain
     [FORCS1(:,:,b), FORCS1_shocks(:,:,b)] = mcforecast3(cL,options_cond_fcst.periods,constrained_paths,shocks,FORCS1(:,:,b),T,R,mv, mu);
     FORCS1(:,:,b)=FORCS1(:,:,b)+trend; %add trend
 end
-if max(max(max(abs(FORCS1(constrained_vars,1:cL,:)-constrained_paths))))>1e-4
+if max(max(max(abs(bsxfun(@minus,FORCS1(constrained_vars,1:cL,:),constrained_paths)))))>1e-4
     fprintf('\nconditional_forecasts: controlling of variables was not successful.\n')
     fprintf('This can be due to numerical imprecision (e.g. explosive simulations)\n')
     fprintf('or because the instrument(s) do not allow controlling the variable(s).\n')
-- 
GitLab