Skip to content

Commit 88f65d6

Browse files
committed
fix ldvt check in ?gesdd
1 parent b054023 commit 88f65d6

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

LAPACKE/src/lapacke_cgesdd_work.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ lapack_int API_SUFFIX(LAPACKE_cgesdd_work)( int matrix_layout, char jobz, lapack
5858
lapack_int nrows_vt = ( API_SUFFIX(LAPACKE_lsame)( jobz, 'a' ) ||
5959
( API_SUFFIX(LAPACKE_lsame)( jobz, 'o' ) && m>=n) ) ? n :
6060
( API_SUFFIX(LAPACKE_lsame)( jobz, 's' ) ? MIN(m,n) : 1);
61+
lapack_int ncols_vt = ( API_SUFFIX(LAPACKE_lsame)( jobz, 'a' ) ||
62+
API_SUFFIX(LAPACKE_lsame)( jobz, 's' ) ||
63+
( API_SUFFIX(LAPACKE_lsame)( jobz, 'o' ) && m>=n) ) ? n : 1;
6164
lapack_int lda_t = MAX(1,m);
6265
lapack_int ldu_t = MAX(1,nrows_u);
6366
lapack_int ldvt_t = MAX(1,nrows_vt);
@@ -75,7 +78,7 @@ lapack_int API_SUFFIX(LAPACKE_cgesdd_work)( int matrix_layout, char jobz, lapack
7578
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_cgesdd_work", info );
7679
return info;
7780
}
78-
if( ldvt < n ) {
81+
if( ldvt < ncols_vt ) {
7982
info = -11;
8083
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_cgesdd_work", info );
8184
return info;

LAPACKE/src/lapacke_dgesdd_work.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ lapack_int API_SUFFIX(LAPACKE_dgesdd_work)( int matrix_layout, char jobz, lapack
5656
lapack_int nrows_vt = ( API_SUFFIX(LAPACKE_lsame)( jobz, 'a' ) ||
5757
( API_SUFFIX(LAPACKE_lsame)( jobz, 'o' ) && m>=n) ) ? n :
5858
( API_SUFFIX(LAPACKE_lsame)( jobz, 's' ) ? MIN(m,n) : 1);
59+
lapack_int ncols_vt = ( API_SUFFIX(LAPACKE_lsame)( jobz, 'a' ) ||
60+
API_SUFFIX(LAPACKE_lsame)( jobz, 's' ) ||
61+
( API_SUFFIX(LAPACKE_lsame)( jobz, 'o' ) && m>=n) ) ? n : 1;
5962
lapack_int lda_t = MAX(1,m);
6063
lapack_int ldu_t = MAX(1,nrows_u);
6164
lapack_int ldvt_t = MAX(1,nrows_vt);
@@ -73,7 +76,7 @@ lapack_int API_SUFFIX(LAPACKE_dgesdd_work)( int matrix_layout, char jobz, lapack
7376
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_dgesdd_work", info );
7477
return info;
7578
}
76-
if( ldvt < n ) {
79+
if( ldvt < ncols_vt ) {
7780
info = -11;
7881
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_dgesdd_work", info );
7982
return info;

LAPACKE/src/lapacke_sgesdd_work.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ lapack_int API_SUFFIX(LAPACKE_sgesdd_work)( int matrix_layout, char jobz, lapack
5656
lapack_int nrows_vt = ( API_SUFFIX(LAPACKE_lsame)( jobz, 'a' ) ||
5757
( API_SUFFIX(LAPACKE_lsame)( jobz, 'o' ) && m>=n) ) ? n :
5858
( API_SUFFIX(LAPACKE_lsame)( jobz, 's' ) ? MIN(m,n) : 1);
59+
lapack_int ncols_vt = ( API_SUFFIX(LAPACKE_lsame)( jobz, 'a' ) ||
60+
API_SUFFIX(LAPACKE_lsame)( jobz, 's' ) ||
61+
( API_SUFFIX(LAPACKE_lsame)( jobz, 'o' ) && m>=n) ) ? n : 1;
5962
lapack_int lda_t = MAX(1,m);
6063
lapack_int ldu_t = MAX(1,nrows_u);
6164
lapack_int ldvt_t = MAX(1,nrows_vt);
@@ -73,7 +76,7 @@ lapack_int API_SUFFIX(LAPACKE_sgesdd_work)( int matrix_layout, char jobz, lapack
7376
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_sgesdd_work", info );
7477
return info;
7578
}
76-
if( ldvt < n ) {
79+
if( ldvt < ncols_vt ) {
7780
info = -11;
7881
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_sgesdd_work", info );
7982
return info;

LAPACKE/src/lapacke_zgesdd_work.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ lapack_int API_SUFFIX(LAPACKE_zgesdd_work)( int matrix_layout, char jobz, lapack
5858
lapack_int nrows_vt = ( API_SUFFIX(LAPACKE_lsame)( jobz, 'a' ) ||
5959
( API_SUFFIX(LAPACKE_lsame)( jobz, 'o' ) && m>=n) ) ? n :
6060
( API_SUFFIX(LAPACKE_lsame)( jobz, 's' ) ? MIN(m,n) : 1);
61+
lapack_int ncols_vt = ( API_SUFFIX(LAPACKE_lsame)( jobz, 'a' ) ||
62+
API_SUFFIX(LAPACKE_lsame)( jobz, 's' ) ||
63+
( API_SUFFIX(LAPACKE_lsame)( jobz, 'o' ) && m>=n) ) ? n : 1;
6164
lapack_int lda_t = MAX(1,m);
6265
lapack_int ldu_t = MAX(1,nrows_u);
6366
lapack_int ldvt_t = MAX(1,nrows_vt);
@@ -75,7 +78,7 @@ lapack_int API_SUFFIX(LAPACKE_zgesdd_work)( int matrix_layout, char jobz, lapack
7578
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_zgesdd_work", info );
7679
return info;
7780
}
78-
if( ldvt < n ) {
81+
if( ldvt < ncols_vt ) {
7982
info = -11;
8083
API_SUFFIX(LAPACKE_xerbla)( "LAPACKE_zgesdd_work", info );
8184
return info;

0 commit comments

Comments
 (0)