Mercurial > hg > octave-lyh
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 +++ b/liboctave/CMatrix.cc @@ -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));