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

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

[Octave-bug-tracker] [bug #54399] test eigs fail


From: Rik
Subject: [Octave-bug-tracker] [bug #54399] test eigs fail
Date: Mon, 30 Jul 2018 10:40:44 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0

Follow-up Comment #13, bug #54399 (project octave):

I don't see why you can't increase the performance a bit by having a special
case for sigma == 0. 

The code is


  if (have_b)
    {
      if (cholB)
        {
          if (permB.numel ())
            {
              SparseMatrix tmp (n,n,n);
              for (octave_idx_type i = 0; i < n; i++)
                {
                  tmp.xcidx (i) = i;
                  tmp.xridx (i) =
                    static_cast<octave_idx_type> (permB(i));
                  tmp.xdata (i) = 1;
                }
              tmp.xcidx (n) = n;

              AminusSigmaB -= sigma * tmp *
                              b.transpose () * b * tmp.transpose ();
            }
          else
            AminusSigmaB -= sigma * b.transpose () * b;
        }
      else
        AminusSigmaB -= sigma * b;
    }
  else
    {
      SparseMatrix sigmat (n, n, n);

      // Create sigma * speye (n,n)
      sigmat.xcidx (0) = 0;
      for (octave_idx_type i = 0; i < n; i++)
        {
          sigmat.xdata (i) = sigma;
          sigmat.xridx (i) = i;
          sigmat.xcidx (i+1) = i + 1;
        }

      AminusSigmaB -= sigmat;
    }


It looks like there is a similar opportunity when have_B is false.  Instead of
calculating sigmat, just leave AminusSigmaB unchanged.

 Is sigma guaranteed to be scalar at that point?


    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?54399>

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




reply via email to

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