Apply LAPACKE fix for eigenvector transposition in symmetric eigensolvers
from Reference-LAPACK PR 330
This commit is contained in:
parent
fbb894948c
commit
2ea2bd99c7
|
@ -78,7 +78,11 @@ lapack_int LAPACKE_cheev_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_che_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_cge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_che_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -79,7 +79,11 @@ lapack_int LAPACKE_cheevd_2stage_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_che_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_cge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_che_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -79,8 +79,11 @@ lapack_int LAPACKE_cheevd_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_che_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_cge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_che_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -72,7 +72,11 @@ lapack_int LAPACKE_dsyev_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_dsy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_dge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_dsy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -76,7 +76,11 @@ lapack_int LAPACKE_dsyevd_2stage_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_dsy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_dge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_dsy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -76,7 +76,11 @@ lapack_int LAPACKE_dsyevd_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_dsy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_dge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_dsy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -72,7 +72,11 @@ lapack_int LAPACKE_ssyev_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_ssy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_sge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_ssy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -76,7 +76,11 @@ lapack_int LAPACKE_ssyevd_2stage_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_ssy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_sge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_ssy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -76,7 +76,11 @@ lapack_int LAPACKE_ssyevd_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_ssy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_sge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_ssy_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -78,7 +78,11 @@ lapack_int LAPACKE_zheev_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_zhe_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_zge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_zhe_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -79,7 +79,11 @@ lapack_int LAPACKE_zheevd_2stage_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_zhe_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_zge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_zhe_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
|
@ -79,7 +79,11 @@ lapack_int LAPACKE_zheevd_work( int matrix_layout, char jobz, char uplo,
|
||||||
info = info - 1;
|
info = info - 1;
|
||||||
}
|
}
|
||||||
/* Transpose output matrices */
|
/* Transpose output matrices */
|
||||||
LAPACKE_zhe_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
if ( jobz == 'V') {
|
||||||
|
LAPACKE_zge_trans( LAPACK_COL_MAJOR, n, n, a_t, lda_t, a, lda );
|
||||||
|
} else {
|
||||||
|
LAPACKE_zhe_trans( LAPACK_COL_MAJOR, uplo, n, a_t, lda_t, a, lda );
|
||||||
|
}
|
||||||
/* Release memory and exit */
|
/* Release memory and exit */
|
||||||
LAPACKE_free( a_t );
|
LAPACKE_free( a_t );
|
||||||
exit_level_0:
|
exit_level_0:
|
||||||
|
|
Loading…
Reference in New Issue