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);
 
Provides a C++ interface for various LAPACK routines.