Never mind. I figured out what I was doing wrong. Was using a wrong version of tbb.dll different from the one linked... d'oh. I think I figured out the superb argument as well, however, superb/iwork typo could still be fixed on the documentation.
How big exactly does the superb array need to be to call ?gesvdx? The documentation says "Array, size (12*min(m, n))." But when I follow that, I get seg fault. Double it, it seems to work... I'm testing it with 6x10 complex double matrix (i.e., passing in a lapack_int array allocated with 72 elements). Also, the rest of the description is not clear to me:
"If info = 0, the first ns elements of iwork are zero. If info > 0, then iwork contains the indices of the eigenvectors that failed to converge in ?bdsvdx/?stevx."
* iwork -> superb?
* ns << 12*min(m,n), extra space used as temporary storage? Could anyone enlighten me on this? Thanks!
Thank you for the question. your are right – it is a mistake in the documentation, “iwork” should be replaced by “superb” . we will fix it in further release.
If info = 0, the first ns elements of
iwork superb are zero. If info > 0, then iwork superb contains the indices of the eigenvectors that failed to converge in ?bdsvdx/?stevx.