17namespace nda::lapack::f77 {
19 void gelss(
int m,
int n,
int nrhs,
float *a,
int lda,
float *b,
int ldb,
float *s,
float rcond,
int &rank,
float *work,
int lwork,
20 [[maybe_unused]]
float *rwork,
int &info) {
21 LAPACK_sgelss(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, &info);
23 void gelss(
int m,
int n,
int nrhs, std::complex<float> *a,
int lda, std::complex<float> *b,
int ldb,
float *s,
float rcond,
int &rank,
24 std::complex<float> *work,
int lwork,
float *rwork,
int &info) {
25 LAPACK_cgelss(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, rwork, &info);
27 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,
28 [[maybe_unused]]
double *rwork,
int &info) {
29 LAPACK_dgelss(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, &info);
31 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,
32 std::complex<double> *work,
int lwork,
double *rwork,
int &info) {
33 LAPACK_zgelss(&m, &n, &nrhs, a, &lda, b, &ldb, s, &rcond, &rank, work, &lwork, rwork, &info);
36 void gesvd(
char jobu,
char jobvt,
int m,
int n,
float *a,
int lda,
float *s,
float *u,
int ldu,
float *vt,
int ldvt,
float *work,
int lwork,
37 [[maybe_unused]]
float *rwork,
int &info) {
38 LAPACK_sgesvd(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, &info);
40 void gesvd(
char jobu,
char jobvt,
int m,
int n, std::complex<float> *a,
int lda,
float *s, std::complex<float> *u,
int ldu, std::complex<float> *vt,
41 int ldvt, std::complex<float> *work,
int lwork,
float *rwork,
int &info) {
42 LAPACK_cgesvd(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, rwork, &info);
44 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,
45 [[maybe_unused]]
double *rwork,
int &info) {
46 LAPACK_dgesvd(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, &info);
48 void gesvd(
char jobu,
char jobvt,
int m,
int n, std::complex<double> *a,
int lda,
double *s, std::complex<double> *u,
int ldu,
49 std::complex<double> *vt,
int ldvt, std::complex<double> *work,
int lwork,
double *rwork,
int &info) {
50 LAPACK_zgesvd(&jobu, &jobvt, &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, rwork, &info);
53 void geqp3(
int m,
int n,
float *a,
int lda,
int *jpvt,
float *tau,
float *work,
int lwork, [[maybe_unused]]
float *rwork,
int &info) {
54 LAPACK_sgeqp3(&m, &n, a, &lda, jpvt, tau, work, &lwork, &info);
56 void geqp3(
int m,
int n, std::complex<float> *a,
int lda,
int *jpvt, std::complex<float> *tau, std::complex<float> *work,
int lwork,
float *rwork,
58 LAPACK_cgeqp3(&m, &n, a, &lda, jpvt, tau, work, &lwork, rwork, &info);
60 void geqp3(
int m,
int n,
double *a,
int lda,
int *jpvt,
double *tau,
double *work,
int lwork, [[maybe_unused]]
double *rwork,
int &info) {
61 LAPACK_dgeqp3(&m, &n, a, &lda, jpvt, tau, work, &lwork, &info);
63 void geqp3(
int m,
int n, std::complex<double> *a,
int lda,
int *jpvt, std::complex<double> *tau, std::complex<double> *work,
int lwork,
64 double *rwork,
int &info) {
65 LAPACK_zgeqp3(&m, &n, a, &lda, jpvt, tau, work, &lwork, rwork, &info);
68 void geqrf(
int m,
int n,
float *a,
int lda,
float *tau,
float *work,
int lwork,
int &info) {
69 LAPACK_sgeqrf(&m, &n, a, &lda, tau, work, &lwork, &info);
71 void geqrf(
int m,
int n, std::complex<float> *a,
int lda, std::complex<float> *tau, std::complex<float> *work,
int lwork,
int &info) {
72 LAPACK_cgeqrf(&m, &n, a, &lda, tau, work, &lwork, &info);
74 void geqrf(
int m,
int n,
double *a,
int lda,
double *tau,
double *work,
int lwork,
int &info) {
75 LAPACK_dgeqrf(&m, &n, a, &lda, tau, work, &lwork, &info);
77 void geqrf(
int m,
int n, std::complex<double> *a,
int lda, std::complex<double> *tau, std::complex<double> *work,
int lwork,
int &info) {
78 LAPACK_zgeqrf(&m, &n, a, &lda, tau, work, &lwork, &info);
81 void orgqr(
int m,
int n,
int k,
float *a,
int lda,
float const *tau,
float *work,
int lwork,
int &info) {
82 LAPACK_sorgqr(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
84 void orgqr(
int m,
int n,
int k,
double *a,
int lda,
double const *tau,
double *work,
int lwork,
int &info) {
85 LAPACK_dorgqr(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
88 void ungqr(
int m,
int n,
int k, std::complex<float> *a,
int lda, std::complex<float>
const *tau, std::complex<float> *work,
int lwork,
int &info) {
89 LAPACK_cungqr(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
91 void ungqr(
int m,
int n,
int k, std::complex<double> *a,
int lda, std::complex<double>
const *tau, std::complex<double> *work,
int lwork,
93 LAPACK_zungqr(&m, &n, &k, a, &lda, tau, work, &lwork, &info);
96 void getrf(
int m,
int n,
float *a,
int lda,
int *ipiv,
int &info) { LAPACK_sgetrf(&m, &n, a, &lda, ipiv, &info); }
97 void getrf(
int m,
int n, std::complex<float> *a,
int lda,
int *ipiv,
int &info) { LAPACK_cgetrf(&m, &n, a, &lda, ipiv, &info); }
98 void getrf(
int m,
int n,
double *a,
int lda,
int *ipiv,
int &info) { LAPACK_dgetrf(&m, &n, a, &lda, ipiv, &info); }
99 void getrf(
int m,
int n, std::complex<double> *a,
int lda,
int *ipiv,
int &info) { LAPACK_zgetrf(&m, &n, a, &lda, ipiv, &info); }
101 void getrs(
char op,
int n,
int nrhs,
float const *a,
int lda,
int const *ipiv,
float *b,
int ldb,
int &info) {
102 LAPACK_sgetrs(&op, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
104 void getrs(
char op,
int n,
int nrhs, std::complex<float>
const *a,
int lda,
int const *ipiv, std::complex<float> *b,
int ldb,
int &info) {
105 LAPACK_cgetrs(&op, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
107 void getrs(
char op,
int n,
int nrhs,
double const *a,
int lda,
int const *ipiv,
double *b,
int ldb,
int &info) {
108 LAPACK_dgetrs(&op, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
110 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) {
111 LAPACK_zgetrs(&op, &n, &nrhs, a, &lda, ipiv, b, &ldb, &info);
114 void getri(
int n,
float *a,
int lda,
int const *ipiv,
float *work,
int lwork,
int &info) { LAPACK_sgetri(&n, a, &lda, ipiv, work, &lwork, &info); }
115 void getri(
int n, std::complex<float> *a,
int lda,
int const *ipiv, std::complex<float> *work,
int lwork,
int &info) {
116 LAPACK_cgetri(&n, a, &lda, ipiv, work, &lwork, &info);
118 void getri(
int n,
double *a,
int lda,
int const *ipiv,
double *work,
int lwork,
int &info) {
119 LAPACK_dgetri(&n, a, &lda, ipiv, work, &lwork, &info);
121 void getri(
int n, std::complex<double> *a,
int lda,
int const *ipiv, std::complex<double> *work,
int lwork,
int &info) {
122 LAPACK_zgetri(&n, a, &lda, ipiv, work, &lwork, &info);
125 void gtsv(
int n,
int nrhs,
float *dl,
float *d,
float *du,
float *b,
int ldb,
int &info) { LAPACK_sgtsv(&n, &nrhs, dl, d, du, b, &ldb, &info); }
126 void gtsv(
int n,
int nrhs, std::complex<float> *dl, std::complex<float> *d, std::complex<float> *du, std::complex<float> *b,
int ldb,
int &info) {
127 LAPACK_cgtsv(&n, &nrhs, dl, d, du, b, &ldb, &info);
129 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); }
130 void gtsv(
int n,
int nrhs, std::complex<double> *dl, std::complex<double> *d, std::complex<double> *du, std::complex<double> *b,
int ldb,
132 LAPACK_zgtsv(&n, &nrhs, dl, d, du, b, &ldb, &info);
135 void stev(
char j,
int n,
float *d,
float *e,
float *z,
int ldz,
float *work,
int &info) { LAPACK_sstev(&j, &n, d, e, z, &ldz, work, &info); }
136 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); }
138 void syev(
char jobz,
char uplo,
int n,
float *a,
int lda,
float *w,
float *work,
int lwork,
int &info) {
139 LAPACK_ssyev(&jobz, &uplo, &n, a, &lda, w, work, &lwork, &info);
141 void syev(
char jobz,
char uplo,
int n,
double *a,
int lda,
double *w,
double *work,
int lwork,
int &info) {
142 LAPACK_dsyev(&jobz, &uplo, &n, a, &lda, w, work, &lwork, &info);
145 void heev(
char jobz,
char uplo,
int n, std::complex<float> *a,
int lda,
float *w, std::complex<float> *work,
int lwork,
float *rwork,
int &info) {
146 LAPACK_cheev(&jobz, &uplo, &n, a, &lda, w, work, &lwork, rwork, &info);
148 void heev(
char jobz,
char uplo,
int n, std::complex<double> *a,
int lda,
double *w, std::complex<double> *work,
int lwork,
double *rwork,
150 LAPACK_zheev(&jobz, &uplo, &n, a, &lda, w, work, &lwork, rwork, &info);
153 void sygv(
int itype,
char jobz,
char uplo,
int n,
float *a,
int lda,
float *b,
int ldb,
float *w,
float *work,
int lwork,
int &info) {
154 LAPACK_ssygv(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, &info);
156 void sygv(
int itype,
char jobz,
char uplo,
int n,
double *a,
int lda,
double *b,
int ldb,
double *w,
double *work,
int lwork,
int &info) {
157 LAPACK_dsygv(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, &info);
160 void hegv(
int itype,
char jobz,
char uplo,
int n, std::complex<float> *a,
int lda, std::complex<float> *b,
int ldb,
float *w,
161 std::complex<float> *work,
int lwork,
float *rwork,
int &info) {
162 LAPACK_chegv(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &info);
164 void hegv(
int itype,
char jobz,
char uplo,
int n, std::complex<double> *a,
int lda, std::complex<double> *b,
int ldb,
double *w,
165 std::complex<double> *work,
int lwork,
double *rwork,
int &info) {
166 LAPACK_zhegv(&itype, &jobz, &uplo, &n, a, &lda, b, &ldb, w, work, &lwork, rwork, &info);
169 void geev(
char jobvl,
char jobvr,
int n,
float *a,
int lda,
float *wr,
float *wi,
float *vl,
int ldvl,
float *vr,
int ldvr,
float *work,
int lwork,
171 LAPACK_sgeev(&jobvl, &jobvr, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr, work, &lwork, &info);
173 void geev(
char jobvl,
char jobvr,
int n, std::complex<float> *a,
int lda, std::complex<float> *w, std::complex<float> *vl,
int ldvl,
174 std::complex<float> *vr,
int ldvr, std::complex<float> *work,
int lwork,
float *rwork,
int &info) {
175 LAPACK_cgeev(&jobvl, &jobvr, &n, a, &lda, w, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info);
177 void geev(
char jobvl,
char jobvr,
int n,
double *a,
int lda,
double *wr,
double *wi,
double *vl,
int ldvl,
double *vr,
int ldvr,
double *work,
178 int lwork,
int &info) {
179 LAPACK_dgeev(&jobvl, &jobvr, &n, a, &lda, wr, wi, vl, &ldvl, vr, &ldvr, work, &lwork, &info);
181 void geev(
char jobvl,
char jobvr,
int n, std::complex<double> *a,
int lda, std::complex<double> *w, std::complex<double> *vl,
int ldvl,
182 std::complex<double> *vr,
int ldvr, std::complex<double> *work,
int lwork,
double *rwork,
int &info) {
183 LAPACK_zgeev(&jobvl, &jobvr, &n, a, &lda, w, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info);
186 void ggev(
char jobvl,
char jobvr,
int n,
float *a,
int lda,
float *b,
int ldb,
float *alphar,
float *alphai,
float *beta,
float *vl,
int ldvl,
187 float *vr,
int ldvr,
float *work,
int lwork,
int &info) {
188 LAPACK_sggev(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphar, alphai, beta, vl, &ldvl, vr, &ldvr, work, &lwork, &info);
190 void ggev(
char jobvl,
char jobvr,
int n, std::complex<float> *a,
int lda, std::complex<float> *b,
int ldb, std::complex<float> *alpha,
191 std::complex<float> *beta, std::complex<float> *vl,
int ldvl, std::complex<float> *vr,
int ldvr, std::complex<float> *work,
int lwork,
192 float *rwork,
int &info) {
193 LAPACK_cggev(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alpha, beta, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info);
195 void ggev(
char jobvl,
char jobvr,
int n,
double *a,
int lda,
double *b,
int ldb,
double *alphar,
double *alphai,
double *beta,
double *vl,
int ldvl,
196 double *vr,
int ldvr,
double *work,
int lwork,
int &info) {
197 LAPACK_dggev(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alphar, alphai, beta, vl, &ldvl, vr, &ldvr, work, &lwork, &info);
199 void ggev(
char jobvl,
char jobvr,
int n, std::complex<double> *a,
int lda, std::complex<double> *b,
int ldb, std::complex<double> *alpha,
200 std::complex<double> *beta, std::complex<double> *vl,
int ldvl, std::complex<double> *vr,
int ldvr, std::complex<double> *work,
int lwork,
201 double *rwork,
int &info) {
202 LAPACK_zggev(&jobvl, &jobvr, &n, a, &lda, b, &ldb, alpha, beta, vl, &ldvl, vr, &ldvr, work, &lwork, rwork, &info);
Provides a C++ interface for various LAPACK routines.