Browse Source

Apply LAPACKE fix for eigenvector transposition in symmetric eigensolvers

from Reference-LAPACK PR 330
tags/v0.3.8^2
Martin Kroeker GitHub 5 years ago
parent
commit
2ea2bd99c7
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 60 additions and 13 deletions
  1. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_cheev_work.c
  2. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_cheevd_2stage_work.c
  3. +5
    -2
      lapack-netlib/LAPACKE/src/lapacke_cheevd_work.c
  4. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_dsyev_work.c
  5. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_dsyevd_2stage_work.c
  6. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_dsyevd_work.c
  7. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_ssyev_work.c
  8. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_ssyevd_2stage_work.c
  9. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_ssyevd_work.c
  10. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_zheev_work.c
  11. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_zheevd_2stage_work.c
  12. +5
    -1
      lapack-netlib/LAPACKE/src/lapacke_zheevd_work.c

+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_cheev_work.c View File

@@ -78,7 +78,11 @@ lapack_int LAPACKE_cheev_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_cheevd_2stage_work.c View File

@@ -79,7 +79,11 @@ lapack_int LAPACKE_cheevd_2stage_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 2
lapack-netlib/LAPACKE/src/lapacke_cheevd_work.c View File

@@ -79,8 +79,11 @@ lapack_int LAPACKE_cheevd_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_dsyev_work.c View File

@@ -72,7 +72,11 @@ lapack_int LAPACKE_dsyev_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_dsyevd_2stage_work.c View File

@@ -76,7 +76,11 @@ lapack_int LAPACKE_dsyevd_2stage_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_dsyevd_work.c View File

@@ -76,7 +76,11 @@ lapack_int LAPACKE_dsyevd_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_ssyev_work.c View File

@@ -72,7 +72,11 @@ lapack_int LAPACKE_ssyev_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_ssyevd_2stage_work.c View File

@@ -76,7 +76,11 @@ lapack_int LAPACKE_ssyevd_2stage_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_ssyevd_work.c View File

@@ -76,7 +76,11 @@ lapack_int LAPACKE_ssyevd_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_zheev_work.c View File

@@ -78,7 +78,11 @@ lapack_int LAPACKE_zheev_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_zheevd_2stage_work.c View File

@@ -79,7 +79,11 @@ lapack_int LAPACKE_zheevd_2stage_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


+ 5
- 1
lapack-netlib/LAPACKE/src/lapacke_zheevd_work.c View File

@@ -79,7 +79,11 @@ lapack_int LAPACKE_zheevd_work( int matrix_layout, char jobz, char uplo,
info = info - 1;
}
/* 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 */
LAPACKE_free( a_t );
exit_level_0:


Loading…
Cancel
Save