apply patch from Hong Xu
authorlangou <langou@users.noreply.github.com>
Mon, 22 Jul 2013 23:01:15 +0000 (23:01 +0000)
committerlangou <langou@users.noreply.github.com>
Mon, 22 Jul 2013 23:01:15 +0000 (23:01 +0000)
patch sent to lapack mailing list on Sunday July 21st

In the input parameter checking, LDZ was not checked correctly
LDZ was checked against M instead of N essentially

lapacke/src/lapacke_cstegr_work.c
lapacke/src/lapacke_dstegr_work.c
lapacke/src/lapacke_sstegr_work.c
lapacke/src/lapacke_zstegr_work.c

index afd8896..a7ede3a 100644 (file)
@@ -55,7 +55,7 @@ lapack_int LAPACKE_cstegr_work( int matrix_order, char jobz, char range,
         lapack_int ldz_t = MAX(1,n);
         lapack_complex_float* z_t = NULL;
         /* Check leading dimension(s) */
-        if( ldz < *m ) {
+        if( ( LAPACKE_lsame( jobz, 'v' ) && ( ldz < ldz_t )  ) || ( ldz < 1 ) ) {
             info = -15;
             LAPACKE_xerbla( "LAPACKE_cstegr_work", info );
             return info;
index 0bec653..26ab31e 100644 (file)
@@ -54,7 +54,7 @@ lapack_int LAPACKE_dstegr_work( int matrix_order, char jobz, char range,
         lapack_int ldz_t = MAX(1,n);
         double* z_t = NULL;
         /* Check leading dimension(s) */
-        if( ldz < *m ) {
+        if( ( LAPACKE_lsame( jobz, 'v' ) && ( ldz < ldz_t )  ) || ( ldz < 1 ) ) {
             info = -15;
             LAPACKE_xerbla( "LAPACKE_dstegr_work", info );
             return info;
index 90188d2..54bc3d2 100644 (file)
@@ -54,7 +54,7 @@ lapack_int LAPACKE_sstegr_work( int matrix_order, char jobz, char range,
         lapack_int ldz_t = MAX(1,n);
         float* z_t = NULL;
         /* Check leading dimension(s) */
-        if( ldz < *m ) {
+        if( ( LAPACKE_lsame( jobz, 'v' ) && ( ldz < ldz_t )  ) || ( ldz < 1 ) ) {
             info = -15;
             LAPACKE_xerbla( "LAPACKE_sstegr_work", info );
             return info;
index ad56b96..3ed1894 100644 (file)
@@ -55,7 +55,7 @@ lapack_int LAPACKE_zstegr_work( int matrix_order, char jobz, char range,
         lapack_int ldz_t = MAX(1,n);
         lapack_complex_double* z_t = NULL;
         /* Check leading dimension(s) */
-        if( ldz < *m ) {
+        if( ( LAPACKE_lsame( jobz, 'v' ) && ( ldz < ldz_t )  ) || ( ldz < 1 ) ) {
             info = -15;
             LAPACKE_xerbla( "LAPACKE_zstegr_work", info );
             return info;