| @@ -58,6 +58,9 @@ lapack_int LAPACKE_zgesdd_work( int matrix_layout, char jobz, lapack_int m, | |||||
| lapack_int nrows_vt = ( LAPACKE_lsame( jobz, 'a' ) || | lapack_int nrows_vt = ( LAPACKE_lsame( jobz, 'a' ) || | ||||
| ( LAPACKE_lsame( jobz, 'o' ) && m>=n) ) ? n : | ( LAPACKE_lsame( jobz, 'o' ) && m>=n) ) ? n : | ||||
| ( LAPACKE_lsame( jobz, 's' ) ? MIN(m,n) : 1); | ( LAPACKE_lsame( jobz, 's' ) ? MIN(m,n) : 1); | ||||
| lapack_int ncols_vt = ( LAPACKE_lsame( jobz, 'a' ) || | |||||
| ( LAPACKE_lsame( jobz, 's' ) || | |||||
| ( LAPACKE_lsame( jobz, 'o' && m >=n) ) ? n : 1); | |||||
| lapack_int lda_t = MAX(1,m); | lapack_int lda_t = MAX(1,m); | ||||
| lapack_int ldu_t = MAX(1,nrows_u); | lapack_int ldu_t = MAX(1,nrows_u); | ||||
| lapack_int ldvt_t = MAX(1,nrows_vt); | lapack_int ldvt_t = MAX(1,nrows_vt); | ||||
| @@ -75,7 +78,7 @@ lapack_int LAPACKE_zgesdd_work( int matrix_layout, char jobz, lapack_int m, | |||||
| LAPACKE_xerbla( "LAPACKE_zgesdd_work", info ); | LAPACKE_xerbla( "LAPACKE_zgesdd_work", info ); | ||||
| return info; | return info; | ||||
| } | } | ||||
| if( ldvt < n ) { | |||||
| if( ldvt < ncols_vt ) { | |||||
| info = -11; | info = -11; | ||||
| LAPACKE_xerbla( "LAPACKE_zgesdd_work", info ); | LAPACKE_xerbla( "LAPACKE_zgesdd_work", info ); | ||||
| return info; | return info; | ||||