From c9fd266cbba7e2e8a27ea409609b257e90d92de8 Mon Sep 17 00:00:00 2001
From: Johannes Pfeifer <jpfeifer@gmx.de>
Date: Wed, 25 May 2022 14:21:28 +0200
Subject: [PATCH] solve1.m: trap zero Jacobian case

---
 matlab/solve1.m | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/matlab/solve1.m b/matlab/solve1.m
index fa6a3262fd..5c2cd12464 100644
--- a/matlab/solve1.m
+++ b/matlab/solve1.m
@@ -121,7 +121,20 @@ for its = 1:maxit
     end
     if rcond_fjac < sqrt(eps)
         fjac2=fjac'*fjac;
-        p=-(fjac2+sqrt(nn*eps)*max(sum(abs(fjac2)))*eye(nn))\(fjac'*fvec);
+        temp=max(sum(abs(fjac2)));
+        if temp>0
+            p=-(fjac2+sqrt(nn*eps)*temp*eye(nn))\(fjac'*fvec);
+        else
+            errorflag = true;
+            errorcode = 5;
+            if nargout<3
+                skipline()
+                dprintf('SOLVE: Iteration %s', num2str(its))
+                disp('Zero Jacobian.')
+                skipline()
+            end
+            return
+        end
     else
         p = -fjac\fvec ;
     end
-- 
GitLab