Fixed in Reference LAPACK in commit:
07e1fbd897
tags/v0.2.20^2
| @@ -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: | |||
| @@ -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: | |||
| @@ -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: | |||
| @@ -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: | |||