17#include <uni20/config.hpp>
20#include <source_location>
23#if UNI20_HAS_MPLAPACK_FLOAT128
36[[noreturn]]
inline void raise_terminal_info(
char const* routine,
char const* message, blas_int info,
37 std::source_location where = std::source_location::current())
39 trace::raise(LapackError(routine, info, message), where);
42inline void check_invalid_argument(
char const* routine, blas_int info)
44 CHECK(info >= 0, routine, info,
"LAPACK provider rejected a wrapper-generated argument");
47inline void check_singular(
char const* routine, blas_int info,
48 std::source_location where = std::source_location::current())
50 check_invalid_argument(routine, info);
53 raise_terminal_info(routine,
"found a singular matrix", info, where);
57inline void check_positive_definite(
char const* routine, blas_int info,
58 std::source_location where = std::source_location::current())
60 check_invalid_argument(routine, info);
63 raise_terminal_info(routine,
"found a matrix that is not positive definite", info, where);
67inline void check_singular_diagonal_block(
char const* routine, blas_int info,
68 std::source_location where = std::source_location::current())
70 check_invalid_argument(routine, info);
73 raise_terminal_info(routine,
"found a singular diagonal block", info, where);
77inline void check_singular_triangular(
char const* routine, blas_int info,
78 std::source_location where = std::source_location::current())
80 check_invalid_argument(routine, info);
83 raise_terminal_info(routine,
"found a singular triangular matrix", info, where);
87inline void check_convergence(
char const* routine, blas_int info,
88 std::source_location where = std::source_location::current())
90 check_invalid_argument(routine, info);
93 raise_terminal_info(routine,
"failed to converge", info, where);
97inline void check_generalized_symmetric_eigensolver(
char const* routine, blas_int n, blas_int info,
98 std::source_location where = std::source_location::current())
100 check_invalid_argument(routine, info);
103 raise_terminal_info(routine,
"found a metric matrix that is not positive definite", info, where);
107 raise_terminal_info(routine,
"failed to converge", info, where);
111inline bool check_expert_solve(
char const* routine, blas_int n, blas_int info,
112 std::source_location where = std::source_location::current())
114 check_invalid_argument(routine, info);
115 if (info > 0 && info <= n)
117 raise_terminal_info(routine,
"found a singular matrix", info, where);
121 raise_terminal_info(routine,
"failed unexpectedly", info, where);
123 return info == n + 1;
126inline bool check_symmetric_indefinite_expert_solve(
char const* routine, blas_int n, blas_int info,
127 std::source_location where = std::source_location::current())
129 check_invalid_argument(routine, info);
130 if (info > 0 && info <= n)
132 raise_terminal_info(routine,
"found a singular diagonal block", info, where);
136 raise_terminal_info(routine,
"failed unexpectedly", info, where);
138 return info == n + 1;
141inline bool check_positive_definite_expert_solve(
char const* routine, blas_int n, blas_int info,
142 std::source_location where = std::source_location::current())
144 check_invalid_argument(routine, info);
145 if (info > 0 && info <= n)
147 raise_terminal_info(routine,
"found a matrix that is not positive definite", info, where);
151 raise_terminal_info(routine,
"failed unexpectedly", info, where);
153 return info == n + 1;
156inline void check_equilibration(
char const* routine, blas_int m, blas_int info,
157 std::source_location where = std::source_location::current())
159 check_invalid_argument(routine, info);
160 if (info > 0 && info <= m)
162 raise_terminal_info(routine,
"found an exactly zero row", info, where);
166 raise_terminal_info(routine,
"found an exactly zero column", info, where);
170inline bool check_sylvester(
char const* routine, blas_int info,
171 std::source_location where = std::source_location::current())
173 check_invalid_argument(routine, info);
176 raise_terminal_info(routine,
"failed unexpectedly", info, where);
184template <uni20::LapackReal Scalar>
191template <uni20::LapackComplexReal Real>
192Real lange(
char norm, blas_int m, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
Real* work)
198template <uni20::LapackReal Scalar>
205template <uni20::LapackComplexReal Real>
206Real lanhe(
char norm,
char uplo, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
Real* work)
212template <uni20::LapackReal Scalar>
219template <uni20::LapackComplexReal Real>
220Real lantr(
char norm,
char uplo,
char diag, blas_int m, blas_int n, uni20::detail::standard_complex<Real>* a,
221 blas_int lda,
Real* work)
227template <uni20::LapackReal Scalar>
234template <uni20::LapackReal Scalar>
235void gbsv(blas_int n, blas_int kl, blas_int ku, blas_int nrhs,
Scalar* ab, blas_int ldab, blas_int* ipiv,
Scalar* b,
238 blas_int
const info =
unchecked::gbsv(n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb);
239 detail::check_singular(
"gbsv", info);
243template <uni20::LapackReal Scalar>
244void gbtrf(blas_int m, blas_int n, blas_int kl, blas_int ku,
Scalar* ab, blas_int ldab, blas_int* ipiv)
247 detail::check_singular(
"gbtrf", info);
251template <uni20::LapackReal Scalar>
252void gbtrs(
char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs,
Scalar* ab, blas_int ldab,
253 blas_int
const* ipiv,
Scalar* b, blas_int ldb)
255 blas_int
const info =
unchecked::gbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb);
256 detail::check_invalid_argument(
"gbtrs", info);
260template <uni20::LapackReal Scalar>
265 blas_int
const info =
unchecked::gbcon(
norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, iwork);
266 detail::check_invalid_argument(
"gbcon", info);
271template <uni20::LapackReal Scalar>
272void gbrfs(
char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs,
Scalar* ab, blas_int ldab,
Scalar* afb,
273 blas_int ldafb, blas_int
const* ipiv,
Scalar* b, blas_int ldb,
Scalar* x, blas_int ldx,
276 blas_int
const info =
unchecked::gbrfs(trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, b, ldb, x, ldx,
277 forward_error, backward_error, work, iwork);
278 detail::check_invalid_argument(
"gbrfs", info);
282template <uni20::LapackReal Scalar>
283bool gbsvx(
char fact,
char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs,
Scalar* ab, blas_int ldab,
286 Scalar* work, blas_int* iwork)
288 blas_int
const info =
289 unchecked::gbsvx(fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, equed, row_scale, column_scale, b, ldb,
290 x, ldx, rcond, forward_error, backward_error, work, iwork);
291 return detail::check_expert_solve(
"gbsvx", n, info);
295template <uni20::LapackReal Scalar>
296void gbequ(
bool power_of_two, blas_int m, blas_int n, blas_int kl, blas_int ku,
Scalar* ab, blas_int ldab,
299 blas_int
const info =
unchecked::gbequ(power_of_two, m, n, kl, ku, ab, ldab, row_scale, column_scale, row_condition,
300 column_condition, max_abs);
301 detail::check_equilibration(
"gbequ", m, info);
305template <uni20::LapackReal Scalar>
306void pbsv(
char uplo, blas_int n, blas_int kd, blas_int nrhs,
Scalar* ab, blas_int ldab,
Scalar* b, blas_int ldb)
308 blas_int
const info =
unchecked::pbsv(uplo, n, kd, nrhs, ab, ldab, b, ldb);
309 detail::check_positive_definite(
"pbsv", info);
313template <uni20::LapackReal Scalar>
void pbtrf(
char uplo, blas_int n, blas_int kd,
Scalar* ab, blas_int ldab)
316 detail::check_positive_definite(
"pbtrf", info);
320template <uni20::LapackReal Scalar>
321void pbtrs(
char uplo, blas_int n, blas_int kd, blas_int nrhs,
Scalar* ab, blas_int ldab,
Scalar* b, blas_int ldb)
323 blas_int
const info =
unchecked::pbtrs(uplo, n, kd, nrhs, ab, ldab, b, ldb);
324 detail::check_invalid_argument(
"pbtrs", info);
327 detail::raise_terminal_info(
"pbtrs",
"failed to solve the factored system", info);
332template <uni20::LapackReal Scalar>
336 blas_int
const info =
unchecked::pbcon(uplo, n, kd, ab, ldab, anorm, rcond, work, iwork);
337 detail::check_invalid_argument(
"pbcon", info);
342template <uni20::LapackReal Scalar>
343void pbrfs(
char uplo, blas_int n, blas_int kd, blas_int nrhs,
Scalar* ab, blas_int ldab,
Scalar* afb, blas_int ldafb,
345 Scalar* work, blas_int* iwork)
347 blas_int
const info =
unchecked::pbrfs(uplo, n, kd, nrhs, ab, ldab, afb, ldafb, b, ldb, x, ldx, forward_error,
348 backward_error, work, iwork);
349 detail::check_invalid_argument(
"pbrfs", info);
353template <uni20::LapackReal Scalar>
354bool pbsvx(
char fact,
char uplo, blas_int n, blas_int kd, blas_int nrhs,
Scalar* ab, blas_int ldab,
Scalar* afb,
358 blas_int
const info =
unchecked::pbsvx(fact, uplo, n, kd, nrhs, ab, ldab, afb, ldafb, equed,
scale, b, ldb, x, ldx,
359 rcond, forward_error, backward_error, work, iwork);
360 return detail::check_positive_definite_expert_solve(
"pbsvx", n, info);
364template <uni20::LapackReal Scalar>
365void gesv(blas_int n, blas_int nrhs,
Scalar* a, blas_int lda, blas_int* ipiv,
Scalar* b, blas_int ldb)
368 detail::check_singular(
"gesv", info);
372template <uni20::LapackComplexReal Real>
373void gesv(blas_int n, blas_int nrhs, uni20::detail::standard_complex<Real>* a, blas_int lda, blas_int* ipiv,
374 uni20::detail::standard_complex<Real>* b, blas_int ldb)
377 detail::check_singular(
"gesv", info);
381template <uni20::LapackReal Scalar>
382bool gesvx(
char fact,
char trans, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda,
Scalar* af, blas_int ldaf,
386 blas_int
const info =
unchecked::gesvx(fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, equed, row_scale, column_scale,
387 b, ldb, x, ldx, rcond, forward_error, backward_error, work, iwork);
388 return detail::check_expert_solve(
"gesvx", n, info);
392template <uni20::LapackReal Scalar>
396 blas_int
const info =
397 unchecked::geequ(m, n, a, lda, row_scale, column_scale, row_condition, column_condition, max_abs);
398 detail::check_equilibration(
"geequ", m, info);
402template <uni20::LapackReal Scalar>
void getrf(blas_int m, blas_int n,
Scalar* a, blas_int lda, blas_int* ipiv)
405 detail::check_singular(
"getrf", info);
409template <uni20::LapackComplexReal Real>
410void getrf(blas_int m, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda, blas_int* ipiv)
413 detail::check_singular(
"getrf", info);
417template <uni20::LapackReal Scalar>
418void getrs(
char trans, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda, blas_int
const* ipiv,
Scalar* b,
421 blas_int
const info =
unchecked::getrs(trans, n, nrhs, a, lda, ipiv, b, ldb);
422 detail::check_invalid_argument(
"getrs", info);
426template <uni20::LapackComplexReal Real>
427void getrs(
char trans, blas_int n, blas_int nrhs, uni20::detail::standard_complex<Real>* a, blas_int lda,
428 blas_int
const* ipiv, uni20::detail::standard_complex<Real>* b, blas_int ldb)
430 blas_int
const info =
unchecked::getrs(trans, n, nrhs, a, lda, ipiv, b, ldb);
431 detail::check_invalid_argument(
"getrs", info);
435template <uni20::LapackReal Scalar>
436void gerfs(
char trans, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda,
Scalar* factors, blas_int factor_lda,
437 blas_int
const* ipiv,
Scalar* b, blas_int ldb,
Scalar* x, blas_int ldx,
Scalar* forward_error,
440 blas_int
const info =
unchecked::gerfs(trans, n, nrhs, a, lda, factors, factor_lda, ipiv, b, ldb, x, ldx,
441 forward_error, backward_error, work, iwork);
442 detail::check_invalid_argument(
"gerfs", info);
446template <uni20::LapackReal Scalar>
450 detail::check_singular(
"getri", info);
454template <uni20::LapackComplexReal Real>
455void getri(blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda, blas_int* ipiv,
456 uni20::detail::standard_complex<Real>* work, blas_int lwork)
459 detail::check_singular(
"getri", info);
463template <uni20::LapackReal Scalar>
468 detail::check_invalid_argument(
"gecon", info);
473template <uni20::LapackComplexReal Real>
474Real gecon(
char norm, blas_int n, uni20::detail::standard_complex<Real>
const* a, blas_int lda,
Real anorm,
475 uni20::detail::standard_complex<Real>* work,
Real* rwork)
479 detail::check_invalid_argument(
"gecon", info);
484template <uni20::LapackReal Scalar>
485void gels(
char trans, blas_int m, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda,
Scalar* b, blas_int ldb,
486 Scalar* work, blas_int lwork)
488 blas_int
const info =
unchecked::gels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork);
489 detail::check_invalid_argument(
"gels", info);
492 detail::raise_terminal_info(
"gels",
"found a rank-deficient triangular factor", info);
497template <uni20::LapackReal Scalar>
499 Scalar rcond, blas_int& rank,
Scalar* work, blas_int lwork)
501 blas_int
const info =
unchecked::gelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork);
502 detail::check_convergence(
"gelss", info);
506template <uni20::LapackReal Scalar>
508 Scalar rcond, blas_int& rank,
Scalar* work, blas_int lwork, blas_int* iwork)
510 blas_int
const info =
unchecked::gelsd(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, iwork);
511 detail::check_convergence(
"gelsd", info);
515template <uni20::LapackReal Scalar>
516void gelsy(blas_int m, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda,
Scalar* b, blas_int ldb, blas_int* jpvt,
517 Scalar rcond, blas_int& rank,
Scalar* work, blas_int lwork)
519 blas_int
const info =
unchecked::gelsy(m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, lwork);
520 detail::check_invalid_argument(
"gelsy", info);
523 detail::raise_terminal_info(
"gelsy",
"failed to compute a rank-revealing least-squares solution", info);
528template <uni20::LapackScalar Scalar>
532 detail::check_invalid_argument(
"geqrf", info);
536template <uni20::LapackScalar Scalar>
540 detail::check_invalid_argument(
"gelqf", info);
544template <uni20::LapackReal Scalar>
548 detail::check_invalid_argument(
"geqlf", info);
552template <uni20::LapackReal Scalar>
556 detail::check_invalid_argument(
"gerqf", info);
560template <uni20::LapackScalar Scalar>
564 detail::check_invalid_argument(
"orgqr", info);
568template <uni20::LapackScalar Scalar>
572 detail::check_invalid_argument(
"orglq", info);
576template <uni20::LapackReal Scalar>
580 detail::check_invalid_argument(
"orgql", info);
584template <uni20::LapackReal Scalar>
588 detail::check_invalid_argument(
"orgrq", info);
592template <uni20::LapackReal Scalar>
594 blas_int ldc,
Scalar* work, blas_int lwork)
596 blas_int
const info =
unchecked::ormqr(side, trans, m, n, k, a, lda, tau,
c, ldc, work, lwork);
597 detail::check_invalid_argument(
"ormqr", info);
601template <uni20::LapackReal Scalar>
603 blas_int ldc,
Scalar* work, blas_int lwork)
605 blas_int
const info =
unchecked::ormlq(side, trans, m, n, k, a, lda, tau,
c, ldc, work, lwork);
606 detail::check_invalid_argument(
"ormlq", info);
610template <uni20::LapackReal Scalar>
612 blas_int ldc,
Scalar* work, blas_int lwork)
614 blas_int
const info =
unchecked::ormql(side, trans, m, n, k, a, lda, tau,
c, ldc, work, lwork);
615 detail::check_invalid_argument(
"ormql", info);
619template <uni20::LapackReal Scalar>
621 blas_int ldc,
Scalar* work, blas_int lwork)
623 blas_int
const info =
unchecked::ormrq(side, trans, m, n, k, a, lda, tau,
c, ldc, work, lwork);
624 detail::check_invalid_argument(
"ormrq", info);
628template <uni20::LapackReal Scalar>
630 Scalar* work, blas_int lwork)
632 blas_int
const info =
unchecked::gebrd(m, n, a, lda, d, e, tauq, taup, work, lwork);
633 detail::check_convergence(
"gebrd", info);
637template <uni20::LapackReal Scalar>
641 blas_int
const info =
unchecked::gehrd(n, first, last, a, lda, tau, work, lwork);
642 detail::check_invalid_argument(
"gehrd", info);
646template <uni20::LapackReal Scalar>
649 blas_int
const info =
unchecked::geqp3(m, n, a, lda, jpvt, tau, work, lwork);
650 detail::check_invalid_argument(
"geqp3", info);
654template <uni20::LapackReal Scalar>
658 blas_int
const info =
unchecked::sytrd(uplo, n, a, lda, d, e, tau, work, lwork);
659 detail::check_convergence(
"sytrd", info);
663template <uni20::LapackReal Scalar>
666 blas_int
const info =
unchecked::syev(jobz, uplo, n, a, lda, w, work, lwork);
667 detail::check_convergence(
"syev", info);
671template <uni20::LapackReal Scalar>
673 blas_int* iwork, blas_int liwork)
675 blas_int
const info =
unchecked::syevd(jobz, uplo, n, a, lda, w, work, lwork, iwork, liwork);
676 detail::check_convergence(
"syevd", info);
680template <uni20::LapackReal Scalar>
682 blas_int iu,
Scalar abstol, blas_int& selected_count,
Scalar* w,
Scalar* z, blas_int ldz, blas_int* isuppz,
683 Scalar* work, blas_int lwork, blas_int* iwork, blas_int liwork)
685 blas_int
const info =
unchecked::syevr(jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, selected_count, w, z,
686 ldz, isuppz, work, lwork, iwork, liwork);
687 detail::check_convergence(
"syevr", info);
691template <uni20::LapackReal Scalar>
693 Scalar* work, blas_int lwork)
695 blas_int
const info =
unchecked::sygv(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork);
696 detail::check_generalized_symmetric_eigensolver(
"sygv", n, info);
702template <uni20::LapackReal Scalar>
703void sygvd(blas_int itype,
char jobz,
char uplo, blas_int n,
Scalar* a, blas_int lda,
Scalar* b, blas_int ldb,
704 Scalar* w,
Scalar* work, blas_int lwork, blas_int* iwork, blas_int liwork)
706 blas_int
const info =
unchecked::sygvd(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, iwork, liwork);
707 detail::check_generalized_symmetric_eigensolver(
"sygvd", n, info);
711template <uni20::LapackReal Scalar>
712void sygvx(blas_int itype,
char jobz,
char range,
char uplo, blas_int n,
Scalar* a, blas_int lda,
Scalar* b,
713 blas_int ldb,
Scalar vl,
Scalar vu, blas_int il, blas_int iu,
Scalar abstol, blas_int& selected_count,
714 Scalar* w,
Scalar* z, blas_int ldz,
Scalar* work, blas_int lwork, blas_int* iwork, blas_int* ifail)
716 blas_int
const info =
unchecked::sygvx(itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, il, iu, abstol,
717 selected_count, w, z, ldz, work, lwork, iwork, ifail);
718 detail::check_generalized_symmetric_eigensolver(
"sygvx", n, info);
722template <uni20::LapackComplexReal Real>
723void heev(
char jobz,
char uplo, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
Real* w,
724 uni20::detail::standard_complex<Real>* work, blas_int lwork,
Real* rwork)
726 blas_int
const info =
unchecked::heev(jobz, uplo, n, a, lda, w, work, lwork, rwork);
727 detail::check_convergence(
"heev", info);
731template <uni20::LapackComplexReal Real>
732void heevd(
char jobz,
char uplo, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
Real* w,
733 uni20::detail::standard_complex<Real>* work, blas_int lwork,
Real* rwork, blas_int lrwork, blas_int* iwork,
736 blas_int
const info =
unchecked::heevd(jobz, uplo, n, a, lda, w, work, lwork, rwork, lrwork, iwork, liwork);
737 detail::check_convergence(
"heevd", info);
741template <uni20::LapackComplexReal Real>
742void heevr(
char jobz,
char range,
char uplo, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
743 Real vl,
Real vu, blas_int il, blas_int iu,
Real abstol, blas_int& selected_count,
Real* w,
744 uni20::detail::standard_complex<Real>* z, blas_int ldz, blas_int* isuppz,
745 uni20::detail::standard_complex<Real>* work, blas_int lwork,
Real* rwork, blas_int lrwork, blas_int* iwork,
748 blas_int
const info =
unchecked::heevr(jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, selected_count, w, z,
749 ldz, isuppz, work, lwork, rwork, lrwork, iwork, liwork);
750 detail::check_convergence(
"heevr", info);
754template <uni20::LapackComplexReal Real>
755void hegv(blas_int itype,
char jobz,
char uplo, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
756 uni20::detail::standard_complex<Real>* b, blas_int ldb,
Real* w, uni20::detail::standard_complex<Real>* work,
757 blas_int lwork,
Real* rwork)
759 blas_int
const info =
unchecked::hegv(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork);
760 detail::check_generalized_symmetric_eigensolver(
"hegv", n, info);
765template <uni20::LapackComplexReal Real>
766void hegvd(blas_int itype,
char jobz,
char uplo, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
767 uni20::detail::standard_complex<Real>* b, blas_int ldb,
Real* w, uni20::detail::standard_complex<Real>* work,
768 blas_int lwork,
Real* rwork, blas_int lrwork, blas_int* iwork, blas_int liwork)
770 blas_int
const info =
771 unchecked::hegvd(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, rwork, lrwork, iwork, liwork);
772 detail::check_generalized_symmetric_eigensolver(
"hegvd", n, info);
776template <uni20::LapackComplexReal Real>
777void hegvx(blas_int itype,
char jobz,
char range,
char uplo, blas_int n, uni20::detail::standard_complex<Real>* a,
778 blas_int lda, uni20::detail::standard_complex<Real>* b, blas_int ldb,
Real vl,
Real vu, blas_int il,
779 blas_int iu,
Real abstol, blas_int& selected_count,
Real* w, uni20::detail::standard_complex<Real>* z,
780 blas_int ldz, uni20::detail::standard_complex<Real>* work, blas_int lwork,
Real* rwork, blas_int* iwork,
783 blas_int
const info =
unchecked::hegvx(itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, il, iu, abstol,
784 selected_count, w, z, ldz, work, lwork, rwork, iwork, ifail);
785 detail::check_generalized_symmetric_eigensolver(
"hegvx", n, info);
789template <uni20::LapackReal Scalar>
791 blas_int ldvl,
Scalar* vr, blas_int ldvr,
Scalar* work, blas_int lwork)
793 blas_int
const info =
unchecked::geev(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork);
794 detail::check_convergence(
"geev", info);
798template <uni20::LapackReal Scalar>
803 blas_int
const info =
unchecked::geevx(balanc, jobvl, jobvr, sense, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, ilo, ihi,
804 scale, abnrm, rconde, rcondv, work, lwork, iwork);
805 detail::check_convergence(
"geevx", info);
809template <uni20::LapackReal Scalar>
813 detail::check_invalid_argument(
"gebal", info);
816 detail::raise_terminal_info(
"gebal",
"failed unexpectedly", info);
821template <uni20::LapackReal Scalar>
822void gebak(
char job,
char side, blas_int n, blas_int first, blas_int last,
Scalar*
scale, blas_int vector_count,
823 Scalar* vectors, blas_int leading_dimension)
825 blas_int
const info =
unchecked::gebak(job, side, n, first, last,
scale, vector_count, vectors, leading_dimension);
826 detail::check_invalid_argument(
"gebak", info);
829 detail::raise_terminal_info(
"gebak",
"failed unexpectedly", info);
834template <uni20::LapackComplexReal Real>
835void geev(
char jobvl,
char jobvr, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
836 uni20::detail::standard_complex<Real>* w, uni20::detail::standard_complex<Real>* vl, blas_int ldvl,
837 uni20::detail::standard_complex<Real>* vr, blas_int ldvr, uni20::detail::standard_complex<Real>* work,
838 blas_int lwork,
Real* rwork)
840 blas_int
const info =
unchecked::geev(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork);
841 detail::check_convergence(
"geev", info);
845template <uni20::LapackReal Scalar>
846void gees(
char jobvs,
char sort, blas_int n,
Scalar* a, blas_int lda, blas_int& selected_dimension,
Scalar* wr,
849 blas_int
const info =
850 unchecked::gees(jobvs, sort, n, a, lda, selected_dimension, wr, wi, vs, ldvs, work, lwork, bwork);
851 detail::check_invalid_argument(
"gees", info);
854 detail::raise_terminal_info(
"gees",
"failed to compute a Schur form", info);
859template <uni20::LapackComplexReal Real>
860void gees(
char jobvs,
char sort, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
861 blas_int& selected_dimension, uni20::detail::standard_complex<Real>* w,
862 uni20::detail::standard_complex<Real>* vs, blas_int ldvs, uni20::detail::standard_complex<Real>* work,
863 blas_int lwork,
Real* rwork, blas_int* bwork)
865 blas_int
const info =
866 unchecked::gees(jobvs, sort, n, a, lda, selected_dimension, w, vs, ldvs, work, lwork, rwork, bwork);
867 detail::check_invalid_argument(
"gees", info);
870 detail::raise_terminal_info(
"gees",
"failed to compute a Schur form", info);
875template <uni20::LapackReal Scalar>
876void hseqr(
char job,
char compz, blas_int n, blas_int first, blas_int last,
Scalar* h, blas_int ldh,
Scalar* wr,
879 blas_int
const info =
unchecked::hseqr(job, compz, n, first, last, h, ldh, wr, wi, z, ldz, work, lwork);
880 detail::check_invalid_argument(
"hseqr", info);
883 detail::raise_terminal_info(
"hseqr",
"failed to compute a Schur form", info);
888template <uni20::LapackReal Scalar>
889void trexc(
char compq, blas_int n,
Scalar* t, blas_int ldt,
Scalar* q, blas_int ldq, blas_int& first, blas_int& last,
892 blas_int
const info =
unchecked::trexc(compq, n, t, ldt, q, ldq, first, last, work);
893 detail::check_invalid_argument(
"trexc", info);
896 detail::raise_terminal_info(
"trexc",
"failed to reorder adjacent Schur blocks", info);
901template <uni20::LapackComplexReal Real>
902void trexc(
char compq, blas_int n, uni20::detail::standard_complex<Real>* t, blas_int ldt,
903 uni20::detail::standard_complex<Real>* q, blas_int ldq, blas_int& first, blas_int& last)
905 blas_int
const info =
unchecked::trexc(compq, n, t, ldt, q, ldq, first, last);
906 detail::check_invalid_argument(
"trexc", info);
909 detail::raise_terminal_info(
"trexc",
"failed to reorder adjacent Schur blocks", info);
914template <uni20::LapackReal Scalar>
915void trsen(
char job,
char compq, blas_int* select, blas_int n,
Scalar* t, blas_int ldt,
Scalar* q, blas_int ldq,
916 Scalar* wr,
Scalar* wi, blas_int& selected_dimension,
Scalar& reciprocal_eigenvalue_cluster_condition,
917 Scalar& reciprocal_invariant_subspace_condition,
Scalar* work, blas_int lwork, blas_int* iwork,
920 blas_int
const info =
unchecked::trsen(job, compq, select, n, t, ldt, q, ldq, wr, wi, selected_dimension,
921 reciprocal_eigenvalue_cluster_condition,
922 reciprocal_invariant_subspace_condition, work, lwork, iwork, liwork);
923 detail::check_invalid_argument(
"trsen", info);
926 detail::raise_terminal_info(
"trsen",
"could not reorder the selected Schur blocks", info);
930 detail::raise_terminal_info(
"trsen",
"failed unexpectedly", info);
935template <uni20::LapackReal Scalar>
936void trevc(
char side,
char howmny, blas_int* select, blas_int n,
Scalar* t, blas_int ldt,
Scalar* vl, blas_int ldvl,
937 Scalar* vr, blas_int ldvr, blas_int mm, blas_int& computed_vectors,
Scalar* work)
939 blas_int
const info =
940 unchecked::trevc(side, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, mm, computed_vectors, work);
941 detail::check_invalid_argument(
"trevc", info);
944 detail::raise_terminal_info(
"trevc",
"failed to compute all requested Schur eigenvectors", info);
949template <uni20::LapackReal Scalar>
950void trsna(
char job,
char howmny, blas_int* select, blas_int n,
Scalar* t, blas_int ldt,
Scalar* vl, blas_int ldvl,
951 Scalar* vr, blas_int ldvr,
Scalar* reciprocal_eigenvalue_condition_numbers,
952 Scalar* reciprocal_eigenvector_condition_numbers, blas_int mm, blas_int& computed_estimates,
Scalar* work,
953 blas_int ldwork, blas_int* iwork)
955 blas_int
const info =
956 unchecked::trsna(job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, reciprocal_eigenvalue_condition_numbers,
957 reciprocal_eigenvector_condition_numbers, mm, computed_estimates, work, ldwork, iwork);
958 detail::check_invalid_argument(
"trsna", info);
961 detail::raise_terminal_info(
"trsna",
"failed unexpectedly", info);
966template <uni20::LapackReal Scalar>
971 blas_int
const info =
972 unchecked::ggev(jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai,
beta, vl, ldvl, vr, ldvr, work, lwork);
973 detail::check_convergence(
"ggev", info);
977template <uni20::LapackReal Scalar>
978void ggevx(
char balanc,
char jobvl,
char jobvr,
char sense, blas_int n,
Scalar* a, blas_int lda,
Scalar* b,
981 Scalar* rconde,
Scalar* rcondv,
Scalar* work, blas_int lwork, blas_int* iwork, blas_int* bwork)
983 blas_int
const info =
984 unchecked::ggevx(balanc, jobvl, jobvr, sense, n, a, lda, b, ldb, alphar, alphai,
beta, vl, ldvl, vr, ldvr, ilo,
985 ihi, lscale, rscale, abnrm, bbnrm, rconde, rcondv, work, lwork, iwork, bwork);
986 detail::check_convergence(
"ggevx", info);
990template <uni20::LapackReal Scalar>
991void ggbal(
char job, blas_int n,
Scalar* a, blas_int lda,
Scalar* b, blas_int ldb, blas_int& first, blas_int& last,
994 blas_int
const info =
unchecked::ggbal(job, n, a, lda, b, ldb, first, last, lscale, rscale, work);
995 detail::check_invalid_argument(
"ggbal", info);
998 detail::raise_terminal_info(
"ggbal",
"failed unexpectedly", info);
1003template <uni20::LapackReal Scalar>
1004void ggbak(
char job,
char side, blas_int n, blas_int first, blas_int last,
Scalar* lscale,
Scalar* rscale,
1005 blas_int vector_count,
Scalar* vectors, blas_int leading_dimension)
1007 blas_int
const info =
1008 unchecked::ggbak(job, side, n, first, last, lscale, rscale, vector_count, vectors, leading_dimension);
1009 detail::check_invalid_argument(
"ggbak", info);
1012 detail::raise_terminal_info(
"ggbak",
"failed unexpectedly", info);
1017template <uni20::LapackReal Scalar>
1018void gges(
char jobvsl,
char jobvsr,
char sort, blas_int n,
Scalar* a, blas_int lda,
Scalar* b, blas_int ldb,
1020 Scalar* vsr, blas_int ldvsr,
Scalar* work, blas_int lwork, blas_int* bwork)
1022 blas_int
const info =
unchecked::gges(jobvsl, jobvsr, sort, n, a, lda, b, ldb, selected_dimension, alphar, alphai,
1023 beta, vsl, ldvsl, vsr, ldvsr, work, lwork, bwork);
1024 detail::check_invalid_argument(
"gges", info);
1025 if (info > 0 && info <= n)
1027 detail::raise_terminal_info(
"gges",
"failed to compute a generalized Schur form", info);
1031 detail::raise_terminal_info(
"gges",
"failed after generalized Schur convergence", info);
1036template <uni20::LapackReal Scalar>
1037void gghrd(
char compq,
char compz, blas_int n, blas_int first, blas_int last,
Scalar* a, blas_int lda,
Scalar* b,
1038 blas_int ldb,
Scalar* q, blas_int ldq,
Scalar* z, blas_int ldz)
1040 blas_int
const info =
unchecked::gghrd(compq, compz, n, first, last, a, lda, b, ldb, q, ldq, z, ldz);
1041 detail::check_invalid_argument(
"gghrd", info);
1044 detail::raise_terminal_info(
"gghrd",
"failed unexpectedly", info);
1049template <uni20::LapackReal Scalar>
1050void hgeqz(
char job,
char compq,
char compz, blas_int n, blas_int first, blas_int last,
Scalar* h, blas_int ldh,
1052 blas_int ldz,
Scalar* work, blas_int lwork)
1054 blas_int
const info =
unchecked::hgeqz(job, compq, compz, n, first, last, h, ldh, t, ldt, alphar, alphai,
beta, q,
1055 ldq, z, ldz, work, lwork);
1056 detail::check_invalid_argument(
"hgeqz", info);
1059 detail::raise_terminal_info(
"hgeqz",
"failed to compute a generalized Schur form", info);
1064template <uni20::LapackReal Scalar>
1066 blas_int ldq,
Scalar* z, blas_int ldz, blas_int& first, blas_int& last,
Scalar* work, blas_int lwork)
1068 blas_int
const info =
unchecked::tgexc(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, first, last, work, lwork);
1069 detail::check_invalid_argument(
"tgexc", info);
1072 detail::raise_terminal_info(
"tgexc",
"could not swap adjacent generalized Schur blocks", info);
1076 detail::raise_terminal_info(
"tgexc",
"failed unexpectedly", info);
1081template <uni20::LapackReal Scalar>
1082void tgsen(blas_int ijob,
bool wantq,
bool wantz, blas_int* select, blas_int n,
Scalar* a, blas_int lda,
Scalar* b,
1085 blas_int* iwork, blas_int liwork)
1087 blas_int
const info =
unchecked::tgsen(ijob, wantq, wantz, select, n, a, lda, b, ldb, alphar, alphai,
beta, q, ldq, z,
1088 ldz, selected_dimension, pl, pr, dif, work, lwork, iwork, liwork);
1089 detail::check_invalid_argument(
"tgsen", info);
1092 detail::raise_terminal_info(
"tgsen",
"could not reorder the selected generalized Schur blocks", info);
1096 detail::raise_terminal_info(
"tgsen",
"failed unexpectedly", info);
1101template <uni20::LapackReal Scalar>
1102void tgevc(
char side,
char howmny, blas_int* select, blas_int n,
Scalar* s, blas_int lds,
Scalar*
p, blas_int ldp,
1103 Scalar* vl, blas_int ldvl,
Scalar* vr, blas_int ldvr, blas_int mm, blas_int& computed_vectors,
Scalar* work)
1105 blas_int
const info =
1106 unchecked::tgevc(side, howmny, select, n, s, lds,
p, ldp, vl, ldvl, vr, ldvr, mm, computed_vectors, work);
1107 detail::check_invalid_argument(
"tgevc", info);
1110 detail::raise_terminal_info(
"tgevc",
"failed to compute generalized Schur eigenvectors", info);
1115template <uni20::LapackReal Scalar>
1116void tgsna(
char job,
char howmny, blas_int* select, blas_int n,
Scalar* a, blas_int lda,
Scalar* b, blas_int ldb,
1117 Scalar* vl, blas_int ldvl,
Scalar* vr, blas_int ldvr,
Scalar* reciprocal_eigenvalue_condition_numbers,
1118 Scalar* reciprocal_eigenvector_condition_numbers, blas_int mm, blas_int& computed_estimates,
Scalar* work,
1119 blas_int lwork, blas_int* iwork)
1122 job, howmny, select, n, a, lda, b, ldb, vl, ldvl, vr, ldvr, reciprocal_eigenvalue_condition_numbers,
1123 reciprocal_eigenvector_condition_numbers, mm, computed_estimates, work, lwork, iwork);
1124 detail::check_invalid_argument(
"tgsna", info);
1127 detail::raise_terminal_info(
"tgsna",
"failed unexpectedly", info);
1132template <uni20::LapackReal Scalar>
1136 blas_int
const info =
unchecked::orgbr(vect, m, n, k, a, lda, tau, work, lwork);
1137 detail::check_invalid_argument(
"orgbr", info);
1141template <uni20::LapackReal Scalar>
1145 blas_int
const info =
unchecked::orghr(n, first, last, a, lda, tau, work, lwork);
1146 detail::check_invalid_argument(
"orghr", info);
1150template <uni20::LapackReal Scalar>
1154 detail::check_invalid_argument(
"orgtr", info);
1158template <uni20::LapackReal Scalar>
1159void ormhr(
char side,
char trans, blas_int m, blas_int n, blas_int first, blas_int last,
Scalar* a, blas_int lda,
1162 blas_int
const info =
unchecked::ormhr(side, trans, m, n, first, last, a, lda, tau,
c, ldc, work, lwork);
1163 detail::check_invalid_argument(
"ormhr", info);
1167template <uni20::LapackReal Scalar>
1168void ormtr(
char side,
char uplo,
char trans, blas_int m, blas_int n,
Scalar* a, blas_int lda,
Scalar const* tau,
1171 blas_int
const info =
unchecked::ormtr(side, uplo, trans, m, n, a, lda, tau,
c, ldc, work, lwork);
1172 detail::check_invalid_argument(
"ormtr", info);
1176template <uni20::LapackReal Scalar>
1177void ormbr(
char vect,
char side,
char trans, blas_int m, blas_int n, blas_int k,
Scalar* a, blas_int lda,
Scalar* tau,
1180 blas_int
const info =
unchecked::ormbr(vect, side, trans, m, n, k, a, lda, tau,
c, ldc, work, lwork);
1181 detail::check_invalid_argument(
"ormbr", info);
1185template <uni20::LapackReal Scalar>
1187 Scalar* vt, blas_int ldvt,
Scalar* work, blas_int lwork)
1189 blas_int
const info =
unchecked::gesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork);
1190 detail::check_convergence(
"gesvd", info);
1194template <uni20::LapackComplexReal Real>
1195void gesvd(
char jobu,
char jobvt, blas_int m, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
1196 Real* s, uni20::detail::standard_complex<Real>* u, blas_int ldu, uni20::detail::standard_complex<Real>* vt,
1197 blas_int ldvt, uni20::detail::standard_complex<Real>* work, blas_int lwork,
Real* rwork)
1199 blas_int
const info =
unchecked::gesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork);
1200 detail::check_convergence(
"gesvd", info);
1204template <uni20::LapackReal Scalar>
1206 blas_int ldvt,
Scalar* work, blas_int lwork, blas_int* iwork)
1208 blas_int
const info =
unchecked::gesdd(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, iwork);
1209 detail::check_convergence(
"gesdd", info);
1213template <uni20::LapackComplexReal Real>
1214void gesdd(
char jobz, blas_int m, blas_int n, uni20::detail::standard_complex<Real>* a, blas_int lda,
Real* s,
1215 uni20::detail::standard_complex<Real>* u, blas_int ldu, uni20::detail::standard_complex<Real>* vt,
1216 blas_int ldvt, uni20::detail::standard_complex<Real>* work, blas_int lwork,
Real* rwork, blas_int* iwork)
1218 blas_int
const info =
unchecked::gesdd(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, iwork);
1219 detail::check_convergence(
"gesdd", info);
1223template <uni20::LapackReal Scalar>
1225 blas_int il, blas_int iu, blas_int& selected_count,
Scalar* singular_values,
Scalar* u, blas_int ldu,
1226 Scalar* vt, blas_int ldvt,
Scalar* work, blas_int lwork, blas_int* iwork)
1228 blas_int
const info =
unchecked::gesvdx(jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, selected_count,
1229 singular_values, u, ldu, vt, ldvt, work, lwork, iwork);
1230 detail::check_convergence(
"gesvdx", info);
1234template <uni20::LapackComplexReal Real>
1235void gesvdx(
char jobu,
char jobvt,
char range, blas_int m, blas_int n, uni20::detail::standard_complex<Real>* a,
1236 blas_int lda,
Real vl,
Real vu, blas_int il, blas_int iu, blas_int& selected_count,
Real* singular_values,
1237 uni20::detail::standard_complex<Real>* u, blas_int ldu, uni20::detail::standard_complex<Real>* vt,
1238 blas_int ldvt, uni20::detail::standard_complex<Real>* work, blas_int lwork,
Real* rwork, blas_int* iwork)
1240 blas_int
const info =
unchecked::gesvdx(jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, selected_count,
1241 singular_values, u, ldu, vt, ldvt, work, lwork, rwork, iwork);
1242 detail::check_convergence(
"gesvdx", info);
1246template <uni20::LapackReal Scalar>
1250 blas_int
const info =
unchecked::bdsqr(uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu,
c, ldc, work);
1251 detail::check_convergence(
"bdsqr", info);
1255template <uni20::LapackReal Scalar>
1257 Scalar* q, blas_int* iq,
Scalar* work, blas_int* iwork)
1259 if (compq !=
'N' && compq !=
'I')
1261 throw std::invalid_argument(
"LAPACK bdsdc wrapper supports only singular values or explicit singular vectors");
1263 blas_int
const info =
unchecked::bdsdc(uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work, iwork);
1264 detail::check_convergence(
"bdsdc", info);
1268template <uni20::LapackReal Scalar>
1270 blas_int iu, blas_int& selected_count,
Scalar* singular_values,
Scalar* z, blas_int ldz,
Scalar* work,
1273 blas_int
const info =
unchecked::bdsvdx(uplo, jobz, range, n, d, e, vl, vu, il, iu, selected_count, singular_values,
1274 z, ldz, work, iwork);
1275 detail::check_convergence(
"bdsvdx", info);
1279template <uni20::LapackReal Scalar>
void potrf(
char uplo, blas_int n,
Scalar* a, blas_int lda)
1282 detail::check_invalid_argument(
"potrf", info);
1285 detail::raise_terminal_info(
"potrf",
"found a matrix that is not positive definite", info);
1290template <uni20::LapackReal Scalar>
1291bool pstrf(
char uplo, blas_int n,
Scalar* a, blas_int lda, blas_int* pivots, blas_int& rank,
Scalar tolerance,
1294 blas_int
const info =
unchecked::pstrf(uplo, n, a, lda, pivots, rank, tolerance, work);
1295 detail::check_invalid_argument(
"pstrf", info);
1298 detail::raise_terminal_info(
"pstrf",
"failed unexpectedly", info);
1304template <uni20::LapackReal Scalar>
void potri(
char uplo, blas_int n,
Scalar* a, blas_int lda)
1307 detail::check_invalid_argument(
"potri", info);
1310 detail::raise_terminal_info(
"potri",
"found a singular Cholesky factor", info);
1315template <uni20::LapackReal Scalar>
1319 detail::check_invalid_argument(
"potrs", info);
1323template <uni20::LapackReal Scalar>
1324void porfs(
char uplo, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda,
Scalar* factors, blas_int factor_lda,
1326 Scalar* work, blas_int* iwork)
1328 blas_int
const info =
unchecked::porfs(uplo, n, nrhs, a, lda, factors, factor_lda, b, ldb, x, ldx, forward_error,
1329 backward_error, work, iwork);
1330 detail::check_invalid_argument(
"porfs", info);
1334template <uni20::LapackReal Scalar>
1335bool posvx(
char fact,
char uplo, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda,
Scalar* af, blas_int ldaf,
1339 blas_int
const info =
unchecked::posvx(fact, uplo, n, nrhs, a, lda, af, ldaf, equed,
scale, b, ldb, x, ldx, rcond,
1340 forward_error, backward_error, work, iwork);
1341 detail::check_invalid_argument(
"posvx", info);
1342 if (info > 0 && info <= n)
1344 detail::raise_terminal_info(
"posvx",
"found a non-positive-definite leading minor", info);
1348 detail::raise_terminal_info(
"posvx",
"failed unexpectedly", info);
1350 return info == n + 1;
1354template <uni20::LapackReal Scalar>
1358 detail::check_invalid_argument(
"poequ", info);
1361 detail::raise_terminal_info(
"poequ",
"found a non-positive diagonal entry", info);
1366template <uni20::LapackReal Scalar>
1370 blas_int
const info =
unchecked::pocon(uplo, n, a, lda, matrix_one_norm, rcond, work, iwork);
1371 detail::check_invalid_argument(
"pocon", info);
1376template <uni20::LapackReal Scalar>
1377void sytrf(
char uplo, blas_int n,
Scalar* a, blas_int lda, blas_int* ipiv,
Scalar* work, blas_int lwork)
1379 blas_int
const info =
unchecked::sytrf(uplo, n, a, lda, ipiv, work, lwork);
1380 detail::check_singular_diagonal_block(
"sytrf", info);
1384template <uni20::LapackReal Scalar>
1385void sytrs(
char uplo, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda, blas_int
const* ipiv,
Scalar* b, blas_int ldb)
1387 blas_int
const info =
unchecked::sytrs(uplo, n, nrhs, a, lda, ipiv, b, ldb);
1388 detail::check_invalid_argument(
"sytrs", info);
1392template <uni20::LapackReal Scalar>
1396 detail::check_singular_diagonal_block(
"sytri", info);
1400template <uni20::LapackReal Scalar>
1401void syrfs(
char uplo, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda,
Scalar* factors, blas_int factor_lda,
1402 blas_int
const* ipiv,
Scalar* b, blas_int ldb,
Scalar* x, blas_int ldx,
Scalar* forward_error,
1405 blas_int
const info =
unchecked::syrfs(uplo, n, nrhs, a, lda, factors, factor_lda, ipiv, b, ldb, x, ldx,
1406 forward_error, backward_error, work, iwork);
1407 detail::check_invalid_argument(
"syrfs", info);
1411template <uni20::LapackReal Scalar>
1412bool sysvx(
char fact,
char uplo, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda,
Scalar* af, blas_int ldaf,
1414 Scalar* backward_error,
Scalar* work, blas_int lwork, blas_int* iwork)
1416 blas_int
const info =
unchecked::sysvx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, ldx, rcond,
1417 forward_error, backward_error, work, lwork, iwork);
1418 return detail::check_symmetric_indefinite_expert_solve(
"sysvx", n, info);
1422template <uni20::LapackReal Scalar>
1427 blas_int
const info =
unchecked::sycon(uplo, n, a, lda, ipiv, matrix_one_norm, rcond, work, iwork);
1428 detail::check_invalid_argument(
"sycon", info);
1433template <uni20::LapackReal Scalar>
1434void trtrs(
char uplo,
char trans,
char diag, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda,
Scalar* b,
1437 blas_int
const info =
unchecked::trtrs(uplo, trans, diag, n, nrhs, a, lda, b, ldb);
1438 detail::check_singular_triangular(
"trtrs", info);
1442template <uni20::LapackReal Scalar>
1443void trrfs(
char uplo,
char trans,
char diag, blas_int n, blas_int nrhs,
Scalar* a, blas_int lda,
Scalar* b,
1447 blas_int
const info =
1448 unchecked::trrfs(uplo, trans, diag, n, nrhs, a, lda, b, ldb, x, ldx, forward_error, backward_error, work, iwork);
1449 detail::check_invalid_argument(
"trrfs", info);
1453template <uni20::LapackReal Scalar>
void trtri(
char uplo,
char diag, blas_int n,
Scalar* a, blas_int lda)
1456 detail::check_singular_triangular(
"trtri", info);
1460template <uni20::LapackReal Scalar>
1465 detail::check_invalid_argument(
"trcon", info);
1470template <uni20::LapackReal Scalar>
1471bool trsyl(
char trans_a,
char trans_b, blas_int sign, blas_int m, blas_int n,
Scalar* a, blas_int lda,
Scalar* b,
1474 blas_int
const info =
unchecked::trsyl(trans_a, trans_b, sign, m, n, a, lda, b, ldb,
c, ldc,
scale);
1475 return detail::check_sylvester(
"trsyl", info);
1479template <uni20::LapackReal Scalar>
1483 detail::check_singular(
"gtsv", info);
1487template <uni20::LapackReal Scalar>
1491 detail::check_singular(
"gttrf", info);
1495template <uni20::LapackReal Scalar>
1499 blas_int
const info =
unchecked::gttrs(trans, n, nrhs, dl, d, du, du2, ipiv, b, ldb);
1500 detail::check_invalid_argument(
"gttrs", info);
1504template <uni20::LapackReal Scalar>
1509 blas_int
const info =
unchecked::gtcon(
norm, n, dl, d, du, du2, ipiv, matrix_norm, rcond, work, iwork);
1510 detail::check_invalid_argument(
"gtcon", info);
1515template <uni20::LapackReal Scalar>
1520 blas_int
const info =
unchecked::gtrfs(trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, ldb, x, ldx,
1521 forward_error, backward_error, work, iwork);
1522 detail::check_invalid_argument(
"gtrfs", info);
1526template <uni20::LapackReal Scalar>
1531 blas_int
const info =
unchecked::gtsvx(fact, trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, ldb, x, ldx,
1532 rcond, forward_error, backward_error, work, iwork);
1533 return detail::check_expert_solve(
"gtsvx", n, info);
1540 detail::check_positive_definite(
"ptsv", info);
1547 detail::check_positive_definite(
"pttrf", info);
1554 detail::check_invalid_argument(
"pttrs", info);
1557 detail::raise_terminal_info(
"pttrs",
"failed to solve the factored system", info);
1566 detail::check_invalid_argument(
"ptcon", info);
1571template <uni20::LapackReal Scalar>
1575 blas_int
const info =
unchecked::ptrfs(n, nrhs, d, e, df, ef, b, ldb, x, ldx, forward_error, backward_error, work);
1576 detail::check_invalid_argument(
"ptrfs", info);
1580template <uni20::LapackReal Scalar>
1584 blas_int
const info =
1585 unchecked::ptsvx(fact, n, nrhs, d, e, df, ef, b, ldb, x, ldx, rcond, forward_error, backward_error, work);
1586 return detail::check_positive_definite_expert_solve(
"ptsvx", n, info);
1593 detail::check_convergence(
"sterf", info);
1597template <uni20::LapackReal Scalar>
1601 detail::check_convergence(
"steqr", info);
1605template <uni20::LapackReal Scalar>
1607 blas_int* iwork, blas_int liwork)
1609 blas_int
const info =
unchecked::stevd(jobz, n, d, e, z, ldz, work, lwork, iwork, liwork);
1610 detail::check_convergence(
"stevd", info);
1614template <uni20::LapackReal Scalar>
1617 blas_int lwork, blas_int* iwork, blas_int liwork)
1619 blas_int
const info =
unchecked::stevr(jobz, range, n, d, e, vl, vu, il, iu, abstol, selected_count, w, z, ldz,
1620 isuppz, work, lwork, iwork, liwork);
1621 detail::check_convergence(
"stevr", info);
Shared helpers for LAPACK backend wrappers.
MPLAPACK binary128 wrappers for real tridiagonal linear algebra.
Reference LAPACK wrappers for real tridiagonal linear algebra.
Concept for real scalar types (float, double, etc.).
Definition scalar_concepts.hpp:69
Concept for numeric scalar types (integer, real, or complex).
Definition scalar_concepts.hpp:81
Structured checked-LAPACK failure data.
Presentation adapter for structured checked-LAPACK failures.
MPLAPACK binary128 wrappers for real band linear algebra.
MPLAPACK binary128 wrappers for real and complex dense general linear systems.
MPLAPACK binary128 norm wrappers.
void raise(Exception &&exception, std::source_location where=std::source_location::current())
Raise a concrete exception through Uni20's configured error boundary.
Definition trace_impl.hpp:2184
void info(checked_format_string< Args... > format, Args &&... args)
Emit an informational display message.
Definition display.hpp:393
blas_int trevc(char side, char howmny, blas_int *select, blas_int n, uni20::float128 *t, blas_int ldt, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, blas_int mm, blas_int &computed_vectors, uni20::float128 *work)
Definition mplapack/general.hpp:934
blas_int gbrfs(char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *afb, blas_int ldafb, blas_int const *ipiv, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:80
float lansy(char norm, char uplo, blas_int n, float *a, blas_int lda, float *work)
Definition reference/norms.hpp:90
blas_int pbtrs(char uplo, blas_int n, blas_int kd, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *b, blas_int ldb)
Definition mplapack/band.hpp:161
blas_int sygv(blas_int itype, char jobz, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *w, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:537
blas_int getri(blas_int n, uni20::float128 *a, blas_int lda, blas_int *ipiv, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:150
blas_int syevd(char jobz, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *w, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:492
blas_int gesdd(char jobz, blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *s, uni20::float128 *u, blas_int ldu, uni20::float128 *vt, blas_int ldvt, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:1371
blas_int gghrd(char compq, char compz, blas_int n, blas_int first, blas_int last, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *q, blas_int ldq, uni20::float128 *z, blas_int ldz)
Definition mplapack/general.hpp:1120
blas_int gtsv(blas_int n, blas_int nrhs, uni20::float128 *dl, uni20::float128 *d, uni20::float128 *du, uni20::float128 *b, blas_int ldb)
Definition backend/lapack/mplapack/tridiagonal.hpp:27
blas_int tgexc(bool wantq, bool wantz, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *q, blas_int ldq, uni20::float128 *z, blas_int ldz, blas_int &first, blas_int &last, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1148
blas_int gges(char jobvsl, char jobvsr, char sort, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, blas_int &selected_dimension, uni20::float128 *alphar, uni20::float128 *alphai, uni20::float128 *beta, uni20::float128 *vsl, blas_int ldvsl, uni20::float128 *vsr, blas_int ldvsr, uni20::float128 *work, blas_int lwork, blas_int *bwork)
Definition mplapack/general.hpp:1089
blas_int hegv(blas_int itype, char jobz, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::complex< uni20::float128 > *b, blas_int ldb, uni20::float128 *w, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork)
Definition mplapack/general.hpp:653
blas_int gbtrs(char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, uni20::float128 *ab, blas_int ldab, blas_int const *ipiv, uni20::float128 *b, blas_int ldb)
Definition mplapack/band.hpp:53
blas_int sygvd(blas_int itype, char jobz, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *w, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:548
blas_int gebal(char job, blas_int n, uni20::float128 *a, blas_int lda, blas_int &first, blas_int &last, uni20::float128 *scale)
Definition mplapack/general.hpp:748
blas_int ormqr(char side, char trans, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:391
blas_int pbrfs(char uplo, blas_int n, blas_int kd, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *afb, blas_int ldafb, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:183
blas_int orgrq(blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:381
blas_int orghr(blas_int n, blas_int first, blas_int last, uni20::float128 *a, blas_int lda, uni20::float128 const *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1289
blas_int orglq(blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:350
float lange(char norm, blas_int m, blas_int n, float *a, blas_int lda, float *work)
Definition reference/norms.hpp:65
blas_int gtrfs(char trans, blas_int n, blas_int nrhs, uni20::float128 *dl, uni20::float128 *d, uni20::float128 *du, uni20::float128 *dlf, uni20::float128 *df, uni20::float128 *duf, uni20::float128 *du2, blas_int const *ipiv, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition backend/lapack/mplapack/tridiagonal.hpp:73
blas_int gerqf(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:319
blas_int potrs(char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb)
Definition mplapack/general.hpp:1518
blas_int trsyl(char trans_a, char trans_b, blas_int sign, blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *c, blas_int ldc, uni20::float128 &scale)
Definition mplapack/general.hpp:1708
blas_int getrf(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, blas_int *ipiv)
Definition mplapack/general.hpp:85
blas_int sygvx(blas_int itype, char jobz, char range, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, uni20::float128 abstol, blas_int &selected_count, uni20::float128 *w, uni20::float128 *z, blas_int ldz, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int *ifail)
Definition mplapack/general.hpp:563
blas_int hegvd(blas_int itype, char jobz, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::complex< uni20::float128 > *b, blas_int ldb, uni20::float128 *w, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork, blas_int lrwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:664
blas_int steqr(char compz, blas_int n, uni20::float128 *d, uni20::float128 *e, uni20::float128 *z, blas_int ldz, uni20::float128 *work)
Definition backend/lapack/mplapack/tridiagonal.hpp:181
blas_int pbsvx(char fact, char uplo, blas_int n, blas_int kd, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *afb, blas_int ldafb, char &equed, uni20::float128 *scale, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 &rcond, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:198
blas_int orgtr(char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 const *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1300
blas_int gebak(char job, char side, blas_int n, blas_int first, blas_int last, uni20::float128 *scale, blas_int vector_count, uni20::float128 *vectors, blas_int leading_dimension)
Definition mplapack/general.hpp:762
blas_int stevd(char jobz, blas_int n, uni20::float128 *d, uni20::float128 *e, uni20::float128 *z, blas_int ldz, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition backend/lapack/mplapack/tridiagonal.hpp:190
blas_int syevr(char jobz, char range, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, uni20::float128 abstol, blas_int &selected_count, uni20::float128 *w, uni20::float128 *z, blas_int ldz, blas_int *isuppz, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:506
blas_int hseqr(char job, char compz, blas_int n, blas_int first, blas_int last, uni20::float128 *h, blas_int ldh, uni20::float128 *wr, uni20::float128 *wi, uni20::float128 *z, blas_int ldz, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:854
blas_int ptrfs(blas_int n, blas_int nrhs, uni20::float128 *d, uni20::float128 *e, uni20::float128 *df, uni20::float128 *ef, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work)
Definition backend/lapack/mplapack/tridiagonal.hpp:147
blas_int sytri(char uplo, blas_int n, uni20::float128 *a, blas_int lda, blas_int const *ipiv, uni20::float128 *work)
Definition mplapack/general.hpp:1604
blas_int ormrq(char side, char trans, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:427
blas_int gesvx(char fact, char trans, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *af, blas_int ldaf, blas_int *ipiv, char &equed, uni20::float128 *row_scale, uni20::float128 *column_scale, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 &rcond, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:53
blas_int gtsvx(char fact, char trans, blas_int n, blas_int nrhs, uni20::float128 *dl, uni20::float128 *d, uni20::float128 *du, uni20::float128 *dlf, uni20::float128 *df, uni20::float128 *duf, uni20::float128 *du2, blas_int *ipiv, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 &rcond, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition backend/lapack/mplapack/tridiagonal.hpp:91
blas_int stevr(char jobz, char range, blas_int n, uni20::float128 *d, uni20::float128 *e, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, uni20::float128 abstol, blas_int &selected_count, uni20::float128 *w, uni20::float128 *z, blas_int ldz, blas_int *isuppz, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition backend/lapack/mplapack/tridiagonal.hpp:204
blas_int geev(char jobvl, char jobvr, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *wr, uni20::float128 *wi, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:715
blas_int trrfs(char uplo, char trans, char diag, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1674
blas_int ptsv(blas_int n, blas_int nrhs, uni20::float128 *d, uni20::float128 *e, uni20::float128 *b, blas_int ldb)
Definition backend/lapack/mplapack/tridiagonal.hpp:110
blas_int tgevc(char side, char howmny, blas_int *select, blas_int n, uni20::float128 *s, blas_int lds, uni20::float128 *p, blas_int ldp, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, blas_int mm, blas_int &computed_vectors, uni20::float128 *work)
Definition mplapack/general.hpp:1205
blas_int syev(char jobz, char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *w, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:482
blas_int poequ(blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *scale, uni20::float128 &scale_condition, uni20::float128 &max_abs)
Definition mplapack/general.hpp:1560
blas_int tgsna(char job, char howmny, blas_int *select, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, uni20::float128 *reciprocal_eigenvalue_condition_numbers, uni20::float128 *reciprocal_eigenvector_condition_numbers, blas_int mm, blas_int &computed_estimates, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:1238
blas_int gelsy(blas_int m, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, blas_int *jpvt, uni20::float128 rcond, blas_int &rank, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:251
blas_int trtri(char uplo, char diag, blas_int n, uni20::float128 *a, blas_int lda)
Definition mplapack/general.hpp:1689
blas_int trsna(char job, char howmny, blas_int *select, blas_int n, uni20::float128 *t, blas_int ldt, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, uni20::float128 *reciprocal_eigenvalue_condition_numbers, uni20::float128 *reciprocal_eigenvector_condition_numbers, blas_int mm, blas_int &computed_estimates, uni20::float128 *work, blas_int ldwork, blas_int *iwork)
Definition mplapack/general.hpp:966
blas_int gehrd(blas_int n, blas_int first, blas_int last, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:450
blas_int gbcon(char norm, blas_int n, blas_int kl, blas_int ku, uni20::float128 *ab, blas_int ldab, blas_int const *ipiv, uni20::float128 anorm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:66
blas_int gerfs(char trans, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *factors, blas_int factor_lda, blas_int const *ipiv, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:133
blas_int ggevx(char balanc, char jobvl, char jobvr, char sense, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *alphar, uni20::float128 *alphai, uni20::float128 *beta, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, blas_int &ilo, blas_int &ihi, uni20::float128 *lscale, uni20::float128 *rscale, uni20::float128 &abnrm, uni20::float128 &bbnrm, uni20::float128 *rconde, uni20::float128 *rcondv, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int *bwork)
Definition mplapack/general.hpp:1019
blas_int ptcon(blas_int n, uni20::float128 *d, uni20::float128 *e, uni20::float128 matrix_norm, uni20::float128 &rcond, uni20::float128 *work)
Definition backend/lapack/mplapack/tridiagonal.hpp:138
blas_int bdsvdx(char uplo, char jobz, char range, blas_int n, uni20::float128 *d, uni20::float128 *e, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, blas_int &selected_count, uni20::float128 *singular_values, uni20::float128 *z, blas_int ldz, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1470
blas_int sysvx(char fact, char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *af, blas_int ldaf, blas_int *ipiv, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 &rcond, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:1632
blas_int ggbal(char job, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, blas_int &first, blas_int &last, uni20::float128 *lscale, uni20::float128 *rscale, uni20::float128 *work)
Definition mplapack/general.hpp:1061
blas_int sycon(char uplo, blas_int n, uni20::float128 *a, blas_int lda, blas_int const *ipiv, uni20::float128 matrix_one_norm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1651
blas_int trexc(char compq, blas_int n, uni20::float128 *t, blas_int ldt, uni20::float128 *q, blas_int ldq, blas_int &first, blas_int &last, uni20::float128 *work)
Definition mplapack/general.hpp:866
blas_int bdsqr(char uplo, blas_int n, blas_int ncvt, blas_int nru, blas_int ncc, uni20::float128 *d, uni20::float128 *e, uni20::float128 *vt, blas_int ldvt, uni20::float128 *u, blas_int ldu, uni20::float128 *c, blas_int ldc, uni20::float128 *work)
Definition mplapack/general.hpp:1442
blas_int gecon(char norm, blas_int n, uni20::float128 const *a, blas_int lda, uni20::float128 anorm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:172
blas_int gels(char trans, blas_int m, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:195
blas_int ggev(char jobvl, char jobvr, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *alphar, uni20::float128 *alphai, uni20::float128 *beta, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1005
blas_int heevr(char jobz, char range, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, uni20::float128 abstol, blas_int &selected_count, uni20::float128 *w, uni20::complex< uni20::float128 > *z, blas_int ldz, blas_int *isuppz, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork, blas_int lrwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:620
blas_int orgql(blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:371
blas_int gbequ(bool power_of_two, blas_int m, blas_int n, blas_int kl, blas_int ku, uni20::float128 *ab, blas_int ldab, uni20::float128 *row_scale, uni20::float128 *column_scale, uni20::float128 &row_condition, uni20::float128 &column_condition, uni20::float128 &max_abs)
Definition mplapack/band.hpp:119
blas_int ormbr(char vect, char side, char trans, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1334
blas_int gelss(blas_int m, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *s, uni20::float128 rcond, blas_int &rank, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:206
blas_int potrf(char uplo, blas_int n, uni20::float128 *a, blas_int lda)
Definition mplapack/general.hpp:1488
blas_int hgeqz(char job, char compq, char compz, blas_int n, blas_int first, blas_int last, uni20::float128 *h, blas_int ldh, uni20::float128 *t, blas_int ldt, uni20::float128 *alphar, uni20::float128 *alphai, uni20::float128 *beta, uni20::float128 *q, blas_int ldq, uni20::float128 *z, blas_int ldz, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1132
blas_int geqrf(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:267
blas_int gttrs(char trans, blas_int n, blas_int nrhs, uni20::float128 *dl, uni20::float128 *d, uni20::float128 *du, uni20::float128 *du2, blas_int const *ipiv, uni20::float128 *b, blas_int ldb)
Definition backend/lapack/mplapack/tridiagonal.hpp:48
blas_int hegvx(blas_int itype, char jobz, char range, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::complex< uni20::float128 > *b, blas_int ldb, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, uni20::float128 abstol, blas_int &selected_count, uni20::float128 *w, uni20::complex< uni20::float128 > *z, blas_int ldz, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork, blas_int *iwork, blas_int *ifail)
Definition mplapack/general.hpp:682
blas_int pbsv(char uplo, blas_int n, blas_int kd, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *b, blas_int ldb)
Definition mplapack/band.hpp:142
blas_int gesvdx(char jobu, char jobvt, char range, blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 vl, uni20::float128 vu, blas_int il, blas_int iu, blas_int &selected_count, uni20::float128 *singular_values, uni20::float128 *u, blas_int ldu, uni20::float128 *vt, blas_int ldvt, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:1399
blas_int sytrs(char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, blas_int const *ipiv, uni20::float128 *b, blas_int ldb)
Definition mplapack/general.hpp:1593
blas_int gelsd(blas_int m, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *s, uni20::float128 rcond, blas_int &rank, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:235
blas_int trcon(char norm, char uplo, char diag, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1697
blas_int pbtrf(char uplo, blas_int n, blas_int kd, uni20::float128 *ab, blas_int ldab)
Definition mplapack/band.hpp:152
blas_int potri(char uplo, blas_int n, uni20::float128 *a, blas_int lda)
Definition mplapack/general.hpp:1510
blas_int pocon(char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 matrix_one_norm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1569
blas_int geqp3(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, blas_int *jpvt, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:460
blas_int gtcon(char norm, blas_int n, uni20::float128 *dl, uni20::float128 *d, uni20::float128 *du, uni20::float128 *du2, blas_int const *ipiv, uni20::float128 matrix_norm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition backend/lapack/mplapack/tridiagonal.hpp:60
blas_int gbsv(blas_int n, blas_int kl, blas_int ku, blas_int nrhs, uni20::float128 *ab, blas_int ldab, blas_int *ipiv, uni20::float128 *b, blas_int ldb)
Definition mplapack/band.hpp:27
blas_int posvx(char fact, char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *af, blas_int ldaf, char &equed, uni20::float128 *scale, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 &rcond, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1543
blas_int ggbak(char job, char side, blas_int n, blas_int first, blas_int last, uni20::float128 *lscale, uni20::float128 *rscale, blas_int vector_count, uni20::float128 *vectors, blas_int leading_dimension)
Definition mplapack/general.hpp:1076
blas_int ptsvx(char fact, blas_int n, blas_int nrhs, uni20::float128 *d, uni20::float128 *e, uni20::float128 *df, uni20::float128 *ef, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 &rcond, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work)
Definition backend/lapack/mplapack/tridiagonal.hpp:159
blas_int heevd(char jobz, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::float128 *w, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork, blas_int lrwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:605
blas_int sytrd(char uplo, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *d, uni20::float128 *e, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:472
blas_int gees(char jobvs, char sort, blas_int n, uni20::float128 *a, blas_int lda, blas_int &selected_dimension, uni20::float128 *wr, uni20::float128 *wi, uni20::float128 *vs, blas_int ldvs, uni20::float128 *work, blas_int lwork, blas_int *bwork)
Definition mplapack/general.hpp:787
float lanhe(char norm, char uplo, blas_int n, uni20::complex< float > *a, blas_int lda, float *work)
Definition reference/norms.hpp:102
blas_int orgqr(blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:329
blas_int ormql(char side, char trans, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:415
blas_int geqlf(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:309
blas_int gelqf(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:288
blas_int orgbr(char vect, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1279
blas_int heev(char jobz, char uplo, blas_int n, uni20::complex< uni20::float128 > *a, blas_int lda, uni20::float128 *w, uni20::complex< uni20::float128 > *work, blas_int lwork, uni20::float128 *rwork)
Definition mplapack/general.hpp:594
blas_int geevx(char balanc, char jobvl, char jobvr, char sense, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *wr, uni20::float128 *wi, uni20::float128 *vl, blas_int ldvl, uni20::float128 *vr, blas_int ldvr, blas_int &ilo, blas_int &ihi, uni20::float128 *scale, uni20::float128 &abnrm, uni20::float128 *rconde, uni20::float128 *rcondv, uni20::float128 *work, blas_int lwork, blas_int *iwork)
Definition mplapack/general.hpp:727
blas_int gttrf(blas_int n, uni20::float128 *dl, uni20::float128 *d, uni20::float128 *du, uni20::float128 *du2, blas_int *ipiv)
Definition backend/lapack/mplapack/tridiagonal.hpp:37
blas_int gesv(blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, blas_int *ipiv, uni20::float128 *b, blas_int ldb)
Definition mplapack/general.hpp:29
blas_int trtrs(char uplo, char trans, char diag, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb)
Definition mplapack/general.hpp:1664
blas_int gesvd(char jobu, char jobvt, blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *s, uni20::float128 *u, blas_int ldu, uni20::float128 *vt, blas_int ldvt, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1346
blas_int pttrf(blas_int n, uni20::float128 *d, uni20::float128 *e)
Definition backend/lapack/mplapack/tridiagonal.hpp:120
blas_int sytrf(char uplo, blas_int n, uni20::float128 *a, blas_int lda, blas_int *ipiv, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1581
blas_int tgsen(blas_int ijob, bool wantq, bool wantz, blas_int *select, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *b, blas_int ldb, uni20::float128 *alphar, uni20::float128 *alphai, uni20::float128 *beta, uni20::float128 *q, blas_int ldq, uni20::float128 *z, blas_int ldz, blas_int &selected_dimension, uni20::float128 &pl, uni20::float128 &pr, uni20::float128 *dif, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:1165
float langb(char norm, blas_int n, blas_int kl, blas_int ku, float *ab, blas_int ldab, float *work)
Definition reference/norms.hpp:143
blas_int ormhr(char side, char trans, blas_int m, blas_int n, blas_int first, blas_int last, uni20::float128 *a, blas_int lda, uni20::float128 const *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1310
blas_int ormlq(char side, char trans, blas_int m, blas_int n, blas_int k, uni20::float128 *a, blas_int lda, uni20::float128 *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:403
blas_int bdsdc(char uplo, char compq, blas_int n, uni20::float128 *d, uni20::float128 *e, uni20::float128 *u, blas_int ldu, uni20::float128 *vt, blas_int ldvt, uni20::float128 *q, blas_int *iq, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1455
blas_int syrfs(char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *factors, blas_int factor_lda, blas_int const *ipiv, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1615
blas_int ormtr(char side, char uplo, char trans, blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 const *tau, uni20::float128 *c, blas_int ldc, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:1322
float lantr(char norm, char uplo, char diag, blas_int m, blas_int n, float *a, blas_int lda, float *work)
Definition reference/norms.hpp:115
blas_int sterf(blas_int n, uni20::float128 *d, uni20::float128 *e)
Definition backend/lapack/mplapack/tridiagonal.hpp:173
blas_int pbcon(char uplo, blas_int n, blas_int kd, uni20::float128 *ab, blas_int ldab, uni20::float128 anorm, uni20::float128 &rcond, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:171
blas_int pstrf(char uplo, blas_int n, uni20::float128 *a, blas_int lda, blas_int *pivots, blas_int &rank, uni20::float128 tolerance, uni20::float128 *work)
Definition mplapack/general.hpp:1496
blas_int gbtrf(blas_int m, blas_int n, blas_int kl, blas_int ku, uni20::float128 *ab, blas_int ldab, blas_int *ipiv)
Definition mplapack/band.hpp:40
blas_int getrs(char trans, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, blas_int const *ipiv, uni20::float128 *b, blas_int ldb)
Definition mplapack/general.hpp:110
blas_int gbsvx(char fact, char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, uni20::float128 *ab, blas_int ldab, uni20::float128 *afb, blas_int ldafb, blas_int *ipiv, char &equed, uni20::float128 *row_scale, uni20::float128 *column_scale, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 &rcond, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/band.hpp:98
blas_int trsen(char job, char compq, blas_int *select, blas_int n, uni20::float128 *t, blas_int ldt, uni20::float128 *q, blas_int ldq, uni20::float128 *wr, uni20::float128 *wi, blas_int &selected_dimension, uni20::float128 &reciprocal_eigenvalue_cluster_condition, uni20::float128 &reciprocal_invariant_subspace_condition, uni20::float128 *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Definition mplapack/general.hpp:894
blas_int porfs(char uplo, blas_int n, blas_int nrhs, uni20::float128 *a, blas_int lda, uni20::float128 *factors, blas_int factor_lda, uni20::float128 *b, blas_int ldb, uni20::float128 *x, blas_int ldx, uni20::float128 *forward_error, uni20::float128 *backward_error, uni20::float128 *work, blas_int *iwork)
Definition mplapack/general.hpp:1528
blas_int gebrd(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *d, uni20::float128 *e, uni20::float128 *tauq, uni20::float128 *taup, uni20::float128 *work, blas_int lwork)
Definition mplapack/general.hpp:439
blas_int pttrs(blas_int n, blas_int nrhs, uni20::float128 *d, uni20::float128 *e, uni20::float128 *b, blas_int ldb)
Definition backend/lapack/mplapack/tridiagonal.hpp:128
blas_int geequ(blas_int m, blas_int n, uni20::float128 *a, blas_int lda, uni20::float128 *row_scale, uni20::float128 *column_scale, uni20::float128 &row_condition, uni20::float128 &column_condition, uni20::float128 &max_abs)
Definition mplapack/general.hpp:73
Definition backend/lapack/common.hpp:12
void getrf(blas_int m, blas_int n, Scalar *a, blas_int lda, blas_int *ipiv)
Compute a real dense general LU factorization through the configured LAPACK backend.
Definition lapack.hpp:402
void geqp3(blas_int m, blas_int n, Scalar *a, blas_int lda, blas_int *jpvt, Scalar *tau, Scalar *work, blas_int lwork)
Compute a real dense pivoted QR factorization.
Definition lapack.hpp:647
void sygv(blas_int itype, char jobz, char uplo, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *w, Scalar *work, blas_int lwork)
Compute eigenvalues and optionally eigenvectors of a real generalized symmetric-definite problem.
Definition lapack.hpp:692
void gees(char jobvs, char sort, blas_int n, Scalar *a, blas_int lda, blas_int &selected_dimension, Scalar *wr, Scalar *wi, Scalar *vs, blas_int ldvs, Scalar *work, blas_int lwork, blas_int *bwork)
Compute the real Schur form of a real nonsymmetric matrix.
Definition lapack.hpp:846
Scalar lange(char norm, blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *work)
Compute a dense real matrix norm through the configured LAPACK backend.
Definition lapack.hpp:185
void gbsv(blas_int n, blas_int kl, blas_int ku, blas_int nrhs, Scalar *ab, blas_int ldab, blas_int *ipiv, Scalar *b, blas_int ldb)
Solve a real general-band linear system through the configured LAPACK backend.
Definition lapack.hpp:235
void syevd(char jobz, char uplo, blas_int n, Scalar *a, blas_int lda, Scalar *w, Scalar *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Compute eigenvalues and optionally eigenvectors of a real symmetric matrix by divide and conquer.
Definition lapack.hpp:672
void ptsv(blas_int n, blas_int nrhs, Scalar *d, Scalar *e, Scalar *b, blas_int ldb)
Solve a real symmetric positive-definite tridiagonal linear system.
Definition lapack.hpp:1537
void ormql(char side, char trans, blas_int m, blas_int n, blas_int k, Scalar *a, blas_int lda, Scalar *tau, Scalar *c, blas_int ldc, Scalar *work, blas_int lwork)
Multiply by the implicit real Q factor from a QL factorization.
Definition lapack.hpp:611
void bdsqr(char uplo, blas_int n, blas_int ncvt, blas_int nru, blas_int ncc, Scalar *d, Scalar *e, Scalar *vt, blas_int ldvt, Scalar *u, blas_int ldu, Scalar *c, blas_int ldc, Scalar *work)
Compute singular values of a real bidiagonal matrix.
Definition lapack.hpp:1247
void geev(char jobvl, char jobvr, blas_int n, Scalar *a, blas_int lda, Scalar *wr, Scalar *wi, Scalar *vl, blas_int ldvl, Scalar *vr, blas_int ldvr, Scalar *work, blas_int lwork)
Compute eigenvalues and optionally eigenvectors of a real nonsymmetric matrix.
Definition lapack.hpp:790
void ggbak(char job, char side, blas_int n, blas_int first, blas_int last, Scalar *lscale, Scalar *rscale, blas_int vector_count, Scalar *vectors, blas_int leading_dimension)
Back-transform generalized nonsymmetric eigenvectors after pencil balancing.
Definition lapack.hpp:1004
void gbequ(bool power_of_two, blas_int m, blas_int n, blas_int kl, blas_int ku, Scalar *ab, blas_int ldab, Scalar *row_scale, Scalar *column_scale, Scalar &row_condition, Scalar &column_condition, Scalar &max_abs)
Compute real general-band row/column equilibration factors.
Definition lapack.hpp:296
void potrs(char uplo, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *b, blas_int ldb)
Solve using an existing real dense Cholesky factorization.
Definition lapack.hpp:1316
void bdsdc(char uplo, char compq, blas_int n, Scalar *d, Scalar *e, Scalar *u, blas_int ldu, Scalar *vt, blas_int ldvt, Scalar *q, blas_int *iq, Scalar *work, blas_int *iwork)
Compute the singular value decomposition of a real bidiagonal matrix.
Definition lapack.hpp:1256
Scalar langb(char norm, blas_int n, blas_int kl, blas_int ku, Scalar *ab, blas_int ldab, Scalar *work)
Compute a real general-band matrix norm through the configured LAPACK backend.
Definition lapack.hpp:228
bool trsyl(char trans_a, char trans_b, blas_int sign, blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *c, blas_int ldc, Scalar &scale)
Solve a dense real Sylvester equation.
Definition lapack.hpp:1471
void sytrf(char uplo, blas_int n, Scalar *a, blas_int lda, blas_int *ipiv, Scalar *work, blas_int lwork)
Compute a dense real symmetric-indefinite Bunch-Kaufman factorization.
Definition lapack.hpp:1377
void gelsy(blas_int m, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, blas_int *jpvt, Scalar rcond, blas_int &rank, Scalar *work, blas_int lwork)
Solve a real dense general least-squares problem by complete orthogonal factorization.
Definition lapack.hpp:516
void gghrd(char compq, char compz, blas_int n, blas_int first, blas_int last, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *q, blas_int ldq, Scalar *z, blas_int ldz)
Reduce a real matrix pencil to generalized Hessenberg form.
Definition lapack.hpp:1037
void poequ(blas_int n, Scalar *a, blas_int lda, Scalar *scale, Scalar &scale_condition, Scalar &max_abs)
Compute real dense SPD equilibration factors.
Definition lapack.hpp:1355
void sygvx(blas_int itype, char jobz, char range, char uplo, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar vl, Scalar vu, blas_int il, blas_int iu, Scalar abstol, blas_int &selected_count, Scalar *w, Scalar *z, blas_int ldz, Scalar *work, blas_int lwork, blas_int *iwork, blas_int *ifail)
Compute selected eigenvalues and optionally eigenvectors of a real generalized symmetric-definite pro...
Definition lapack.hpp:712
void gttrf(blas_int n, Scalar *dl, Scalar *d, Scalar *du, Scalar *du2, blas_int *ipiv)
Compute a real tridiagonal LU factorization through the configured LAPACK backend.
Definition lapack.hpp:1488
void pbsv(char uplo, blas_int n, blas_int kd, blas_int nrhs, Scalar *ab, blas_int ldab, Scalar *b, blas_int ldb)
Solve a real symmetric positive-definite band linear system.
Definition lapack.hpp:306
void bdsvdx(char uplo, char jobz, char range, blas_int n, Scalar *d, Scalar *e, Scalar vl, Scalar vu, blas_int il, blas_int iu, blas_int &selected_count, Scalar *singular_values, Scalar *z, blas_int ldz, Scalar *work, blas_int *iwork)
Compute selected singular values/vectors of a real bidiagonal matrix.
Definition lapack.hpp:1269
void orgqr(blas_int m, blas_int n, blas_int k, Scalar *a, blas_int lda, Scalar *tau, Scalar *work, blas_int lwork)
Generate an explicit orthogonal or unitary Q factor from a QR factorization.
Definition lapack.hpp:561
void ormrq(char side, char trans, blas_int m, blas_int n, blas_int k, Scalar *a, blas_int lda, Scalar *tau, Scalar *c, blas_int ldc, Scalar *work, blas_int lwork)
Multiply by the implicit real Q factor from an RQ factorization.
Definition lapack.hpp:620
bool gesvx(char fact, char trans, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *af, blas_int ldaf, blas_int *ipiv, char &equed, Scalar *row_scale, Scalar *column_scale, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar &rcond, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Solve a real dense general linear system with LAPACK expert-driver diagnostics.
Definition lapack.hpp:382
bool pbsvx(char fact, char uplo, blas_int n, blas_int kd, blas_int nrhs, Scalar *ab, blas_int ldab, Scalar *afb, blas_int ldafb, char &equed, Scalar *scale, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar &rcond, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Solve a real symmetric positive-definite band system with LAPACK expert-driver diagnostics.
Definition lapack.hpp:354
void heev(char jobz, char uplo, blas_int n, uni20::detail::standard_complex< Real > *a, blas_int lda, Real *w, uni20::detail::standard_complex< Real > *work, blas_int lwork, Real *rwork)
Compute eigenvalues and optionally eigenvectors of a complex Hermitian matrix.
Definition lapack.hpp:723
void gesvdx(char jobu, char jobvt, char range, blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar vl, Scalar vu, blas_int il, blas_int iu, blas_int &selected_count, Scalar *singular_values, Scalar *u, blas_int ldu, Scalar *vt, blas_int ldvt, Scalar *work, blas_int lwork, blas_int *iwork)
Compute selected singular values/vectors of a real dense matrix.
Definition lapack.hpp:1224
void sytri(char uplo, blas_int n, Scalar *a, blas_int lda, blas_int const *ipiv, Scalar *work)
Invert a dense real symmetric-indefinite matrix from its factorization.
Definition lapack.hpp:1393
Scalar lantr(char norm, char uplo, char diag, blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *work)
Compute a dense real triangular or trapezoidal matrix norm through the configured LAPACK backend.
Definition lapack.hpp:213
void geqrf(blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *tau, Scalar *work, blas_int lwork)
Compute a real or complex dense QR factorization through the configured LAPACK backend.
Definition lapack.hpp:529
void ormhr(char side, char trans, blas_int m, blas_int n, blas_int first, blas_int last, Scalar *a, blas_int lda, Scalar const *tau, Scalar *c, blas_int ldc, Scalar *work, blas_int lwork)
Multiply by an implicit real orthogonal factor from Hessenberg reduction.
Definition lapack.hpp:1159
void porfs(char uplo, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *factors, blas_int factor_lda, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Refine a real dense SPD linear-system solve and return LAPACK diagnostics.
Definition lapack.hpp:1324
void ggevx(char balanc, char jobvl, char jobvr, char sense, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *alphar, Scalar *alphai, Scalar *beta, Scalar *vl, blas_int ldvl, Scalar *vr, blas_int ldvr, blas_int &ilo, blas_int &ihi, Scalar *lscale, Scalar *rscale, Scalar &abnrm, Scalar &bbnrm, Scalar *rconde, Scalar *rcondv, Scalar *work, blas_int lwork, blas_int *iwork, blas_int *bwork)
Compute generalized real nonsymmetric eigenpairs with balancing and condition estimates.
Definition lapack.hpp:978
void tgexc(bool wantq, bool wantz, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *q, blas_int ldq, Scalar *z, blas_int ldz, blas_int &first, blas_int &last, Scalar *work, blas_int lwork)
Reorder adjacent blocks in a generalized real Schur form.
Definition lapack.hpp:1065
void potri(char uplo, blas_int n, Scalar *a, blas_int lda)
Invert a real dense matrix from an existing Cholesky factorization.
Definition lapack.hpp:1304
void tgsna(char job, char howmny, blas_int *select, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *vl, blas_int ldvl, Scalar *vr, blas_int ldvr, Scalar *reciprocal_eigenvalue_condition_numbers, Scalar *reciprocal_eigenvector_condition_numbers, blas_int mm, blas_int &computed_estimates, Scalar *work, blas_int lwork, blas_int *iwork)
Estimate reciprocal condition numbers for generalized real Schur eigenpairs.
Definition lapack.hpp:1116
void orgtr(char uplo, blas_int n, Scalar *a, blas_int lda, Scalar const *tau, Scalar *work, blas_int lwork)
Generate an explicit real orthogonal factor from symmetric tridiagonal reduction.
Definition lapack.hpp:1151
void trtrs(char uplo, char trans, char diag, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *b, blas_int ldb)
Solve a dense real triangular system.
Definition lapack.hpp:1434
void syevr(char jobz, char range, char uplo, blas_int n, Scalar *a, blas_int lda, Scalar vl, Scalar vu, blas_int il, blas_int iu, Scalar abstol, blas_int &selected_count, Scalar *w, Scalar *z, blas_int ldz, blas_int *isuppz, Scalar *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Compute selected eigenvalues and optionally eigenvectors of a real symmetric matrix.
Definition lapack.hpp:681
void gerqf(blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *tau, Scalar *work, blas_int lwork)
Compute a real dense RQ factorization through the configured LAPACK backend.
Definition lapack.hpp:553
void syev(char jobz, char uplo, blas_int n, Scalar *a, blas_int lda, Scalar *w, Scalar *work, blas_int lwork)
Compute eigenvalues and optionally eigenvectors of a real symmetric matrix.
Definition lapack.hpp:664
void geqlf(blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *tau, Scalar *work, blas_int lwork)
Compute a real dense QL factorization through the configured LAPACK backend.
Definition lapack.hpp:545
void gerfs(char trans, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *factors, blas_int factor_lda, blas_int const *ipiv, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Refine a real dense general linear-system solve and return LAPACK diagnostics.
Definition lapack.hpp:436
void gelsd(blas_int m, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *s, Scalar rcond, blas_int &rank, Scalar *work, blas_int lwork, blas_int *iwork)
Solve a real dense general least-squares problem by divide-and-conquer SVD.
Definition lapack.hpp:507
void gttrs(char trans, blas_int n, blas_int nrhs, Scalar *dl, Scalar *d, Scalar *du, Scalar *du2, blas_int const *ipiv, Scalar *b, blas_int ldb)
Solve using an existing real tridiagonal LU factorization.
Definition lapack.hpp:1496
Scalar gtcon(char norm, blas_int n, Scalar *dl, Scalar *d, Scalar *du, Scalar *du2, blas_int const *ipiv, Scalar matrix_norm, Scalar *work, blas_int *iwork)
Estimate a real tridiagonal reciprocal condition number.
Definition lapack.hpp:1505
void hgeqz(char job, char compq, char compz, blas_int n, blas_int first, blas_int last, Scalar *h, blas_int ldh, Scalar *t, blas_int ldt, Scalar *alphar, Scalar *alphai, Scalar *beta, Scalar *q, blas_int ldq, Scalar *z, blas_int ldz, Scalar *work, blas_int lwork)
Compute a generalized Schur form from a real Hessenberg-triangular pencil.
Definition lapack.hpp:1050
void gebal(char job, blas_int n, Scalar *a, blas_int lda, blas_int &first, blas_int &last, Scalar *scale)
Balance a real nonsymmetric matrix before eigenanalysis.
Definition lapack.hpp:810
void stevr(char jobz, char range, blas_int n, Scalar *d, Scalar *e, Scalar vl, Scalar vu, blas_int il, blas_int iu, Scalar abstol, blas_int &selected_count, Scalar *w, Scalar *z, blas_int ldz, blas_int *isuppz, Scalar *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Compute selected eigenvalues/eigenvectors of a real symmetric tridiagonal matrix.
Definition lapack.hpp:1615
void gebak(char job, char side, blas_int n, blas_int first, blas_int last, Scalar *scale, blas_int vector_count, Scalar *vectors, blas_int leading_dimension)
Back-transform real nonsymmetric eigenvectors after balancing.
Definition lapack.hpp:822
void orgrq(blas_int m, blas_int n, blas_int k, Scalar *a, blas_int lda, Scalar *tau, Scalar *work, blas_int lwork)
Generate an explicit real Q factor from an RQ factorization.
Definition lapack.hpp:585
Scalar gbcon(char norm, blas_int n, blas_int kl, blas_int ku, Scalar *ab, blas_int ldab, blas_int const *ipiv, Scalar anorm, Scalar *work, blas_int *iwork)
Estimate a real general-band reciprocal condition number.
Definition lapack.hpp:261
void gels(char trans, blas_int m, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *work, blas_int lwork)
Solve a real dense general least-squares problem through the configured LAPACK backend.
Definition lapack.hpp:485
void orglq(blas_int m, blas_int n, blas_int k, Scalar *a, blas_int lda, Scalar *tau, Scalar *work, blas_int lwork)
Generate an explicit orthogonal or unitary Q factor from an LQ factorization.
Definition lapack.hpp:569
void gbtrf(blas_int m, blas_int n, blas_int kl, blas_int ku, Scalar *ab, blas_int ldab, blas_int *ipiv)
Compute a real general-band LU factorization through the configured LAPACK backend.
Definition lapack.hpp:244
void gelss(blas_int m, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *s, Scalar rcond, blas_int &rank, Scalar *work, blas_int lwork)
Solve a real dense general least-squares problem by SVD.
Definition lapack.hpp:498
void gbrfs(char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, Scalar *ab, blas_int ldab, Scalar *afb, blas_int ldafb, blas_int const *ipiv, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Refine a real general-band linear-system solve and return LAPACK diagnostics.
Definition lapack.hpp:272
bool pstrf(char uplo, blas_int n, Scalar *a, blas_int lda, blas_int *pivots, blas_int &rank, Scalar tolerance, Scalar *work)
Compute a real dense pivoted Cholesky factorization.
Definition lapack.hpp:1291
void trsna(char job, char howmny, blas_int *select, blas_int n, Scalar *t, blas_int ldt, Scalar *vl, blas_int ldvl, Scalar *vr, blas_int ldvr, Scalar *reciprocal_eigenvalue_condition_numbers, Scalar *reciprocal_eigenvector_condition_numbers, blas_int mm, blas_int &computed_estimates, Scalar *work, blas_int ldwork, blas_int *iwork)
Estimate reciprocal condition numbers for real Schur eigenpairs.
Definition lapack.hpp:950
Scalar lansy(char norm, char uplo, blas_int n, Scalar *a, blas_int lda, Scalar *work)
Compute a dense real symmetric matrix norm through the configured LAPACK backend.
Definition lapack.hpp:199
void gehrd(blas_int n, blas_int first, blas_int last, Scalar *a, blas_int lda, Scalar *tau, Scalar *work, blas_int lwork)
Reduce a real dense general matrix to upper Hessenberg form.
Definition lapack.hpp:638
void trrfs(char uplo, char trans, char diag, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Refine a dense real triangular solve and return LAPACK diagnostics.
Definition lapack.hpp:1443
bool gbsvx(char fact, char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, Scalar *ab, blas_int ldab, Scalar *afb, blas_int ldafb, blas_int *ipiv, char &equed, Scalar *row_scale, Scalar *column_scale, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar &rcond, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Solve a real general-band linear system with LAPACK expert-driver diagnostics.
Definition lapack.hpp:283
void gtrfs(char trans, blas_int n, blas_int nrhs, Scalar *dl, Scalar *d, Scalar *du, Scalar *dlf, Scalar *df, Scalar *duf, Scalar *du2, blas_int const *ipiv, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Refine a real tridiagonal linear-system solve and return LAPACK diagnostics.
Definition lapack.hpp:1516
void sygvd(blas_int itype, char jobz, char uplo, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *w, Scalar *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Compute eigenvalues and optionally eigenvectors of a real generalized symmetric-definite problem by d...
Definition lapack.hpp:703
void geevx(char balanc, char jobvl, char jobvr, char sense, blas_int n, Scalar *a, blas_int lda, Scalar *wr, Scalar *wi, Scalar *vl, blas_int ldvl, Scalar *vr, blas_int ldvr, blas_int &ilo, blas_int &ihi, Scalar *scale, Scalar &abnrm, Scalar *rconde, Scalar *rcondv, Scalar *work, blas_int lwork, blas_int *iwork)
Compute real nonsymmetric eigenpairs with balancing and condition estimates.
Definition lapack.hpp:799
Scalar pbcon(char uplo, blas_int n, blas_int kd, Scalar *ab, blas_int ldab, Scalar anorm, Scalar *work, blas_int *iwork)
Estimate a real symmetric positive-definite band reciprocal condition number.
Definition lapack.hpp:333
void trtri(char uplo, char diag, blas_int n, Scalar *a, blas_int lda)
Invert a dense real triangular matrix.
Definition lapack.hpp:1453
void gbtrs(char trans, blas_int n, blas_int kl, blas_int ku, blas_int nrhs, Scalar *ab, blas_int ldab, blas_int const *ipiv, Scalar *b, blas_int ldb)
Solve using an existing real general-band LU factorization.
Definition lapack.hpp:252
void gesv(blas_int n, blas_int nrhs, Scalar *a, blas_int lda, blas_int *ipiv, Scalar *b, blas_int ldb)
Solve a real dense general linear system through the configured LAPACK backend.
Definition lapack.hpp:365
Real lanhe(char norm, char uplo, blas_int n, uni20::detail::standard_complex< Real > *a, blas_int lda, Real *work)
Compute a dense complex Hermitian matrix norm through the configured LAPACK backend.
Definition lapack.hpp:206
void orgql(blas_int m, blas_int n, blas_int k, Scalar *a, blas_int lda, Scalar *tau, Scalar *work, blas_int lwork)
Generate an explicit real Q factor from a QL factorization.
Definition lapack.hpp:577
void trsen(char job, char compq, blas_int *select, blas_int n, Scalar *t, blas_int ldt, Scalar *q, blas_int ldq, Scalar *wr, Scalar *wi, blas_int &selected_dimension, Scalar &reciprocal_eigenvalue_cluster_condition, Scalar &reciprocal_invariant_subspace_condition, Scalar *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Reorder selected blocks in a real Schur form and estimate invariant subspace conditioning.
Definition lapack.hpp:915
void gebrd(blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *d, Scalar *e, Scalar *tauq, Scalar *taup, Scalar *work, blas_int lwork)
Reduce a real dense general matrix to bidiagonal form.
Definition lapack.hpp:629
void getri(blas_int n, Scalar *a, blas_int lda, blas_int *ipiv, Scalar *work, blas_int lwork)
Invert a real dense general matrix from an existing LU factorization.
Definition lapack.hpp:447
void ormlq(char side, char trans, blas_int m, blas_int n, blas_int k, Scalar *a, blas_int lda, Scalar *tau, Scalar *c, blas_int ldc, Scalar *work, blas_int lwork)
Multiply by the implicit real Q factor from an LQ factorization.
Definition lapack.hpp:602
void orgbr(char vect, blas_int m, blas_int n, blas_int k, Scalar *a, blas_int lda, Scalar *tau, Scalar *work, blas_int lwork)
Generate an explicit real orthogonal factor from bidiagonal reduction.
Definition lapack.hpp:1133
void ptrfs(blas_int n, blas_int nrhs, Scalar *d, Scalar *e, Scalar *df, Scalar *ef, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar *forward_error, Scalar *backward_error, Scalar *work)
Refine a real symmetric positive-definite tridiagonal solve and return LAPACK diagnostics.
Definition lapack.hpp:1572
void trevc(char side, char howmny, blas_int *select, blas_int n, Scalar *t, blas_int ldt, Scalar *vl, blas_int ldvl, Scalar *vr, blas_int ldvr, blas_int mm, blas_int &computed_vectors, Scalar *work)
Compute eigenvectors of a real upper quasi-triangular Schur form.
Definition lapack.hpp:936
void gtsv(blas_int n, blas_int nrhs, Scalar *dl, Scalar *d, Scalar *du, Scalar *b, blas_int ldb)
Solve a real tridiagonal linear system through the configured LAPACK backend.
Definition lapack.hpp:1480
void orghr(blas_int n, blas_int first, blas_int last, Scalar *a, blas_int lda, Scalar const *tau, Scalar *work, blas_int lwork)
Generate an explicit real orthogonal factor from Hessenberg reduction.
Definition lapack.hpp:1142
void heevr(char jobz, char range, char uplo, blas_int n, uni20::detail::standard_complex< Real > *a, blas_int lda, Real vl, Real vu, blas_int il, blas_int iu, Real abstol, blas_int &selected_count, Real *w, uni20::detail::standard_complex< Real > *z, blas_int ldz, blas_int *isuppz, uni20::detail::standard_complex< Real > *work, blas_int lwork, Real *rwork, blas_int lrwork, blas_int *iwork, blas_int liwork)
Compute selected eigenvalues and optionally eigenvectors of a complex Hermitian matrix.
Definition lapack.hpp:742
bool posvx(char fact, char uplo, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *af, blas_int ldaf, char &equed, Scalar *scale, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar &rcond, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Solve a real dense SPD linear system with LAPACK expert-driver diagnostics.
Definition lapack.hpp:1335
void sytrs(char uplo, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, blas_int const *ipiv, Scalar *b, blas_int ldb)
Solve using an existing dense real symmetric-indefinite factorization.
Definition lapack.hpp:1385
void getrs(char trans, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, blas_int const *ipiv, Scalar *b, blas_int ldb)
Solve using an existing real dense general LU factorization.
Definition lapack.hpp:418
void hegvd(blas_int itype, char jobz, char uplo, blas_int n, uni20::detail::standard_complex< Real > *a, blas_int lda, uni20::detail::standard_complex< Real > *b, blas_int ldb, Real *w, uni20::detail::standard_complex< Real > *work, blas_int lwork, Real *rwork, blas_int lrwork, blas_int *iwork, blas_int liwork)
Compute eigenvalues and optionally eigenvectors of a complex generalized Hermitian-definite problem b...
Definition lapack.hpp:766
void geequ(blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *row_scale, Scalar *column_scale, Scalar &row_condition, Scalar &column_condition, Scalar &max_abs)
Compute real dense general row/column equilibration factors.
Definition lapack.hpp:393
void sytrd(char uplo, blas_int n, Scalar *a, blas_int lda, Scalar *d, Scalar *e, Scalar *tau, Scalar *work, blas_int lwork)
Reduce a real dense symmetric matrix to tridiagonal form.
Definition lapack.hpp:655
void pbtrs(char uplo, blas_int n, blas_int kd, blas_int nrhs, Scalar *ab, blas_int ldab, Scalar *b, blas_int ldb)
Solve using an existing real symmetric positive-definite band Cholesky factorization.
Definition lapack.hpp:321
void ggbal(char job, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, blas_int &first, blas_int &last, Scalar *lscale, Scalar *rscale, Scalar *work)
Balance a real nonsymmetric matrix pencil before generalized eigenanalysis.
Definition lapack.hpp:991
void pttrf(blas_int n, Scalar *d, Scalar *e)
Compute a real symmetric positive-definite tridiagonal factorization.
Definition lapack.hpp:1544
Scalar trcon(char norm, char uplo, char diag, blas_int n, Scalar *a, blas_int lda, Scalar *work, blas_int *iwork)
Estimate a dense real triangular reciprocal condition number.
Definition lapack.hpp:1461
void pttrs(blas_int n, blas_int nrhs, Scalar *d, Scalar *e, Scalar *b, blas_int ldb)
Solve using an existing real symmetric positive-definite tridiagonal factorization.
Definition lapack.hpp:1551
void steqr(char compz, blas_int n, Scalar *d, Scalar *e, Scalar *z, blas_int ldz, Scalar *work)
Compute a real symmetric tridiagonal eigensystem by QR iteration.
Definition lapack.hpp:1598
void hegvx(blas_int itype, char jobz, char range, char uplo, blas_int n, uni20::detail::standard_complex< Real > *a, blas_int lda, uni20::detail::standard_complex< Real > *b, blas_int ldb, Real vl, Real vu, blas_int il, blas_int iu, Real abstol, blas_int &selected_count, Real *w, uni20::detail::standard_complex< Real > *z, blas_int ldz, uni20::detail::standard_complex< Real > *work, blas_int lwork, Real *rwork, blas_int *iwork, blas_int *ifail)
Compute selected eigenvalues and optionally eigenvectors of a complex generalized Hermitian-definite ...
Definition lapack.hpp:777
void hegv(blas_int itype, char jobz, char uplo, blas_int n, uni20::detail::standard_complex< Real > *a, blas_int lda, uni20::detail::standard_complex< Real > *b, blas_int ldb, Real *w, uni20::detail::standard_complex< Real > *work, blas_int lwork, Real *rwork)
Compute eigenvalues and optionally eigenvectors of a complex generalized Hermitian-definite problem.
Definition lapack.hpp:755
void potrf(char uplo, blas_int n, Scalar *a, blas_int lda)
Compute a real dense Cholesky factorization.
Definition lapack.hpp:1279
void heevd(char jobz, char uplo, blas_int n, uni20::detail::standard_complex< Real > *a, blas_int lda, Real *w, uni20::detail::standard_complex< Real > *work, blas_int lwork, Real *rwork, blas_int lrwork, blas_int *iwork, blas_int liwork)
Compute eigenvalues and optionally eigenvectors of a complex Hermitian matrix by divide and conquer.
Definition lapack.hpp:732
void syrfs(char uplo, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *factors, blas_int factor_lda, blas_int const *ipiv, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Refine a dense real symmetric-indefinite solve and return LAPACK diagnostics.
Definition lapack.hpp:1401
void ormtr(char side, char uplo, char trans, blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar const *tau, Scalar *c, blas_int ldc, Scalar *work, blas_int lwork)
Multiply by an implicit real orthogonal factor from symmetric tridiagonal reduction.
Definition lapack.hpp:1168
Scalar ptcon(blas_int n, Scalar *d, Scalar *e, Scalar matrix_norm, Scalar *work)
Estimate a real symmetric positive-definite tridiagonal reciprocal condition number.
Definition lapack.hpp:1562
Scalar sycon(char uplo, blas_int n, Scalar *a, blas_int lda, blas_int const *ipiv, Scalar matrix_one_norm, Scalar *work, blas_int *iwork)
Estimate a dense real symmetric-indefinite reciprocal condition number.
Definition lapack.hpp:1423
void pbtrf(char uplo, blas_int n, blas_int kd, Scalar *ab, blas_int ldab)
Compute a real symmetric positive-definite band Cholesky factorization.
Definition lapack.hpp:313
void ormbr(char vect, char side, char trans, blas_int m, blas_int n, blas_int k, Scalar *a, blas_int lda, Scalar *tau, Scalar *c, blas_int ldc, Scalar *work, blas_int lwork)
Multiply by an implicit real orthogonal factor from bidiagonal reduction.
Definition lapack.hpp:1177
void pbrfs(char uplo, blas_int n, blas_int kd, blas_int nrhs, Scalar *ab, blas_int ldab, Scalar *afb, blas_int ldafb, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Refine a real symmetric positive-definite band solve and return LAPACK diagnostics.
Definition lapack.hpp:343
Scalar gecon(char norm, blas_int n, Scalar const *a, blas_int lda, Scalar anorm, Scalar *work, blas_int *iwork)
Estimate a real dense general reciprocal condition number.
Definition lapack.hpp:464
void stevd(char jobz, blas_int n, Scalar *d, Scalar *e, Scalar *z, blas_int ldz, Scalar *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Compute a real symmetric tridiagonal eigensystem by divide-and-conquer.
Definition lapack.hpp:1606
void ggev(char jobvl, char jobvr, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *alphar, Scalar *alphai, Scalar *beta, Scalar *vl, blas_int ldvl, Scalar *vr, blas_int ldvr, Scalar *work, blas_int lwork)
Compute generalized eigenvalues and optionally eigenvectors of a real nonsymmetric matrix pencil.
Definition lapack.hpp:967
void gelqf(blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *tau, Scalar *work, blas_int lwork)
Compute a real or complex dense LQ factorization through the configured LAPACK backend.
Definition lapack.hpp:537
void sterf(blas_int n, Scalar *d, Scalar *e)
Compute eigenvalues of a real symmetric tridiagonal matrix.
Definition lapack.hpp:1590
void trexc(char compq, blas_int n, Scalar *t, blas_int ldt, Scalar *q, blas_int ldq, blas_int &first, blas_int &last, Scalar *work)
Reorder adjacent blocks in a real Schur form.
Definition lapack.hpp:889
Scalar pocon(char uplo, blas_int n, Scalar *a, blas_int lda, Scalar matrix_one_norm, Scalar *work, blas_int *iwork)
Estimate a real dense SPD reciprocal condition number.
Definition lapack.hpp:1367
void tgevc(char side, char howmny, blas_int *select, blas_int n, Scalar *s, blas_int lds, Scalar *p, blas_int ldp, Scalar *vl, blas_int ldvl, Scalar *vr, blas_int ldvr, blas_int mm, blas_int &computed_vectors, Scalar *work)
Compute eigenvectors of a generalized real Schur form.
Definition lapack.hpp:1102
void gges(char jobvsl, char jobvsr, char sort, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, blas_int &selected_dimension, Scalar *alphar, Scalar *alphai, Scalar *beta, Scalar *vsl, blas_int ldvsl, Scalar *vsr, blas_int ldvsr, Scalar *work, blas_int lwork, blas_int *bwork)
Compute a generalized real Schur form of a real nonsymmetric matrix pencil.
Definition lapack.hpp:1018
void tgsen(blas_int ijob, bool wantq, bool wantz, blas_int *select, blas_int n, Scalar *a, blas_int lda, Scalar *b, blas_int ldb, Scalar *alphar, Scalar *alphai, Scalar *beta, Scalar *q, blas_int ldq, Scalar *z, blas_int ldz, blas_int &selected_dimension, Scalar &pl, Scalar &pr, Scalar *dif, Scalar *work, blas_int lwork, blas_int *iwork, blas_int liwork)
Reorder selected blocks in a generalized real Schur form and estimate conditioning.
Definition lapack.hpp:1082
bool sysvx(char fact, char uplo, blas_int n, blas_int nrhs, Scalar *a, blas_int lda, Scalar *af, blas_int ldaf, blas_int *ipiv, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar &rcond, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int lwork, blas_int *iwork)
Solve a dense real symmetric-indefinite system with LAPACK expert-driver diagnostics.
Definition lapack.hpp:1412
void gesvd(char jobu, char jobvt, blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *s, Scalar *u, blas_int ldu, Scalar *vt, blas_int ldvt, Scalar *work, blas_int lwork)
Compute a real dense singular value decomposition.
Definition lapack.hpp:1186
void gesdd(char jobz, blas_int m, blas_int n, Scalar *a, blas_int lda, Scalar *s, Scalar *u, blas_int ldu, Scalar *vt, blas_int ldvt, Scalar *work, blas_int lwork, blas_int *iwork)
Compute a real dense divide-and-conquer singular value decomposition.
Definition lapack.hpp:1205
bool ptsvx(char fact, blas_int n, blas_int nrhs, Scalar *d, Scalar *e, Scalar *df, Scalar *ef, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar &rcond, Scalar *forward_error, Scalar *backward_error, Scalar *work)
Solve a real symmetric positive-definite tridiagonal system with LAPACK expert-driver diagnostics.
Definition lapack.hpp:1581
void hseqr(char job, char compz, blas_int n, blas_int first, blas_int last, Scalar *h, blas_int ldh, Scalar *wr, Scalar *wi, Scalar *z, blas_int ldz, Scalar *work, blas_int lwork)
Compute a Schur form of a real upper Hessenberg matrix.
Definition lapack.hpp:876
bool gtsvx(char fact, char trans, blas_int n, blas_int nrhs, Scalar *dl, Scalar *d, Scalar *du, Scalar *dlf, Scalar *df, Scalar *duf, Scalar *du2, blas_int *ipiv, Scalar *b, blas_int ldb, Scalar *x, blas_int ldx, Scalar &rcond, Scalar *forward_error, Scalar *backward_error, Scalar *work, blas_int *iwork)
Solve a real tridiagonal linear system with LAPACK expert-driver diagnostics.
Definition lapack.hpp:1527
void ormqr(char side, char trans, blas_int m, blas_int n, blas_int k, Scalar *a, blas_int lda, Scalar *tau, Scalar *c, blas_int ldc, Scalar *work, blas_int lwork)
Multiply by the implicit real Q factor from a QR factorization.
Definition lapack.hpp:593
Definition data_table.cpp:8
mpreal norm(mpcomplex const &z)
Definition mpcomplex.hpp:494
void scale(Tensor &tensor, Scalar factor)
Multiply every stored numerical block by a scalar in place.
Definition block_tensor_linear.hpp:400
mpreal beta(mpreal const &a, mpreal const &x)
Real Beta function; positive rational/integer pairs retain exact values.
Definition mpreal_special.hpp:164
Reference LAPACK wrappers for real band linear algebra.
Reference LAPACK wrappers for real and complex dense general linear systems.
LAPACK norm wrappers for the reference float/double backend.
#define CHECK(cond,...)
Definition trace.hpp:299