28namespace nda::lapack::f77 {
30 void gelss(
int M,
int N,
int NRHS,
double *A,
int LDA,
double *B,
int LDB,
double *S,
double RCOND,
int &RANK,
double *WORK,
int LWORK,
31 [[maybe_unused]]
double *RWORK,
int &INFO) {
32 LAPACK_dgelss(&M, &N, &NRHS, A, &LDA, B, &LDB, S, &RCOND, &RANK, WORK, &LWORK, &INFO);
34 void gelss(
int M,
int N,
int NRHS, std::complex<double> *A,
int LDA, std::complex<double> *B,
int LDB,
double *S,
double RCOND,
int &RANK,
35 std::complex<double> *WORK,
int LWORK,
double *RWORK,
int &INFO) {
36 LAPACK_zgelss(&M, &N, &NRHS, A, &LDA, B, &LDB, S, &RCOND, &RANK, WORK, &LWORK, RWORK, &INFO);
39 void gesvd(
char JOBU,
char JOBVT,
int M,
int N,
double *A,
int LDA,
double *S,
double *U,
int LDU,
double *VT,
int LDVT,
double *WORK,
int LWORK,
40 [[maybe_unused]]
double *RWORK,
int &INFO) {
41 LAPACK_dgesvd(&JOBU, &JOBVT, &M, &N, A, &LDA, S, U, &LDU, VT, &LDVT, WORK, &LWORK, &INFO);
43 void gesvd(
char JOBU,
char JOBVT,
int M,
int N, std::complex<double> *A,
int LDA,
double *S, std::complex<double> *U,
int LDU,
44 std::complex<double> *VT,
int LDVT, std::complex<double> *WORK,
int LWORK,
double *RWORK,
int &INFO) {
45 LAPACK_zgesvd(&JOBU, &JOBVT, &M, &N, A, &LDA, S, U, &LDU, VT, &LDVT, WORK, &LWORK, RWORK, &INFO);
48 void geqp3(
int M,
int N,
double *A,
int LDA,
int *JPVT,
double *TAU,
double *WORK,
int LWORK, [[maybe_unused]]
double *RWORK,
int &INFO) {
49 LAPACK_dgeqp3(&M, &N, A, &LDA, JPVT, TAU, WORK, &LWORK, &INFO);
51 void geqp3(
int M,
int N, std::complex<double> *A,
int LDA,
int *JPVT, std::complex<double> *TAU, std::complex<double> *WORK,
int LWORK,
52 double *RWORK,
int &INFO) {
53 LAPACK_zgeqp3(&M, &N, A, &LDA, JPVT, TAU, WORK, &LWORK, RWORK, &INFO);
56 void orgqr(
int M,
int N,
int K,
double *A,
int LDA,
double *TAU,
double *WORK,
int LWORK,
int &INFO) {
57 LAPACK_dorgqr(&M, &N, &K, A, &LDA, TAU, WORK, &LWORK, &INFO);
60 void ungqr(
int M,
int N,
int K, std::complex<double> *A,
int LDA, std::complex<double> *TAU, std::complex<double> *WORK,
int LWORK,
int &INFO) {
61 LAPACK_zungqr(&M, &N, &K, A, &LDA, TAU, WORK, &LWORK, &INFO);
64 void getrf(
int M,
int N,
double *A,
int LDA,
int *ipiv,
int &info) { LAPACK_dgetrf(&M, &N, A, &LDA, ipiv, &info); }
65 void getrf(
int M,
int N, std::complex<double> *A,
int LDA,
int *ipiv,
int &info) { LAPACK_zgetrf(&M, &N, A, &LDA, ipiv, &info); }
67 void getri(
int N,
double *A,
int LDA,
int const *ipiv,
double *work,
int lwork,
int &info) {
68 LAPACK_dgetri(&N, A, &LDA, ipiv, work, &lwork, &info);
70 void getri(
int N, std::complex<double> *A,
int LDA,
int const *ipiv, std::complex<double> *work,
int lwork,
int &info) {
71 LAPACK_zgetri(&N, A, &LDA, ipiv, work, &lwork, &info);
74 void gtsv(
int N,
int NRHS,
double *DL,
double *D,
double *DU,
double *B,
int LDB,
int &info) { LAPACK_dgtsv(&N, &NRHS, DL, D, DU, B, &LDB, &info); }
75 void gtsv(
int N,
int NRHS, std::complex<double> *DL, std::complex<double> *D, std::complex<double> *DU, std::complex<double> *B,
int LDB,
77 LAPACK_zgtsv(&N, &NRHS, DL, D, DU, B, &LDB, &info);
80 void stev(
char J,
int N,
double *D,
double *E,
double *Z,
int ldz,
double *work,
int &info) { LAPACK_dstev(&J, &N, D, E, Z, &ldz, work, &info); }
82 void syev(
char JOBZ,
char UPLO,
int N,
double *A,
int LDA,
double *W,
double *work,
int &lwork,
int &info) {
83 LAPACK_dsyev(&JOBZ, &UPLO, &N, A, &LDA, W, work, &lwork, &info);
86 void heev(
char JOBZ,
char UPLO,
int N, std::complex<double> *A,
int LDA,
double *W, std::complex<double> *work,
int &lwork,
double *work2,
88 LAPACK_zheev(&JOBZ, &UPLO, &N, A, &LDA, W, work, &lwork, work2, &info);
91 void getrs(
char op,
int N,
int NRHS,
double const *A,
int LDA,
int const *ipiv,
double *B,
int LDB,
int &info) {
92 LAPACK_dgetrs(&op, &N, &NRHS, A, &LDA, ipiv, B, &LDB, &info);
94 void getrs(
char op,
int N,
int NRHS, std::complex<double>
const *A,
int LDA,
int const *ipiv, std::complex<double> *B,
int LDB,
int &info) {
95 LAPACK_zgetrs(&op, &N, &NRHS, A, &LDA, ipiv, B, &LDB, &info);
int gtsv(DL &&dl, D &&d, DU &&du, B &&b)
Interface to the LAPACK gtsv routine.
int getri(A &&a, IPIV const &ipiv)
Interface to the LAPACK getri routine.
int gesvd(A &&a, S &&s, U &&u, VT &&vt)
Interface to the LAPACK gesvd routine.
int getrs(A const &a, B &&b, IPIV const &ipiv)
Interface to the LAPACK getrs routine.
int gelss(A &&a, B &&b, S &&s, double rcond, int &rank)
Interface to the LAPACK gelss routine.
int getrf(A &&a, IPIV &&ipiv)
Interface to the LAPACK getrf routine.
int geqp3(A &&a, JPVT &&jpvt, TAU &&tau)
Interface to the LAPACK geqp3 routine.
Provides a C++ interface for various LAPACK routines.