Posted by Steve Schreppler on November 05, 1997 at 19:51:56:
There may be a typo in the header comments of the
LAPACK subroutine ZGESVD. This is the comment describing
the argument LWORK:
* LWORK (input) INTEGER
* The dimension of the array WORK. LWORK >= 1.
* LWORK >= 2*MIN(M,N)+MAX(M,N).
* For good performance, LWORK should generally be larger.
The same exact comment is also in CGESVD, and, DGESVD and SGESVD may
have similar incorrect statements
For the subroutine to use the "fast algorithm" it seems that
LWORK should be at least:
LWORK >= 2*MIN(M,N)**2+MAX(M,N)
There are numerous conditionals in the subroutine that
check LWORK for its size so the fast algorithms can
BTW, if this is an error it is also in GNU Octave.
Octave sets LWORK to 2*MIN(M,N)+MAX(M,N) and therefore
runs svd() very slowly.
Can someone confirm or deny this for me ?
Thanks, Steve Schreppler