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;