summaryrefslogtreecommitdiff
path: root/LAPACKE
diff options
context:
space:
mode:
authoreugene.chereshnev <eugenechereshnev@gmail.com>2017-01-31 18:08:43 -0800
committereugene.chereshnev <eugenechereshnev@gmail.com>2017-02-03 18:46:51 -0800
commit07e1fbd89752bed74d35c48e92287d467646a158 (patch)
tree200d15b61bcdf5d1855f077c96f9d28c55b76af4 /LAPACKE
parent6884e20ad7942825c22daad0dc4a2a8ef8570e0e (diff)
downloadlapack-07e1fbd89752bed74d35c48e92287d467646a158.tar.gz
lapack-07e1fbd89752bed74d35c48e92287d467646a158.tar.bz2
lapack-07e1fbd89752bed74d35c48e92287d467646a158.zip
lapacke_*laswp_work: incorrect value for lda_t (issue #110)
Diffstat (limited to 'LAPACKE')
-rw-r--r--LAPACKE/src/lapacke_claswp_work.c10
-rw-r--r--LAPACKE/src/lapacke_dlaswp_work.c10
-rw-r--r--LAPACKE/src/lapacke_slaswp_work.c10
-rw-r--r--LAPACKE/src/lapacke_zlaswp_work.c10
4 files changed, 28 insertions, 12 deletions
diff --git a/LAPACKE/src/lapacke_claswp_work.c b/LAPACKE/src/lapacke_claswp_work.c
index 582c6dbc..599e72fc 100644
--- a/LAPACKE/src/lapacke_claswp_work.c
+++ b/LAPACKE/src/lapacke_claswp_work.c
@@ -46,7 +46,11 @@ lapack_int LAPACKE_claswp_work( int matrix_layout, lapack_int n,
info = info - 1;
}
} else if( matrix_layout == LAPACK_ROW_MAJOR ) {
- lapack_int lda_t = MAX(1,lda);
+ lapack_int lda_t = MAX(1,k2);
+ lapack_int i;
+ for( i = k1; i <= k2; i++ ) {
+ lda_t = MAX( lda_t, ipiv[k1 + ( i - k1 ) * ABS( incx ) - 1] );
+ }
lapack_complex_float* a_t = NULL;
/* Check leading dimension(s) */
if( lda < n ) {
@@ -62,12 +66,12 @@ lapack_int LAPACKE_claswp_work( int matrix_layout, lapack_int n,
goto exit_level_0;
}
/* Transpose input matrices */
- LAPACKE_cge_trans( matrix_layout, lda, n, a, lda, a_t, lda_t );
+ LAPACKE_cge_trans( matrix_layout, lda_t, n, a, lda, a_t, lda_t );
/* Call LAPACK function and adjust info */
LAPACK_claswp( &n, a_t, &lda_t, &k1, &k2, ipiv, &incx );
info = 0; /* LAPACK call is ok! */
/* Transpose output matrices */
- LAPACKE_cge_trans( LAPACK_COL_MAJOR, lda, n, a_t, lda_t, a, lda );
+ LAPACKE_cge_trans( LAPACK_COL_MAJOR, lda_t, n, a_t, lda_t, a, lda );
/* Release memory and exit */
LAPACKE_free( a_t );
exit_level_0:
diff --git a/LAPACKE/src/lapacke_dlaswp_work.c b/LAPACKE/src/lapacke_dlaswp_work.c
index 5aa2219c..027c25fc 100644
--- a/LAPACKE/src/lapacke_dlaswp_work.c
+++ b/LAPACKE/src/lapacke_dlaswp_work.c
@@ -45,7 +45,11 @@ lapack_int LAPACKE_dlaswp_work( int matrix_layout, lapack_int n, double* a,
info = info - 1;
}
} else if( matrix_layout == LAPACK_ROW_MAJOR ) {
- lapack_int lda_t = MAX(1,lda);
+ lapack_int lda_t = MAX(1,k2);
+ lapack_int i;
+ for( i = k1; i <= k2; i++ ) {
+ lda_t = MAX( lda_t, ipiv[k1 + ( i - k1 ) * ABS( incx ) - 1] );
+ }
double* a_t = NULL;
/* Check leading dimension(s) */
if( lda < n ) {
@@ -60,12 +64,12 @@ lapack_int LAPACKE_dlaswp_work( int matrix_layout, lapack_int n, double* a,
goto exit_level_0;
}
/* Transpose input matrices */
- LAPACKE_dge_trans( matrix_layout, lda, n, a, lda, a_t, lda_t );
+ LAPACKE_dge_trans( matrix_layout, lda_t, n, a, lda, a_t, lda_t );
/* Call LAPACK function and adjust info */
LAPACK_dlaswp( &n, a_t, &lda_t, &k1, &k2, ipiv, &incx );
info = 0; /* LAPACK call is ok! */
/* Transpose output matrices */
- LAPACKE_dge_trans( LAPACK_COL_MAJOR, lda, n, a_t, lda_t, a, lda );
+ LAPACKE_dge_trans( LAPACK_COL_MAJOR, lda_t, n, a_t, lda_t, a, lda );
/* Release memory and exit */
LAPACKE_free( a_t );
exit_level_0:
diff --git a/LAPACKE/src/lapacke_slaswp_work.c b/LAPACKE/src/lapacke_slaswp_work.c
index 01abf596..1faadbb9 100644
--- a/LAPACKE/src/lapacke_slaswp_work.c
+++ b/LAPACKE/src/lapacke_slaswp_work.c
@@ -45,7 +45,11 @@ lapack_int LAPACKE_slaswp_work( int matrix_layout, lapack_int n, float* a,
info = info - 1;
}
} else if( matrix_layout == LAPACK_ROW_MAJOR ) {
- lapack_int lda_t = MAX(1,lda);
+ lapack_int lda_t = MAX(1,k2);
+ lapack_int i;
+ for( i = k1; i <= k2; i++ ) {
+ lda_t = MAX( lda_t, ipiv[k1 + ( i - k1 ) * ABS( incx ) - 1] );
+ }
float* a_t = NULL;
/* Check leading dimension(s) */
if( lda < n ) {
@@ -60,12 +64,12 @@ lapack_int LAPACKE_slaswp_work( int matrix_layout, lapack_int n, float* a,
goto exit_level_0;
}
/* Transpose input matrices */
- LAPACKE_sge_trans( matrix_layout, lda, n, a, lda, a_t, lda_t );
+ LAPACKE_sge_trans( matrix_layout, lda_t, n, a, lda, a_t, lda_t );
/* Call LAPACK function and adjust info */
LAPACK_slaswp( &n, a_t, &lda_t, &k1, &k2, ipiv, &incx );
info = 0; /* LAPACK call is ok! */
/* Transpose output matrices */
- LAPACKE_sge_trans( LAPACK_COL_MAJOR, lda, n, a_t, lda_t, a, lda );
+ LAPACKE_sge_trans( LAPACK_COL_MAJOR, lda_t, n, a_t, lda_t, a, lda );
/* Release memory and exit */
LAPACKE_free( a_t );
exit_level_0:
diff --git a/LAPACKE/src/lapacke_zlaswp_work.c b/LAPACKE/src/lapacke_zlaswp_work.c
index e9a282cb..0ab0aae4 100644
--- a/LAPACKE/src/lapacke_zlaswp_work.c
+++ b/LAPACKE/src/lapacke_zlaswp_work.c
@@ -46,7 +46,11 @@ lapack_int LAPACKE_zlaswp_work( int matrix_layout, lapack_int n,
info = info - 1;
}
} else if( matrix_layout == LAPACK_ROW_MAJOR ) {
- lapack_int lda_t = MAX(1,lda);
+ lapack_int lda_t = MAX(1,k2);
+ lapack_int i;
+ for( i = k1; i <= k2; i++ ) {
+ lda_t = MAX( lda_t, ipiv[k1 + ( i - k1 ) * ABS( incx ) - 1] );
+ }
lapack_complex_double* a_t = NULL;
/* Check leading dimension(s) */
if( lda < n ) {
@@ -62,12 +66,12 @@ lapack_int LAPACKE_zlaswp_work( int matrix_layout, lapack_int n,
goto exit_level_0;
}
/* Transpose input matrices */
- LAPACKE_zge_trans( matrix_layout, lda, n, a, lda, a_t, lda_t );
+ LAPACKE_zge_trans( matrix_layout, lda_t, n, a, lda, a_t, lda_t );
/* Call LAPACK function and adjust info */
LAPACK_zlaswp( &n, a_t, &lda_t, &k1, &k2, ipiv, &incx );
info = 0; /* LAPACK call is ok! */
/* Transpose output matrices */
- LAPACKE_zge_trans( LAPACK_COL_MAJOR, lda, n, a_t, lda_t, a, lda );
+ LAPACKE_zge_trans( LAPACK_COL_MAJOR, lda_t, n, a_t, lda_t, a, lda );
/* Release memory and exit */
LAPACKE_free( a_t );
exit_level_0: