From ddd95361ba66055ec1b72bcf1ab22073e69ec2c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?=
 <stephane.adjemian@univ-lemans.fr>
Date: Mon, 4 Nov 2013 10:54:45 +0100
Subject: [PATCH] Cosmetic changes. Added isoctave function to replace
 exist('OCTAVE_VERSION').

---
 matlab/MakeAllFigures.m                       |  4 +--
 matlab/McMCDiagnostics_core.m                 |  4 +--
 matlab/PosteriorIRF.m                         |  2 +-
 matlab/PosteriorIRF_core1.m                   |  4 +--
 matlab/UnivariateSpectralDensity.m            |  4 +--
 matlab/draw_prior_density.m                   |  6 ++--
 matlab/dyn_saveas.m                           |  6 ++--
 matlab/dyn_waitbar.m                          |  4 +--
 matlab/dyn_waitbar_close.m                    |  2 +-
 matlab/dynare.m                               |  4 +--
 matlab/dynare_config.m                        | 16 +++++-----
 matlab/dynare_estimation_1.m                  | 12 +++----
 matlab/dynare_identification.m                |  8 ++---
 matlab/dynare_sensitivity.m                   |  2 +-
 matlab/dynare_solve.m                         |  4 +--
 matlab/gensylv/sylvester3.m                   |  2 +-
 matlab/get_dynare_random_generator_state.m    |  2 +-
 matlab/global_initialization.m                |  2 +-
 matlab/gsa/filt_mc_.m                         |  2 +-
 matlab/independent_metropolis_hastings_core.m |  8 ++---
 matlab/load_csv_file_data.m                   |  2 +-
 matlab/lyapunov_symm.m                        |  2 +-
 matlab/mode_check.m                           |  2 +-
 matlab/ms-sbvar/dyn_save_graph.m              |  4 +--
 .../ms-sbvar/plot_ms_variance_decomposition.m |  2 +-
 .../AnalyseComputationalEnvironment.m         |  2 +-
 .../InitializeComputationalEnvironment.m      |  6 ++--
 matlab/parallel/dynareParallelDir.m           |  6 ++--
 matlab/parallel/dynareParallelGetFiles.m      |  2 +-
 matlab/parallel/dynareParallelRmDir.m         |  2 +-
 matlab/parallel/dynareParallelSendFiles.m     |  4 +--
 matlab/parallel/masterParallel.m              | 31 +++++++++----------
 matlab/partial_information/PI_gensys.m        |  2 +-
 matlab/plot_icforecast.m                      |  2 +-
 matlab/pm3.m                                  |  2 +-
 matlab/prior_bounds.m                         |  6 ++--
 matlab/qz/mjdgges.m                           |  2 +-
 matlab/random_walk_metropolis_hastings_core.m | 10 +++---
 matlab/reports/@graph/createGraph.m           |  2 +-
 matlab/reports/@report/compile.m              |  4 +--
 matlab/reports/@report/write.m                |  2 +-
 matlab/rplot.m                                |  2 +-
 matlab/set_dynare_random_generator_state.m    |  2 +-
 matlab/set_dynare_seed.m                      |  4 +--
 matlab/simul.m                                |  2 +-
 matlab/solve_one_boundary.m                   |  6 ++--
 matlab/steady_.m                              |  2 +-
 matlab/th_autocovariances.m                   |  4 +--
 matlab/utilities/general/isoctave.m           | 20 ++++++++++++
 matlab/varlist_indices.m                      |  2 +-
 matlab/warning_config.m                       |  2 +-
 matlab/writedata.m                            |  2 +-
 52 files changed, 131 insertions(+), 112 deletions(-)
 create mode 100644 matlab/utilities/general/isoctave.m

diff --git a/matlab/MakeAllFigures.m b/matlab/MakeAllFigures.m
index a890219213..89f35dac60 100644
--- a/matlab/MakeAllFigures.m
+++ b/matlab/MakeAllFigures.m
@@ -153,14 +153,14 @@ if Info.SaveFormat.Eps
         eval(['print -depsc2 ' M_.fname Info.SaveFormat.GenericName Info.SaveFormat.Name '.eps']);  
     end
 end
-if Info.SaveFormat.Pdf && ~exist('OCTAVE_VERSION')
+if Info.SaveFormat.Pdf && ~isoctave
     if isempty(Info.SaveFormat.Name)
         eval(['print -dpdf ' M_.fname Info.SaveFormat.GenericName int2str(Info.SaveFormat.Number)]);
     else
         eval(['print -dpdf ' M_.fname Info.SaveFormat.GenericName Info.SaveFormat.Name]);  
     end
 end
-if Info.SaveFormat.Fig && ~exist('OCTAVE_VERSION')
+if Info.SaveFormat.Fig && ~isoctave
     if isempty(Info.SaveFormat.Name)
         saveas(FigHandle,[M_.fname Info.SaveFormat.GenericName int2str(Info.SaveFormat.Number) '.fig']);
     else
diff --git a/matlab/McMCDiagnostics_core.m b/matlab/McMCDiagnostics_core.m
index 540c322e6f..bf014e7522 100644
--- a/matlab/McMCDiagnostics_core.m
+++ b/matlab/McMCDiagnostics_core.m
@@ -73,7 +73,7 @@ if whoiam
     fMessageStatus(0,whoiam,waitbarString, waitbarTitle, Parallel(ThisMatlab));
 end
 for j=fpar:npar,
-    if exist('OCTAVE_VERSION'),
+    if isoctave
         if (whoiam==0),
             printf('    Parameter %d...  ',j);
         end
@@ -122,7 +122,7 @@ for j=fpar:npar,
             UDIAG(ligne,6,j-fpar+1) = UDIAG(ligne,6,j-fpar+1) + sum(abs(pmet(:,1)-moyenne).^3)/(n-1);
         end
     end
-    if exist('OCTAVE_VERSION'),
+    if isoctave
         if (whoiam==0),
             printf('Done! \n');
         end
diff --git a/matlab/PosteriorIRF.m b/matlab/PosteriorIRF.m
index 42e11640a7..d7ce72c299 100644
--- a/matlab/PosteriorIRF.m
+++ b/matlab/PosteriorIRF.m
@@ -444,7 +444,7 @@ end
 
 
 % Comment for testing!
-if ~exist('OCTAVE_VERSION')
+if ~isoctave
     if isnumeric(options_.parallel)  || (M_.exo_nbr*ceil(size(varlist,1)/MaxNumberOfPlotPerFigure))<8,
         [fout] = PosteriorIRF_core2(localVars,1,M_.exo_nbr,0);
     else
diff --git a/matlab/PosteriorIRF_core1.m b/matlab/PosteriorIRF_core1.m
index 20294afa2f..00b3384782 100644
--- a/matlab/PosteriorIRF_core1.m
+++ b/matlab/PosteriorIRF_core1.m
@@ -278,7 +278,7 @@ while fpar<B
         ifil2 = ifil2 + 1;
         irun2 = 0;
     end
-%     if exist('OCTAVE_VERSION'),
+%     if isoctave
 %         if (whoiam==0),
 %             printf(['Posterior IRF  %3.f%% done\r'],(fpar/B*100));
 %         end
@@ -286,7 +286,7 @@ while fpar<B
 %         waitbar(fpar/B,h);
 %     end
 %     if whoiam,
-%         if ~exist('OCTAVE_VERSION')
+%         if ~isoctave
 %             fprintf('Done! \n');
 %         end
 %         waitbarString = [ 'Subdraw ' int2str(fpar) '/' int2str(B) ' done.'];
diff --git a/matlab/UnivariateSpectralDensity.m b/matlab/UnivariateSpectralDensity.m
index f9760ef794..0303cd3064 100644
--- a/matlab/UnivariateSpectralDensity.m
+++ b/matlab/UnivariateSpectralDensity.m
@@ -39,7 +39,7 @@ sdl      = options_.SpectralDensity.sdl;
 omega    = (0:sdl:pi)';
 GridSize = length(omega);
 exo_names_orig_ord  = M_.exo_names_orig_ord;
-if exist('OCTAVE_VERSION')
+if isoctave
     warning('off', 'Octave:divide-by-zero')
 else
     warning off MATLAB:dividebyzero
@@ -160,7 +160,7 @@ for i=1:nvar
     f(i,:) = Gamma(i,1)/(2*pi) + Gamma(i,H+1)*cos(H'*omega')/pi;
 end  
 
-if exist('OCTAVE_VERSION')
+if isoctave
     warning('on', 'Octave:divide-by-zero')
 else
     warning on MATLAB:dividebyzero
diff --git a/matlab/draw_prior_density.m b/matlab/draw_prior_density.m
index ec0fa3c762..1d364eecfd 100644
--- a/matlab/draw_prior_density.m
+++ b/matlab/draw_prior_density.m
@@ -54,7 +54,7 @@ switch pshape(indx)
         supbound = gaminv(1-truncprior,p6(indx),p7(indx))+p3(indx);
     catch
         % Workaround for ticket #161
-        if exist('OCTAVE_VERSION')
+        if isoctave
             error(['Due to a bug in Octave, you must choose other values for mean and/or variance of your prior on ' bayestopt_.name{indx} ', or use another shape'])
         else
             rethrow(lasterror)
@@ -73,7 +73,7 @@ switch pshape(indx)
         supbound = 1/sqrt(gaminv(10*truncprior, p7(indx)/2, 2/p6(indx)))+p3(indx);
     catch
         % Workaround for ticket #161
-        if exist('OCTAVE_VERSION')
+        if isoctave
             error(['Due to a bug in Octave, you must choose other values for mean and/or variance of your prior on ' bayestopt_.name{indx} ', or use another shape'])
         else
             rethrow(lasterror)
@@ -92,7 +92,7 @@ switch pshape(indx)
         supbound = 1/(gaminv(10*truncprior, p7(indx)/2, 2/p6(indx)))+p3(indx);
     catch
         % Workaround for ticket #161
-        if exist('OCTAVE_VERSION')
+        if isoctave
             error(['Due to a bug in Octave, you must choose other values for mean and/or variance of your prior on ' bayestopt_.name{indx} ', or use another shape'])
         else
             rethrow(lasterror)
diff --git a/matlab/dyn_saveas.m b/matlab/dyn_saveas.m
index 533f8a7558..2bd513cc8d 100644
--- a/matlab/dyn_saveas.m
+++ b/matlab/dyn_saveas.m
@@ -31,7 +31,7 @@ function dyn_saveas(h,fname,DynareOptions)
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
 if any(strcmp('eps',cellstr(DynareOptions.graph_format)))
-    if exist('OCTAVE_VERSION')
+    if isoctave
         fname = strrep(fname,'/',filesep);
         fname = strrep(fname,'\',filesep);
         if DynareOptions.nodisplay && ispc,
@@ -41,14 +41,14 @@ if any(strcmp('eps',cellstr(DynareOptions.graph_format)))
     print(h,'-depsc2',[fname,'.eps']) 
 end
 if any(strcmp('pdf',cellstr(DynareOptions.graph_format)))
-    if exist('OCTAVE_VERSION')
+    if isoctave
         error('Octave cannot create pdf files!')
     else
         print(h,'-dpdf',[fname,'.pdf']) 
     end
 end
 if any(strcmp('fig',cellstr(DynareOptions.graph_format)))
-    if exist('OCTAVE_VERSION')
+    if isoctave
         error('Octave cannot create fig files!')
     else
         if DynareOptions.nodisplay
diff --git a/matlab/dyn_waitbar.m b/matlab/dyn_waitbar.m
index 73577c798c..f9665c9509 100644
--- a/matlab/dyn_waitbar.m
+++ b/matlab/dyn_waitbar.m
@@ -44,7 +44,7 @@ end
 
 if ~whoiam
     
-    if exist('OCTAVE_VERSION') || options_.console_mode,
+    if isoctave || options_.console_mode
                 
         if init,
             diary off;
@@ -55,7 +55,7 @@ if ~whoiam
             running_text =  varargin{2};
         end
         
-        if exist('OCTAVE_VERSION'),
+        if isoctave
             printf([running_text,' %3.f%% done\r'], prctdone*100);
         else
             s0=repmat('\b',1,length(newString));
diff --git a/matlab/dyn_waitbar_close.m b/matlab/dyn_waitbar_close.m
index 4dbb628e51..894e4c6fad 100644
--- a/matlab/dyn_waitbar_close.m
+++ b/matlab/dyn_waitbar_close.m
@@ -22,7 +22,7 @@ function dyn_waitbar_close(h)
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 global options_
 
-if exist('OCTAVE_VERSION') || options_.console_mode,
+if isoctave || options_.console_mode,
     clear dyn_waitbar;
     diary on,
     fprintf('\n');
diff --git a/matlab/dynare.m b/matlab/dynare.m
index 793a33886a..0d533accc6 100644
--- a/matlab/dynare.m
+++ b/matlab/dynare.m
@@ -46,7 +46,7 @@ end
 
 warning_config()
 
-if exist('OCTAVE_VERSION')
+if isoctave 
     if octave_ver_less_than('3.6.0')
         warning('This version of Dynare has only been tested on Octave 3.6.0 and above. Since your Octave version is older than that, Dynare may fail to run, or give unexpected results. Consider upgrading your Octave installation.');
     end
@@ -60,7 +60,7 @@ end
 more off
 
 % sets default format for save() command
-if exist('OCTAVE_VERSION')
+if isoctave
     default_save_options('-mat')
 end
 
diff --git a/matlab/dynare_config.m b/matlab/dynare_config.m
index 3180a81a6c..d52edad9ff 100644
--- a/matlab/dynare_config.m
+++ b/matlab/dynare_config.m
@@ -67,7 +67,7 @@ addpath([dynareroot '/reports/'])
 % For functions that exist only under some Octave versions
 % or some MATLAB versions, and for which we provide some replacement functions
 
-if ~exist('OCTAVE_VERSION')
+if ~isoctave
     % Replacements for rows(), columns() and issquare() (inexistent under MATLAB)
     addpath([dynareroot '/missing/rows_columns'])
     addpath([dynareroot '/missing/issquare'])
@@ -80,34 +80,34 @@ if ~exist('OCTAVE_VERSION')
 end
 
 % ordeig() doesn't exist in Octave
-if exist('OCTAVE_VERSION')
+if isoctave
     addpath([dynareroot '/missing/ordeig'])
 end
 
 % bsxfun is missing in old versions of MATLAB (and exists in Octave)
-if ~exist('OCTAVE_VERSION') && matlab_ver_less_than('7.4')
+if ~isoctave && matlab_ver_less_than('7.4')
     addpath([dynareroot '/missing/bsxfun'])
 end
 
 % ilu is missing in old versions of MATLAB and in Octave
-if exist('OCTAVE_VERSION') || matlab_ver_less_than('7.4')
+if isoctave || matlab_ver_less_than('7.4')
     addpath([dynareroot '/missing/ilu'])
 end
 
 % strjoin is missing in older versions of MATLAB and in Octave
-if exist('OCTAVE_VERSION') || matlab_ver_less_than('8.1')
+if isoctave || matlab_ver_less_than('8.1')
     addpath([dynareroot '/missing/strjoin'])
 end
 
 % nanmean is in Octave Forge Statistics package and in MATLAB Statistics
 % toolbox
-if (exist('OCTAVE_VERSION') && ~user_has_octave_forge_package('statistics')) ...
-    || (~exist('OCTAVE_VERSION') && ~user_has_matlab_license('statistics_toolbox'))
+if (isoctave && ~user_has_octave_forge_package('statistics')) ...
+    || (~isoctave && ~user_has_matlab_license('statistics_toolbox'))
     addpath([dynareroot '/missing/nanmean'])
 end
 
 % Add path to MEX files
-if exist('OCTAVE_VERSION')
+if isoctave
     addpath([dynareroot '../mex/octave/']);
 else
     % Add win32 specific paths for Dynare Windows package
diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m
index 2c8783bfd2..aa92fdc1b2 100644
--- a/matlab/dynare_estimation_1.m
+++ b/matlab/dynare_estimation_1.m
@@ -218,7 +218,7 @@ end
 if ~isequal(options_.mode_compute,0) && ~options_.mh_posterior_mode_estimation
     switch options_.mode_compute
       case 1
-        if exist('OCTAVE_VERSION')
+        if isoctave
             error('Option mode_compute=1 is not available under Octave')
         elseif ~user_has_matlab_license('optimization_toolbox')
             error('Option mode_compute=1 requires the Optimization Toolbox')
@@ -236,9 +236,9 @@ if ~isequal(options_.mode_compute,0) && ~options_.mh_posterior_mode_estimation
       case 2
         error('ESTIMATION: mode_compute=2 option (Lester Ingber''s Adaptive Simulated Annealing) is no longer available')
       case 3
-        if exist('OCTAVE_VERSION') && ~user_has_octave_forge_package('optim')
+        if isoctave && ~user_has_octave_forge_package('optim')
             error('Option mode_compute=3 requires the optim package')
-        elseif ~exist('OCTAVE_VERSION') && ~user_has_matlab_license('optimization_toolbox')
+        elseif ~isoctave && ~user_has_matlab_license('optimization_toolbox')
             error('Option mode_compute=3 requires the Optimization Toolbox')
         end
         % Set default optimization options for fminunc.
@@ -249,7 +249,7 @@ if ~isequal(options_.mode_compute,0) && ~options_.mh_posterior_mode_estimation
         if options_.analytic_derivation,
             optim_options = optimset(optim_options,'GradObj','on');
         end
-        if ~exist('OCTAVE_VERSION')
+        if ~isoctave
             [xparam1,fval,exitflag] = fminunc(objective_function,xparam1,optim_options,dataset_,options_,M_,estim_params_,bayestopt_,oo_);
         else
             % Under Octave, use a wrapper, since fminunc() does not have a 4th arg
@@ -456,9 +456,9 @@ if ~isequal(options_.mode_compute,0) && ~options_.mh_posterior_mode_estimation
         save([M_.fname '_mode.mat'],'xparam1','hh','parameter_names');
       case 7
         % Matlab's simplex (Optimization toolbox needed).
-        if exist('OCTAVE_VERSION') && ~user_has_octave_forge_package('optim')
+        if isoctave && ~user_has_octave_forge_package('optim')
             error('Option mode_compute=7 requires the optim package')
-        elseif ~exist('OCTAVE_VERSION') && ~user_has_matlab_license('optimization_toolbox')
+        elseif ~isoctave && ~user_has_matlab_license('optimization_toolbox')
             error('Option mode_compute=7 requires the Optimization Toolbox')
         end
         optim_options = optimset('display','iter','MaxFunEvals',1000000,'MaxIter',6000,'TolFun',1e-8,'TolX',1e-6);
diff --git a/matlab/dynare_identification.m b/matlab/dynare_identification.m
index c9c1007216..1e96f8b72c 100644
--- a/matlab/dynare_identification.m
+++ b/matlab/dynare_identification.m
@@ -38,7 +38,7 @@ function [pdraws, TAU, GAM, LRE, gp, H, JJ] = dynare_identification(options_iden
 
 global M_ options_ oo_ bayestopt_ estim_params_
 
-if exist('OCTAVE_VERSION')
+if isoctave
     warning('off'),
 else
     warning off,
@@ -442,7 +442,7 @@ if iload <=0,
             end
             
             if SampleSize > 1,
-%                 if exist('OCTAVE_VERSION') || options_.console_mode,
+%                 if isoctave || options_.console_mode,
 %                     console_waitbar(0,iteration/SampleSize);
 %                 else
                     dyn_waitbar(iteration/SampleSize,h,['MC identification checks ',int2str(iteration),'/',int2str(SampleSize)])
@@ -454,7 +454,7 @@ if iload <=0,
     
     
     if SampleSize > 1,
-        if exist('OCTAVE_VERSION') || options_.console_mode,
+        if isoctave || options_.console_mode,
             fprintf('\n');
             diary on;
         else
@@ -581,7 +581,7 @@ if SampleSize > 1,
     end
 end
 
-if exist('OCTAVE_VERSION')
+if isoctave
     warning('on'),
 else
     warning on,
diff --git a/matlab/dynare_sensitivity.m b/matlab/dynare_sensitivity.m
index 07ffc50d03..79820d7af8 100644
--- a/matlab/dynare_sensitivity.m
+++ b/matlab/dynare_sensitivity.m
@@ -300,7 +300,7 @@ if options_gsa.rmse,
         else
             a=whos('-file',[OutputDirectoryName,'/',fname_,'_mc'],'logpo2');
         end
-        if exist('OCTAVE_VERSION'),
+        if isoctave
             aflag=0;
             for ja=1:length(a),
                 aflag=aflag+strcmp('logpo2',a(ja).name);
diff --git a/matlab/dynare_solve.m b/matlab/dynare_solve.m
index f8eb4af9e6..61fda72444 100644
--- a/matlab/dynare_solve.m
+++ b/matlab/dynare_solve.m
@@ -84,7 +84,7 @@ if max(abs(fvec)) < tolf
 end
 
 if options_.solve_algo == 0
-    if ~exist('OCTAVE_VERSION')
+    if ~isoctave
         if ~user_has_matlab_license('optimization_toolbox')
             error('You can''t use solve_algo=0 since you don''t have MATLAB''s Optimization Toolbox')
         end
@@ -99,7 +99,7 @@ if options_.solve_algo == 0
     else
         options.Jacobian = 'off';
     end
-    if ~exist('OCTAVE_VERSION')
+    if ~isoctave
         [x,fval,exitval,output] = fsolve(func,x,options,varargin{:});
     else
         % Under Octave, use a wrapper, since fsolve() does not have a 4th arg
diff --git a/matlab/gensylv/sylvester3.m b/matlab/gensylv/sylvester3.m
index 38465d6c4c..aabdc6650c 100644
--- a/matlab/gensylv/sylvester3.m
+++ b/matlab/gensylv/sylvester3.m
@@ -35,7 +35,7 @@ if m == 1
     return;
 end
 [u,t]=schur(c);
-if exist('OCTAVE_VERSION')
+if isoctave
     [aa,bb,qq,zz]=qz(full(a),full(b));
     for j=1:p,
         if octave_ver_less_than('3.4.0')
diff --git a/matlab/get_dynare_random_generator_state.m b/matlab/get_dynare_random_generator_state.m
index 42cf80a38a..513919c220 100644
--- a/matlab/get_dynare_random_generator_state.m
+++ b/matlab/get_dynare_random_generator_state.m
@@ -23,7 +23,7 @@ function [state_u,state_n] = get_dynare_random_generator_state()
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-    matlab_random_streams = ~(exist('OCTAVE_VERSION') || matlab_ver_less_than('7.7'));
+    matlab_random_streams = ~(isoctave || matlab_ver_less_than('7.7'));
 
     if matlab_random_streams% Use new matlab interface.
         if matlab_ver_less_than('7.12')
diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m
index 0c57eef4d3..abd1b3a136 100644
--- a/matlab/global_initialization.m
+++ b/matlab/global_initialization.m
@@ -124,7 +124,7 @@ options_.nograph = 0;
 options_.XTick = [];
 options_.XTickLabel = [];
 options_.console_mode = 0;
-if exist('OCTAVE_VERSION')
+if isoctave
     if sum(get(0,'screensize'))==4
         options_.console_mode = 1;
         options_.nodisplay = 1;
diff --git a/matlab/gsa/filt_mc_.m b/matlab/gsa/filt_mc_.m
index 5e09b0b72e..b4bc83af51 100644
--- a/matlab/gsa/filt_mc_.m
+++ b/matlab/gsa/filt_mc_.m
@@ -565,7 +565,7 @@ else
             title([pnam{nsnam(j)}],'interpreter','none')
         end
         %subplot(3,2,6)
-        if exist('OCTAVE_VERSION'),
+        if isoctave
             legend(char('base',vvarvecm),'location','eastoutside');
         else
             h0=legend(char('base',vvarvecm),0);
diff --git a/matlab/independent_metropolis_hastings_core.m b/matlab/independent_metropolis_hastings_core.m
index 3162bd402e..f30a700843 100644
--- a/matlab/independent_metropolis_hastings_core.m
+++ b/matlab/independent_metropolis_hastings_core.m
@@ -128,7 +128,7 @@ for b = fblck:nblck,
         x2 = zeros(InitSizeArray(b),npar);
         logpo2 = zeros(InitSizeArray(b),1);
     end
-    if exist('OCTAVE_VERSION') || options_.console_mode
+    if isoctave || options_.console_mode
         diary off
         skipline()
     elseif whoiam
@@ -176,9 +176,9 @@ for b = fblck:nblck,
             logpo2(irun) = ilogpo2(b);
         end
         prtfrc = j/nruns(b);
-        if exist('OCTAVE_VERSION') || options_.console_mode
+        if isoctave || options_.console_mode
             if mod(j, 10) == 0
-                if exist('OCTAVE_VERSION')
+                if isoctave
                     if (whoiam==0),
                         printf('MH: Computing Metropolis-Hastings (chain %d/%d): %3.f%% done, acception rate: %3.f%%\r', b, nblck, 100 * prtfrc, 100 * isux / j);
                     end
@@ -245,7 +245,7 @@ for b = fblck:nblck,
         irun = irun + 1;
     end% End of the simulations for one mh-block.
     record.AcceptationRates(b) = isux/j;
-    if exist('OCTAVE_VERSION') || options_.console_mode
+    if isoctave || options_.console_mode
         printf('\n');
         diary on
     elseif ~whoiam
diff --git a/matlab/load_csv_file_data.m b/matlab/load_csv_file_data.m
index ed370cf784..3af3e34941 100644
--- a/matlab/load_csv_file_data.m
+++ b/matlab/load_csv_file_data.m
@@ -62,7 +62,7 @@ end
 freq = 1;                  % Default frequency is annual.
 init = dates(1,1);         % Default initial date is year one.
 varlist = [];
-if ~exist('OCTAVE_VERSION')
+if ~isoctave
     % Under Matlab, save time by using importdata
     assert(exist(file, 'file') == 2, ['load_csv_file_data: I can''t find file ' file '!']);
     A = importdata(file, ',', withnames);
diff --git a/matlab/lyapunov_symm.m b/matlab/lyapunov_symm.m
index e23323f77b..3d3d0c7682 100644
--- a/matlab/lyapunov_symm.m
+++ b/matlab/lyapunov_symm.m
@@ -85,7 +85,7 @@ if method == 3
     end;
 elseif method == 4
     % works only with Matlab System Control toolbox or octave the control package,
-    if exist('OCTAVE_VERSION')
+    if isoctave
         if ~user_has_octave_forge_package('control')
             error('lyapunov=square_root_solver not available; you must install the control package from Octave Forge')
         end
diff --git a/matlab/mode_check.m b/matlab/mode_check.m
index a8e06a32d6..786acb7dab 100644
--- a/matlab/mode_check.m
+++ b/matlab/mode_check.m
@@ -168,7 +168,7 @@ for plt = 1:nbplt,
         drawnow
     end
     if DynareOptions.mode_check.nolik==0,
-        if exist('OCTAVE_VERSION'),
+        if isoctave
             axes('outerposition',[0.3 0.93 0.42 0.07],'box','on'),
         else
             axes('position',[0.3 0.01 0.42 0.05],'box','on'),
diff --git a/matlab/ms-sbvar/dyn_save_graph.m b/matlab/ms-sbvar/dyn_save_graph.m
index 355b7f13e7..612be4960c 100644
--- a/matlab/ms-sbvar/dyn_save_graph.m
+++ b/matlab/ms-sbvar/dyn_save_graph.m
@@ -44,10 +44,10 @@ function dyn_save_graph(dirname,graph_name,graph_formats,TeX,names,texnames,capt
     if graph_formats.eps || TeX
         print([ graph_name '.eps' ],'-depsc2');
     end
-    if graph_formats.pdf && ~exist(OCTAVE_VERSION)
+    if graph_formats.pdf && ~isoctave
         print(graph_name,'-dpdf');
     end
-    if graph_formats.fig && ~exist(OCTAVE_VERSION)
+    if graph_formats.fig && ~isoctave
         print(graph_name,'-dfig');
     end
     
diff --git a/matlab/ms-sbvar/plot_ms_variance_decomposition.m b/matlab/ms-sbvar/plot_ms_variance_decomposition.m
index 0188af2ccd..7cd30dca84 100644
--- a/matlab/ms-sbvar/plot_ms_variance_decomposition.m
+++ b/matlab/ms-sbvar/plot_ms_variance_decomposition.m
@@ -150,7 +150,7 @@ end
             plot(x(2:end)',steady(:,k), '--k','LineWidth',2.25);
         end
         if k==K
-            if exist('OCTAVE_VERSION')
+            if isoctave
                 legend(shock_names,'Location','SouthOutside');
             else
                 legend(shock_names,'Location','BestOutside','Orientation','horizontal');
diff --git a/matlab/parallel/AnalyseComputationalEnvironment.m b/matlab/parallel/AnalyseComputationalEnvironment.m
index f6dd9e970a..8ca5042885 100644
--- a/matlab/parallel/AnalyseComputationalEnvironment.m
+++ b/matlab/parallel/AnalyseComputationalEnvironment.m
@@ -366,7 +366,7 @@ for Node=1:length(DataInput) % To obtain a recoursive function remove the 'for'
         StrCommand=([s1,s2,s3,s4,s41,s42,s5,s51,s52,send]);
         
         % Mettere controllo su NbW ...
-        % if exist('OCTAVE_VERSION')
+        % if isoctave
         %     NbW = fprintf(fid,StrCommand, '%s');
         % else
         NbW = fprintf(fid,StrCommand, '%s');
diff --git a/matlab/parallel/InitializeComputationalEnvironment.m b/matlab/parallel/InitializeComputationalEnvironment.m
index 22cc49c830..02df7aad43 100644
--- a/matlab/parallel/InitializeComputationalEnvironment.m
+++ b/matlab/parallel/InitializeComputationalEnvironment.m
@@ -37,7 +37,7 @@ function InitializeComputationalEnvironment()
 % Comment the line 'warning('off');' in order to view the warning message
 % in Octave!
 
-if exist('OCTAVE_VERSION'), 
+if isoctave 
     warning('off');
 end
 
@@ -48,7 +48,7 @@ global options_
 isHybridMatlabOctave = false;
 for j=1:length(options_.parallel),
     if isempty(options_.parallel(j).MatlabOctavePath),
-        if exist('OCTAVE_VERSION')
+        if isoctave
             options_.parallel(j).MatlabOctavePath = 'octave';
         else
             options_.parallel(j).MatlabOctavePath = 'matlab';
@@ -60,7 +60,7 @@ for j=1:length(options_.parallel),
     end
     isHybridMatlabOctave = isHybridMatlabOctave || any(regexpi([options_.parallel(j).MatlabOctavePath], 'octave'));
 end
-isHybridMatlabOctave = isHybridMatlabOctave && ~exist('OCTAVE_VERSION');
+isHybridMatlabOctave = isHybridMatlabOctave && ~isoctave;
 options_.parallel_info.isHybridMatlabOctave = isHybridMatlabOctave;
 if isHybridMatlabOctave,
     % Reset dynare random generator and seed.
diff --git a/matlab/parallel/dynareParallelDir.m b/matlab/parallel/dynareParallelDir.m
index ba31dafe0a..d257e8090e 100644
--- a/matlab/parallel/dynareParallelDir.m
+++ b/matlab/parallel/dynareParallelDir.m
@@ -36,7 +36,7 @@ for indPC=1:length(Parallel),
             else
                 ssh_token = '';
             end
-            if exist('OCTAVE_VERSION') % Patch for peculiar behaviour of ssh-ls under Linux.
+            if isoctave % Patch for peculiar behaviour of ssh-ls under Linux.
                 % It is necessary to capture the ls warning message.
                 % To do it under the ssh protocol it is necessary to redirect the ls message in a text file.
                 % The file is 'OctaveStandardOutputMessage.txt' and it is
@@ -56,7 +56,7 @@ for indPC=1:length(Parallel),
             end
         else
 
-            if exist('OCTAVE_VERSION') % Patch for peculiar behaviour of ls under Linux.
+            if isoctave % Patch for peculiar behaviour of ls under Linux.
                 
                 % It is necessary to capture the ls warning message and properly manage the jolly char '*'!
                 [check ax]=system(['ls ' ,filename, ' 2> OctaveStandardOutputMessage.txt']);
@@ -74,7 +74,7 @@ for indPC=1:length(Parallel),
 
         end
     else
-        if exist('OCTAVE_VERSION'),     % Patch for peculiar behaviour of ls under Windows.
+        if isoctave     % Patch for peculiar behaviour of ls under Windows.
             if Parallel(indPC).Local==0,
                 ax0=dir(['\\',Parallel(indPC).ComputerName,'\',Parallel(indPC).RemoteDrive,'$\',Parallel(indPC).RemoteDirectory,'\',PRCDir,'\',filename]);
             else
diff --git a/matlab/parallel/dynareParallelGetFiles.m b/matlab/parallel/dynareParallelGetFiles.m
index bfffaf9728..dbd13d6831 100644
--- a/matlab/parallel/dynareParallelGetFiles.m
+++ b/matlab/parallel/dynareParallelGetFiles.m
@@ -54,7 +54,7 @@ for indPC=1:length(Parallel),
             end
             for jfil=1:size(NamFileInput,1),
 
-                if exist('OCTAVE_VERSION') % Patch for peculiar behaviour of ls under Linux.
+                if isoctave % Patch for peculiar behaviour of ls under Linux.
                     % It is necessary to manage the jolly char '*'!
 
                     FindAst=strfind(NamFileInput{jfil,2},'comp_status_random_walk_metropolis_hastings_core*');
diff --git a/matlab/parallel/dynareParallelRmDir.m b/matlab/parallel/dynareParallelRmDir.m
index 6322f9b8ad..de08a55992 100644
--- a/matlab/parallel/dynareParallelRmDir.m
+++ b/matlab/parallel/dynareParallelRmDir.m
@@ -64,7 +64,7 @@ for indPC=1:length(Parallel),
             [stat NonServe] = system(['ssh ',ssh_token,' ',Parallel(indPC).UserName,'@',Parallel(indPC).ComputerName,' rm -fr ',Parallel(indPC).RemoteDirectory,'/',PRCDir,]);
             break;
         else
-            if exist('OCTAVE_VERSION'), % Patch for peculiar behaviour of rmdir under Windows.
+            if isoctave % Patch for peculiar behaviour of rmdir under Windows.
                                         % It is necessary because the command rmdir always ask at the user to confirm your decision before
                                         % deleting a directory: this stops the computation! The Octave native function 'confirm_recursive_rmdir'
                                         % disable this mechanism.
diff --git a/matlab/parallel/dynareParallelSendFiles.m b/matlab/parallel/dynareParallelSendFiles.m
index b1dc9cc289..d76f8a7bd5 100644
--- a/matlab/parallel/dynareParallelSendFiles.m
+++ b/matlab/parallel/dynareParallelSendFiles.m
@@ -63,7 +63,7 @@ for indPC=1:length(Parallel),
                 if ~isempty(NamFileInput{jfil,1})
                     if isempty(dynareParallelDir(NamFileInput{jfil,1},PRCDir,Parallel(indPC)))
                         
-                        if exist('OCTAVE_VERSION') % Patch for peculiar behaviour of mkdir under Windows.
+                        if isoctave % Patch for peculiar behaviour of mkdir under Windows.
                             
                             % It is Necessary because Octave is not able to
                             % create two nested directory at the same time.
@@ -89,7 +89,7 @@ for indPC=1:length(Parallel),
                     end
                 end
                 
-                if exist('OCTAVE_VERSION') % Patch for peculiar behaviour copyfile ls under Windows.
+                if isoctave % Patch for peculiar behaviour copyfile ls under Windows.
                     
                     % It is Necessary because Octave is not able to
                     % use the jolly char '*' with copyfile.
diff --git a/matlab/parallel/masterParallel.m b/matlab/parallel/masterParallel.m
index 1b64b5ba1e..a0657176ff 100644
--- a/matlab/parallel/masterParallel.m
+++ b/matlab/parallel/masterParallel.m
@@ -110,13 +110,13 @@ end
 % Comment the line 'warning('off');' in order to view the warning messages
 % in Octave!
 
-if exist('OCTAVE_VERSION'),
+if isoctave
     warning('off');
 end
 
 % check if there are function_handles in the input or global vars when
 % octave is used
-if isHybridMatlabOctave || exist('OCTAVE_VERSION'),
+if isHybridMatlabOctave || isoctave
     fInputNames = fieldnames(fInputVar);
     for j=1:length(fInputNames),
         TargetVar = fInputVar.(fInputNames{j});
@@ -504,7 +504,7 @@ if Strategy==0 || newInstance, % See above.
         pause(1)
     else
         
-        if exist('OCTAVE_VERSION')
+        if isoctave
             % Redirect the standard output to the file 'OctaveStandardOutputMessage.txt'!
             % This file is saved in the Model directory.
             system('ConcurrentCommand1.bat > OctaveStandardOutputMessage.txt');
@@ -523,9 +523,9 @@ global options_
 
 % Create a parallel (local/remote) specialized computational status bars!
 
-if exist('OCTAVE_VERSION') || (options_.console_mode == 1),
+if isoctave || options_.console_mode
     diary off;
-    if exist('OCTAVE_VERSION')
+    if isoctave
         printf('\n');
     else
         fprintf('\n');
@@ -575,9 +575,9 @@ idCPU = NaN(1,totCPU);
 
 % Caption for console mode computing ...
 
-if (options_.console_mode == 1) ||  exist('OCTAVE_VERSION')
+if options_.console_mode ||  isoctave
     
-    if ~exist('OCTAVE_VERSION')
+    if ~isoctave
         if strcmpi([Parallel(indPC).MatlabOctavePath], 'octave')
             RjInformation='Hybrid Computing Is Active: Remote jobs are computed by Octave!';
             fprintf([RjInformation,'\n\n']);
@@ -607,7 +607,7 @@ if (options_.console_mode == 1) ||  exist('OCTAVE_VERSION')
     fnameTemp(L)='';
     
     Information=['Parallel ' fnameTemp ' Computing ...'];
-    if exist('OCTAVE_VERSION')
+    if isoctave
         if (~ispc || strcmpi('unix',Parallel(indPC).OperatingSystem)) && (Strategy==0)
             printf('\n');
             pause(2);
@@ -660,7 +660,7 @@ while (ForEver)
             end
             pcerdone(j) = prtfrc;
             idCPU(j) = njob;
-            if exist('OCTAVE_VERSION') || (options_.console_mode == 1),
+            if isoctave || options_.console_mode
                 if (~ispc || strcmpi('unix',Parallel(indPC).OperatingSystem))
                     statusString = [statusString, int2str(j), ' %3.f%% done! '];
                 else
@@ -672,7 +672,7 @@ while (ForEver)
             end
         catch % ME
             % To define!
-            if exist('OCTAVE_VERSION') || (options_.console_mode == 1),
+            if isoctave || options_.console_mode
                 if (~ispc || strcmpi('unix',Parallel(indPC).OperatingSystem))
                     statusString = [statusString, int2str(j), ' %3.f%% done! '];
                 else
@@ -681,15 +681,14 @@ while (ForEver)
             end
         end
     end
-    if exist('OCTAVE_VERSION') || (options_.console_mode == 1),
-        if exist('OCTAVE_VERSION')
+    if isoctave || options_.console_mode
+        if isoctave
             printf([statusString,'\r'], 100 .* pcerdone);
         else
             if ~isempty(statusString)
                 fprintf([statusString0,statusString], 100 .* pcerdone);
             end
         end
-        
     else
         for j=1:totCPU,
             try
@@ -705,7 +704,7 @@ while (ForEver)
     % 1. The files .log and .txt are not copied.
     % 2. The comp_status_*.mat files are managed separately.
     
-    if exist('OCTAVE_VERSION'), % to avoid synchronism problems
+    if isoctave % to avoid synchronism problems
         try
             PRCDirSnapshot=dynareParallelGetNewFiles(PRCDir,Parallel(1:totSlaves),PRCDirSnapshot);
         catch
@@ -729,8 +728,8 @@ while (ForEver)
         
         if HoTuttiGliOutput==totCPU,
             mydelete(['comp_status_',fname,'*.mat']);
-            if exist('OCTAVE_VERSION')|| (options_.console_mode == 1),
-                if exist('OCTAVE_VERSION')
+            if isoctave || options_.console_mode
+                if isoctave
                     printf('\n');
                     printf(['End Parallel Session ....','\n\n']);
                 else
diff --git a/matlab/partial_information/PI_gensys.m b/matlab/partial_information/PI_gensys.m
index de63ba9a0e..c46d45d072 100644
--- a/matlab/partial_information/PI_gensys.m
+++ b/matlab/partial_information/PI_gensys.m
@@ -180,7 +180,7 @@ try
     % In Octave: [aa bb q z v w] = qz(a,b) s.t. q'az = aa, q'bz=bb %
     % and qzcomplex() extension based on lapack zgges produces same 
     % qz output for Octave as Matlab qz() does for Matlab thus:
-    if exist('OCTAVE_VERSION')
+    if isoctave
         [a b q z]=qzcomplex(G0pi,G1pi);
         q=q';
     else
diff --git a/matlab/plot_icforecast.m b/matlab/plot_icforecast.m
index 6284769fa6..84db7297b1 100644
--- a/matlab/plot_icforecast.m
+++ b/matlab/plot_icforecast.m
@@ -27,7 +27,7 @@ function plot_icforecast(Variables,periods,options_)
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-if exist('OCTAVE_VERSION') && octave_ver_less_than('3.4.0')
+if isoctave && octave_ver_less_than('3.4.0')
     % The set() command on the handle returned by area() crashes in Octave 3.2
     error('plot_conditional_forecast: you need Octave >= 3.4 (because of a bug in older versions)')
 end
diff --git a/matlab/pm3.m b/matlab/pm3.m
index 09488aa5e3..5974fca272 100644
--- a/matlab/pm3.m
+++ b/matlab/pm3.m
@@ -118,7 +118,7 @@ localVars.Mean=Mean;
 % Like sequential execution!
 nvar0=nvar;
 
-if ~exist('OCTAVE_VERSION')
+if ~isoctave
     % Commenting for testing!
     if isnumeric(options_.parallel) || ceil(size(varlist,1)/MaxNumberOfPlotsPerFigure)<4,
         fout = pm3_core(localVars,1,nvar,0);
diff --git a/matlab/prior_bounds.m b/matlab/prior_bounds.m
index 2d187c9a5f..4eb290e57d 100644
--- a/matlab/prior_bounds.m
+++ b/matlab/prior_bounds.m
@@ -95,7 +95,7 @@ for i=1:length(p6)
                 bounds(i,2) = gaminv(1-prior_trunc,p6(i),p7(i))+p3(i);
             catch
                 % Workaround for ticket #161
-                if exist('OCTAVE_VERSION')
+                if isoctave
                     error(['Due to a bug in Octave, you must choose other values for mean and/or variance of your prior on ' bayestopt.name{i} ', or use another shape'])
                 else
                     rethrow(lasterror)
@@ -121,7 +121,7 @@ for i=1:length(p6)
                                             2/p6(i)))+p3(i);
             catch
                 % Workaround for ticket #161
-                if exist('OCTAVE_VERSION')
+                if isoctave
                     error(['Due to a bug in Octave, you must choose other values for mean and/or variance of your prior on ' bayestopt.name{i} ', or use another shape'])
                 else
                     rethrow(lasterror)
@@ -146,7 +146,7 @@ for i=1:length(p6)
                 bounds(i,2) = 1/gaminv(prior_trunc, p7(i)/2, 2/p6(i))+ p3(i);
             catch
                 % Workaround for ticket #161
-                if exist('OCTAVE_VERSION')
+                if isoctave
                     error(['Due to a bug in Octave, you must choose other values for mean and/or variance of your prior on ' bayestopt.name{i} ', or use another shape'])
                 else
                     rethrow(lasterror)
diff --git a/matlab/qz/mjdgges.m b/matlab/qz/mjdgges.m
index fea90931fd..2225e257b0 100644
--- a/matlab/qz/mjdgges.m
+++ b/matlab/qz/mjdgges.m
@@ -63,7 +63,7 @@ info = 0;
 %   as an option
 % - under Octave, only real decomposition available, but grouping of
 %   eigenvalues <= 1 is implemented as an option (criterium can't be changed)
-if exist('OCTAVE_VERSION')
+if isoctave
     [ss,tt,w,eigval] = qz(e,d,'S');
     sdim = sum(abs(eigval) <= 1.0);
     if any(abs(eigval) > 1.0 & abs(eigval) <= qz_criterium)
diff --git a/matlab/random_walk_metropolis_hastings_core.m b/matlab/random_walk_metropolis_hastings_core.m
index fa1b771d21..6cdb46b918 100644
--- a/matlab/random_walk_metropolis_hastings_core.m
+++ b/matlab/random_walk_metropolis_hastings_core.m
@@ -152,7 +152,7 @@ for b = fblck:nblck,
         logpo2 = zeros(InitSizeArray(b),1);
     end
     if whoiam
-        prc0=(b-fblck)/(nblck-fblck+1)*(exist('OCTAVE_VERSION') || options_.console_mode);
+        prc0=(b-fblck)/(nblck-fblck+1)*(isoctave || options_.console_mode);
         hh = dyn_waitbar({prc0,whoiam,options_.parallel(ThisMatlab)},['MH (' int2str(b) '/' int2str(options_.mh_nblck) ')...']);
     else
         hh = dyn_waitbar(0,['Metropolis-Hastings (' int2str(b) '/' int2str(options_.mh_nblck) ')...']);
@@ -185,9 +185,9 @@ for b = fblck:nblck,
             logpo2(irun) = ilogpo2(b);
         end
         prtfrc = j/nruns(b);
-%         if exist('OCTAVE_VERSION') || options_.console_mode
+%         if isoctave || options_.console_mode
 %             if mod(j, 10) == 0
-%                 if exist('OCTAVE_VERSION')
+%                 if isoctave
 %                     if (whoiam==0)
 %                         printf('MH: Computing Metropolis-Hastings (chain %d/%d): %3.f%% done, acception rate: %3.f%%\r', b, nblck, 100 * prtfrc, 100 * isux / j);
 %                     end
@@ -263,8 +263,8 @@ for b = fblck:nblck,
         irun = irun + 1;
     end% End of the simulations for one mh-block.
     record.AcceptationRates(b) = isux/j;
-%     if exist('OCTAVE_VERSION') || options_.console_mode || whoiam
-%         if exist('OCTAVE_VERSION')
+%     if isoctave || options_.console_mode || whoiam
+%         if isoctave
 %             printf('\n');
 %         else
 %             fprintf('\n');
diff --git a/matlab/reports/@graph/createGraph.m b/matlab/reports/@graph/createGraph.m
index 48f1c37712..22eaafae38 100755
--- a/matlab/reports/@graph/createGraph.m
+++ b/matlab/reports/@graph/createGraph.m
@@ -142,7 +142,7 @@ if isempty(o.figname)
     o.figname = [tn '.tex'];
 end
 disp('  converting to tex....');
-if exist('OCTAVE_VERSION') && isempty(regexpi(computer, '.*apple.*', 'once'))
+if isoctave && isempty(regexpi(computer, '.*apple.*', 'once'))
     print(o.figname, '-dtikz');
 else
     matlab2tikz('filename', o.figname, ...
diff --git a/matlab/reports/@report/compile.m b/matlab/reports/@report/compile.m
index 06b48db8f9..6388ba7dd3 100755
--- a/matlab/reports/@report/compile.m
+++ b/matlab/reports/@report/compile.m
@@ -47,7 +47,7 @@ if ~exist(o.filename, 'file')
 end
 
 middle = ' ./';
-if exist('OCTAVE_VERSION')
+if isoctave
     echo = 1;
 else
     echo = '-echo';
@@ -82,7 +82,7 @@ fprintf(1, '\n\nDone.\n')
 disp('Your compiled report is located here:');
 disp(['     ' pwd filesep rfn '.pdf']);
 
-if ~exist('OCTAVE_VERSION')
+if ~isoctave
     open([pwd filesep rfn '.pdf']);
 end
 end
\ No newline at end of file
diff --git a/matlab/reports/@report/write.m b/matlab/reports/@report/write.m
index 0b34bdadb9..91ca0c5231 100644
--- a/matlab/reports/@report/write.m
+++ b/matlab/reports/@report/write.m
@@ -46,7 +46,7 @@ fprintf(fid, ['\\makeatletter\n' ...
               '\\def\\blfootnote{\\gdef\\@thefnmark{}\\@footnotetext}\n' ...
               '\\makeatother\n']);
 
-if exist('OCTAVE_VERSION') && isempty(regexpi(computer, '.*apple.*', 'once'))
+if isoctave && isempty(regexpi(computer, '.*apple.*', 'once'))
     fprintf(fid, '\\usepackage[T1]{fontenc}\n');
     fprintf(fid, '\\usepackage[utf8x]{inputenc}\n');
     fprintf(fid, '\\usepackage{gnuplot-lua-tikz}\n');
diff --git a/matlab/rplot.m b/matlab/rplot.m
index 50cda1bca1..df7712535f 100644
--- a/matlab/rplot.m
+++ b/matlab/rplot.m
@@ -63,7 +63,7 @@ if rplottype == 0
     title (t,'Interpreter','none') ;
     xlabel('Periods') ;
     if size(s1,1) > 1
-        if exist('OCTAVE_VERSION')
+        if isoctave
             legend(s1, 0);
         else
             h = legend(s1,0);
diff --git a/matlab/set_dynare_random_generator_state.m b/matlab/set_dynare_random_generator_state.m
index dccc6d16f8..f16ce13aed 100644
--- a/matlab/set_dynare_random_generator_state.m
+++ b/matlab/set_dynare_random_generator_state.m
@@ -23,7 +23,7 @@ function [state_u,state_n] = set_dynare_random_generator_state(state_u,state_n)
 % You should have received a copy of the GNU General Public License
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
-    matlab_random_streams = ~(exist('OCTAVE_VERSION') || matlab_ver_less_than('7.7'));
+    matlab_random_streams = ~(isoctave || matlab_ver_less_than('7.7'));
 
     if matlab_random_streams% Use new matlab interface.
         if matlab_ver_less_than('7.12')
diff --git a/matlab/set_dynare_seed.m b/matlab/set_dynare_seed.m
index 991b8ed57b..fbde1abc30 100644
--- a/matlab/set_dynare_seed.m
+++ b/matlab/set_dynare_seed.m
@@ -24,7 +24,7 @@ if ~nargin
     error('set_dynare_seed:: I need at least one input argument!')
 end
 
-matlab_random_streams = ~(exist('OCTAVE_VERSION') || matlab_ver_less_than('7.7') || options_.parallel_info.isHybridMatlabOctave);
+matlab_random_streams = ~(isoctave || matlab_ver_less_than('7.7') || options_.parallel_info.isHybridMatlabOctave);
 
 if matlab_random_streams% Use new matlab interface.
     if nargin==1
@@ -93,7 +93,7 @@ if matlab_random_streams% Use new matlab interface.
 else% Use old matlab interface.
     if nargin==1
         if ischar(a) && strcmpi(a,'default')
-            if exist('OCTAVE_VERSION') || matlab_ver_less_than('7.4')
+            if isoctave || matlab_ver_less_than('7.4')
                 options_.DynareRandomStreams.algo = 'state';
             else
                 % Twister was introduced in MATLAB 7.4
diff --git a/matlab/simul.m b/matlab/simul.m
index c9fb8f8966..953bb67d71 100644
--- a/matlab/simul.m
+++ b/matlab/simul.m
@@ -50,7 +50,7 @@ if (options_.block || options_.bytecode) && options_.stack_solve_algo == 6
     error('SIMUL: you can''t use stack_solve_algo = 6 with block or bytecode option')
 end
 
-if exist('OCTAVE_VERSION') && options_.stack_solve_algo == 2
+if isoctave && options_.stack_solve_algo == 2
     error('SIMUL: you can''t use stack_solve_algo = 2 under Octave')
 end
 
diff --git a/matlab/solve_one_boundary.m b/matlab/solve_one_boundary.m
index 21227076a7..304b818928 100644
--- a/matlab/solve_one_boundary.m
+++ b/matlab/solve_one_boundary.m
@@ -224,7 +224,7 @@ for it_=start:incr:finish
                 if (verbose == 1)
                     disp('steady: fsolve');
                 end
-                if ~exist('OCTAVE_VERSION')
+                if ~isoctave
                     if ~user_has_matlab_license('optimization_toolbox')
                         error('SOLVE_ONE_BOUNDARY: you can''t use solve_algo=0 since you don''t have MATLAB''s Optimization Toolbox')
                     end
@@ -235,7 +235,7 @@ for it_=start:incr:finish
                 options.TolFun=1e-8;
                 options.Display = 'iter';
                 options.Jacobian = 'on';
-                if ~exist('OCTAVE_VERSION')
+                if ~isoctave
                     [yn,fval,exitval,output] = fsolve(@local_fname, y(y_index_eq), ...
                                                       options, x, params, steady_state, y, y_index_eq, fname, 0);
                 else
@@ -309,7 +309,7 @@ for it_=start:incr:finish
                 end;
             elseif((stack_solve_algo==2 && is_dynamic) || (options.solve_algo==7 && ~is_dynamic)),
                 flag1=1;
-                if exist('OCTAVE_VERSION')
+                if isoctave
                     error('SOLVE_ONE_BOUNDARY: you can''t use solve_algo=7 since GMRES is not implemented in Octave')
                 end
                 if (verbose == 1 && ~is_dynamic)
diff --git a/matlab/steady_.m b/matlab/steady_.m
index 822d4fbf46..df1772a72d 100644
--- a/matlab/steady_.m
+++ b/matlab/steady_.m
@@ -47,7 +47,7 @@ if ~options_.bytecode && options_.block && options_.solve_algo == 5
     error('STEADY: you can''t use solve_algo = 5 without bytecode option')
 end
 
-if exist('OCTAVE_VERSION') && options_.solve_algo == 7
+if isoctave && options_.solve_algo == 7
     error('SIMUL: you can''t use solve_algo = 7 under Octave')
 end
 
diff --git a/matlab/th_autocovariances.m b/matlab/th_autocovariances.m
index eff41b89d4..889f7d9f40 100644
--- a/matlab/th_autocovariances.m
+++ b/matlab/th_autocovariances.m
@@ -51,7 +51,7 @@ end
 
 endo_nbr = M_.endo_nbr;
 exo_names_orig_ord  = M_.exo_names_orig_ord;
-if exist('OCTAVE_VERSION')
+if isoctave
     warning('off', 'Octave:divide-by-zero')
 else
     warning off MATLAB:dividebyzero
@@ -260,7 +260,7 @@ else% ==> Theoretical HP filter.
         end
     end
 end
-if exist('OCTAVE_VERSION')
+if isoctave
     warning('on', 'Octave:divide-by-zero')
 else
     warning on MATLAB:dividebyzero
diff --git a/matlab/utilities/general/isoctave.m b/matlab/utilities/general/isoctave.m
new file mode 100644
index 0000000000..15c6fb38d1
--- /dev/null
+++ b/matlab/utilities/general/isoctave.m
@@ -0,0 +1,20 @@
+function A = isoctave()
+
+% Copyright (C) 2013 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 <http://www.gnu.org/licenses/>.
+
+A = exist('OCTAVE_VERSION');
\ No newline at end of file
diff --git a/matlab/varlist_indices.m b/matlab/varlist_indices.m
index 20ece2830f..d267adca11 100644
--- a/matlab/varlist_indices.m
+++ b/matlab/varlist_indices.m
@@ -31,7 +31,7 @@ function [i_var,nvar] = varlist_indices(sublist,list)
 % along with Dynare.  If not, see <http://www.gnu.org/licenses/>.
 
 % In Octave, ismember() doesn't operate on character arrays
-if ~exist('OCTAVE_VERSION')
+if ~isoctave
     if isempty(sublist)
         check = [];
         i_var = [];
diff --git a/matlab/warning_config.m b/matlab/warning_config.m
index 3e37714093..6b6f533063 100644
--- a/matlab/warning_config.m
+++ b/matlab/warning_config.m
@@ -32,7 +32,7 @@ warning on;
 % Display a calling stack trace when a warning is issued
 warning('on', 'backtrace');
 
-if exist('OCTAVE_VERSION')
+if isoctave
     warning('off', 'Octave:separator-insert');
     warning('off', 'Octave:matlab-incompatible');
     warning('off', 'Octave:single-quote-string');
diff --git a/matlab/writedata.m b/matlab/writedata.m
index 93bd99c563..815563008d 100644
--- a/matlab/writedata.m
+++ b/matlab/writedata.m
@@ -30,7 +30,7 @@ function writedata(fname)
 global M_ oo_
 
 % xlswrite doesn't exist on Octave, and appeared in MATLAB 7.0
-if exist('OCTAVE_VERSION') || matlab_ver_less_than('7.0')
+if isoctave || matlab_ver_less_than('7.0')
     error('Function not supported on your version of MATLAB or Octave')
 end
 
-- 
GitLab