From a660e6425c5e90c5be852b5dc08bfd351944b72a Mon Sep 17 00:00:00 2001 From: Thomas Capricelli Date: Thu, 4 Aug 2011 05:02:04 +0200 Subject: [PATCH] fix a bug where some rotations were not initialized They actually were in the original minpack code, this is a bug introduced by our migration. Reported on #322 and http://forum.kde.org/viewtopic.php?f=74&t=96197#p201158 --- unsupported/Eigen/src/NonLinearOptimization/r1updt.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/unsupported/Eigen/src/NonLinearOptimization/r1updt.h b/unsupported/Eigen/src/NonLinearOptimization/r1updt.h index 0b8ede119..528f8eef9 100644 --- a/unsupported/Eigen/src/NonLinearOptimization/r1updt.h +++ b/unsupported/Eigen/src/NonLinearOptimization/r1updt.h @@ -11,6 +11,7 @@ void r1updt( bool *sing) { typedef DenseIndex Index; + const JacobiRotation IdentityRotation = JacobiRotation(1,0); /* Local variables */ const Index m = s.rows(); @@ -49,7 +50,8 @@ void r1updt( w[i] = givens.s() * s(j,i) + givens.c() * w[i]; s(j,i) = temp; } - } + } else + v_givens[j] = IdentityRotation; } /* add the spike from the rank 1 update to w. */ @@ -73,7 +75,8 @@ void r1updt( /* store the information necessary to recover the */ /* givens rotation. */ w_givens[j] = givens; - } + } else + v_givens[j] = IdentityRotation; /* test for zero diagonal elements in the output s. */ if (s(j,j) == 0.) {