Mercurial > hg > octave-nkf
changeset 11841:43fccbab412a release-3-0-x
[project @ 2008-01-24 08:31:36 by jwe]
author | jwe |
---|---|
date | Wed, 17 Sep 2008 11:06:18 +0200 |
parents | b160651f8a21 |
children | 0b9c56b6bf0e |
files | liboctave/CMatrix.cc liboctave/ChangeLog liboctave/dMatrix.cc |
diffstat | 3 files changed, 37 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/CMatrix.cc +++ b/liboctave/CMatrix.cc @@ -2976,6 +2976,22 @@ iperm(swapidx) = tmp; } + // construct inverse balancing permutation vector + for (octave_idx_type i = 0; i < nc; i++) + invpvec(iperm(i)) = i; // Thanks to R. A. Lippert for this method + + OCTAVE_QUIT; + + 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--) {
--- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,3 +1,8 @@ +2008-01-18 Marco Caliari <marco.caliari@univr.it> + + * dMatrix.cc (Matrix::expm): Correctly perform reverse permutation. + * CMatrix.cc (ComplexMatrix::expm): Likewise. + 2008-09-12 Jaroslav Hajek <highegg@gmail.com> * oct-inttypes.h (pow (const octave_int<T>&, const octave_int<T>&)):
--- a/liboctave/dMatrix.cc +++ b/liboctave/dMatrix.cc @@ -2601,6 +2601,22 @@ iperm(swapidx) = tmp; } + // construct inverse balancing permutation vector + for (octave_idx_type i = 0; i < nc; i++) + invpvec(iperm(i)) = i; // Thanks to R. A. Lippert for this method + + OCTAVE_QUIT; + + 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; // identity permutation + // trailing permutations must be done in reverse order for (octave_idx_type i = nc - 1; i >= ihi; i--) {