diff liboctave/CMatrix.cc @ 7416:a7a987b229b7

[project @ 2008-01-24 08:31:36 by jwe]
author jwe
date Thu, 24 Jan 2008 08:31:36 +0000
parents f9df7f7520e7
children e9f10b4c05cf
line wrap: on
line diff
--- a/liboctave/CMatrix.cc	Thu Jan 24 07:40:58 2008 +0000
+++ b/liboctave/CMatrix.cc	Thu Jan 24 08:31:36 2008 +0000
@@ -2938,6 +2938,23 @@
       iperm(swapidx) = tmp;
     }
 
+  // construct inverse balancing permutation vector
+  Array<octave_idx_type> invpvec (nc);
+  for (octave_idx_type i = 0; i < nc; i++)
+    invpvec(iperm(i)) = i;     // Thanks to R. A. Lippert for this method
+
+  OCTAVE_QUIT;
+
+  ComplexMatrix tmpMat = retval;
+  for (octave_idx_type i = 0; i < nc; i++)
+    for (octave_idx_type j = 0; j < nc; j++)
+      retval(i,j) = tmpMat(invpvec(i),invpvec(j));
+
+  OCTAVE_QUIT;
+
+  for (octave_idx_type i = 0; i < nc; i++)
+    iperm(i) = i;  // initialize to identity permutation
+
   // trailing permutations must be done in reverse order
   for (octave_idx_type i = nc - 1; i >= ihi; i--)
     {
@@ -2948,13 +2965,12 @@
     }
 
   // construct inverse balancing permutation vector
-  Array<octave_idx_type> invpvec (nc);
   for (octave_idx_type i = 0; i < nc; i++)
     invpvec(iperm(i)) = i;     // Thanks to R. A. Lippert for this method
 
   OCTAVE_QUIT;
 
-  ComplexMatrix tmpMat = retval;
+  tmpMat = retval;
   for (octave_idx_type i = 0; i < nc; i++)
     for (octave_idx_type j = 0; j < nc; j++)
       retval(i,j) = tmpMat(invpvec(i),invpvec(j));