maybe a bug in DGESDD
Zlatko Drmač just sent me an email letting me know of a suspicious workspace size in the comments of DGESDD.
In 3.1.1 we had, If JOBZ = 'O’, LWORK >= 3*min(M,N)min(M,N) + max(max(M,N),5min(M,N)min(M,N)+4min(M,N)).
And now in 3.10.1, we have Let mx = max(M,N) and mn = min(M,N). If JOBZ = 'O', LWORK >= 3mn + max( mx, 5mnmn + 4mn ).
So there is an issue here. We had 3mnmn in 3.1.1 and we now have 3*mn in 3.10.1. Oops.
Can someone have a look?
The work space size was changed twice, more recently in commit f46ce64a4f7e1187047f1a527ffbca919e97fe40 (2016) by Mark Gates. The less recent change was made in 2009 in commit 1d4ed33a5cfc65afcd46a0babb74979dfbed73f3. The message of the latter commit refers to LAPACK bug0025 fixed in LAPACK 3.2.1 and refers to a discussion in the LAPACK forums but the link to the discussion is dead. Searching for the discussion manually by date in the LAPACK forums and with the aid of a search engine does not provide any clues either.
So there is an issue here. We had 3mnmn in 3.1.1 and we now have 3*mn in 3.10.1. Oops.
This change originates in commit 1d4ed33a5cfc65afcd46a0babb74979dfbed73f3 (2009). The commit message explicitly mentions the change:
remove a min(M,N) in the minimal workspace formula when JOBZ='O' and JOBZ = 'S' or 'A'.