diff options
author | langou <julien.langou@ucdenver.edu> | 2017-05-25 01:14:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-25 01:14:52 +0200 |
commit | 969a6806ffed642b8578fea76e461967b647825d (patch) | |
tree | d081ee49fef087834452b0a0d6fb117562fd8c8b /LAPACKE/src | |
parent | 942935539c6132984fd8a4ab202aca1e1fe794e1 (diff) | |
parent | 760d0b621989630170e55e79175d88721bd1dadf (diff) | |
download | lapack-969a6806ffed642b8578fea76e461967b647825d.tar.gz lapack-969a6806ffed642b8578fea76e461967b647825d.tar.bz2 lapack-969a6806ffed642b8578fea76e461967b647825d.zip |
Merge pull request #157 from echeresh/e_lapacke
Fixing NaN-checking in LAPACKE interfaces for sub- and super-diagonal parameters
Diffstat (limited to 'LAPACKE/src')
40 files changed, 40 insertions, 64 deletions
diff --git a/LAPACKE/src/lapacke_checon_3.c b/LAPACKE/src/lapacke_checon_3.c index d96cb986..069fd825 100644 --- a/LAPACKE/src/lapacke_checon_3.c +++ b/LAPACKE/src/lapacke_checon_3.c @@ -40,6 +40,7 @@ lapack_int LAPACKE_checon_3( int matrix_layout, char uplo, lapack_int n, { lapack_int info = 0; lapack_complex_float* work = NULL; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_checon_3", -1 ); return -1; @@ -49,7 +50,7 @@ lapack_int LAPACKE_checon_3( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_che_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_c_nancheck( n, e, 1 ) ) { + if( LAPACKE_c_nancheck( n-1, e + e_start, 1 ) ) { return -6; } if( LAPACKE_s_nancheck( 1, &anorm, 1 ) ) { diff --git a/LAPACKE/src/lapacke_chesv_rk.c b/LAPACKE/src/lapacke_chesv_rk.c index 04b5f6a0..b682c3b3 100644 --- a/LAPACKE/src/lapacke_chesv_rk.c +++ b/LAPACKE/src/lapacke_chesv_rk.c @@ -52,9 +52,6 @@ lapack_int LAPACKE_chesv_rk( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_che_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -5; } - if( LAPACKE_c_nancheck( n, e, 1) ) { - return -7; - } if( LAPACKE_cge_nancheck( matrix_layout, n, nrhs, b, ldb ) ) { return -10; } diff --git a/LAPACKE/src/lapacke_chetrf_rk.c b/LAPACKE/src/lapacke_chetrf_rk.c index b9133e71..00a32b97 100644 --- a/LAPACKE/src/lapacke_chetrf_rk.c +++ b/LAPACKE/src/lapacke_chetrf_rk.c @@ -50,9 +50,6 @@ lapack_int LAPACKE_chetrf_rk( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_che_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_c_nancheck( n, e, 1 ) ) { - return -6; - } #endif /* Query optimal working array(s) size */ info = LAPACKE_chetrf_rk_work( matrix_layout, uplo, n, a, lda, e, ipiv, diff --git a/LAPACKE/src/lapacke_chetri_3.c b/LAPACKE/src/lapacke_chetri_3.c index 8ce3ad35..a273983a 100644 --- a/LAPACKE/src/lapacke_chetri_3.c +++ b/LAPACKE/src/lapacke_chetri_3.c @@ -41,6 +41,7 @@ lapack_int LAPACKE_chetri_3( int matrix_layout, char uplo, lapack_int n, lapack_int lwork = -1; lapack_complex_float* work = NULL; lapack_complex_float work_query; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_chetri_3", -1 ); return -1; @@ -50,7 +51,7 @@ lapack_int LAPACKE_chetri_3( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_che_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_c_nancheck( n, e, 1 ) ) { + if( LAPACKE_c_nancheck( n-1, e + e_start, 1 ) ) { return -6; } #endif diff --git a/LAPACKE/src/lapacke_cstegr.c b/LAPACKE/src/lapacke_cstegr.c index 0cd589a7..07057a63 100644 --- a/LAPACKE/src/lapacke_cstegr.c +++ b/LAPACKE/src/lapacke_cstegr.c @@ -58,7 +58,7 @@ lapack_int LAPACKE_cstegr( int matrix_layout, char jobz, char range, if( LAPACKE_s_nancheck( n, d, 1 ) ) { return -5; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { + if( LAPACKE_s_nancheck( n-1, e, 1 ) ) { return -6; } if( LAPACKE_lsame( range, 'v' ) ) { diff --git a/LAPACKE/src/lapacke_cstein.c b/LAPACKE/src/lapacke_cstein.c index 5f5cd364..b1d20cc1 100644 --- a/LAPACKE/src/lapacke_cstein.c +++ b/LAPACKE/src/lapacke_cstein.c @@ -51,7 +51,7 @@ lapack_int LAPACKE_cstein( int matrix_layout, lapack_int n, const float* d, if( LAPACKE_s_nancheck( n, d, 1 ) ) { return -3; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { + if( LAPACKE_s_nancheck( n-1, e, 1 ) ) { return -4; } if( LAPACKE_s_nancheck( n, w, 1 ) ) { diff --git a/LAPACKE/src/lapacke_csycon_3.c b/LAPACKE/src/lapacke_csycon_3.c index 6425d61a..4beff440 100644 --- a/LAPACKE/src/lapacke_csycon_3.c +++ b/LAPACKE/src/lapacke_csycon_3.c @@ -40,6 +40,7 @@ lapack_int LAPACKE_csycon_3( int matrix_layout, char uplo, lapack_int n, { lapack_int info = 0; lapack_complex_float* work = NULL; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_csycon_3", -1 ); return -1; @@ -49,7 +50,7 @@ lapack_int LAPACKE_csycon_3( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_csy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_c_nancheck( n, e, 1 ) ) { + if( LAPACKE_c_nancheck( n-1, e + e_start, 1 ) ) { return -6; } if( LAPACKE_s_nancheck( 1, &anorm, 1 ) ) { diff --git a/LAPACKE/src/lapacke_csysv_rk.c b/LAPACKE/src/lapacke_csysv_rk.c index 34e95f20..fd1e6faa 100644 --- a/LAPACKE/src/lapacke_csysv_rk.c +++ b/LAPACKE/src/lapacke_csysv_rk.c @@ -52,9 +52,6 @@ lapack_int LAPACKE_csysv_rk( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_csy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -5; } - if( LAPACKE_c_nancheck( n, e, 1) ) { - return -7; - } if( LAPACKE_cge_nancheck( matrix_layout, n, nrhs, b, ldb ) ) { return -9; } diff --git a/LAPACKE/src/lapacke_csytrf_rk.c b/LAPACKE/src/lapacke_csytrf_rk.c index eac1e6c4..135bdf30 100644 --- a/LAPACKE/src/lapacke_csytrf_rk.c +++ b/LAPACKE/src/lapacke_csytrf_rk.c @@ -50,9 +50,6 @@ lapack_int LAPACKE_csytrf_rk( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_csy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_c_nancheck( n, e, 1 ) ) { - return -6; - } #endif /* Query optimal working array(s) size */ info = LAPACKE_csytrf_rk_work( matrix_layout, uplo, n, a, lda, e, ipiv, diff --git a/LAPACKE/src/lapacke_csytri_3.c b/LAPACKE/src/lapacke_csytri_3.c index 543d408d..378537b3 100644 --- a/LAPACKE/src/lapacke_csytri_3.c +++ b/LAPACKE/src/lapacke_csytri_3.c @@ -41,6 +41,7 @@ lapack_int LAPACKE_csytri_3( int matrix_layout, char uplo, lapack_int n, lapack_int lwork = -1; lapack_complex_float* work = NULL; lapack_complex_float work_query; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_csytri_3", -1 ); return -1; @@ -50,7 +51,7 @@ lapack_int LAPACKE_csytri_3( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_csy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_c_nancheck( n, e, 1 ) ) { + if( LAPACKE_c_nancheck( n-1, e + e_start, 1 ) ) { return -6; } #endif diff --git a/LAPACKE/src/lapacke_dbdsdc.c b/LAPACKE/src/lapacke_dbdsdc.c index a18d507a..e1d9d38e 100644 --- a/LAPACKE/src/lapacke_dbdsdc.c +++ b/LAPACKE/src/lapacke_dbdsdc.c @@ -52,7 +52,7 @@ lapack_int LAPACKE_dbdsdc( int matrix_layout, char uplo, char compq, if( LAPACKE_d_nancheck( n, d, 1 ) ) { return -5; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { + if( LAPACKE_d_nancheck( n-1, e, 1 ) ) { return -6; } #endif diff --git a/LAPACKE/src/lapacke_dstegr.c b/LAPACKE/src/lapacke_dstegr.c index 1d63e12b..2704e470 100644 --- a/LAPACKE/src/lapacke_dstegr.c +++ b/LAPACKE/src/lapacke_dstegr.c @@ -58,7 +58,7 @@ lapack_int LAPACKE_dstegr( int matrix_layout, char jobz, char range, if( LAPACKE_d_nancheck( n, d, 1 ) ) { return -5; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { + if( LAPACKE_d_nancheck( n-1, e, 1 ) ) { return -6; } if( LAPACKE_lsame( range, 'v' ) ) { diff --git a/LAPACKE/src/lapacke_dstein.c b/LAPACKE/src/lapacke_dstein.c index 140a1f55..85c6e414 100644 --- a/LAPACKE/src/lapacke_dstein.c +++ b/LAPACKE/src/lapacke_dstein.c @@ -50,7 +50,7 @@ lapack_int LAPACKE_dstein( int matrix_layout, lapack_int n, const double* d, if( LAPACKE_d_nancheck( n, d, 1 ) ) { return -3; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { + if( LAPACKE_d_nancheck( n-1, e, 1 ) ) { return -4; } if( LAPACKE_d_nancheck( n, w, 1 ) ) { diff --git a/LAPACKE/src/lapacke_dstev.c b/LAPACKE/src/lapacke_dstev.c index 6e575b18..0817a5c5 100644 --- a/LAPACKE/src/lapacke_dstev.c +++ b/LAPACKE/src/lapacke_dstev.c @@ -47,7 +47,7 @@ lapack_int LAPACKE_dstev( int matrix_layout, char jobz, lapack_int n, double* d, if( LAPACKE_d_nancheck( n, d, 1 ) ) { return -4; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { + if( LAPACKE_d_nancheck( n-1, e, 1 ) ) { return -5; } #endif diff --git a/LAPACKE/src/lapacke_dstevd.c b/LAPACKE/src/lapacke_dstevd.c index be2f0929..c0f15601 100644 --- a/LAPACKE/src/lapacke_dstevd.c +++ b/LAPACKE/src/lapacke_dstevd.c @@ -52,7 +52,7 @@ lapack_int LAPACKE_dstevd( int matrix_layout, char jobz, lapack_int n, double* d if( LAPACKE_d_nancheck( n, d, 1 ) ) { return -4; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { + if( LAPACKE_d_nancheck( n-1, e, 1 ) ) { return -5; } #endif diff --git a/LAPACKE/src/lapacke_dstevx.c b/LAPACKE/src/lapacke_dstevx.c index 45f161d4..7ebc3412 100644 --- a/LAPACKE/src/lapacke_dstevx.c +++ b/LAPACKE/src/lapacke_dstevx.c @@ -54,7 +54,7 @@ lapack_int LAPACKE_dstevx( int matrix_layout, char jobz, char range, if( LAPACKE_d_nancheck( n, d, 1 ) ) { return -5; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { + if( LAPACKE_d_nancheck( n-1, e, 1 ) ) { return -6; } if( LAPACKE_lsame( range, 'v' ) ) { diff --git a/LAPACKE/src/lapacke_dsycon_3.c b/LAPACKE/src/lapacke_dsycon_3.c index 40503d11..063bee90 100644 --- a/LAPACKE/src/lapacke_dsycon_3.c +++ b/LAPACKE/src/lapacke_dsycon_3.c @@ -40,6 +40,7 @@ lapack_int LAPACKE_dsycon_3( int matrix_layout, char uplo, lapack_int n, lapack_int info = 0; lapack_int* iwork = NULL; double* work = NULL; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_dsycon_3", -1 ); return -1; @@ -49,7 +50,7 @@ lapack_int LAPACKE_dsycon_3( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_dsy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { + if( LAPACKE_d_nancheck( n-1, e + e_start, 1 ) ) { return -6; } if( LAPACKE_d_nancheck( 1, &anorm, 1 ) ) { diff --git a/LAPACKE/src/lapacke_dsysv_rk.c b/LAPACKE/src/lapacke_dsysv_rk.c index ba9eaa3a..259cb340 100644 --- a/LAPACKE/src/lapacke_dsysv_rk.c +++ b/LAPACKE/src/lapacke_dsysv_rk.c @@ -50,9 +50,6 @@ lapack_int LAPACKE_dsysv_rk( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_dsy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -5; } - if( LAPACKE_d_nancheck( n, e, 1) ) { - return -7; - } if( LAPACKE_dge_nancheck( matrix_layout, n, nrhs, b, ldb ) ) { return -9; } diff --git a/LAPACKE/src/lapacke_dsytrf_rk.c b/LAPACKE/src/lapacke_dsytrf_rk.c index 0d9cade8..239b5469 100644 --- a/LAPACKE/src/lapacke_dsytrf_rk.c +++ b/LAPACKE/src/lapacke_dsytrf_rk.c @@ -49,9 +49,6 @@ lapack_int LAPACKE_dsytrf_rk( int matrix_layout, char uplo, lapack_int n, double if( LAPACKE_dsy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { - return -6; - } #endif /* Query optimal working array(s) size */ info = LAPACKE_dsytrf_rk_work( matrix_layout, uplo, n, a, lda, e, ipiv, diff --git a/LAPACKE/src/lapacke_dsytri_3.c b/LAPACKE/src/lapacke_dsytri_3.c index b0960dad..fd41f7ba 100644 --- a/LAPACKE/src/lapacke_dsytri_3.c +++ b/LAPACKE/src/lapacke_dsytri_3.c @@ -40,6 +40,7 @@ lapack_int LAPACKE_dsytri_3( int matrix_layout, char uplo, lapack_int n, double* lapack_int lwork = -1; double* work = NULL; double work_query; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_dsytri_3", -1 ); return -1; @@ -49,7 +50,7 @@ lapack_int LAPACKE_dsytri_3( int matrix_layout, char uplo, lapack_int n, double* if( LAPACKE_dsy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { + if( LAPACKE_d_nancheck( n-1, e + e_start, 1 ) ) { return -6; } #endif diff --git a/LAPACKE/src/lapacke_sbdsdc.c b/LAPACKE/src/lapacke_sbdsdc.c index 43176804..ee1db7a4 100644 --- a/LAPACKE/src/lapacke_sbdsdc.c +++ b/LAPACKE/src/lapacke_sbdsdc.c @@ -52,7 +52,7 @@ lapack_int LAPACKE_sbdsdc( int matrix_layout, char uplo, char compq, if( LAPACKE_s_nancheck( n, d, 1 ) ) { return -5; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { + if( LAPACKE_s_nancheck( n-1, e, 1 ) ) { return -6; } #endif diff --git a/LAPACKE/src/lapacke_sstegr.c b/LAPACKE/src/lapacke_sstegr.c index a3c5d4d0..1694273d 100644 --- a/LAPACKE/src/lapacke_sstegr.c +++ b/LAPACKE/src/lapacke_sstegr.c @@ -58,7 +58,7 @@ lapack_int LAPACKE_sstegr( int matrix_layout, char jobz, char range, if( LAPACKE_s_nancheck( n, d, 1 ) ) { return -5; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { + if( LAPACKE_s_nancheck( n-1, e, 1 ) ) { return -6; } if( LAPACKE_lsame( range, 'v' ) ) { diff --git a/LAPACKE/src/lapacke_sstein.c b/LAPACKE/src/lapacke_sstein.c index ccad56f4..fa8b3845 100644 --- a/LAPACKE/src/lapacke_sstein.c +++ b/LAPACKE/src/lapacke_sstein.c @@ -50,7 +50,7 @@ lapack_int LAPACKE_sstein( int matrix_layout, lapack_int n, const float* d, if( LAPACKE_s_nancheck( n, d, 1 ) ) { return -3; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { + if( LAPACKE_s_nancheck( n-1, e, 1 ) ) { return -4; } if( LAPACKE_s_nancheck( n, w, 1 ) ) { diff --git a/LAPACKE/src/lapacke_sstev.c b/LAPACKE/src/lapacke_sstev.c index 97da7310..1006aee0 100644 --- a/LAPACKE/src/lapacke_sstev.c +++ b/LAPACKE/src/lapacke_sstev.c @@ -47,7 +47,7 @@ lapack_int LAPACKE_sstev( int matrix_layout, char jobz, lapack_int n, float* d, if( LAPACKE_s_nancheck( n, d, 1 ) ) { return -4; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { + if( LAPACKE_s_nancheck( n-1, e, 1 ) ) { return -5; } #endif diff --git a/LAPACKE/src/lapacke_sstevd.c b/LAPACKE/src/lapacke_sstevd.c index b2bf5bb3..ae0b6798 100644 --- a/LAPACKE/src/lapacke_sstevd.c +++ b/LAPACKE/src/lapacke_sstevd.c @@ -52,7 +52,7 @@ lapack_int LAPACKE_sstevd( int matrix_layout, char jobz, lapack_int n, float* d, if( LAPACKE_s_nancheck( n, d, 1 ) ) { return -4; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { + if( LAPACKE_s_nancheck( n-1, e, 1 ) ) { return -5; } #endif diff --git a/LAPACKE/src/lapacke_sstevx.c b/LAPACKE/src/lapacke_sstevx.c index 1dd833d2..b71ee9ad 100644 --- a/LAPACKE/src/lapacke_sstevx.c +++ b/LAPACKE/src/lapacke_sstevx.c @@ -54,7 +54,7 @@ lapack_int LAPACKE_sstevx( int matrix_layout, char jobz, char range, if( LAPACKE_s_nancheck( n, d, 1 ) ) { return -5; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { + if( LAPACKE_s_nancheck( n-1, e, 1 ) ) { return -6; } if( LAPACKE_lsame( range, 'v' ) ) { diff --git a/LAPACKE/src/lapacke_ssycon_3.c b/LAPACKE/src/lapacke_ssycon_3.c index ece1482e..bf759235 100644 --- a/LAPACKE/src/lapacke_ssycon_3.c +++ b/LAPACKE/src/lapacke_ssycon_3.c @@ -40,6 +40,7 @@ lapack_int LAPACKE_ssycon_3( int matrix_layout, char uplo, lapack_int n, lapack_int info = 0; lapack_int* iwork = NULL; float* work = NULL; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_ssycon_3", -1 ); return -1; @@ -49,7 +50,7 @@ lapack_int LAPACKE_ssycon_3( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_ssy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { + if( LAPACKE_s_nancheck( n-1, e + e_start, 1 ) ) { return -6; } if( LAPACKE_s_nancheck( 1, &anorm, 1 ) ) { diff --git a/LAPACKE/src/lapacke_ssysv_rk.c b/LAPACKE/src/lapacke_ssysv_rk.c index b3520284..ad5fbf49 100644 --- a/LAPACKE/src/lapacke_ssysv_rk.c +++ b/LAPACKE/src/lapacke_ssysv_rk.c @@ -50,9 +50,6 @@ lapack_int LAPACKE_ssysv_rk( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_ssy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -5; } - if( LAPACKE_s_nancheck( n, e, 1) ) { - return -7; - } if( LAPACKE_sge_nancheck( matrix_layout, n, nrhs, b, ldb ) ) { return -9; } diff --git a/LAPACKE/src/lapacke_ssytrf_rk.c b/LAPACKE/src/lapacke_ssytrf_rk.c index 80663184..c1fd53ae 100644 --- a/LAPACKE/src/lapacke_ssytrf_rk.c +++ b/LAPACKE/src/lapacke_ssytrf_rk.c @@ -49,9 +49,6 @@ lapack_int LAPACKE_ssytrf_rk( int matrix_layout, char uplo, lapack_int n, float* if( LAPACKE_ssy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { - return -6; - } #endif /* Query optimal working array(s) size */ info = LAPACKE_ssytrf_rk_work( matrix_layout, uplo, n, a, lda, e, ipiv, diff --git a/LAPACKE/src/lapacke_ssytri_3.c b/LAPACKE/src/lapacke_ssytri_3.c index b97ca498..bfbe4eb0 100644 --- a/LAPACKE/src/lapacke_ssytri_3.c +++ b/LAPACKE/src/lapacke_ssytri_3.c @@ -40,6 +40,7 @@ lapack_int LAPACKE_ssytri_3( int matrix_layout, char uplo, lapack_int n, float* lapack_int lwork = -1; float* work = NULL; float work_query; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_ssytri_3", -1 ); return -1; @@ -49,7 +50,7 @@ lapack_int LAPACKE_ssytri_3( int matrix_layout, char uplo, lapack_int n, float* if( LAPACKE_ssy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_s_nancheck( n, e, 1 ) ) { + if( LAPACKE_s_nancheck( n-1, e + e_start, 1 ) ) { return -6; } #endif diff --git a/LAPACKE/src/lapacke_zhecon_3.c b/LAPACKE/src/lapacke_zhecon_3.c index a08bc8c0..5010fb3c 100644 --- a/LAPACKE/src/lapacke_zhecon_3.c +++ b/LAPACKE/src/lapacke_zhecon_3.c @@ -40,6 +40,7 @@ lapack_int LAPACKE_zhecon_3( int matrix_layout, char uplo, lapack_int n, { lapack_int info = 0; lapack_complex_double* work = NULL; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_zhecon_3", -1 ); return -1; @@ -49,7 +50,7 @@ lapack_int LAPACKE_zhecon_3( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_zhe_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_z_nancheck( n, e, 1 ) ) { + if( LAPACKE_z_nancheck( n-1, e + e_start, 1 ) ) { return -6; } if( LAPACKE_d_nancheck( 1, &anorm, 1 ) ) { diff --git a/LAPACKE/src/lapacke_zhesv_rk.c b/LAPACKE/src/lapacke_zhesv_rk.c index 777a7b9f..62a57474 100644 --- a/LAPACKE/src/lapacke_zhesv_rk.c +++ b/LAPACKE/src/lapacke_zhesv_rk.c @@ -51,9 +51,6 @@ lapack_int LAPACKE_zhesv_rk( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_zhe_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -5; } - if( LAPACKE_z_nancheck( n, e, 1) ) { - return -7; - } if( LAPACKE_zge_nancheck( matrix_layout, n, nrhs, b, ldb ) ) { return -9; } diff --git a/LAPACKE/src/lapacke_zhetrf_rk.c b/LAPACKE/src/lapacke_zhetrf_rk.c index 19dc423d..1cf2fca5 100644 --- a/LAPACKE/src/lapacke_zhetrf_rk.c +++ b/LAPACKE/src/lapacke_zhetrf_rk.c @@ -50,9 +50,6 @@ lapack_int LAPACKE_zhetrf_rk( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_zhe_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_z_nancheck( n, e, 1 ) ) { - return -6; - } #endif /* Query optimal working array(s) size */ info = LAPACKE_zhetrf_rk_work( matrix_layout, uplo, n, a, lda, e, ipiv, diff --git a/LAPACKE/src/lapacke_zhetri_3.c b/LAPACKE/src/lapacke_zhetri_3.c index 33790c2f..6cf760f2 100644 --- a/LAPACKE/src/lapacke_zhetri_3.c +++ b/LAPACKE/src/lapacke_zhetri_3.c @@ -41,6 +41,7 @@ lapack_int LAPACKE_zhetri_3( int matrix_layout, char uplo, lapack_int n, lapack_int lwork = -1; lapack_complex_double* work = NULL; lapack_complex_double work_query; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_zhetri_3", -1 ); return -1; @@ -50,7 +51,7 @@ lapack_int LAPACKE_zhetri_3( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_zhe_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_z_nancheck( n, e, 1 ) ) { + if( LAPACKE_z_nancheck( n-1, e + e_start, 1 ) ) { return -6; } #endif diff --git a/LAPACKE/src/lapacke_zstegr.c b/LAPACKE/src/lapacke_zstegr.c index 189e6be5..6de83835 100644 --- a/LAPACKE/src/lapacke_zstegr.c +++ b/LAPACKE/src/lapacke_zstegr.c @@ -59,7 +59,7 @@ lapack_int LAPACKE_zstegr( int matrix_layout, char jobz, char range, if( LAPACKE_d_nancheck( n, d, 1 ) ) { return -5; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { + if( LAPACKE_d_nancheck( n-1, e, 1 ) ) { return -6; } if( LAPACKE_lsame( range, 'v' ) ) { diff --git a/LAPACKE/src/lapacke_zstein.c b/LAPACKE/src/lapacke_zstein.c index 1d1b2ef5..70b99887 100644 --- a/LAPACKE/src/lapacke_zstein.c +++ b/LAPACKE/src/lapacke_zstein.c @@ -51,7 +51,7 @@ lapack_int LAPACKE_zstein( int matrix_layout, lapack_int n, const double* d, if( LAPACKE_d_nancheck( n, d, 1 ) ) { return -3; } - if( LAPACKE_d_nancheck( n, e, 1 ) ) { + if( LAPACKE_d_nancheck( n-1, e, 1 ) ) { return -4; } if( LAPACKE_d_nancheck( n, w, 1 ) ) { diff --git a/LAPACKE/src/lapacke_zsycon_3.c b/LAPACKE/src/lapacke_zsycon_3.c index 03900b66..993523ba 100644 --- a/LAPACKE/src/lapacke_zsycon_3.c +++ b/LAPACKE/src/lapacke_zsycon_3.c @@ -40,6 +40,7 @@ lapack_int LAPACKE_zsycon_3( int matrix_layout, char uplo, lapack_int n, { lapack_int info = 0; lapack_complex_double* work = NULL; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_zsycon_3", -1 ); return -1; @@ -49,7 +50,7 @@ lapack_int LAPACKE_zsycon_3( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_zsy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_z_nancheck( n, e, 1 ) ) { + if( LAPACKE_z_nancheck( n-1, e + e_start, 1 ) ) { return -6; } if( LAPACKE_d_nancheck( 1, &anorm, 1 ) ) { diff --git a/LAPACKE/src/lapacke_zsysv_rk.c b/LAPACKE/src/lapacke_zsysv_rk.c index a3385119..96bc40a3 100644 --- a/LAPACKE/src/lapacke_zsysv_rk.c +++ b/LAPACKE/src/lapacke_zsysv_rk.c @@ -51,9 +51,6 @@ lapack_int LAPACKE_zsysv_rk( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_zsy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -5; } - if( LAPACKE_z_nancheck( n, e, 1) ) { - return -7; - } if( LAPACKE_zge_nancheck( matrix_layout, n, nrhs, b, ldb ) ) { return -9; } diff --git a/LAPACKE/src/lapacke_zsytrf_rk.c b/LAPACKE/src/lapacke_zsytrf_rk.c index c4ead32d..4119ba7a 100644 --- a/LAPACKE/src/lapacke_zsytrf_rk.c +++ b/LAPACKE/src/lapacke_zsytrf_rk.c @@ -50,9 +50,6 @@ lapack_int LAPACKE_zsytrf_rk( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_zsy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_z_nancheck( n, e, 1 ) ) { - return -6; - } #endif /* Query optimal working array(s) size */ info = LAPACKE_zsytrf_rk_work( matrix_layout, uplo, n, a, lda, e, ipiv, diff --git a/LAPACKE/src/lapacke_zsytri_3.c b/LAPACKE/src/lapacke_zsytri_3.c index 0902c57f..78ff46ad 100644 --- a/LAPACKE/src/lapacke_zsytri_3.c +++ b/LAPACKE/src/lapacke_zsytri_3.c @@ -41,6 +41,7 @@ lapack_int LAPACKE_zsytri_3( int matrix_layout, char uplo, lapack_int n, lapack_int lwork = -1; lapack_complex_double* work = NULL; lapack_complex_double work_query; + lapack_int e_start = LAPACKE_lsame( uplo, 'U' ) ? 1 : 0; if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) { LAPACKE_xerbla( "LAPACKE_zsytri_3", -1 ); return -1; @@ -50,7 +51,7 @@ lapack_int LAPACKE_zsytri_3( int matrix_layout, char uplo, lapack_int n, if( LAPACKE_zsy_nancheck( matrix_layout, uplo, n, a, lda ) ) { return -4; } - if( LAPACKE_z_nancheck( n, e, 1 ) ) { + if( LAPACKE_z_nancheck( n-1, e + e_start, 1 ) ) { return -6; } #endif |