From 79959aa58754ac2d3e28e7da9828c91cee65176c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Fri, 15 Dec 2023 15:29:25 +0100
Subject: [PATCH] Remove duplicate branches in if/then/else statements

Detected by MATLAB Code Analyzer app.
---
 matlab/kalman/likelihood/kalman_filter.m             | 11 ++++-------
 matlab/kalman/likelihood/kalman_filter_d.m           | 10 +++-------
 matlab/kalman/likelihood/kalman_filter_fast.m        | 10 +++-------
 .../likelihood/missing_observations_kalman_filter.m  | 10 +++-------
 .../missing_observations_kalman_filter_d.m           | 10 +++-------
 matlab/parallel/masterParallel.m                     | 12 ++----------
 6 files changed, 18 insertions(+), 45 deletions(-)

diff --git a/matlab/kalman/likelihood/kalman_filter.m b/matlab/kalman/likelihood/kalman_filter.m
index 73dc490cbc..b85d3edada 100644
--- a/matlab/kalman/likelihood/kalman_filter.m
+++ b/matlab/kalman/likelihood/kalman_filter.m
@@ -194,13 +194,10 @@ while notsteady && t<=last
         end
     end
     if badly_conditioned_F
-        if ~all(abs(F(:))<kalman_tol)
-            % Use univariate filter (will remove observations with zero variance prediction error)
-            return
-        else
-            % Pathological case, discard draw.
-            return
-        end
+        % if ~all(abs(F(:))<kalman_tol), then use univariate filter (will remove
+        % observations with zero variance prediction error), otherwise this is a
+        % pathological case and the draw is discarded
+        return
     else
         F_singular = false;
         if rescale_prediction_error_covariance
diff --git a/matlab/kalman/likelihood/kalman_filter_d.m b/matlab/kalman/likelihood/kalman_filter_d.m
index c00efe6628..8c0b850aca 100644
--- a/matlab/kalman/likelihood/kalman_filter_d.m
+++ b/matlab/kalman/likelihood/kalman_filter_d.m
@@ -87,13 +87,9 @@ while rank(Z*Pinf*Z',diffuse_kalman_tol) && (t<=last)
         else                                                            %rank of F_{\infty,t} is 0
             Fstar  = Z*Pstar*Z' + H;                                    % (5.7) in DK (2012)
             if rcond(Fstar) < kalman_tol                                %F_{*} is singular
-                if ~all(abs(Fstar(:))<kalman_tol)
-                    % The univariate diffuse kalman filter should be used.
-                    return
-                else                                                    %rank 0
-                                                                        %pathological case, discard draw
-                    return
-                end
+                % if ~all(abs(Fstar(:))<kalman_tol), then use univariate diffuse filter,
+                % otherwise this is a pathological case and the draw is discarded
+                return
             else
                 iFstar = inv(Fstar);
                 dFstar = det(Fstar);
diff --git a/matlab/kalman/likelihood/kalman_filter_fast.m b/matlab/kalman/likelihood/kalman_filter_fast.m
index 2e7472b747..e7815f52ee 100644
--- a/matlab/kalman/likelihood/kalman_filter_fast.m
+++ b/matlab/kalman/likelihood/kalman_filter_fast.m
@@ -151,13 +151,9 @@ while notsteady && t<=last
         v  = Y(:,t)-a(Z);
     end
     if rcond(F) < kalman_tol
-        if ~all(abs(F(:))<kalman_tol)
-            % The univariate diffuse kalman filter should be used.
-            return
-        else
-            %pathological case, discard draw
-            return
-        end
+        % if ~all(abs(F(:))<kalman_tol), then use univariate diffuse filter, otherwise
+        % this is a pathological case and the draw is discarded
+        return
     else
         F_singular = 0;
         dF      = det(F);
diff --git a/matlab/kalman/likelihood/missing_observations_kalman_filter.m b/matlab/kalman/likelihood/missing_observations_kalman_filter.m
index 4ad63011b8..bf4407e617 100644
--- a/matlab/kalman/likelihood/missing_observations_kalman_filter.m
+++ b/matlab/kalman/likelihood/missing_observations_kalman_filter.m
@@ -191,13 +191,9 @@ while notsteady && t<=last
             end
         end
         if badly_conditioned_F && (~occbin_.status || (occbin_.status && t<first_period_occbin_update))
-            if ~all(abs(F(:))<kalman_tol)
-                % Use univariate filter.
-                return
-            else
-                % Pathological case, discard draw
-                return
-            end
+            % if ~all(abs(F(:))<kalman_tol), then use univariate filter, otherwise this is a
+            % pathological case and the draw is discarded
+            return
         else
             F_singular = false;
         end
diff --git a/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m b/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m
index bdc64985a2..8754eaf63e 100644
--- a/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m
+++ b/matlab/kalman/likelihood/missing_observations_kalman_filter_d.m
@@ -105,13 +105,9 @@ while rank(Pinf,diffuse_kalman_tol) && (t<=last)
             else                                                            %rank of F_{\infty,t} is 0
                 Fstar = ZZ*Pstar*ZZ' + H(d_index,d_index);                  % (5.7) in DK (2012)
                 if rcond(Fstar) < kalman_tol                                %F_{*} is singular
-                    if ~all(abs(Fstar(:))<kalman_tol)
-                        % The univariate diffuse kalman filter should be used.
-                        return
-                    else %rank 0
-                         %pathological case, discard draw
-                        return
-                    end
+                    % if ~all(abs(Fstar(:))<kalman_tol), then use univariate diffuse filter,
+                    % otherwise this is a pathological case and the draw is discarded
+                    return
                 else
                     iFstar = inv(Fstar);
                     dFstar = det(Fstar);
diff --git a/matlab/parallel/masterParallel.m b/matlab/parallel/masterParallel.m
index e9a7f8070f..3110a4a61e 100644
--- a/matlab/parallel/masterParallel.m
+++ b/matlab/parallel/masterParallel.m
@@ -710,11 +710,7 @@ if parallel_recover ==0
                 pcerdone(j) = prtfrc;
                 idCPU(j) = njob;
                 if isoctave || options_.console_mode
-                    if (~ispc || strcmpi('unix',Parallel(indPC).OperatingSystem))
-                        statusString = [statusString, int2str(j), ' %3.f%% done! '];
-                    else
-                        statusString = [statusString, int2str(j), ' %3.f%% done! '];
-                    end
+                    statusString = [statusString, int2str(j), ' %3.f%% done! '];
                 else
                     status_String{j} = waitbarString;
                     status_Title{j} = waitbarTitle;
@@ -722,11 +718,7 @@ if parallel_recover ==0
             catch % ME
                   % To define!
                 if isoctave || options_.console_mode
-                    if (~ispc || strcmpi('unix',Parallel(indPC).OperatingSystem))
-                        statusString = [statusString, int2str(j), ' %3.f%% done! '];
-                    else
-                        statusString = [statusString, int2str(j), ' %3.f%% done! '];
-                    end
+                    statusString = [statusString, int2str(j), ' %3.f%% done! '];
                 end
             end
         end
-- 
GitLab