Added interface to LAPACK linear least squares solver, DGELSS
This commit is contained in:
parent
d8f9f97f74
commit
7fa9a9eb63
1 changed files with 28 additions and 0 deletions
|
|
@ -19,6 +19,7 @@
|
|||
#define _DGETRF_ dgetrf
|
||||
#define _DGETRS_ dgetrs
|
||||
#define _DGETRI_ dgetri
|
||||
#define _DGELSS_ dgelss
|
||||
#define _DGBCON_ dgbcon
|
||||
#define _DGBSV_ dgbsv
|
||||
#define _DGBTRF_ dgbtrf
|
||||
|
|
@ -39,6 +40,7 @@
|
|||
#define _DGETRF_ dgetrf_
|
||||
#define _DGETRS_ dgetrs_
|
||||
#define _DGETRI_ dgetri_
|
||||
#define _DGELSS_ dgelss_
|
||||
#define _DGBCON_ dgbcon_
|
||||
#define _DGBSV_ dgbsv_
|
||||
#define _DGBTRF_ dgbtrf_
|
||||
|
|
@ -107,6 +109,11 @@ extern "C" {
|
|||
int _DGETRI_(const integer* n, doublereal* a, const integer* lda,
|
||||
integer* ipiv, doublereal* work, integer* lwork, integer* info);
|
||||
|
||||
int _DGELSS_(const integer* m, const integer* n, const integer* nrhs,
|
||||
doublereal* a, const integer* lda, doublereal* b,
|
||||
const integer* ldb, doublereal* s, const doublereal* rcond,
|
||||
integer* rank, doublereal* work, integer* lwork, integer* info);
|
||||
|
||||
int _DGBSV_(integer* n, integer* kl, integer* ku, integer* nrhs,
|
||||
doublereal* a, integer* lda, integer* ipiv, doublereal* b,
|
||||
integer* ldb, integer* info);
|
||||
|
|
@ -251,6 +258,27 @@ inline void ct_dgbsv(int n, int kl, int ku, int nrhs,
|
|||
info = f_info;
|
||||
}
|
||||
|
||||
inline void ct_dgelss(size_t m, size_t n, size_t nrhs, doublereal* a,
|
||||
size_t lda, doublereal* b, size_t ldb, doublereal* s,
|
||||
doublereal rcond, size_t& rank, doublereal* work,
|
||||
int& lwork, int& info)
|
||||
{
|
||||
integer f_m = static_cast<integer>(m);
|
||||
integer f_n = static_cast<integer>(n);
|
||||
integer f_nrhs = static_cast<integer>(nrhs);
|
||||
integer f_lda = static_cast<integer>(lda);
|
||||
integer f_ldb = static_cast<integer>(ldb);
|
||||
integer f_lwork = static_cast<integer>(lwork);
|
||||
integer f_rank, f_info;
|
||||
|
||||
_DGELSS_(&f_m, &f_n, &f_nrhs, a, &f_lda, b, &f_ldb, s, &rcond, &f_rank,
|
||||
work, &f_lwork, &f_info);
|
||||
|
||||
info = static_cast<int>(f_info);
|
||||
rank = static_cast<size_t>(f_rank);
|
||||
lwork = static_cast<int>(f_lwork);
|
||||
}
|
||||
|
||||
inline void ct_dgbtrf(size_t m, size_t n, size_t kl, size_t ku,
|
||||
doublereal* a, size_t lda, integer* ipiv, int& info)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue