Mercurial > hg > octave-lyh
changeset 11030:231946a9ad55
make the result of r^m real when r > 0
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Tue, 28 Sep 2010 13:56:10 +0200 |
parents | 4ab04ea74b08 |
children | d81b6144c4ba |
files | src/ChangeLog src/xpow.cc |
diffstat | 2 files changed, 17 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2010-09-28 Jaroslav Hajek <highegg@gmail.com> + + * xpow.cc (xpow (double, const Matrix&)): Ensure real result for + positive base. + (xpow (double, const Matrix&)): Likewise. + 2010-09-28 Jaroslav Hajek <highegg@gmail.com> * error.cc (interpreter_try): New function.
--- a/src/xpow.cc +++ b/src/xpow.cc @@ -123,7 +123,11 @@ } ComplexDiagMatrix D (lambda); - retval = ComplexMatrix (Q * D * Q.inverse ()); + ComplexMatrix C = Q * D * Q.inverse (); + if (a > 0) + retval = real (C); + else + retval = C; } else error ("xpow: matrix diagonalization failed"); @@ -1534,7 +1538,12 @@ } FloatComplexDiagMatrix D (lambda); - retval = FloatComplexMatrix (Q * D * Q.inverse ()); + FloatComplexMatrix C = Q * D * Q.inverse (); + + if (a > 0) + retval = real (C); + else + retval = C; } else error ("xpow: matrix diagonalization failed");