Mercurial > octave
changeset 29829:212322c0e44e
xpow.cc: Use dgxelem() for accessing diagonal matrix elements for performance.
* xpow.cc: Replace calls to dgelem() or operator indexing with "(i,i)" with
dxelem() for diagonal matrices.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 28 Jun 2021 10:54:34 -0700 |
parents | e4c65b8276a6 |
children | 0474c3a27d16 |
files | libinterp/corefcn/xpow.cc |
diffstat | 1 files changed, 6 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/xpow.cc Mon Jun 28 10:15:30 2021 -0700 +++ b/libinterp/corefcn/xpow.cc Mon Jun 28 10:54:34 2021 -0700 @@ -304,14 +304,14 @@ { DiagMatrix r (nr, nc); for (octave_idx_type i = 0; i < nc; i++) - r.dgelem (i) = std::pow (a.dgelem (i), b); + r.dgxelem (i) = std::pow (a.dgxelem (i), b); retval = r; } else { ComplexDiagMatrix r (nr, nc); for (octave_idx_type i = 0; i < nc; i++) - r.dgelem (i) = std::pow (static_cast<Complex> (a.dgelem (i)), b); + r.dgxelem (i) = std::pow (static_cast<Complex> (a.dgxelem (i)), b); retval = r; } @@ -605,7 +605,7 @@ ComplexDiagMatrix r (nr, nc); for (octave_idx_type i = 0; i < nc; i++) - r(i, i) = std::pow (a(i, i), b); + r.dgxelem (i) = std::pow (a.dgxelem (i), b); retval = r; return retval; @@ -1718,14 +1718,14 @@ { FloatDiagMatrix r (nr, nc); for (octave_idx_type i = 0; i < nc; i++) - r.dgelem (i) = std::pow (a.dgelem (i), b); + r.dgxelem (i) = std::pow (a.dgxelem (i), b); retval = r; } else { FloatComplexDiagMatrix r (nr, nc); for (octave_idx_type i = 0; i < nc; i++) - r.dgelem (i) = std::pow (static_cast<FloatComplex> (a.dgelem (i)), b); + r.dgxelem (i) = std::pow (static_cast<FloatComplex> (a.dgxelem (i)), b); retval = r; } @@ -2009,7 +2009,7 @@ FloatComplexDiagMatrix r (nr, nc); for (octave_idx_type i = 0; i < nc; i++) - r(i, i) = std::pow (a(i, i), b); + r.dgxelem (i) = std::pow (a.dgxelem (i), b); retval = r; return retval;