APPLYING INTEL PATCHES sent to Julie on Feb 19th 2016 by Dima from INTEL (dmitry...
authorjulie <julielangou@users.noreply.github.com>
Tue, 23 Feb 2016 06:11:24 +0000 (06:11 +0000)
committerjulie <julielangou@users.noreply.github.com>
Tue, 23 Feb 2016 06:11:24 +0000 (06:11 +0000)
[PATCH 41/42] Fix lapacke_?tpmqrt - avoid nancheck of unset data

LAPACKE/src/lapacke_ctpmqrt.c
LAPACKE/src/lapacke_dtpmqrt.c
LAPACKE/src/lapacke_stpmqrt.c
LAPACKE/src/lapacke_ztpmqrt.c

index bcb92a8..c9ec1a8 100644 (file)
@@ -41,6 +41,8 @@ lapack_int LAPACKE_ctpmqrt( int matrix_layout, char side, char trans,
                             lapack_complex_float* a, lapack_int lda,
                             lapack_complex_float* b, lapack_int ldb )
 {
+    lapack_int ncols_a, nrows_a;
+    lapack_int nrows_v;
     lapack_int info = 0;
     lapack_complex_float* work = NULL;
     if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
@@ -49,16 +51,22 @@ lapack_int LAPACKE_ctpmqrt( int matrix_layout, char side, char trans,
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
-    if( LAPACKE_cge_nancheck( matrix_layout, k, m, a, lda ) ) {
+    ncols_a = LAPACKE_lsame( side, 'L' ) ? n :
+                         ( LAPACKE_lsame( side, 'R' ) ? k : 0 );
+    nrows_a = LAPACKE_lsame( side, 'L' ) ? k :
+                         ( LAPACKE_lsame( side, 'R' ) ? m : 0 );
+    nrows_v = LAPACKE_lsame( side, 'L' ) ? m :
+                         ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+    if( LAPACKE_cge_nancheck( matrix_layout, nrows_a, ncols_a, a, lda ) ) {
         return -13;
     }
     if( LAPACKE_cge_nancheck( matrix_layout, m, n, b, ldb ) ) {
         return -15;
     }
-    if( LAPACKE_cge_nancheck( matrix_layout, ldt, nb, t, ldt ) ) {
+    if( LAPACKE_cge_nancheck( matrix_layout, nb, k, t, ldt ) ) {
         return -11;
     }
-    if( LAPACKE_cge_nancheck( matrix_layout, ldv, k, v, ldv ) ) {
+    if( LAPACKE_cge_nancheck( matrix_layout, nrows_v, k, v, ldv ) ) {
         return -9;
     }
 #endif
index d11f082..dbb559e 100644 (file)
@@ -40,6 +40,8 @@ lapack_int LAPACKE_dtpmqrt( int matrix_layout, char side, char trans,
                             double* a, lapack_int lda, double* b,
                             lapack_int ldb )
 {
+    lapack_int ncols_a, nrows_a;
+    lapack_int nrows_v;
     lapack_int info = 0;
     double* work = NULL;
     if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
@@ -48,16 +50,22 @@ lapack_int LAPACKE_dtpmqrt( int matrix_layout, char side, char trans,
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
-    if( LAPACKE_dge_nancheck( matrix_layout, k, m, a, lda ) ) {
+    ncols_a = LAPACKE_lsame( side, 'L' ) ? n :
+                         ( LAPACKE_lsame( side, 'R' ) ? k : 0 );
+    nrows_a = LAPACKE_lsame( side, 'L' ) ? k :
+                         ( LAPACKE_lsame( side, 'R' ) ? m : 0 );
+    nrows_v = LAPACKE_lsame( side, 'L' ) ? m :
+                         ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+    if( LAPACKE_dge_nancheck( matrix_layout, nrows_a, ncols_a, a, lda ) ) {
         return -13;
     }
     if( LAPACKE_dge_nancheck( matrix_layout, m, n, b, ldb ) ) {
         return -15;
     }
-    if( LAPACKE_dge_nancheck( matrix_layout, ldt, nb, t, ldt ) ) {
+    if( LAPACKE_dge_nancheck( matrix_layout, nb, k, t, ldt ) ) {
         return -11;
     }
-    if( LAPACKE_dge_nancheck( matrix_layout, ldv, k, v, ldv ) ) {
+    if( LAPACKE_dge_nancheck( matrix_layout, nrows_v, k, v, ldv ) ) {
         return -9;
     }
 #endif
index 43c266a..98c6848 100644 (file)
@@ -39,6 +39,8 @@ lapack_int LAPACKE_stpmqrt( int matrix_layout, char side, char trans,
                             lapack_int ldv, const float* t, lapack_int ldt,
                             float* a, lapack_int lda, float* b, lapack_int ldb )
 {
+    lapack_int ncols_a, nrows_a;
+    lapack_int nrows_v;
     lapack_int info = 0;
     float* work = NULL;
     if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
@@ -47,16 +49,22 @@ lapack_int LAPACKE_stpmqrt( int matrix_layout, char side, char trans,
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
-    if( LAPACKE_sge_nancheck( matrix_layout, k, m, a, lda ) ) {
+    ncols_a = LAPACKE_lsame( side, 'L' ) ? n :
+                         ( LAPACKE_lsame( side, 'R' ) ? k : 0 );
+    nrows_a = LAPACKE_lsame( side, 'L' ) ? k :
+                         ( LAPACKE_lsame( side, 'R' ) ? m : 0 );
+    nrows_v = LAPACKE_lsame( side, 'L' ) ? m :
+                         ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+    if( LAPACKE_sge_nancheck( matrix_layout, nrows_a, ncols_a, a, lda ) ) {
         return -13;
     }
     if( LAPACKE_sge_nancheck( matrix_layout, m, n, b, ldb ) ) {
         return -15;
     }
-    if( LAPACKE_sge_nancheck( matrix_layout, ldt, nb, t, ldt ) ) {
+    if( LAPACKE_sge_nancheck( matrix_layout, nb, k, t, ldt ) ) {
         return -11;
     }
-    if( LAPACKE_sge_nancheck( matrix_layout, ldv, k, v, ldv ) ) {
+    if( LAPACKE_sge_nancheck( matrix_layout, nrows_v, k, v, ldv ) ) {
         return -9;
     }
 #endif
index a591363..bef6205 100644 (file)
@@ -41,6 +41,8 @@ lapack_int LAPACKE_ztpmqrt( int matrix_layout, char side, char trans,
                             lapack_complex_double* a, lapack_int lda,
                             lapack_complex_double* b, lapack_int ldb )
 {
+    lapack_int ncols_a, nrows_a;
+    lapack_int nrows_v;
     lapack_int info = 0;
     lapack_complex_double* work = NULL;
     if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
@@ -49,16 +51,22 @@ lapack_int LAPACKE_ztpmqrt( int matrix_layout, char side, char trans,
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
-    if( LAPACKE_zge_nancheck( matrix_layout, k, m, a, lda ) ) {
+    ncols_a = LAPACKE_lsame( side, 'L' ) ? n :
+                         ( LAPACKE_lsame( side, 'R' ) ? k : 0 );
+    nrows_a = LAPACKE_lsame( side, 'L' ) ? k :
+                         ( LAPACKE_lsame( side, 'R' ) ? m : 0 );
+    nrows_v = LAPACKE_lsame( side, 'L' ) ? m :
+                         ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+    if( LAPACKE_zge_nancheck( matrix_layout, nrows_a, ncols_a, a, lda ) ) {
         return -13;
     }
     if( LAPACKE_zge_nancheck( matrix_layout, m, n, b, ldb ) ) {
         return -15;
     }
-    if( LAPACKE_zge_nancheck( matrix_layout, ldt, nb, t, ldt ) ) {
+    if( LAPACKE_zge_nancheck( matrix_layout, nb, k, t, ldt ) ) {
         return -11;
     }
-    if( LAPACKE_zge_nancheck( matrix_layout, ldv, k, v, ldv ) ) {
+    if( LAPACKE_zge_nancheck( matrix_layout, nrows_v, k, v, ldv ) ) {
         return -9;
     }
 #endif