octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #60786] mpower: negative scalar to power of ma


From: A.R. Burgers
Subject: [Octave-bug-tracker] [bug #60786] mpower: negative scalar to power of matrix containing non-integers returns nan
Date: Sun, 20 Jun 2021 13:51:13 -0400 (EDT)
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.41

Follow-up Comment #2, bug #60786 (project octave):

this patch fixes the case. Not sure this is the best fix, but isolates the
issue. The issue is std::pow(a, ...) produces NaN when a <= 0.


diff -r c75127492941 libinterp/corefcn/xpow.cc
--- a/libinterp/corefcn/xpow.cc Fri Jun 18 08:26:54 2021 +0200
+++ b/libinterp/corefcn/xpow.cc Sun Jun 20 19:46:16 2021 +0200
@@ -124,7 +124,7 @@

   if (nr != nc)
     err_nonsquare_matrix ();
-
+  std::complex<double> pow_arg(a, 0);
   try
     {
       EIG b_eig (b);
@@ -136,9 +136,9 @@
         {
           Complex elt = lambda(i);
           if (std::imag (elt) == 0.0)
-            lambda(i) = std::pow (a, std::real (elt));
+            lambda(i) = std::pow (pow_arg, std::real (elt));
           else
-            lambda(i) = std::pow (a, elt);
+            lambda(i) = std::pow (pow_arg, elt);
         }
       ComplexDiagMatrix D (lambda);


    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?60786>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]