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:12:17 +0000 (06:12 +0000)
committerjulie <julielangou@users.noreply.github.com>
Tue, 23 Feb 2016 06:12:17 +0000 (06:12 +0000)
[PATCH 42/42] Fix lapacke_?tprfb - avoid nancheck of unset data

---> LAST ONE!!!

LAPACKE/src/lapacke_ctprfb.c
LAPACKE/src/lapacke_dtprfb.c
LAPACKE/src/lapacke_stprfb.c
LAPACKE/src/lapacke_ztprfb.c

index a007f92..45840e1 100644 (file)
@@ -41,6 +41,7 @@ lapack_int LAPACKE_ctprfb( int matrix_layout, char side, char trans, char direct
                            lapack_complex_float* a, lapack_int lda,
                            lapack_complex_float* b, lapack_int ldb )
 {
+    lapack_int ncols_v, nrows_v;
     lapack_int info = 0;
     lapack_int ldwork;
     lapack_int work_size;
@@ -51,16 +52,28 @@ lapack_int LAPACKE_ctprfb( int matrix_layout, char side, char trans, char direct
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
+    if( LAPACKE_lsame( storev, 'C' ) ) {
+        ncols_v = k;
+        nrows_v = LAPACKE_lsame( side, 'L' ) ? m :
+                             ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+    } else if( LAPACKE_lsame( storev, 'R' ) ) {
+        ncols_v = LAPACKE_lsame( side, 'L' ) ? m :
+                             ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+        nrows_v = k;
+    } else {
+        ncols_v = 0;
+        nrows_v = 0;
+    }
     if( LAPACKE_cge_nancheck( matrix_layout, k, m, a, lda ) ) {
         return -14;
     }
     if( LAPACKE_cge_nancheck( matrix_layout, m, n, b, ldb ) ) {
         return -16;
     }
-    if( LAPACKE_cge_nancheck( matrix_layout, ldt, k, t, ldt ) ) {
+    if( LAPACKE_cge_nancheck( matrix_layout, k, k, t, ldt ) ) {
         return -12;
     }
-    if( LAPACKE_cge_nancheck( matrix_layout, ldv, k, v, ldv ) ) {
+    if( LAPACKE_cge_nancheck( matrix_layout, nrows_v, ncols_v, v, ldv ) ) {
         return -10;
     }
 #endif
index f674639..0aa5e91 100644 (file)
@@ -39,6 +39,7 @@ lapack_int LAPACKE_dtprfb( int matrix_layout, char side, char trans, char direct
                            lapack_int ldv, const double* t, lapack_int ldt,
                            double* a, lapack_int lda, double* b, lapack_int ldb )
 {
+    lapack_int ncols_v, nrows_v;
     lapack_int info = 0;
     lapack_int ldwork;
     lapack_int work_size;
@@ -49,16 +50,28 @@ lapack_int LAPACKE_dtprfb( int matrix_layout, char side, char trans, char direct
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
+    if( LAPACKE_lsame( storev, 'C' ) ) {
+        ncols_v = k;
+        nrows_v = LAPACKE_lsame( side, 'L' ) ? m :
+                             ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+    } else if( LAPACKE_lsame( storev, 'R' ) ) {
+        ncols_v = LAPACKE_lsame( side, 'L' ) ? m :
+                             ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+        nrows_v = k;
+    } else {
+        ncols_v = 0;
+        nrows_v = 0;
+    }
     if( LAPACKE_dge_nancheck( matrix_layout, k, m, a, lda ) ) {
         return -14;
     }
     if( LAPACKE_dge_nancheck( matrix_layout, m, n, b, ldb ) ) {
         return -16;
     }
-    if( LAPACKE_dge_nancheck( matrix_layout, ldt, k, t, ldt ) ) {
+    if( LAPACKE_dge_nancheck( matrix_layout, k, k, t, ldt ) ) {
         return -12;
     }
-    if( LAPACKE_dge_nancheck( matrix_layout, ldv, k, v, ldv ) ) {
+    if( LAPACKE_dge_nancheck( matrix_layout, nrows_v, ncols_v, v, ldv ) ) {
         return -10;
     }
 #endif
index 217a91f..cc83808 100644 (file)
@@ -39,6 +39,7 @@ lapack_int LAPACKE_stprfb( int matrix_layout, char side, char trans, char direct
                            lapack_int ldv, const float* t, lapack_int ldt,
                            float* a, lapack_int lda, float* b, lapack_int ldb)
 {
+    lapack_int ncols_v, nrows_v;
     lapack_int info = 0;
     lapack_int ldwork;
     lapack_int work_size;
@@ -49,16 +50,28 @@ lapack_int LAPACKE_stprfb( int matrix_layout, char side, char trans, char direct
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
+    if( LAPACKE_lsame( storev, 'C' ) ) {
+        ncols_v = k;
+        nrows_v = LAPACKE_lsame( side, 'L' ) ? m :
+                             ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+    } else if( LAPACKE_lsame( storev, 'R' ) ) {
+        ncols_v = LAPACKE_lsame( side, 'L' ) ? m :
+                             ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+        nrows_v = k;
+    } else {
+        ncols_v = 0;
+        nrows_v = 0;
+    }
     if( LAPACKE_sge_nancheck( matrix_layout, k, m, a, lda ) ) {
         return -14;
     }
     if( LAPACKE_sge_nancheck( matrix_layout, m, n, b, ldb ) ) {
         return -16;
     }
-    if( LAPACKE_sge_nancheck( matrix_layout, ldt, k, t, ldt ) ) {
+    if( LAPACKE_sge_nancheck( matrix_layout, k, k, t, ldt ) ) {
         return -12;
     }
-    if( LAPACKE_sge_nancheck( matrix_layout, ldv, k, v, ldv ) ) {
+    if( LAPACKE_sge_nancheck( matrix_layout, nrows_v, ncols_v, v, ldv ) ) {
         return -10;
     }
 #endif
index 63a50bd..1698bd5 100644 (file)
@@ -41,6 +41,7 @@ lapack_int LAPACKE_ztprfb( int matrix_layout, char side, char trans, char direct
                            lapack_complex_double* a, lapack_int lda,
                            lapack_complex_double* b, lapack_int ldb)
 {
+    lapack_int ncols_v, nrows_v;
     lapack_int info = 0;
     lapack_int ldwork;
     lapack_int work_size;
@@ -51,16 +52,28 @@ lapack_int LAPACKE_ztprfb( int matrix_layout, char side, char trans, char direct
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
+    if( LAPACKE_lsame( storev, 'C' ) ) {
+        ncols_v = k;
+        nrows_v = LAPACKE_lsame( side, 'L' ) ? m :
+                             ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+    } else if( LAPACKE_lsame( storev, 'R' ) ) {
+        ncols_v = LAPACKE_lsame( side, 'L' ) ? m :
+                             ( LAPACKE_lsame( side, 'R' ) ? n : 0 );
+        nrows_v = k;
+    } else {
+        ncols_v = 0;
+        nrows_v = 0;
+    }
     if( LAPACKE_zge_nancheck( matrix_layout, k, m, a, lda ) ) {
         return -14;
     }
     if( LAPACKE_zge_nancheck( matrix_layout, m, n, b, ldb ) ) {
         return -16;
     }
-    if( LAPACKE_zge_nancheck( matrix_layout, ldt, k, t, ldt ) ) {
+    if( LAPACKE_zge_nancheck( matrix_layout, k, k, t, ldt ) ) {
         return -12;
     }
-    if( LAPACKE_zge_nancheck( matrix_layout, ldv, k, v, ldv ) ) {
+    if( LAPACKE_zge_nancheck( matrix_layout, nrows_v, ncols_v, v, ldv ) ) {
         return -10;
     }
 #endif