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

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

[Octave-bug-tracker] [bug #55564] GESDD: vastly different singular value


From: Rik
Subject: [Octave-bug-tracker] [bug #55564] GESDD: vastly different singular values when vectors are also requested
Date: Fri, 15 Feb 2019 11:34:36 -0500 (EST)
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

Follow-up Comment #20, bug #55564 (project octave):

@count: Go ahead and file a different bug report about adding additional
drivers to svd_drivers() as a feature request.  If you have software skills it
would also be good to submit a patch.  This is a relatively esoteric request
which may not attract anyone else to write such a patch.

Beyond that, no algorithm is perfect.  Octave is prioritizing accuracy over
speed, but--unlike Matlab--we give you the choice of using whatever driver you
want.  I think the documentation, quoted below, is clear on that.


 -- VAL = svd_driver ()
 -- OLD_VAL = svd_driver (NEW_VAL)
 -- svd_driver (NEW_VAL, "local")
     Query or set the underlying LAPACK driver used by 'svd'.

     Currently recognized values are "gesdd" and "gesvd".  The default
     is "gesvd".

     When called from inside a function with the "local" option, the
     variable is changed locally for the function and any subroutines it
     calls.  The original variable value is restored when exiting the
     function.

     Algorithm Notes: The LAPACK library provides two routines for
     calculating the full singular value decomposition (left and right
     singular matrices as well as singular values).  When calculating
     just the singular values the following discussion is not relevant.

     The newer 'gesdd' routine is based on a Divide-and-Conquer
     algorithm that is 5X faster than the alternative 'gesvd', which is
     based on QR factorization.  However, the new algorithm can use
     significantly more memory.  For an MxN input matrix the memory
     usage is of order O(min(M,N) ^ 2), whereas the alternative is of
     order O(max(M,N)).

     Beyond speed and memory issues, there have been instances where
     some input matrices were not accurately decomposed by 'gesdd'.  See
     currently active bug <https://savannah.gnu.org/bugs/?55564>.  Until
     these accuracy issues are resolved in a new version of the LAPACK
     library, the default driver in Octave has been set to "gesvd".





    _______________________________________________________

Reply to this item at:

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

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




reply via email to

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