function dynareroot = dynare_config(path_to_dynare, verbose) % This function tests the existence of valid mex files (for qz % decomposition, solution to sylvester equation and kronecker % products...) and, if needed, add paths to the matlab versions % of these routines. % Also adds other directories to the path. % % INPUTS % none % % OUTPUTS % none % % SPECIAL REQUIREMENTS % none % Copyright (C) 2001-2018 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 . if nargin && ~isempty(path_to_dynare) addpath(path_to_dynare); end dynareroot = strrep(which('dynare'),'dynare.m',''); origin = pwd(); cd([dynareroot '/..']) if ~nargin || nargin==1 verbose = 1; end p = {'/distributions/' ; ... '/kalman/' ; ... '/kalman/likelihood' ; ... '/AIM/' ; ... '/partial_information/' ; ... '/perfect-foresight-models/' ; ... '/ms-sbvar/' ; ... '/ms-sbvar/identification/' ; ... '/../contrib/ms-sbvar/TZcode/MatlabFiles/' ; ... '/../contrib/jsonlab/' ; ... '/parallel/' ; ... '/particles/src' ; ... '/gsa/' ; ... '/ep/' ; ... '/backward/' ; ... '/convergence_diagnostics/' ; ... '/cli/' ; ... '/lmmcp/' ; ... '/optimization/' ; ... '/ols/'; ... '/pac-tools/'; ... '/modules/dates/src/' ; ... '/modules/dseries/src/' ; ... '/utilities/doc/' ; ... '/utilities/tests/src/' ; ... '/utilities/dataset/' ; ... '/utilities/general/' ; ... '/utilities/graphics/' ; ... '/modules/reporting/src/' ; ... '/modules/reporting/macros/'}; % For functions that exist only under some Octave versions % or some MATLAB versions, and for which we provide some replacement functions % Replacements for rows(), columns(), vec() and issquare() (inexistent under MATLAB) if ~isoctave p{end+1} = '/missing/rows_columns'; p{end+1} = '/missing/issquare'; p{end+1} = '/missing/vec'; end % ordeig() doesn't exist in Octave if isoctave p{end+1} = '/missing/ordeig'; end % corrcoef with two outputs is missing in Octave < 4.4 (ticket #796) if isoctave && octave_ver_less_than('4.4') && ~user_has_octave_forge_package('nan') p{end+1} = '/missing/corrcoef'; end % nanmean is in Octave Forge Statistics package and in MATLAB Statistics % toolbox if (isoctave && ~user_has_octave_forge_package('statistics')) ... || (~isoctave && ~user_has_matlab_license('statistics_toolbox')) p{end+1} = '/missing/nanmean'; end % Replacements for functions of the MATLAB statistics toolbox % These functions were part of Octave < 4.4, they are now in the statistics Forge package if (isoctave && ~octave_ver_less_than('4.4') && ~user_has_octave_forge_package('statistics')) ... || (~isoctave && ~user_has_matlab_license('statistics_toolbox')) p{end+1} = '/missing/stats/'; if ~isoctave p{end+1} = '/missing/stats-matlab/'; end end % Check if struct2array is available. if ~exist('struct2array') p{end+1} = '/missing/struct2array'; end % isfile is missing in Octave and Matlab