From 86c621b68f23f98fc30ed230be222ce4dd9432cd Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@unibas.ch>
Date: Thu, 28 Apr 2022 16:23:19 +0200
Subject: [PATCH] bugfix: avoid Eigen assertion in FindMembrane with cmake flag
 -DOPTIMIZE=0

Eigen does not like to compute "Thin" U and V matrices in JacobiSVD when
matrix size is fixed at compile time. This triggers an assertion (optimized
away with -DOPTIMIZE=1). Since we're talking of a quadratic matrix here,
"Thin" and "Full" make no difference.
---
 modules/mol/alg/src/find_membrane.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/mol/alg/src/find_membrane.cc b/modules/mol/alg/src/find_membrane.cc
index a967bb306..8669efd8a 100644
--- a/modules/mol/alg/src/find_membrane.cc
+++ b/modules/mol/alg/src/find_membrane.cc
@@ -135,7 +135,7 @@ class LevenbergMarquardt {
 //      LOG(INFO) << "u: " << u;
 //      LOG(INFO) << "v: " << v;
       AMatrixType A_augmented = A + u*AMatrixType::Identity(J.cols(), J.cols());
-      Solver solver(A_augmented, Eigen::ComputeThinU | Eigen::ComputeThinV);
+      Solver solver(A_augmented, Eigen::ComputeFullU | Eigen::ComputeFullV);
       dx = solver.solve(g);
       if (dx.norm() <= params.relative_step_threshold * x.norm()) {
           results.status = RELATIVE_STEP_SIZE_TOO_SMALL;
-- 
GitLab