changeset 27031:3080dac8f660

maint: merge stable to default
author Mike Miller <mtmiller@octave.org>
date Sat, 06 Apr 2019 18:46:30 -0700
parents 7b03bc060dc7 (current diff) 4a2cb3392014 (diff)
children 0ee0bb5eb381
files libinterp/corefcn/__qp__.cc
diffstat 1 files changed, 16 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/__qp__.cc	Thu Apr 04 05:17:55 2019 +0000
+++ b/libinterp/corefcn/__qp__.cc	Sat Apr 06 18:46:30 2019 -0700
@@ -40,6 +40,18 @@
 #include "pr-output.h"
 #include "utils.h"
 
+static octave_idx_type
+min_index (const ColumnVector& x)
+{
+  double min_val = x.min ();
+
+  for (octave_idx_type i = 0; i < x.numel (); i++)
+    if (min_val == x.xelem (i))
+      return i;
+
+  return 0;
+}
+
 static Matrix
 null (const Matrix& A, octave_idx_type& rank)
 {
@@ -149,16 +161,7 @@
 
   ColumnVector eigenvalH = real (eigH.eigenvalues ());
   Matrix eigenvecH = real (eigH.right_eigenvectors ());
-  double minReal = eigenvalH.min ();
-  octave_idx_type indminR = 0;
-  for (octave_idx_type i = 0; i < n; i++)
-    {
-      if (minReal == eigenvalH(i))
-        {
-          indminR = i;
-          break;
-        }
-    }
+  octave_idx_type indminR = min_index (eigenvalH);
 
   bool done = false;
 
@@ -185,6 +188,8 @@
         {
           // There are no active constraints.
 
+          double minReal = eigenvalH.xelem (indminR);
+
           if (minReal > 0.0)
             {
               // Inverting the Hessian.  Using the Cholesky
@@ -297,16 +302,7 @@
 
               ColumnVector eigenvalrH = real (eigrH.eigenvalues ());
               Matrix eigenvecrH = real (eigrH.right_eigenvectors ());
-              double mRrH = eigenvalrH.min ();
-              indminR = 0;
-              for (octave_idx_type i = 0; i < n; i++)
-                {
-                  if (mRrH == eigenvalrH(i))
-                    {
-                      indminR = i;
-                      break;
-                    }
-                }
+              indminR = min_index (eigenvalrH);
 
               ColumnVector eVrH = eigenvecrH.column (indminR);