Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f46d51b
Add algorithms of skew-symmetric matrix
sh-zheng Aug 20, 2024
39d70a4
Add testcases for skew-symmetric algorithm
sh-zheng Aug 20, 2024
c17ac0a
Add cblas and lapacke interfaces for skew-symmetric subroutines
sh-zheng Aug 21, 2024
f9096df
Add cblas testcases for skew-symmetric subroutines
sh-zheng Aug 22, 2024
08a4705
Use blas subroutines to perform transformation in *kyeqr
sh-zheng Sep 3, 2024
63b8293
Update CMakelists
sh-zheng Sep 3, 2024
3275c32
Fix fortran text overflow in *kteqr
sh-zheng Sep 4, 2024
ace1953
Add missing subroutine parameter checks for linear solver
sh-zheng Sep 5, 2024
58ce56e
Fix a typo and resolve a conflict in BLAS/TESTING
sh-zheng Feb 8, 2025
ae2ea5d
Merge branch 'master' into skew-symmetric-new
sh-zheng Feb 9, 2025
b9b2875
Keep consistency with pr 1101
sh-zheng Feb 10, 2025
6731c0f
Delete unnecessary work buffer usage of *ktev and *kteqr in lapacke
sh-zheng Apr 10, 2025
b15a164
Remove redundant *lagky in TESTING/
sh-zheng May 7, 2025
2bb3d99
Merge branch 'master' into skew-symmetric-new
sh-zheng Jun 15, 2025
020cd26
Call *lasr to update eigenvector instead of *rot
sh-zheng Jul 3, 2025
fcbee19
Fix compiler error of column limit
sh-zheng Jul 4, 2025
eb160c9
Fix compiler error of column limit, supplementary submission
sh-zheng Jul 6, 2025
38f90b3
Update contributors information, and doxygen doc
sh-zheng Jul 6, 2025
30042e4
Merge branch 'Reference-LAPACK:master' into skew-symmetric-new
sh-zheng Aug 1, 2025
98d9c6a
implicit none of skew-symmetric subroutines, keep consistency with pr…
sh-zheng Sep 1, 2025
eec055e
Merge branch 'Reference-LAPACK:master' into skew-symmetric-new
sh-zheng Sep 1, 2025
ec0c276
End with newline in BLAS/TESTING
sh-zheng Sep 4, 2025
c9a448b
Add expert driver subroutines *kysvx, *kycon and *kyrfs
sh-zheng Oct 11, 2025
ff8bcde
Update doc and comment
sh-zheng Oct 12, 2025
9261f0f
Fix potential distrub of diagonal elements
sh-zheng Oct 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add expert driver subroutines *kysvx, *kycon and *kyrfs
  • Loading branch information
sh-zheng committed Oct 11, 2025
commit c9a448be74f9c27d1aa15303467a9abfa0ecdcc7
134 changes: 134 additions & 0 deletions LAPACKE/include/lapack.h
Original file line number Diff line number Diff line change
Expand Up @@ -17169,6 +17169,46 @@ void LAPACK_zsycon_base(
#define LAPACK_zsycon(...) LAPACK_zsycon_base(__VA_ARGS__)
#endif

#define LAPACK_dkycon_base LAPACK_GLOBAL_SUFFIX(dkycon,DKYCON)
void LAPACK_dkycon_base(
char const* uplo,
lapack_int const* n,
double const* A, lapack_int const* lda, lapack_int const* ipiv,
double const* anorm,
double* rcond,
double* work,
lapack_int* iwork,
lapack_int* info
#ifdef LAPACK_FORTRAN_STRLEN_END
, FORTRAN_STRLEN
#endif
);
#ifdef LAPACK_FORTRAN_STRLEN_END
#define LAPACK_dkycon(...) LAPACK_dkycon_base(__VA_ARGS__, 1)
#else
#define LAPACK_dkycon(...) LAPACK_dkycon_base(__VA_ARGS__)
#endif

#define LAPACK_skycon_base LAPACK_GLOBAL_SUFFIX(skycon,SKYCON)
void LAPACK_skycon_base(
char const* uplo,
lapack_int const* n,
float const* A, lapack_int const* lda, lapack_int const* ipiv,
float const* anorm,
float* rcond,
float* work,
lapack_int* iwork,
lapack_int* info
#ifdef LAPACK_FORTRAN_STRLEN_END
, FORTRAN_STRLEN
#endif
);
#ifdef LAPACK_FORTRAN_STRLEN_END
#define LAPACK_skycon(...) LAPACK_skycon_base(__VA_ARGS__, 1)
#else
#define LAPACK_skycon(...) LAPACK_skycon_base(__VA_ARGS__)
#endif

#define LAPACK_csycon_3_base LAPACK_GLOBAL_SUFFIX(csycon_3,CSYCON_3)
void LAPACK_csycon_3_base(
char const* uplo,
Expand Down Expand Up @@ -18197,6 +18237,52 @@ void LAPACK_zsyrfs_base(
#define LAPACK_zsyrfs(...) LAPACK_zsyrfs_base(__VA_ARGS__)
#endif

#define LAPACK_dkyrfs_base LAPACK_GLOBAL_SUFFIX(dkyrfs,DKYRFS)
void LAPACK_dkyrfs_base(
char const* uplo,
lapack_int const* n, lapack_int const* nrhs,
double const* A, lapack_int const* lda,
double const* AF, lapack_int const* ldaf, lapack_int const* ipiv,
double const* B, lapack_int const* ldb,
double* X, lapack_int const* ldx,
double* ferr,
double* berr,
double* work,
lapack_int* iwork,
lapack_int* info
#ifdef LAPACK_FORTRAN_STRLEN_END
, FORTRAN_STRLEN
#endif
);
#ifdef LAPACK_FORTRAN_STRLEN_END
#define LAPACK_dkyrfs(...) LAPACK_dkyrfs_base(__VA_ARGS__, 1)
#else
#define LAPACK_dkyrfs(...) LAPACK_dkyrfs_base(__VA_ARGS__)
#endif

#define LAPACK_skyrfs_base LAPACK_GLOBAL_SUFFIX(skyrfs,SKYRFS)
void LAPACK_skyrfs_base(
char const* uplo,
lapack_int const* n, lapack_int const* nrhs,
float const* A, lapack_int const* lda,
float const* AF, lapack_int const* ldaf, lapack_int const* ipiv,
float const* B, lapack_int const* ldb,
float* X, lapack_int const* ldx,
float* ferr,
float* berr,
float* work,
lapack_int* iwork,
lapack_int* info
#ifdef LAPACK_FORTRAN_STRLEN_END
, FORTRAN_STRLEN
#endif
);
#ifdef LAPACK_FORTRAN_STRLEN_END
#define LAPACK_skyrfs(...) LAPACK_skyrfs_base(__VA_ARGS__, 1)
#else
#define LAPACK_skyrfs(...) LAPACK_skyrfs_base(__VA_ARGS__)
#endif

#define LAPACK_csyrfsx_base LAPACK_GLOBAL_SUFFIX(csyrfsx,CSYRFSX)
void LAPACK_csyrfsx_base(
char const* uplo, char const* equed,
Expand Down Expand Up @@ -18805,6 +18891,54 @@ void LAPACK_zsysvx_base(
#define LAPACK_zsysvx(...) LAPACK_zsysvx_base(__VA_ARGS__)
#endif

#define LAPACK_dkysvx_base LAPACK_GLOBAL_SUFFIX(dkysvx,DKYSVX)
void LAPACK_dkysvx_base(
char const* fact, char const* uplo,
lapack_int const* n, lapack_int const* nrhs,
double const* A, lapack_int const* lda,
double* AF, lapack_int const* ldaf, lapack_int* ipiv,
double const* B, lapack_int const* ldb,
double* X, lapack_int const* ldx,
double* rcond,
double* ferr,
double* berr,
double* work, lapack_int const* lwork,
lapack_int* iwork,
lapack_int* info
#ifdef LAPACK_FORTRAN_STRLEN_END
, FORTRAN_STRLEN, FORTRAN_STRLEN
#endif
);
#ifdef LAPACK_FORTRAN_STRLEN_END
#define LAPACK_dkysvx(...) LAPACK_dkysvx_base(__VA_ARGS__, 1, 1)
#else
#define LAPACK_dkysvx(...) LAPACK_dkysvx_base(__VA_ARGS__)
#endif

#define LAPACK_skysvx_base LAPACK_GLOBAL_SUFFIX(skysvx,SKYSVX)
void LAPACK_skysvx_base(
char const* fact, char const* uplo,
lapack_int const* n, lapack_int const* nrhs,
float const* A, lapack_int const* lda,
float* AF, lapack_int const* ldaf, lapack_int* ipiv,
float const* B, lapack_int const* ldb,
float* X, lapack_int const* ldx,
float* rcond,
float* ferr,
float* berr,
float* work, lapack_int const* lwork,
lapack_int* iwork,
lapack_int* info
#ifdef LAPACK_FORTRAN_STRLEN_END
, FORTRAN_STRLEN, FORTRAN_STRLEN
#endif
);
#ifdef LAPACK_FORTRAN_STRLEN_END
#define LAPACK_skysvx(...) LAPACK_skysvx_base(__VA_ARGS__, 1, 1)
#else
#define LAPACK_skysvx(...) LAPACK_skysvx_base(__VA_ARGS__)
#endif

#define LAPACK_csysvxx_base LAPACK_GLOBAL_SUFFIX(csysvxx,CSYSVXX)
void LAPACK_csysvxx_base(
char const* fact, char const* uplo,
Expand Down
76 changes: 76 additions & 0 deletions LAPACKE/include/lapacke.h
Original file line number Diff line number Diff line change
Expand Up @@ -3739,6 +3739,14 @@ lapack_int LAPACKE_zsycon( int matrix_layout, char uplo, lapack_int n,
const lapack_int* ipiv, double anorm,
double* rcond );

lapack_int LAPACKE_skycon( int matrix_layout, char uplo, lapack_int n,
const float* a, lapack_int lda,
const lapack_int* ipiv, float anorm, float* rcond );
lapack_int LAPACKE_dkycon( int matrix_layout, char uplo, lapack_int n,
const double* a, lapack_int lda,
const lapack_int* ipiv, double anorm,
double* rcond );

lapack_int LAPACKE_ssyequb( int matrix_layout, char uplo, lapack_int n,
const float* a, lapack_int lda, float* s,
float* scond, float* amax );
Expand Down Expand Up @@ -3864,6 +3872,19 @@ lapack_int LAPACKE_zsyrfs( int matrix_layout, char uplo, lapack_int n,
lapack_complex_double* x, lapack_int ldx,
double* ferr, double* berr );

lapack_int LAPACKE_skyrfs( int matrix_layout, char uplo, lapack_int n,
lapack_int nrhs, const float* a, lapack_int lda,
const float* af, lapack_int ldaf,
const lapack_int* ipiv, const float* b,
lapack_int ldb, float* x, lapack_int ldx,
float* ferr, float* berr );
lapack_int LAPACKE_dkyrfs( int matrix_layout, char uplo, lapack_int n,
lapack_int nrhs, const double* a, lapack_int lda,
const double* af, lapack_int ldaf,
const lapack_int* ipiv, const double* b,
lapack_int ldb, double* x, lapack_int ldx,
double* ferr, double* berr );

lapack_int LAPACKE_ssyrfsx( int matrix_layout, char uplo, char equed,
lapack_int n, lapack_int nrhs, const float* a,
lapack_int lda, const float* af, lapack_int ldaf,
Expand Down Expand Up @@ -3952,6 +3973,19 @@ lapack_int LAPACKE_zsysvx( int matrix_layout, char fact, char uplo, lapack_int n
lapack_complex_double* x, lapack_int ldx,
double* rcond, double* ferr, double* berr );

lapack_int LAPACKE_skysvx( int matrix_layout, char fact, char uplo, lapack_int n,
lapack_int nrhs, const float* a, lapack_int lda,
float* af, lapack_int ldaf, lapack_int* ipiv,
const float* b, lapack_int ldb, float* x,
lapack_int ldx, float* rcond, float* ferr,
float* berr );
lapack_int LAPACKE_dkysvx( int matrix_layout, char fact, char uplo, lapack_int n,
lapack_int nrhs, const double* a, lapack_int lda,
double* af, lapack_int ldaf, lapack_int* ipiv,
const double* b, lapack_int ldb, double* x,
lapack_int ldx, double* rcond, double* ferr,
double* berr );

lapack_int LAPACKE_ssysvxx( int matrix_layout, char fact, char uplo,
lapack_int n, lapack_int nrhs, float* a,
lapack_int lda, float* af, lapack_int ldaf,
Expand Down Expand Up @@ -9488,6 +9522,16 @@ lapack_int LAPACKE_zsycon_work( int matrix_layout, char uplo, lapack_int n,
const lapack_int* ipiv, double anorm,
double* rcond, lapack_complex_double* work );

lapack_int LAPACKE_skycon_work( int matrix_layout, char uplo, lapack_int n,
const float* a, lapack_int lda,
const lapack_int* ipiv, float anorm,
float* rcond, float* work, lapack_int* iwork );
lapack_int LAPACKE_dkycon_work( int matrix_layout, char uplo, lapack_int n,
const double* a, lapack_int lda,
const lapack_int* ipiv, double anorm,
double* rcond, double* work,
lapack_int* iwork );

lapack_int LAPACKE_ssyequb_work( int matrix_layout, char uplo, lapack_int n,
const float* a, lapack_int lda, float* s,
float* scond, float* amax, float* work );
Expand Down Expand Up @@ -9649,6 +9693,21 @@ lapack_int LAPACKE_zsyrfs_work( int matrix_layout, char uplo, lapack_int n,
double* ferr, double* berr,
lapack_complex_double* work, double* rwork );

lapack_int LAPACKE_skyrfs_work( int matrix_layout, char uplo, lapack_int n,
lapack_int nrhs, const float* a, lapack_int lda,
const float* af, lapack_int ldaf,
const lapack_int* ipiv, const float* b,
lapack_int ldb, float* x, lapack_int ldx,
float* ferr, float* berr, float* work,
lapack_int* iwork );
lapack_int LAPACKE_dkyrfs_work( int matrix_layout, char uplo, lapack_int n,
lapack_int nrhs, const double* a,
lapack_int lda, const double* af,
lapack_int ldaf, const lapack_int* ipiv,
const double* b, lapack_int ldb, double* x,
lapack_int ldx, double* ferr, double* berr,
double* work, lapack_int* iwork );

lapack_int LAPACKE_ssyrfsx_work( int matrix_layout, char uplo, char equed,
lapack_int n, lapack_int nrhs, const float* a,
lapack_int lda, const float* af,
Expand Down Expand Up @@ -9760,6 +9819,23 @@ lapack_int LAPACKE_zsysvx_work( int matrix_layout, char fact, char uplo,
lapack_complex_double* work, lapack_int lwork,
double* rwork );

lapack_int LAPACKE_skysvx_work( int matrix_layout, char fact, char uplo,
lapack_int n, lapack_int nrhs, const float* a,
lapack_int lda, float* af, lapack_int ldaf,
lapack_int* ipiv, const float* b,
lapack_int ldb, float* x, lapack_int ldx,
float* rcond, float* ferr, float* berr,
float* work, lapack_int lwork,
lapack_int* iwork );
lapack_int LAPACKE_dkysvx_work( int matrix_layout, char fact, char uplo,
lapack_int n, lapack_int nrhs, const double* a,
lapack_int lda, double* af, lapack_int ldaf,
lapack_int* ipiv, const double* b,
lapack_int ldb, double* x, lapack_int ldx,
double* rcond, double* ferr, double* berr,
double* work, lapack_int lwork,
lapack_int* iwork );

lapack_int LAPACKE_ssysvxx_work( int matrix_layout, char fact, char uplo,
lapack_int n, lapack_int nrhs, float* a,
lapack_int lda, float* af, lapack_int ldaf,
Expand Down
76 changes: 76 additions & 0 deletions LAPACKE/include/lapacke_64.h
Original file line number Diff line number Diff line change
Expand Up @@ -3705,6 +3705,14 @@ int64_t LAPACKE_zsycon_64( int matrix_layout, char uplo, int64_t n,
const int64_t* ipiv, double anorm,
double* rcond );

int64_t LAPACKE_skycon_64( int matrix_layout, char uplo, int64_t n,
const float* a, int64_t lda,
const int64_t* ipiv, float anorm, float* rcond );
int64_t LAPACKE_dkycon_64( int matrix_layout, char uplo, int64_t n,
const double* a, int64_t lda,
const int64_t* ipiv, double anorm,
double* rcond );

int64_t LAPACKE_ssyequb_64( int matrix_layout, char uplo, int64_t n,
const float* a, int64_t lda, float* s,
float* scond, float* amax );
Expand Down Expand Up @@ -3830,6 +3838,19 @@ int64_t LAPACKE_zsyrfs_64( int matrix_layout, char uplo, int64_t n,
lapack_complex_double* x, int64_t ldx,
double* ferr, double* berr );

int64_t LAPACKE_skyrfs_64( int matrix_layout, char uplo, int64_t n,
int64_t nrhs, const float* a, int64_t lda,
const float* af, int64_t ldaf,
const int64_t* ipiv, const float* b,
int64_t ldb, float* x, int64_t ldx,
float* ferr, float* berr );
int64_t LAPACKE_dkyrfs_64( int matrix_layout, char uplo, int64_t n,
int64_t nrhs, const double* a, int64_t lda,
const double* af, int64_t ldaf,
const int64_t* ipiv, const double* b,
int64_t ldb, double* x, int64_t ldx,
double* ferr, double* berr );

int64_t LAPACKE_ssyrfsx_64( int matrix_layout, char uplo, char equed,
int64_t n, int64_t nrhs, const float* a,
int64_t lda, const float* af, int64_t ldaf,
Expand Down Expand Up @@ -3918,6 +3939,19 @@ int64_t LAPACKE_zsysvx_64( int matrix_layout, char fact, char uplo, int64_t n,
lapack_complex_double* x, int64_t ldx,
double* rcond, double* ferr, double* berr );

int64_t LAPACKE_skysvx_64( int matrix_layout, char fact, char uplo, int64_t n,
int64_t nrhs, const float* a, int64_t lda,
float* af, int64_t ldaf, int64_t* ipiv,
const float* b, int64_t ldb, float* x,
int64_t ldx, float* rcond, float* ferr,
float* berr );
int64_t LAPACKE_dkysvx_64( int matrix_layout, char fact, char uplo, int64_t n,
int64_t nrhs, const double* a, int64_t lda,
double* af, int64_t ldaf, int64_t* ipiv,
const double* b, int64_t ldb, double* x,
int64_t ldx, double* rcond, double* ferr,
double* berr );

int64_t LAPACKE_ssysvxx_64( int matrix_layout, char fact, char uplo,
int64_t n, int64_t nrhs, float* a,
int64_t lda, float* af, int64_t ldaf,
Expand Down Expand Up @@ -9455,6 +9489,16 @@ int64_t LAPACKE_zsycon_work_64( int matrix_layout, char uplo, int64_t n,
const int64_t* ipiv, double anorm,
double* rcond, lapack_complex_double* work );

int64_t LAPACKE_skycon_work_64( int matrix_layout, char uplo, int64_t n,
const float* a, int64_t lda,
const int64_t* ipiv, float anorm,
float* rcond, float* work, int64_t* iwork );
int64_t LAPACKE_dkycon_work_64( int matrix_layout, char uplo, int64_t n,
const double* a, int64_t lda,
const int64_t* ipiv, double anorm,
double* rcond, double* work,
int64_t* iwork );

int64_t LAPACKE_ssyequb_work_64( int matrix_layout, char uplo, int64_t n,
const float* a, int64_t lda, float* s,
float* scond, float* amax, float* work );
Expand Down Expand Up @@ -9616,6 +9660,21 @@ int64_t LAPACKE_zsyrfs_work_64( int matrix_layout, char uplo, int64_t n,
double* ferr, double* berr,
lapack_complex_double* work, double* rwork );

int64_t LAPACKE_skyrfs_work_64( int matrix_layout, char uplo, int64_t n,
int64_t nrhs, const float* a, int64_t lda,
const float* af, int64_t ldaf,
const int64_t* ipiv, const float* b,
int64_t ldb, float* x, int64_t ldx,
float* ferr, float* berr, float* work,
int64_t* iwork );
int64_t LAPACKE_dkyrfs_work_64( int matrix_layout, char uplo, int64_t n,
int64_t nrhs, const double* a,
int64_t lda, const double* af,
int64_t ldaf, const int64_t* ipiv,
const double* b, int64_t ldb, double* x,
int64_t ldx, double* ferr, double* berr,
double* work, int64_t* iwork );

int64_t LAPACKE_ssyrfsx_work_64( int matrix_layout, char uplo, char equed,
int64_t n, int64_t nrhs, const float* a,
int64_t lda, const float* af,
Expand Down Expand Up @@ -9727,6 +9786,23 @@ int64_t LAPACKE_zsysvx_work_64( int matrix_layout, char fact, char uplo,
lapack_complex_double* work, int64_t lwork,
double* rwork );

int64_t LAPACKE_skysvx_work_64( int matrix_layout, char fact, char uplo,
int64_t n, int64_t nrhs, const float* a,
int64_t lda, float* af, int64_t ldaf,
int64_t* ipiv, const float* b,
int64_t ldb, float* x, int64_t ldx,
float* rcond, float* ferr, float* berr,
float* work, int64_t lwork,
int64_t* iwork );
int64_t LAPACKE_dkysvx_work_64( int matrix_layout, char fact, char uplo,
int64_t n, int64_t nrhs, const double* a,
int64_t lda, double* af, int64_t ldaf,
int64_t* ipiv, const double* b,
int64_t ldb, double* x, int64_t ldx,
double* rcond, double* ferr, double* berr,
double* work, int64_t lwork,
int64_t* iwork );

int64_t LAPACKE_ssysvxx_work_64( int matrix_layout, char fact, char uplo,
int64_t n, int64_t nrhs, float* a,
int64_t lda, float* af, int64_t ldaf,
Expand Down
Loading