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:09:01 +0000 (06:09 +0000)
committerjulie <julielangou@users.noreply.github.com>
Tue, 23 Feb 2016 06:09:01 +0000 (06:09 +0000)
[PATCH 38/42] Fix lapacke_???swapr* - missing parameter lda, and more

- lda should not be missed
- a has leading dimension lda, not n
- a_t has leading dimension lda_t, not n

13 files changed:
LAPACKE/include/lapacke.h
LAPACKE/src/lapacke_cheswapr.c
LAPACKE/src/lapacke_cheswapr_work.c
LAPACKE/src/lapacke_csyswapr.c
LAPACKE/src/lapacke_csyswapr_work.c
LAPACKE/src/lapacke_dsyswapr.c
LAPACKE/src/lapacke_dsyswapr_work.c
LAPACKE/src/lapacke_ssyswapr.c
LAPACKE/src/lapacke_ssyswapr_work.c
LAPACKE/src/lapacke_zheswapr.c
LAPACKE/src/lapacke_zheswapr_work.c
LAPACKE/src/lapacke_zsyswapr.c
LAPACKE/src/lapacke_zsyswapr_work.c

index 116009a..84a1f47 100644 (file)
@@ -10472,11 +10472,11 @@ lapack_int LAPACKE_cbbcsd_work( int matrix_layout, char jobu1, char jobu2,
                                 float* b22d, float* b22e, float* rwork,
                                 lapack_int lrwork );
 lapack_int LAPACKE_cheswapr( int matrix_layout, char uplo, lapack_int n,
-                             lapack_complex_float* a, lapack_int i1,
-                             lapack_int i2 );
+                             lapack_complex_float* a, lapack_int lda,
+                             lapack_int i1, lapack_int i2 );
 lapack_int LAPACKE_cheswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  lapack_complex_float* a, lapack_int i1,
-                                  lapack_int i2 );
+                                  lapack_complex_float* a, lapack_int lda,
+                                  lapack_int i1, lapack_int i2 );
 lapack_int LAPACKE_chetri2( int matrix_layout, char uplo, lapack_int n,
                             lapack_complex_float* a, lapack_int lda,
                             const lapack_int* ipiv );
@@ -10508,11 +10508,11 @@ lapack_int LAPACKE_csyconv_work( int matrix_layout, char uplo, char way,
                                  lapack_int lda, const lapack_int* ipiv,
                                  lapack_complex_float* e );
 lapack_int LAPACKE_csyswapr( int matrix_layout, char uplo, lapack_int n,
-                             lapack_complex_float* a, lapack_int i1,
-                             lapack_int i2 );
+                             lapack_complex_float* a, lapack_int lda,
+                             lapack_int i1, lapack_int i2 );
 lapack_int LAPACKE_csyswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  lapack_complex_float* a, lapack_int i1,
-                                  lapack_int i2 );
+                                  lapack_complex_float* a, lapack_int lda,
+                                  lapack_int i1, lapack_int i2 );
 lapack_int LAPACKE_csytri2( int matrix_layout, char uplo, lapack_int n,
                             lapack_complex_float* a, lapack_int lda,
                             const lapack_int* ipiv );
@@ -10674,9 +10674,11 @@ lapack_int LAPACKE_dsyconv_work( int matrix_layout, char uplo, char way,
                                  lapack_int n, double* a, lapack_int lda,
                                  const lapack_int* ipiv, double* e );
 lapack_int LAPACKE_dsyswapr( int matrix_layout, char uplo, lapack_int n,
-                             double* a, lapack_int i1, lapack_int i2 );
+                             double* a, lapack_int lda, lapack_int i1,
+                             lapack_int i2 );
 lapack_int LAPACKE_dsyswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  double* a, lapack_int i1, lapack_int i2 );
+                                  double* a, lapack_int lda, lapack_int i1,
+                                  lapack_int i2 );
 lapack_int LAPACKE_dsytri2( int matrix_layout, char uplo, lapack_int n,
                             double* a, lapack_int lda, const lapack_int* ipiv );
 lapack_int LAPACKE_dsytri2_work( int matrix_layout, char uplo, lapack_int n,
@@ -10767,9 +10769,11 @@ lapack_int LAPACKE_ssyconv_work( int matrix_layout, char uplo, char way,
                                  lapack_int n, float* a, lapack_int lda,
                                  const lapack_int* ipiv, float* e );
 lapack_int LAPACKE_ssyswapr( int matrix_layout, char uplo, lapack_int n,
-                             float* a, lapack_int i1, lapack_int i2 );
+                             float* a, lapack_int lda, lapack_int i1,
+                             lapack_int i2 );
 lapack_int LAPACKE_ssyswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  float* a, lapack_int i1, lapack_int i2 );
+                                  float* a, lapack_int lda, lapack_int i1,
+                                  lapack_int i2 );
 lapack_int LAPACKE_ssytri2( int matrix_layout, char uplo, lapack_int n, float* a,
                             lapack_int lda, const lapack_int* ipiv );
 lapack_int LAPACKE_ssytri2_work( int matrix_layout, char uplo, lapack_int n,
@@ -10813,11 +10817,11 @@ lapack_int LAPACKE_zbbcsd_work( int matrix_layout, char jobu1, char jobu2,
                                 double* b22d, double* b22e, double* rwork,
                                 lapack_int lrwork );
 lapack_int LAPACKE_zheswapr( int matrix_layout, char uplo, lapack_int n,
-                             lapack_complex_double* a, lapack_int i1,
-                             lapack_int i2 );
+                             lapack_complex_double* a, lapack_int lda,
+                             lapack_int i1, lapack_int i2 );
 lapack_int LAPACKE_zheswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  lapack_complex_double* a, lapack_int i1,
-                                  lapack_int i2 );
+                                  lapack_complex_double* a, lapack_int lda,
+                                  lapack_int i1, lapack_int i2 );
 lapack_int LAPACKE_zhetri2( int matrix_layout, char uplo, lapack_int n,
                             lapack_complex_double* a, lapack_int lda,
                             const lapack_int* ipiv );
@@ -10849,11 +10853,11 @@ lapack_int LAPACKE_zsyconv_work( int matrix_layout, char uplo, char way,
                                  lapack_int lda, const lapack_int* ipiv,
                                  lapack_complex_double* e );
 lapack_int LAPACKE_zsyswapr( int matrix_layout, char uplo, lapack_int n,
-                             lapack_complex_double* a, lapack_int i1,
-                             lapack_int i2 );
+                             lapack_complex_double* a, lapack_int lda,
+                             lapack_int i1, lapack_int i2 );
 lapack_int LAPACKE_zsyswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  lapack_complex_double* a, lapack_int i1,
-                                  lapack_int i2 );
+                                  lapack_complex_double* a, lapack_int lda,
+                                  lapack_int i1, lapack_int i2 );
 lapack_int LAPACKE_zsytri2( int matrix_layout, char uplo, lapack_int n,
                             lapack_complex_double* a, lapack_int lda,
                             const lapack_int* ipiv );
@@ -17060,9 +17064,8 @@ void LAPACK_cbbcsd( char* jobu1, char* jobu2,
                     float* b12e, float* b21d, float* b21e,
                     float* b22d, float* b22e, float* rwork,
                     lapack_int* lrwork , lapack_int *info );
-void LAPACK_cheswapr( char* uplo, lapack_int* n,
-                      lapack_complex_float* a, lapack_int* i1,
-                      lapack_int* i2 );
+void LAPACK_cheswapr( char* uplo, lapack_int* n, lapack_complex_float* a,
+                      lapack_int* lda, lapack_int* i1, lapack_int* i2 );
 void LAPACK_chetri2( char* uplo, lapack_int* n,
                      lapack_complex_float* a, lapack_int* lda,
                      const lapack_int* ipiv,
@@ -17081,8 +17084,8 @@ void LAPACK_csyconv( char* uplo, char* way,
                      lapack_int* lda, const lapack_int* ipiv,
                      lapack_complex_float* e , lapack_int *info );
 void LAPACK_csyswapr( char* uplo, lapack_int* n,
-                      lapack_complex_float* a, lapack_int* i1,
-                      lapack_int* i2 );
+                      lapack_complex_float* a, , lapack_int lda,
+                      lapack_int* i1, lapack_int* i2 );
 void LAPACK_csytri2( char* uplo, lapack_int* n,
                      lapack_complex_float* a, lapack_int* lda,
                      const lapack_int* ipiv,
@@ -17174,7 +17177,7 @@ void LAPACK_dorcsd2by1( char* jobu1, char* jobu2,
 void LAPACK_dsyconv( char* uplo, char* way,
                      lapack_int* n, double* a, lapack_int* lda,
                      const lapack_int* ipiv, double* e , lapack_int *info );
-void LAPACK_dsyswapr( char* uplo, lapack_int* n,
+void LAPACK_dsyswapr( char* uplo, lapack_int* n, , lapack_int lda,
                       double* a, lapack_int* i1, lapack_int* i2 );
 void LAPACK_dsytri2( char* uplo, lapack_int* n,
                      double* a, lapack_int* lda,
@@ -17228,7 +17231,7 @@ void LAPACK_sorcsd2by1( char* jobu1, char* jobu2,
 void LAPACK_ssyconv( char* uplo, char* way,
                      lapack_int* n, float* a, lapack_int* lda,
                      const lapack_int* ipiv, float* e , lapack_int *info );
-void LAPACK_ssyswapr( char* uplo, lapack_int* n,
+void LAPACK_ssyswapr( char* uplo, lapack_int* n, lapack_int lda,
                       float* a, lapack_int* i1, lapack_int* i2 );
 void LAPACK_ssytri2( char* uplo, lapack_int* n,
                      float* a, lapack_int* lda,
@@ -17254,9 +17257,8 @@ void LAPACK_zbbcsd( char* jobu1, char* jobu2,
                     double* b12e, double* b21d, double* b21e,
                     double* b22d, double* b22e, double* rwork,
                     lapack_int* lrwork , lapack_int *info );
-void LAPACK_zheswapr( char* uplo, lapack_int* n,
-                      lapack_complex_double* a, lapack_int* i1,
-                      lapack_int* i2 );
+void LAPACK_zheswapr( char* uplo, lapack_int* n, lapack_complex_double* a,
+                      lapack_int* lda, lapack_int* i1, lapack_int* i2 );
 void LAPACK_zhetri2( char* uplo, lapack_int* n,
                      lapack_complex_double* a, lapack_int* lda,
                      const lapack_int* ipiv,
@@ -17275,7 +17277,7 @@ void LAPACK_zsyconv( char* uplo, char* way,
                      lapack_int* n, lapack_complex_double* a,
                      lapack_int* lda, const lapack_int* ipiv,
                      lapack_complex_double* e , lapack_int *info );
-void LAPACK_zsyswapr( char* uplo, lapack_int* n,
+void LAPACK_zsyswapr( char* uplo, lapack_int* n, , lapack_int lda,
                       lapack_complex_double* a, lapack_int* i1,
                       lapack_int* i2 );
 void LAPACK_zsytri2( char* uplo, lapack_int* n,
index 7963eb3..268816b 100644 (file)
@@ -34,8 +34,8 @@
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_cheswapr( int matrix_layout, char uplo, lapack_int n,
-                             lapack_complex_float* a, lapack_int i1,
-                             lapack_int i2 )
+                             lapack_complex_float* a, lapack_int lda,
+                             lapack_int i1, lapack_int i2 )
 {
     if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
         LAPACKE_xerbla( "LAPACKE_cheswapr", -1 );
@@ -43,9 +43,9 @@ lapack_int LAPACKE_cheswapr( int matrix_layout, char uplo, lapack_int n,
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
-    if( LAPACKE_che_nancheck( matrix_layout, uplo, n, a, n ) ) {
+    if( LAPACKE_che_nancheck( matrix_layout, uplo, n, a, lda ) ) {
         return -4;
     }
 #endif
-    return LAPACKE_cheswapr_work( matrix_layout, uplo, n, a, i1, i2 );
+    return LAPACKE_cheswapr_work( matrix_layout, uplo, n, a, lda, i1, i2 );
 }
index e41b3a2..b6d4621 100644 (file)
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_cheswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  lapack_complex_float* a, lapack_int i1,
-                                  lapack_int i2 )
+                                  lapack_complex_float* a, lapack_int lda,
+                                  lapack_int i1, lapack_int i2 )
 {
     lapack_int info = 0;
     if( matrix_layout == LAPACK_COL_MAJOR ) {
         /* Call LAPACK function and adjust info */
-        LAPACK_cheswapr( &uplo, &n, a, &i1, &i2 );
+        LAPACK_cheswapr( &uplo, &n, a, &lda, &i1, &i2 );
         if( info < 0 ) {
             info = info - 1;
         }
     } else if( matrix_layout == LAPACK_ROW_MAJOR ) {
+        lapack_int lda_t = MAX(1,n);
         lapack_complex_float* a_t = NULL;
         /* Allocate memory for temporary array(s) */
         a_t = (lapack_complex_float*)
-            LAPACKE_malloc( sizeof(lapack_complex_float) * n * MAX(1,n) );
+            LAPACKE_malloc( sizeof(lapack_complex_float) * lda_t * MAX(1,n) );
         if( a_t == NULL ) {
             info = LAPACK_TRANSPOSE_MEMORY_ERROR;
             goto exit_level_0;
         }
         /* Transpose input matrices */
-        LAPACKE_che_trans( matrix_layout, uplo, n, a, n, a_t, n );
+        LAPACKE_che_trans( matrix_layout, uplo, n, a, lda, a_t, lda_t );
         /* Call LAPACK function and adjust info */
-        LAPACK_cheswapr( &uplo, &n, a_t, &i1, &i2 );
+        LAPACK_cheswapr( &uplo, &n, a_t, &lda_t, &i1, &i2 );
         info = 0;  /* LAPACK call is ok! */
         /* Transpose output matrices */
-        LAPACKE_che_trans( LAPACK_COL_MAJOR, uplo, n, a_t, n, a, n );
+        LAPACKE_che_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
         /* Release memory and exit */
         LAPACKE_free( a_t );
 exit_level_0:
index bb6992b..51e1b89 100644 (file)
@@ -34,8 +34,8 @@
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_csyswapr( int matrix_layout, char uplo, lapack_int n,
-                             lapack_complex_float* a, lapack_int i1,
-                             lapack_int i2 )
+                             lapack_complex_float* a, lapack_int lda,
+                             lapack_int i1, lapack_int i2 )
 {
     if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
         LAPACKE_xerbla( "LAPACKE_csyswapr", -1 );
@@ -43,9 +43,9 @@ lapack_int LAPACKE_csyswapr( int matrix_layout, char uplo, lapack_int n,
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
-    if( LAPACKE_csy_nancheck( matrix_layout, uplo, n, a, n ) ) {
+    if( LAPACKE_csy_nancheck( matrix_layout, uplo, n, a, lda ) ) {
         return -4;
     }
 #endif
-    return LAPACKE_csyswapr_work( matrix_layout, uplo, n, a, i1, i2 );
+    return LAPACKE_csyswapr_work( matrix_layout, uplo, n, a, lda, i1, i2 );
 }
index ff8507b..5ce2893 100644 (file)
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_csyswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  lapack_complex_float* a, lapack_int i1,
-                                  lapack_int i2 )
+                                  lapack_complex_float* a, lapack_int lda,
+                                  lapack_int i1, lapack_int i2 )
 {
     lapack_int info = 0;
     if( matrix_layout == LAPACK_COL_MAJOR ) {
         /* Call LAPACK function and adjust info */
-        LAPACK_csyswapr( &uplo, &n, a, &i1, &i2 );
+        LAPACK_csyswapr( &uplo, &n, a, &lda, &i1, &i2 );
         if( info < 0 ) {
             info = info - 1;
         }
     } else if( matrix_layout == LAPACK_ROW_MAJOR ) {
+        lapack_int lda_t = MAX(1,n);
         lapack_complex_float* a_t = NULL;
         /* Allocate memory for temporary array(s) */
         a_t = (lapack_complex_float*)
-            LAPACKE_malloc( sizeof(lapack_complex_float) * n * MAX(1,n) );
+            LAPACKE_malloc( sizeof(lapack_complex_float) * lda_t * MAX(1,n) );
         if( a_t == NULL ) {
             info = LAPACK_TRANSPOSE_MEMORY_ERROR;
             goto exit_level_0;
         }
         /* Transpose input matrices */
-        LAPACKE_csy_trans( matrix_layout, uplo, n, a, n, a_t, n );
+        LAPACKE_csy_trans( matrix_layout, uplo, n, a, lda, a_t, lda_t );
         /* Call LAPACK function and adjust info */
-        LAPACK_csyswapr( &uplo, &n, a_t, &i1, &i2 );
+        LAPACK_csyswapr( &uplo, &n, a_t, &lda_t, &i1, &i2 );
         info = 0;  /* LAPACK call is ok! */
         /* Transpose output matrices */
-        LAPACKE_csy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, n, a, n );
+        LAPACKE_csy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
         /* Release memory and exit */
         LAPACKE_free( a_t );
 exit_level_0:
index 728ef09..f8eada2 100644 (file)
@@ -34,7 +34,7 @@
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_dsyswapr( int matrix_layout, char uplo, lapack_int n,
-                             double* a, lapack_int i1, lapack_int i2 )
+                             double* a, lapack_int lda, lapack_int i1, lapack_int i2 )
 {
     if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
         LAPACKE_xerbla( "LAPACKE_dsyswapr", -1 );
@@ -42,9 +42,9 @@ lapack_int LAPACKE_dsyswapr( int matrix_layout, char uplo, lapack_int n,
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
-    if( LAPACKE_dsy_nancheck( matrix_layout, uplo, n, a, n ) ) {
+    if( LAPACKE_dsy_nancheck( matrix_layout, uplo, n, a, lda ) ) {
         return -4;
     }
 #endif
-    return LAPACKE_dsyswapr_work( matrix_layout, uplo, n, a, i1, i2 );
+    return LAPACKE_dsyswapr_work( matrix_layout, uplo, n, a, lda, i1, i2 );
 }
index 2855593..117bdbd 100644 (file)
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_dsyswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  double* a, lapack_int i1, lapack_int i2 )
+                                  double* a, lapack_int lda,
+                                  lapack_int i1, lapack_int i2 )
 {
     lapack_int info = 0;
     if( matrix_layout == LAPACK_COL_MAJOR ) {
         /* Call LAPACK function and adjust info */
-        LAPACK_dsyswapr( &uplo, &n, a, &i1, &i2 );
+        LAPACK_dsyswapr( &uplo, &n, a, &lda, &i1, &i2 );
         if( info < 0 ) {
             info = info - 1;
         }
     } else if( matrix_layout == LAPACK_ROW_MAJOR ) {
+        lapack_int lda_t = MAX(1,n);
         double* a_t = NULL;
         /* Allocate memory for temporary array(s) */
-        a_t = (double*)LAPACKE_malloc( sizeof(double) * n * MAX(1,n) );
+        a_t = (double*)LAPACKE_malloc( sizeof(double) * lda_t * MAX(1,n) );
         if( a_t == NULL ) {
             info = LAPACK_TRANSPOSE_MEMORY_ERROR;
             goto exit_level_0;
         }
         /* Transpose input matrices */
-        LAPACKE_dsy_trans( matrix_layout, uplo, n, a, n, a_t, n );
+        LAPACKE_dsy_trans( matrix_layout, uplo, n, a, lda, a_t, lda_t );
         /* Call LAPACK function and adjust info */
-        LAPACK_dsyswapr( &uplo, &n, a_t, &i1, &i2 );
+        LAPACK_dsyswapr( &uplo, &n, a_t, &lda_t, &i1, &i2 );
         info = 0;  /* LAPACK call is ok! */
         /* Transpose output matrices */
-        LAPACKE_dsy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, n, a, n );
+        LAPACKE_dsy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
         /* Release memory and exit */
         LAPACKE_free( a_t );
 exit_level_0:
index c207edf..fbbecff 100644 (file)
@@ -34,7 +34,7 @@
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_ssyswapr( int matrix_layout, char uplo, lapack_int n,
-                             float* a, lapack_int i1, lapack_int i2 )
+                             float* a, lapack_int lda, lapack_int i1, lapack_int i2 )
 {
     if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
         LAPACKE_xerbla( "LAPACKE_ssyswapr", -1 );
@@ -42,9 +42,9 @@ lapack_int LAPACKE_ssyswapr( int matrix_layout, char uplo, lapack_int n,
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
-    if( LAPACKE_ssy_nancheck( matrix_layout, uplo, n, a, n ) ) {
+    if( LAPACKE_ssy_nancheck( matrix_layout, uplo, n, a, lda ) ) {
         return -4;
     }
 #endif
-    return LAPACKE_ssyswapr_work( matrix_layout, uplo, n, a, i1, i2 );
+    return LAPACKE_ssyswapr_work( matrix_layout, uplo, n, a, lda, i1, i2 );
 }
index e138158..b157ac6 100644 (file)
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_ssyswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  float* a, lapack_int i1, lapack_int i2 )
+                                  float* a, lapack_int lda,
+                                  lapack_int i1, lapack_int i2 )
 {
     lapack_int info = 0;
     if( matrix_layout == LAPACK_COL_MAJOR ) {
         /* Call LAPACK function and adjust info */
-        LAPACK_ssyswapr( &uplo, &n, a, &i1, &i2 );
+        LAPACK_ssyswapr( &uplo, &n, a, &lda, &i1, &i2 );
         if( info < 0 ) {
             info = info - 1;
         }
     } else if( matrix_layout == LAPACK_ROW_MAJOR ) {
+        lapack_int lda_t = MAX(1,n);
         float* a_t = NULL;
         /* Allocate memory for temporary array(s) */
-        a_t = (float*)LAPACKE_malloc( sizeof(float) * n * MAX(1,n) );
+        a_t = (float*)LAPACKE_malloc( sizeof(float) * lda_t * MAX(1,n) );
         if( a_t == NULL ) {
             info = LAPACK_TRANSPOSE_MEMORY_ERROR;
             goto exit_level_0;
         }
         /* Transpose input matrices */
-        LAPACKE_ssy_trans( matrix_layout, uplo, n, a, n, a_t, n );
+        LAPACKE_ssy_trans( matrix_layout, uplo, n, a, lda, a_t, lda_t );
         /* Call LAPACK function and adjust info */
-        LAPACK_ssyswapr( &uplo, &n, a_t, &i1, &i2 );
+        LAPACK_ssyswapr( &uplo, &n, a_t, &lda_t, &i1, &i2 );
         info = 0;  /* LAPACK call is ok! */
         /* Transpose output matrices */
-        LAPACKE_ssy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, n, a, n );
+        LAPACKE_ssy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
         /* Release memory and exit */
         LAPACKE_free( a_t );
 exit_level_0:
index 93350fb..28edca6 100644 (file)
@@ -34,8 +34,8 @@
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_zheswapr( int matrix_layout, char uplo, lapack_int n,
-                             lapack_complex_double* a, lapack_int i1,
-                             lapack_int i2 )
+                             lapack_complex_double* a, lapack_int lda,
+                             lapack_int i1, lapack_int i2 )
 {
     if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
         LAPACKE_xerbla( "LAPACKE_zheswapr", -1 );
@@ -43,9 +43,9 @@ lapack_int LAPACKE_zheswapr( int matrix_layout, char uplo, lapack_int n,
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
-    if( LAPACKE_zhe_nancheck( matrix_layout, uplo, n, a, n ) ) {
+    if( LAPACKE_zhe_nancheck( matrix_layout, uplo, n, a, lda ) ) {
         return -4;
     }
 #endif
-    return LAPACKE_zheswapr_work( matrix_layout, uplo, n, a, i1, i2 );
+    return LAPACKE_zheswapr_work( matrix_layout, uplo, n, a, lda, i1, i2 );
 }
index e62f987..94dc2fc 100644 (file)
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_zheswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  lapack_complex_double* a, lapack_int i1,
-                                  lapack_int i2 )
+                                  lapack_complex_double* a, lapack_int lda,
+                                  lapack_int i1, lapack_int i2 )
 {
     lapack_int info = 0;
     if( matrix_layout == LAPACK_COL_MAJOR ) {
         /* Call LAPACK function and adjust info */
-        LAPACK_zheswapr( &uplo, &n, a, &i1, &i2 );
+        LAPACK_zheswapr( &uplo, &n, a, &lda, &i1, &i2 );
         if( info < 0 ) {
             info = info - 1;
         }
     } else if( matrix_layout == LAPACK_ROW_MAJOR ) {
+        lapack_int lda_t = MAX(1,n);
         lapack_complex_double* a_t = NULL;
         /* Allocate memory for temporary array(s) */
         a_t = (lapack_complex_double*)
-            LAPACKE_malloc( sizeof(lapack_complex_double) * n * MAX(1,n) );
+            LAPACKE_malloc( sizeof(lapack_complex_double) * lda_t * MAX(1,n) );
         if( a_t == NULL ) {
             info = LAPACK_TRANSPOSE_MEMORY_ERROR;
             goto exit_level_0;
         }
         /* Transpose input matrices */
-        LAPACKE_zhe_trans( matrix_layout, uplo, n, a, n, a_t, n );
+        LAPACKE_zhe_trans( matrix_layout, uplo, n, a, lda, a_t, lda_t );
         /* Call LAPACK function and adjust info */
-        LAPACK_zheswapr( &uplo, &n, a_t, &i1, &i2 );
+        LAPACK_zheswapr( &uplo, &n, a_t, &lda_t, &i1, &i2 );
         info = 0;  /* LAPACK call is ok! */
         /* Transpose output matrices */
-        LAPACKE_zhe_trans( LAPACK_COL_MAJOR, uplo, n, a_t, n, a, n );
+        LAPACKE_zhe_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
         /* Release memory and exit */
         LAPACKE_free( a_t );
 exit_level_0:
index 46e948d..777f2b4 100644 (file)
@@ -34,8 +34,8 @@
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_zsyswapr( int matrix_layout, char uplo, lapack_int n,
-                             lapack_complex_double* a, lapack_int i1,
-                             lapack_int i2 )
+                             lapack_complex_double* a, lapack_int lda,
+                             lapack_int i1, lapack_int i2 )
 {
     if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
         LAPACKE_xerbla( "LAPACKE_zsyswapr", -1 );
@@ -43,9 +43,9 @@ lapack_int LAPACKE_zsyswapr( int matrix_layout, char uplo, lapack_int n,
     }
 #ifndef LAPACK_DISABLE_NAN_CHECK
     /* Optionally check input matrices for NaNs */
-    if( LAPACKE_zsy_nancheck( matrix_layout, uplo, n, a, n ) ) {
+    if( LAPACKE_zsy_nancheck( matrix_layout, uplo, n, a, lda ) ) {
         return -4;
     }
 #endif
-    return LAPACKE_zsyswapr_work( matrix_layout, uplo, n, a, i1, i2 );
+    return LAPACKE_zsyswapr_work( matrix_layout, uplo, n, a, lda, i1, i2 );
 }
index 1959a23..cfe9649 100644 (file)
 #include "lapacke_utils.h"
 
 lapack_int LAPACKE_zsyswapr_work( int matrix_layout, char uplo, lapack_int n,
-                                  lapack_complex_double* a, lapack_int i1,
-                                  lapack_int i2 )
+                                  lapack_complex_double* a, lapack_int lda,
+                                  lapack_int i1, lapack_int i2 )
 {
     lapack_int info = 0;
     if( matrix_layout == LAPACK_COL_MAJOR ) {
         /* Call LAPACK function and adjust info */
-        LAPACK_zsyswapr( &uplo, &n, a, &i1, &i2 );
+        LAPACK_zsyswapr( &uplo, &n, a, &lda, &i1, &i2 );
         if( info < 0 ) {
             info = info - 1;
         }
     } else if( matrix_layout == LAPACK_ROW_MAJOR ) {
+        lapack_int lda_t = MAX(1,n);
         lapack_complex_double* a_t = NULL;
         /* Allocate memory for temporary array(s) */
         a_t = (lapack_complex_double*)
-            LAPACKE_malloc( sizeof(lapack_complex_double) * n * MAX(1,n) );
+            LAPACKE_malloc( sizeof(lapack_complex_double) * lda_t * MAX(1,n) );
         if( a_t == NULL ) {
             info = LAPACK_TRANSPOSE_MEMORY_ERROR;
             goto exit_level_0;
         }
         /* Transpose input matrices */
-        LAPACKE_zsy_trans( matrix_layout, uplo, n, a, n, a_t, n );
+        LAPACKE_zsy_trans( matrix_layout, uplo, n, a, lda, a_t, lda_t );
         /* Call LAPACK function and adjust info */
-        LAPACK_zsyswapr( &uplo, &n, a_t, &i1, &i2 );
+        LAPACK_zsyswapr( &uplo, &n, a_t, &lda_t, &i1, &i2 );
         info = 0;  /* LAPACK call is ok! */
         /* Transpose output matrices */
-        LAPACKE_zsy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, n, a, n );
+        LAPACKE_zsy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
         /* Release memory and exit */
         LAPACKE_free( a_t );
 exit_level_0: