#:include "common.fypp" module stdlib_lapack_eig_svd_lsq use stdlib_linalg_constants use stdlib_linalg_lapack_aux use stdlib_linalg_blas use stdlib_lapack_base use stdlib_lapack_orthogonal_factors use stdlib_lapack_solve implicit none interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sgebrd( m, n, a, lda, d, e, tauq, taup, work, lwork,info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, lwork, m, n real(sp), intent(inout) :: a(lda,*) real(sp), intent(out) :: d(*), e(*), taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_sgebrd pure module subroutine stdlib${ii}$_dgebrd( m, n, a, lda, d, e, tauq, taup, work, lwork,info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, lwork, m, n real(dp), intent(inout) :: a(lda,*) real(dp), intent(out) :: d(*), e(*), taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_dgebrd #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$gebrd( m, n, a, lda, d, e, tauq, taup, work, lwork,info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, lwork, m, n real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(out) :: d(*), e(*), taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_${ri}$gebrd #:endif #:endfor pure module subroutine stdlib${ii}$_cgebrd( m, n, a, lda, d, e, tauq, taup, work, lwork,info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, lwork, m, n real(sp), intent(out) :: d(*), e(*) complex(sp), intent(inout) :: a(lda,*) complex(sp), intent(out) :: taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_cgebrd pure module subroutine stdlib${ii}$_zgebrd( m, n, a, lda, d, e, tauq, taup, work, lwork,info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, lwork, m, n real(dp), intent(out) :: d(*), e(*) complex(dp), intent(inout) :: a(lda,*) complex(dp), intent(out) :: taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_zgebrd #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$gebrd( m, n, a, lda, d, e, tauq, taup, work, lwork,info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, lwork, m, n real(${ck}$), intent(out) :: d(*), e(*) complex(${ck}$), intent(inout) :: a(lda,*) complex(${ck}$), intent(out) :: taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_${ci}$gebrd #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sgebd2( m, n, a, lda, d, e, tauq, taup, work, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, m, n real(sp), intent(inout) :: a(lda,*) real(sp), intent(out) :: d(*), e(*), taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_sgebd2 pure module subroutine stdlib${ii}$_dgebd2( m, n, a, lda, d, e, tauq, taup, work, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, m, n real(dp), intent(inout) :: a(lda,*) real(dp), intent(out) :: d(*), e(*), taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_dgebd2 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$gebd2( m, n, a, lda, d, e, tauq, taup, work, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, m, n real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(out) :: d(*), e(*), taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_${ri}$gebd2 #:endif #:endfor pure module subroutine stdlib${ii}$_cgebd2( m, n, a, lda, d, e, tauq, taup, work, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, m, n real(sp), intent(out) :: d(*), e(*) complex(sp), intent(inout) :: a(lda,*) complex(sp), intent(out) :: taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_cgebd2 pure module subroutine stdlib${ii}$_zgebd2( m, n, a, lda, d, e, tauq, taup, work, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, m, n real(dp), intent(out) :: d(*), e(*) complex(dp), intent(inout) :: a(lda,*) complex(dp), intent(out) :: taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_zgebd2 #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$gebd2( m, n, a, lda, d, e, tauq, taup, work, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, m, n real(${ck}$), intent(out) :: d(*), e(*) complex(${ck}$), intent(inout) :: a(lda,*) complex(${ck}$), intent(out) :: taup(*), tauq(*), work(*) end subroutine stdlib${ii}$_${ci}$gebd2 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sgbbrd( vect, m, n, ncc, kl, ku, ab, ldab, d, e, q,ldq, pt, ldpt, c, & ldc, work, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kl, ku, ldab, ldc, ldpt, ldq, m, n, ncc real(sp), intent(inout) :: ab(ldab,*), c(ldc,*) real(sp), intent(out) :: d(*), e(*), pt(ldpt,*), q(ldq,*), work(*) end subroutine stdlib${ii}$_sgbbrd pure module subroutine stdlib${ii}$_dgbbrd( vect, m, n, ncc, kl, ku, ab, ldab, d, e, q,ldq, pt, ldpt, c, & ldc, work, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kl, ku, ldab, ldc, ldpt, ldq, m, n, ncc real(dp), intent(inout) :: ab(ldab,*), c(ldc,*) real(dp), intent(out) :: d(*), e(*), pt(ldpt,*), q(ldq,*), work(*) end subroutine stdlib${ii}$_dgbbrd #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$gbbrd( vect, m, n, ncc, kl, ku, ab, ldab, d, e, q,ldq, pt, ldpt, c, & ldc, work, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kl, ku, ldab, ldc, ldpt, ldq, m, n, ncc real(${rk}$), intent(inout) :: ab(ldab,*), c(ldc,*) real(${rk}$), intent(out) :: d(*), e(*), pt(ldpt,*), q(ldq,*), work(*) end subroutine stdlib${ii}$_${ri}$gbbrd #:endif #:endfor pure module subroutine stdlib${ii}$_cgbbrd( vect, m, n, ncc, kl, ku, ab, ldab, d, e, q,ldq, pt, ldpt, c, & ldc, work, rwork, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kl, ku, ldab, ldc, ldpt, ldq, m, n, ncc real(sp), intent(out) :: d(*), e(*), rwork(*) complex(sp), intent(inout) :: ab(ldab,*), c(ldc,*) complex(sp), intent(out) :: pt(ldpt,*), q(ldq,*), work(*) end subroutine stdlib${ii}$_cgbbrd pure module subroutine stdlib${ii}$_zgbbrd( vect, m, n, ncc, kl, ku, ab, ldab, d, e, q,ldq, pt, ldpt, c, & ldc, work, rwork, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kl, ku, ldab, ldc, ldpt, ldq, m, n, ncc real(dp), intent(out) :: d(*), e(*), rwork(*) complex(dp), intent(inout) :: ab(ldab,*), c(ldc,*) complex(dp), intent(out) :: pt(ldpt,*), q(ldq,*), work(*) end subroutine stdlib${ii}$_zgbbrd #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$gbbrd( vect, m, n, ncc, kl, ku, ab, ldab, d, e, q,ldq, pt, ldpt, c, & ldc, work, rwork, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kl, ku, ldab, ldc, ldpt, ldq, m, n, ncc real(${ck}$), intent(out) :: d(*), e(*), rwork(*) complex(${ck}$), intent(inout) :: ab(ldab,*), c(ldc,*) complex(${ck}$), intent(out) :: pt(ldpt,*), q(ldq,*), work(*) end subroutine stdlib${ii}$_${ci}$gbbrd #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sgsvj0( jobv, m, n, a, lda, d, sva, mv, v, ldv, eps,sfmin, tol, & nsweep, work, lwork, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, nsweep real(sp), intent(in) :: eps, sfmin, tol character, intent(in) :: jobv real(sp), intent(inout) :: a(lda,*), sva(n), d(n), v(ldv,*) real(sp), intent(out) :: work(lwork) end subroutine stdlib${ii}$_sgsvj0 pure module subroutine stdlib${ii}$_dgsvj0( jobv, m, n, a, lda, d, sva, mv, v, ldv, eps,sfmin, tol, & nsweep, work, lwork, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, nsweep real(dp), intent(in) :: eps, sfmin, tol character, intent(in) :: jobv real(dp), intent(inout) :: a(lda,*), sva(n), d(n), v(ldv,*) real(dp), intent(out) :: work(lwork) end subroutine stdlib${ii}$_dgsvj0 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$gsvj0( jobv, m, n, a, lda, d, sva, mv, v, ldv, eps,sfmin, tol, & nsweep, work, lwork, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, nsweep real(${rk}$), intent(in) :: eps, sfmin, tol character, intent(in) :: jobv real(${rk}$), intent(inout) :: a(lda,*), sva(n), d(n), v(ldv,*) real(${rk}$), intent(out) :: work(lwork) end subroutine stdlib${ii}$_${ri}$gsvj0 #:endif #:endfor pure module subroutine stdlib${ii}$_cgsvj0( jobv, m, n, a, lda, d, sva, mv, v, ldv, eps,sfmin, tol, & nsweep, work, lwork, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, nsweep real(sp), intent(in) :: eps, sfmin, tol character, intent(in) :: jobv complex(sp), intent(inout) :: a(lda,*), d(n), v(ldv,*) complex(sp), intent(out) :: work(lwork) real(sp), intent(inout) :: sva(n) end subroutine stdlib${ii}$_cgsvj0 pure module subroutine stdlib${ii}$_zgsvj0( jobv, m, n, a, lda, d, sva, mv, v, ldv, eps,sfmin, tol, & nsweep, work, lwork, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, nsweep real(dp), intent(in) :: eps, sfmin, tol character, intent(in) :: jobv complex(dp), intent(inout) :: a(lda,*), d(n), v(ldv,*) complex(dp), intent(out) :: work(lwork) real(dp), intent(inout) :: sva(n) end subroutine stdlib${ii}$_zgsvj0 #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$gsvj0( jobv, m, n, a, lda, d, sva, mv, v, ldv, eps,sfmin, tol, & nsweep, work, lwork, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, nsweep real(${ck}$), intent(in) :: eps, sfmin, tol character, intent(in) :: jobv complex(${ck}$), intent(inout) :: a(lda,*), d(n), v(ldv,*) complex(${ck}$), intent(out) :: work(lwork) real(${ck}$), intent(inout) :: sva(n) end subroutine stdlib${ii}$_${ci}$gsvj0 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sgsvj1( jobv, m, n, n1, a, lda, d, sva, mv, v, ldv,eps, sfmin, tol, & nsweep, work, lwork, info ) real(sp), intent(in) :: eps, sfmin, tol integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, n1, nsweep character, intent(in) :: jobv real(sp), intent(inout) :: a(lda,*), d(n), sva(n), v(ldv,*) real(sp), intent(out) :: work(lwork) end subroutine stdlib${ii}$_sgsvj1 pure module subroutine stdlib${ii}$_dgsvj1( jobv, m, n, n1, a, lda, d, sva, mv, v, ldv,eps, sfmin, tol, & nsweep, work, lwork, info ) real(dp), intent(in) :: eps, sfmin, tol integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, n1, nsweep character, intent(in) :: jobv real(dp), intent(inout) :: a(lda,*), d(n), sva(n), v(ldv,*) real(dp), intent(out) :: work(lwork) end subroutine stdlib${ii}$_dgsvj1 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$gsvj1( jobv, m, n, n1, a, lda, d, sva, mv, v, ldv,eps, sfmin, tol, & nsweep, work, lwork, info ) real(${rk}$), intent(in) :: eps, sfmin, tol integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, n1, nsweep character, intent(in) :: jobv real(${rk}$), intent(inout) :: a(lda,*), d(n), sva(n), v(ldv,*) real(${rk}$), intent(out) :: work(lwork) end subroutine stdlib${ii}$_${ri}$gsvj1 #:endif #:endfor pure module subroutine stdlib${ii}$_cgsvj1( jobv, m, n, n1, a, lda, d, sva, mv, v, ldv,eps, sfmin, tol, & nsweep, work, lwork, info ) real(sp), intent(in) :: eps, sfmin, tol integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, n1, nsweep character, intent(in) :: jobv complex(sp), intent(inout) :: a(lda,*), d(n), v(ldv,*) complex(sp), intent(out) :: work(lwork) real(sp), intent(inout) :: sva(n) end subroutine stdlib${ii}$_cgsvj1 pure module subroutine stdlib${ii}$_zgsvj1( jobv, m, n, n1, a, lda, d, sva, mv, v, ldv,eps, sfmin, tol, & nsweep, work, lwork, info ) real(dp), intent(in) :: eps, sfmin, tol integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, n1, nsweep character, intent(in) :: jobv complex(dp), intent(inout) :: a(lda,*), d(n), v(ldv,*) complex(dp), intent(out) :: work(lwork) real(dp), intent(inout) :: sva(n) end subroutine stdlib${ii}$_zgsvj1 #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$gsvj1( jobv, m, n, n1, a, lda, d, sva, mv, v, ldv,eps, sfmin, tol, & nsweep, work, lwork, info ) real(${ck}$), intent(in) :: eps, sfmin, tol integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldv, lwork, m, mv, n, n1, nsweep character, intent(in) :: jobv complex(${ck}$), intent(inout) :: a(lda,*), d(n), v(ldv,*) complex(${ck}$), intent(out) :: work(lwork) real(${ck}$), intent(inout) :: sva(n) end subroutine stdlib${ii}$_${ci}$gsvj1 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_stgsja( jobu, jobv, jobq, m, p, n, k, l, a, lda, b,ldb, tola, tolb, & alpha, beta, u, ldu, v, ldv,q, ldq, work, ncycle, info ) character, intent(in) :: jobq, jobu, jobv integer(${ik}$), intent(out) :: info, ncycle integer(${ik}$), intent(in) :: k, l, lda, ldb, ldq, ldu, ldv, m, n, p real(sp), intent(in) :: tola, tolb real(sp), intent(inout) :: a(lda,*), b(ldb,*), q(ldq,*), u(ldu,*), v(ldv,*) real(sp), intent(out) :: alpha(*), beta(*), work(*) end subroutine stdlib${ii}$_stgsja pure module subroutine stdlib${ii}$_dtgsja( jobu, jobv, jobq, m, p, n, k, l, a, lda, b,ldb, tola, tolb, & alpha, beta, u, ldu, v, ldv,q, ldq, work, ncycle, info ) character, intent(in) :: jobq, jobu, jobv integer(${ik}$), intent(out) :: info, ncycle integer(${ik}$), intent(in) :: k, l, lda, ldb, ldq, ldu, ldv, m, n, p real(dp), intent(in) :: tola, tolb real(dp), intent(inout) :: a(lda,*), b(ldb,*), q(ldq,*), u(ldu,*), v(ldv,*) real(dp), intent(out) :: alpha(*), beta(*), work(*) end subroutine stdlib${ii}$_dtgsja #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$tgsja( jobu, jobv, jobq, m, p, n, k, l, a, lda, b,ldb, tola, tolb, & alpha, beta, u, ldu, v, ldv,q, ldq, work, ncycle, info ) character, intent(in) :: jobq, jobu, jobv integer(${ik}$), intent(out) :: info, ncycle integer(${ik}$), intent(in) :: k, l, lda, ldb, ldq, ldu, ldv, m, n, p real(${rk}$), intent(in) :: tola, tolb real(${rk}$), intent(inout) :: a(lda,*), b(ldb,*), q(ldq,*), u(ldu,*), v(ldv,*) real(${rk}$), intent(out) :: alpha(*), beta(*), work(*) end subroutine stdlib${ii}$_${ri}$tgsja #:endif #:endfor pure module subroutine stdlib${ii}$_ctgsja( jobu, jobv, jobq, m, p, n, k, l, a, lda, b,ldb, tola, tolb, & alpha, beta, u, ldu, v, ldv,q, ldq, work, ncycle, info ) character, intent(in) :: jobq, jobu, jobv integer(${ik}$), intent(out) :: info, ncycle integer(${ik}$), intent(in) :: k, l, lda, ldb, ldq, ldu, ldv, m, n, p real(sp), intent(in) :: tola, tolb real(sp), intent(out) :: alpha(*), beta(*) complex(sp), intent(inout) :: a(lda,*), b(ldb,*), q(ldq,*), u(ldu,*), v(ldv,*) complex(sp), intent(out) :: work(*) end subroutine stdlib${ii}$_ctgsja pure module subroutine stdlib${ii}$_ztgsja( jobu, jobv, jobq, m, p, n, k, l, a, lda, b,ldb, tola, tolb, & alpha, beta, u, ldu, v, ldv,q, ldq, work, ncycle, info ) character, intent(in) :: jobq, jobu, jobv integer(${ik}$), intent(out) :: info, ncycle integer(${ik}$), intent(in) :: k, l, lda, ldb, ldq, ldu, ldv, m, n, p real(dp), intent(in) :: tola, tolb real(dp), intent(out) :: alpha(*), beta(*) complex(dp), intent(inout) :: a(lda,*), b(ldb,*), q(ldq,*), u(ldu,*), v(ldv,*) complex(dp), intent(out) :: work(*) end subroutine stdlib${ii}$_ztgsja #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$tgsja( jobu, jobv, jobq, m, p, n, k, l, a, lda, b,ldb, tola, tolb, & alpha, beta, u, ldu, v, ldv,q, ldq, work, ncycle, info ) character, intent(in) :: jobq, jobu, jobv integer(${ik}$), intent(out) :: info, ncycle integer(${ik}$), intent(in) :: k, l, lda, ldb, ldq, ldu, ldv, m, n, p real(${ck}$), intent(in) :: tola, tolb real(${ck}$), intent(out) :: alpha(*), beta(*) complex(${ck}$), intent(inout) :: a(lda,*), b(ldb,*), q(ldq,*), u(ldu,*), v(ldv,*) complex(${ck}$), intent(out) :: work(*) end subroutine stdlib${ii}$_${ci}$tgsja #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_cungbr( vect, m, n, k, a, lda, tau, work, lwork, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, lwork, m, n complex(sp), intent(inout) :: a(lda,*) complex(sp), intent(in) :: tau(*) complex(sp), intent(out) :: work(*) end subroutine stdlib${ii}$_cungbr pure module subroutine stdlib${ii}$_zungbr( vect, m, n, k, a, lda, tau, work, lwork, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, lwork, m, n complex(dp), intent(inout) :: a(lda,*) complex(dp), intent(in) :: tau(*) complex(dp), intent(out) :: work(*) end subroutine stdlib${ii}$_zungbr #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$ungbr( vect, m, n, k, a, lda, tau, work, lwork, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, lwork, m, n complex(${ck}$), intent(inout) :: a(lda,*) complex(${ck}$), intent(in) :: tau(*) complex(${ck}$), intent(out) :: work(*) end subroutine stdlib${ii}$_${ci}$ungbr #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sorgbr( vect, m, n, k, a, lda, tau, work, lwork, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, lwork, m, n real(sp), intent(inout) :: a(lda,*) real(sp), intent(in) :: tau(*) real(sp), intent(out) :: work(*) end subroutine stdlib${ii}$_sorgbr pure module subroutine stdlib${ii}$_dorgbr( vect, m, n, k, a, lda, tau, work, lwork, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, lwork, m, n real(dp), intent(inout) :: a(lda,*) real(dp), intent(in) :: tau(*) real(dp), intent(out) :: work(*) end subroutine stdlib${ii}$_dorgbr #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$orgbr( vect, m, n, k, a, lda, tau, work, lwork, info ) character, intent(in) :: vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, lwork, m, n real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(in) :: tau(*) real(${rk}$), intent(out) :: work(*) end subroutine stdlib${ii}$_${ri}$orgbr #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_cunmbr( vect, side, trans, m, n, k, a, lda, tau, c,ldc, work, lwork, & info ) character, intent(in) :: side, trans, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, ldc, lwork, m, n complex(sp), intent(inout) :: a(lda,*), c(ldc,*) complex(sp), intent(in) :: tau(*) complex(sp), intent(out) :: work(*) end subroutine stdlib${ii}$_cunmbr pure module subroutine stdlib${ii}$_zunmbr( vect, side, trans, m, n, k, a, lda, tau, c,ldc, work, lwork, & info ) character, intent(in) :: side, trans, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, ldc, lwork, m, n complex(dp), intent(inout) :: a(lda,*), c(ldc,*) complex(dp), intent(in) :: tau(*) complex(dp), intent(out) :: work(*) end subroutine stdlib${ii}$_zunmbr #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$unmbr( vect, side, trans, m, n, k, a, lda, tau, c,ldc, work, lwork, & info ) character, intent(in) :: side, trans, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, ldc, lwork, m, n complex(${ck}$), intent(inout) :: a(lda,*), c(ldc,*) complex(${ck}$), intent(in) :: tau(*) complex(${ck}$), intent(out) :: work(*) end subroutine stdlib${ii}$_${ci}$unmbr #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sormbr( vect, side, trans, m, n, k, a, lda, tau, c,ldc, work, lwork, & info ) character, intent(in) :: side, trans, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, ldc, lwork, m, n real(sp), intent(inout) :: a(lda,*), c(ldc,*) real(sp), intent(in) :: tau(*) real(sp), intent(out) :: work(*) end subroutine stdlib${ii}$_sormbr pure module subroutine stdlib${ii}$_dormbr( vect, side, trans, m, n, k, a, lda, tau, c,ldc, work, lwork, & info ) character, intent(in) :: side, trans, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, ldc, lwork, m, n real(dp), intent(inout) :: a(lda,*), c(ldc,*) real(dp), intent(in) :: tau(*) real(dp), intent(out) :: work(*) end subroutine stdlib${ii}$_dormbr #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$ormbr( vect, side, trans, m, n, k, a, lda, tau, c,ldc, work, lwork, & info ) character, intent(in) :: side, trans, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: k, lda, ldc, lwork, m, n real(${rk}$), intent(inout) :: a(lda,*), c(ldc,*) real(${rk}$), intent(in) :: tau(*) real(${rk}$), intent(out) :: work(*) end subroutine stdlib${ii}$_${ri}$ormbr #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slabrd( m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y,ldy ) integer(${ik}$), intent(in) :: lda, ldx, ldy, m, n, nb real(sp), intent(inout) :: a(lda,*) real(sp), intent(out) :: d(*), e(*), taup(*), tauq(*), x(ldx,*), y(ldy,*) end subroutine stdlib${ii}$_slabrd pure module subroutine stdlib${ii}$_dlabrd( m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y,ldy ) integer(${ik}$), intent(in) :: lda, ldx, ldy, m, n, nb real(dp), intent(inout) :: a(lda,*) real(dp), intent(out) :: d(*), e(*), taup(*), tauq(*), x(ldx,*), y(ldy,*) end subroutine stdlib${ii}$_dlabrd #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$labrd( m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y,ldy ) integer(${ik}$), intent(in) :: lda, ldx, ldy, m, n, nb real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(out) :: d(*), e(*), taup(*), tauq(*), x(ldx,*), y(ldy,*) end subroutine stdlib${ii}$_${ri}$labrd #:endif #:endfor pure module subroutine stdlib${ii}$_clabrd( m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y,ldy ) integer(${ik}$), intent(in) :: lda, ldx, ldy, m, n, nb real(sp), intent(out) :: d(*), e(*) complex(sp), intent(inout) :: a(lda,*) complex(sp), intent(out) :: taup(*), tauq(*), x(ldx,*), y(ldy,*) end subroutine stdlib${ii}$_clabrd pure module subroutine stdlib${ii}$_zlabrd( m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y,ldy ) integer(${ik}$), intent(in) :: lda, ldx, ldy, m, n, nb real(dp), intent(out) :: d(*), e(*) complex(dp), intent(inout) :: a(lda,*) complex(dp), intent(out) :: taup(*), tauq(*), x(ldx,*), y(ldy,*) end subroutine stdlib${ii}$_zlabrd #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$labrd( m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y,ldy ) integer(${ik}$), intent(in) :: lda, ldx, ldy, m, n, nb real(${ck}$), intent(out) :: d(*), e(*) complex(${ck}$), intent(inout) :: a(lda,*) complex(${ck}$), intent(out) :: taup(*), tauq(*), x(ldx,*), y(ldy,*) end subroutine stdlib${ii}$_${ci}$labrd #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slas2( f, g, h, ssmin, ssmax ) real(sp), intent(in) :: f, g, h real(sp), intent(out) :: ssmax, ssmin end subroutine stdlib${ii}$_slas2 pure module subroutine stdlib${ii}$_dlas2( f, g, h, ssmin, ssmax ) real(dp), intent(in) :: f, g, h real(dp), intent(out) :: ssmax, ssmin end subroutine stdlib${ii}$_dlas2 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$las2( f, g, h, ssmin, ssmax ) real(${rk}$), intent(in) :: f, g, h real(${rk}$), intent(out) :: ssmax, ssmin end subroutine stdlib${ii}$_${ri}$las2 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slasv2( f, g, h, ssmin, ssmax, snr, csr, snl, csl ) real(sp), intent(out) :: csl, csr, snl, snr, ssmax, ssmin real(sp), intent(in) :: f, g, h end subroutine stdlib${ii}$_slasv2 pure module subroutine stdlib${ii}$_dlasv2( f, g, h, ssmin, ssmax, snr, csr, snl, csl ) real(dp), intent(out) :: csl, csr, snl, snr, ssmax, ssmin real(dp), intent(in) :: f, g, h end subroutine stdlib${ii}$_dlasv2 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$lasv2( f, g, h, ssmin, ssmax, snr, csr, snl, csl ) real(${rk}$), intent(out) :: csl, csr, snl, snr, ssmax, ssmin real(${rk}$), intent(in) :: f, g, h end subroutine stdlib${ii}$_${ri}$lasv2 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slartgs( x, y, sigma, cs, sn ) real(sp), intent(out) :: cs, sn real(sp), intent(in) :: sigma, x, y end subroutine stdlib${ii}$_slartgs pure module subroutine stdlib${ii}$_dlartgs( x, y, sigma, cs, sn ) real(dp), intent(out) :: cs, sn real(dp), intent(in) :: sigma, x, y end subroutine stdlib${ii}$_dlartgs #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$lartgs( x, y, sigma, cs, sn ) real(${rk}$), intent(out) :: cs, sn real(${rk}$), intent(in) :: sigma, x, y end subroutine stdlib${ii}$_${ri}$lartgs #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slags2( upper, a1, a2, a3, b1, b2, b3, csu, snu, csv,snv, csq, snq ) logical(lk), intent(in) :: upper real(sp), intent(in) :: a1, a2, a3, b1, b2, b3 real(sp), intent(out) :: csq, csu, csv, snq, snu, snv end subroutine stdlib${ii}$_slags2 pure module subroutine stdlib${ii}$_dlags2( upper, a1, a2, a3, b1, b2, b3, csu, snu, csv,snv, csq, snq ) logical(lk), intent(in) :: upper real(dp), intent(in) :: a1, a2, a3, b1, b2, b3 real(dp), intent(out) :: csq, csu, csv, snq, snu, snv end subroutine stdlib${ii}$_dlags2 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$lags2( upper, a1, a2, a3, b1, b2, b3, csu, snu, csv,snv, csq, snq ) logical(lk), intent(in) :: upper real(${rk}$), intent(in) :: a1, a2, a3, b1, b2, b3 real(${rk}$), intent(out) :: csq, csu, csv, snq, snu, snv end subroutine stdlib${ii}$_${ri}$lags2 #:endif #:endfor pure module subroutine stdlib${ii}$_clags2( upper, a1, a2, a3, b1, b2, b3, csu, snu, csv,snv, csq, snq ) logical(lk), intent(in) :: upper real(sp), intent(in) :: a1, a3, b1, b3 real(sp), intent(out) :: csq, csu, csv complex(sp), intent(in) :: a2, b2 complex(sp), intent(out) :: snq, snu, snv end subroutine stdlib${ii}$_clags2 pure module subroutine stdlib${ii}$_zlags2( upper, a1, a2, a3, b1, b2, b3, csu, snu, csv,snv, csq, snq ) logical(lk), intent(in) :: upper real(dp), intent(in) :: a1, a3, b1, b3 real(dp), intent(out) :: csq, csu, csv complex(dp), intent(in) :: a2, b2 complex(dp), intent(out) :: snq, snu, snv end subroutine stdlib${ii}$_zlags2 #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$lags2( upper, a1, a2, a3, b1, b2, b3, csu, snu, csv,snv, csq, snq ) logical(lk), intent(in) :: upper real(${ck}$), intent(in) :: a1, a3, b1, b3 real(${ck}$), intent(out) :: csq, csu, csv complex(${ck}$), intent(in) :: a2, b2 complex(${ck}$), intent(out) :: snq, snu, snv end subroutine stdlib${ii}$_${ci}$lags2 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slapll( n, x, incx, y, incy, ssmin ) integer(${ik}$), intent(in) :: incx, incy, n real(sp), intent(out) :: ssmin real(sp), intent(inout) :: x(*), y(*) end subroutine stdlib${ii}$_slapll pure module subroutine stdlib${ii}$_dlapll( n, x, incx, y, incy, ssmin ) integer(${ik}$), intent(in) :: incx, incy, n real(dp), intent(out) :: ssmin real(dp), intent(inout) :: x(*), y(*) end subroutine stdlib${ii}$_dlapll #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$lapll( n, x, incx, y, incy, ssmin ) integer(${ik}$), intent(in) :: incx, incy, n real(${rk}$), intent(out) :: ssmin real(${rk}$), intent(inout) :: x(*), y(*) end subroutine stdlib${ii}$_${ri}$lapll #:endif #:endfor pure module subroutine stdlib${ii}$_clapll( n, x, incx, y, incy, ssmin ) integer(${ik}$), intent(in) :: incx, incy, n real(sp), intent(out) :: ssmin complex(sp), intent(inout) :: x(*), y(*) end subroutine stdlib${ii}$_clapll pure module subroutine stdlib${ii}$_zlapll( n, x, incx, y, incy, ssmin ) integer(${ik}$), intent(in) :: incx, incy, n real(dp), intent(out) :: ssmin complex(dp), intent(inout) :: x(*), y(*) end subroutine stdlib${ii}$_zlapll #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$lapll( n, x, incx, y, incy, ssmin ) integer(${ik}$), intent(in) :: incx, incy, n real(${ck}$), intent(out) :: ssmin complex(${ck}$), intent(inout) :: x(*), y(*) end subroutine stdlib${ii}$_${ci}$lapll #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_ssygst( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n real(sp), intent(inout) :: a(lda,*) real(sp), intent(in) :: b(ldb,*) end subroutine stdlib${ii}$_ssygst pure module subroutine stdlib${ii}$_dsygst( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n real(dp), intent(inout) :: a(lda,*) real(dp), intent(in) :: b(ldb,*) end subroutine stdlib${ii}$_dsygst #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$sygst( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(in) :: b(ldb,*) end subroutine stdlib${ii}$_${ri}$sygst #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_ssygs2( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n real(sp), intent(inout) :: a(lda,*) real(sp), intent(in) :: b(ldb,*) end subroutine stdlib${ii}$_ssygs2 pure module subroutine stdlib${ii}$_dsygs2( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n real(dp), intent(inout) :: a(lda,*) real(dp), intent(in) :: b(ldb,*) end subroutine stdlib${ii}$_dsygs2 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$sygs2( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(in) :: b(ldb,*) end subroutine stdlib${ii}$_${ri}$sygs2 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sspgst( itype, uplo, n, ap, bp, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, n real(sp), intent(inout) :: ap(*) real(sp), intent(in) :: bp(*) end subroutine stdlib${ii}$_sspgst pure module subroutine stdlib${ii}$_dspgst( itype, uplo, n, ap, bp, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, n real(dp), intent(inout) :: ap(*) real(dp), intent(in) :: bp(*) end subroutine stdlib${ii}$_dspgst #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$spgst( itype, uplo, n, ap, bp, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, n real(${rk}$), intent(inout) :: ap(*) real(${rk}$), intent(in) :: bp(*) end subroutine stdlib${ii}$_${ri}$spgst #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_ssbgst( vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x,ldx, work, info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ka, kb, ldab, ldbb, ldx, n real(sp), intent(inout) :: ab(ldab,*) real(sp), intent(in) :: bb(ldbb,*) real(sp), intent(out) :: work(*), x(ldx,*) end subroutine stdlib${ii}$_ssbgst pure module subroutine stdlib${ii}$_dsbgst( vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x,ldx, work, info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ka, kb, ldab, ldbb, ldx, n real(dp), intent(inout) :: ab(ldab,*) real(dp), intent(in) :: bb(ldbb,*) real(dp), intent(out) :: work(*), x(ldx,*) end subroutine stdlib${ii}$_dsbgst #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$sbgst( vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x,ldx, work, info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ka, kb, ldab, ldbb, ldx, n real(${rk}$), intent(inout) :: ab(ldab,*) real(${rk}$), intent(in) :: bb(ldbb,*) real(${rk}$), intent(out) :: work(*), x(ldx,*) end subroutine stdlib${ii}$_${ri}$sbgst #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_chegst( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n complex(sp), intent(inout) :: a(lda,*), b(ldb,*) end subroutine stdlib${ii}$_chegst pure module subroutine stdlib${ii}$_zhegst( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n complex(dp), intent(inout) :: a(lda,*), b(ldb,*) end subroutine stdlib${ii}$_zhegst #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$hegst( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n complex(${ck}$), intent(inout) :: a(lda,*), b(ldb,*) end subroutine stdlib${ii}$_${ci}$hegst #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_chegs2( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n complex(sp), intent(inout) :: a(lda,*), b(ldb,*) end subroutine stdlib${ii}$_chegs2 pure module subroutine stdlib${ii}$_zhegs2( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n complex(dp), intent(inout) :: a(lda,*), b(ldb,*) end subroutine stdlib${ii}$_zhegs2 #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$hegs2( itype, uplo, n, a, lda, b, ldb, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, lda, ldb, n complex(${ck}$), intent(inout) :: a(lda,*), b(ldb,*) end subroutine stdlib${ii}$_${ci}$hegs2 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_chpgst( itype, uplo, n, ap, bp, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, n complex(sp), intent(inout) :: ap(*) complex(sp), intent(in) :: bp(*) end subroutine stdlib${ii}$_chpgst pure module subroutine stdlib${ii}$_zhpgst( itype, uplo, n, ap, bp, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, n complex(dp), intent(inout) :: ap(*) complex(dp), intent(in) :: bp(*) end subroutine stdlib${ii}$_zhpgst #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$hpgst( itype, uplo, n, ap, bp, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: itype, n complex(${ck}$), intent(inout) :: ap(*) complex(${ck}$), intent(in) :: bp(*) end subroutine stdlib${ii}$_${ci}$hpgst #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_chbgst( vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x,ldx, work, rwork,& info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ka, kb, ldab, ldbb, ldx, n real(sp), intent(out) :: rwork(*) complex(sp), intent(inout) :: ab(ldab,*) complex(sp), intent(in) :: bb(ldbb,*) complex(sp), intent(out) :: work(*), x(ldx,*) end subroutine stdlib${ii}$_chbgst pure module subroutine stdlib${ii}$_zhbgst( vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x,ldx, work, rwork,& info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ka, kb, ldab, ldbb, ldx, n real(dp), intent(out) :: rwork(*) complex(dp), intent(inout) :: ab(ldab,*) complex(dp), intent(in) :: bb(ldbb,*) complex(dp), intent(out) :: work(*), x(ldx,*) end subroutine stdlib${ii}$_zhbgst #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$hbgst( vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x,ldx, work, rwork,& info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ka, kb, ldab, ldbb, ldx, n real(${ck}$), intent(out) :: rwork(*) complex(${ck}$), intent(inout) :: ab(ldab,*) complex(${ck}$), intent(in) :: bb(ldbb,*) complex(${ck}$), intent(out) :: work(*), x(ldx,*) end subroutine stdlib${ii}$_${ci}$hbgst #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_spbstf( uplo, n, kd, ab, ldab, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, n real(sp), intent(inout) :: ab(ldab,*) end subroutine stdlib${ii}$_spbstf pure module subroutine stdlib${ii}$_dpbstf( uplo, n, kd, ab, ldab, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, n real(dp), intent(inout) :: ab(ldab,*) end subroutine stdlib${ii}$_dpbstf #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$pbstf( uplo, n, kd, ab, ldab, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, n real(${rk}$), intent(inout) :: ab(ldab,*) end subroutine stdlib${ii}$_${ri}$pbstf #:endif #:endfor pure module subroutine stdlib${ii}$_cpbstf( uplo, n, kd, ab, ldab, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, n complex(sp), intent(inout) :: ab(ldab,*) end subroutine stdlib${ii}$_cpbstf pure module subroutine stdlib${ii}$_zpbstf( uplo, n, kd, ab, ldab, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, n complex(dp), intent(inout) :: ab(ldab,*) end subroutine stdlib${ii}$_zpbstf #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$pbstf( uplo, n, kd, ab, ldab, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, n complex(${ck}$), intent(inout) :: ab(ldab,*) end subroutine stdlib${ii}$_${ci}$pbstf #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slag2( a, lda, b, ldb, safmin, scale1, scale2, wr1,wr2, wi ) integer(${ik}$), intent(in) :: lda, ldb real(sp), intent(in) :: safmin real(sp), intent(out) :: scale1, scale2, wi, wr1, wr2 real(sp), intent(in) :: a(lda,*), b(ldb,*) end subroutine stdlib${ii}$_slag2 pure module subroutine stdlib${ii}$_dlag2( a, lda, b, ldb, safmin, scale1, scale2, wr1,wr2, wi ) integer(${ik}$), intent(in) :: lda, ldb real(dp), intent(in) :: safmin real(dp), intent(out) :: scale1, scale2, wi, wr1, wr2 real(dp), intent(in) :: a(lda,*), b(ldb,*) end subroutine stdlib${ii}$_dlag2 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$lag2( a, lda, b, ldb, safmin, scale1, scale2, wr1,wr2, wi ) integer(${ik}$), intent(in) :: lda, ldb real(${rk}$), intent(in) :: safmin real(${rk}$), intent(out) :: scale1, scale2, wi, wr1, wr2 real(${rk}$), intent(in) :: a(lda,*), b(ldb,*) end subroutine stdlib${ii}$_${ri}$lag2 #:endif #:endfor #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_dlag2${ri}$( m, n, sa, ldsa, a, lda, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldsa, m, n real(dp), intent(in) :: sa(ldsa,*) real(${rk}$), intent(out) :: a(lda,*) end subroutine stdlib${ii}$_dlag2${ri}$ #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sorm22( side, trans, m, n, n1, n2, q, ldq, c, ldc,work, lwork, info ) character, intent(in) :: side, trans integer(${ik}$), intent(in) :: m, n, n1, n2, ldq, ldc, lwork integer(${ik}$), intent(out) :: info real(sp), intent(in) :: q(ldq,*) real(sp), intent(inout) :: c(ldc,*) real(sp), intent(out) :: work(*) end subroutine stdlib${ii}$_sorm22 pure module subroutine stdlib${ii}$_dorm22( side, trans, m, n, n1, n2, q, ldq, c, ldc,work, lwork, info ) character, intent(in) :: side, trans integer(${ik}$), intent(in) :: m, n, n1, n2, ldq, ldc, lwork integer(${ik}$), intent(out) :: info real(dp), intent(in) :: q(ldq,*) real(dp), intent(inout) :: c(ldc,*) real(dp), intent(out) :: work(*) end subroutine stdlib${ii}$_dorm22 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$orm22( side, trans, m, n, n1, n2, q, ldq, c, ldc,work, lwork, info ) character, intent(in) :: side, trans integer(${ik}$), intent(in) :: m, n, n1, n2, ldq, ldc, lwork integer(${ik}$), intent(out) :: info real(${rk}$), intent(in) :: q(ldq,*) real(${rk}$), intent(inout) :: c(ldc,*) real(${rk}$), intent(out) :: work(*) end subroutine stdlib${ii}$_${ri}$orm22 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sdisna( job, m, n, d, sep, info ) character, intent(in) :: job integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: m, n real(sp), intent(in) :: d(*) real(sp), intent(out) :: sep(*) end subroutine stdlib${ii}$_sdisna pure module subroutine stdlib${ii}$_ddisna( job, m, n, d, sep, info ) character, intent(in) :: job integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: m, n real(dp), intent(in) :: d(*) real(dp), intent(out) :: sep(*) end subroutine stdlib${ii}$_ddisna #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$disna( job, m, n, d, sep, info ) character, intent(in) :: job integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: m, n real(${rk}$), intent(in) :: d(*) real(${rk}$), intent(out) :: sep(*) end subroutine stdlib${ii}$_${ri}$disna #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slatrd( uplo, n, nb, a, lda, e, tau, w, ldw ) character, intent(in) :: uplo integer(${ik}$), intent(in) :: lda, ldw, n, nb real(sp), intent(inout) :: a(lda,*) real(sp), intent(out) :: e(*), tau(*), w(ldw,*) end subroutine stdlib${ii}$_slatrd pure module subroutine stdlib${ii}$_dlatrd( uplo, n, nb, a, lda, e, tau, w, ldw ) character, intent(in) :: uplo integer(${ik}$), intent(in) :: lda, ldw, n, nb real(dp), intent(inout) :: a(lda,*) real(dp), intent(out) :: e(*), tau(*), w(ldw,*) end subroutine stdlib${ii}$_dlatrd #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$latrd( uplo, n, nb, a, lda, e, tau, w, ldw ) character, intent(in) :: uplo integer(${ik}$), intent(in) :: lda, ldw, n, nb real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(out) :: e(*), tau(*), w(ldw,*) end subroutine stdlib${ii}$_${ri}$latrd #:endif #:endfor pure module subroutine stdlib${ii}$_clatrd( uplo, n, nb, a, lda, e, tau, w, ldw ) character, intent(in) :: uplo integer(${ik}$), intent(in) :: lda, ldw, n, nb real(sp), intent(out) :: e(*) complex(sp), intent(inout) :: a(lda,*) complex(sp), intent(out) :: tau(*), w(ldw,*) end subroutine stdlib${ii}$_clatrd pure module subroutine stdlib${ii}$_zlatrd( uplo, n, nb, a, lda, e, tau, w, ldw ) character, intent(in) :: uplo integer(${ik}$), intent(in) :: lda, ldw, n, nb real(dp), intent(out) :: e(*) complex(dp), intent(inout) :: a(lda,*) complex(dp), intent(out) :: tau(*), w(ldw,*) end subroutine stdlib${ii}$_zlatrd #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$latrd( uplo, n, nb, a, lda, e, tau, w, ldw ) character, intent(in) :: uplo integer(${ik}$), intent(in) :: lda, ldw, n, nb real(${ck}$), intent(out) :: e(*) complex(${ck}$), intent(inout) :: a(lda,*) complex(${ck}$), intent(out) :: tau(*), w(ldw,*) end subroutine stdlib${ii}$_${ci}$latrd #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slae2( a, b, c, rt1, rt2 ) real(sp), intent(in) :: a, b, c real(sp), intent(out) :: rt1, rt2 end subroutine stdlib${ii}$_slae2 pure module subroutine stdlib${ii}$_dlae2( a, b, c, rt1, rt2 ) real(dp), intent(in) :: a, b, c real(dp), intent(out) :: rt1, rt2 end subroutine stdlib${ii}$_dlae2 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$lae2( a, b, c, rt1, rt2 ) real(${rk}$), intent(in) :: a, b, c real(${rk}$), intent(out) :: rt1, rt2 end subroutine stdlib${ii}$_${ri}$lae2 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_claesy( a, b, c, rt1, rt2, evscal, cs1, sn1 ) complex(sp), intent(in) :: a, b, c complex(sp), intent(out) :: cs1, evscal, rt1, rt2, sn1 end subroutine stdlib${ii}$_claesy pure module subroutine stdlib${ii}$_zlaesy( a, b, c, rt1, rt2, evscal, cs1, sn1 ) complex(dp), intent(in) :: a, b, c complex(dp), intent(out) :: cs1, evscal, rt1, rt2, sn1 end subroutine stdlib${ii}$_zlaesy #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$laesy( a, b, c, rt1, rt2, evscal, cs1, sn1 ) complex(${ck}$), intent(in) :: a, b, c complex(${ck}$), intent(out) :: cs1, evscal, rt1, rt2, sn1 end subroutine stdlib${ii}$_${ci}$laesy #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slaev2( a, b, c, rt1, rt2, cs1, sn1 ) real(sp), intent(in) :: a, b, c real(sp), intent(out) :: cs1, rt1, rt2, sn1 end subroutine stdlib${ii}$_slaev2 pure module subroutine stdlib${ii}$_dlaev2( a, b, c, rt1, rt2, cs1, sn1 ) real(dp), intent(in) :: a, b, c real(dp), intent(out) :: cs1, rt1, rt2, sn1 end subroutine stdlib${ii}$_dlaev2 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$laev2( a, b, c, rt1, rt2, cs1, sn1 ) real(${rk}$), intent(in) :: a, b, c real(${rk}$), intent(out) :: cs1, rt1, rt2, sn1 end subroutine stdlib${ii}$_${ri}$laev2 #:endif #:endfor pure module subroutine stdlib${ii}$_claev2( a, b, c, rt1, rt2, cs1, sn1 ) real(sp), intent(out) :: cs1, rt1, rt2 complex(sp), intent(in) :: a, b, c complex(sp), intent(out) :: sn1 end subroutine stdlib${ii}$_claev2 pure module subroutine stdlib${ii}$_zlaev2( a, b, c, rt1, rt2, cs1, sn1 ) real(dp), intent(out) :: cs1, rt1, rt2 complex(dp), intent(in) :: a, b, c complex(dp), intent(out) :: sn1 end subroutine stdlib${ii}$_zlaev2 #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$laev2( a, b, c, rt1, rt2, cs1, sn1 ) real(${ck}$), intent(out) :: cs1, rt1, rt2 complex(${ck}$), intent(in) :: a, b, c complex(${ck}$), intent(out) :: sn1 end subroutine stdlib${ii}$_${ci}$laev2 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slagtf( n, a, lambda, b, c, tol, d, in, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: n real(sp), intent(in) :: lambda, tol integer(${ik}$), intent(out) :: in(*) real(sp), intent(inout) :: a(*), b(*), c(*) real(sp), intent(out) :: d(*) end subroutine stdlib${ii}$_slagtf pure module subroutine stdlib${ii}$_dlagtf( n, a, lambda, b, c, tol, d, in, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: n real(dp), intent(in) :: lambda, tol integer(${ik}$), intent(out) :: in(*) real(dp), intent(inout) :: a(*), b(*), c(*) real(dp), intent(out) :: d(*) end subroutine stdlib${ii}$_dlagtf #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$lagtf( n, a, lambda, b, c, tol, d, in, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: n real(${rk}$), intent(in) :: lambda, tol integer(${ik}$), intent(out) :: in(*) real(${rk}$), intent(inout) :: a(*), b(*), c(*) real(${rk}$), intent(out) :: d(*) end subroutine stdlib${ii}$_${ri}$lagtf #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_slagts( job, n, a, b, c, d, in, y, tol, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: job, n real(sp), intent(inout) :: tol integer(${ik}$), intent(in) :: in(*) real(sp), intent(in) :: a(*), b(*), c(*), d(*) real(sp), intent(inout) :: y(*) end subroutine stdlib${ii}$_slagts pure module subroutine stdlib${ii}$_dlagts( job, n, a, b, c, d, in, y, tol, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: job, n real(dp), intent(inout) :: tol integer(${ik}$), intent(in) :: in(*) real(dp), intent(in) :: a(*), b(*), c(*), d(*) real(dp), intent(inout) :: y(*) end subroutine stdlib${ii}$_dlagts #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$lagts( job, n, a, b, c, d, in, y, tol, info ) integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: job, n real(${rk}$), intent(inout) :: tol integer(${ik}$), intent(in) :: in(*) real(${rk}$), intent(in) :: a(*), b(*), c(*), d(*) real(${rk}$), intent(inout) :: y(*) end subroutine stdlib${ii}$_${ri}$lagts #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_ssptrd( uplo, n, ap, d, e, tau, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: n real(sp), intent(inout) :: ap(*) real(sp), intent(out) :: d(*), e(*), tau(*) end subroutine stdlib${ii}$_ssptrd pure module subroutine stdlib${ii}$_dsptrd( uplo, n, ap, d, e, tau, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: n real(dp), intent(inout) :: ap(*) real(dp), intent(out) :: d(*), e(*), tau(*) end subroutine stdlib${ii}$_dsptrd #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$sptrd( uplo, n, ap, d, e, tau, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: n real(${rk}$), intent(inout) :: ap(*) real(${rk}$), intent(out) :: d(*), e(*), tau(*) end subroutine stdlib${ii}$_${ri}$sptrd #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sopgtr( uplo, n, ap, tau, q, ldq, work, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldq, n real(sp), intent(in) :: ap(*), tau(*) real(sp), intent(out) :: q(ldq,*), work(*) end subroutine stdlib${ii}$_sopgtr pure module subroutine stdlib${ii}$_dopgtr( uplo, n, ap, tau, q, ldq, work, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldq, n real(dp), intent(in) :: ap(*), tau(*) real(dp), intent(out) :: q(ldq,*), work(*) end subroutine stdlib${ii}$_dopgtr #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$opgtr( uplo, n, ap, tau, q, ldq, work, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldq, n real(${rk}$), intent(in) :: ap(*), tau(*) real(${rk}$), intent(out) :: q(ldq,*), work(*) end subroutine stdlib${ii}$_${ri}$opgtr #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_sopmtr( side, uplo, trans, m, n, ap, tau, c, ldc, work,info ) character, intent(in) :: side, trans, uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldc, m, n real(sp), intent(inout) :: ap(*), c(ldc,*) real(sp), intent(in) :: tau(*) real(sp), intent(out) :: work(*) end subroutine stdlib${ii}$_sopmtr pure module subroutine stdlib${ii}$_dopmtr( side, uplo, trans, m, n, ap, tau, c, ldc, work,info ) character, intent(in) :: side, trans, uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldc, m, n real(dp), intent(inout) :: ap(*), c(ldc,*) real(dp), intent(in) :: tau(*) real(dp), intent(out) :: work(*) end subroutine stdlib${ii}$_dopmtr #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$opmtr( side, uplo, trans, m, n, ap, tau, c, ldc, work,info ) character, intent(in) :: side, trans, uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldc, m, n real(${rk}$), intent(inout) :: ap(*), c(ldc,*) real(${rk}$), intent(in) :: tau(*) real(${rk}$), intent(out) :: work(*) end subroutine stdlib${ii}$_${ri}$opmtr #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_ssbtrd( vect, uplo, n, kd, ab, ldab, d, e, q, ldq,work, info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, ldq, n real(sp), intent(inout) :: ab(ldab,*), q(ldq,*) real(sp), intent(out) :: d(*), e(*), work(*) end subroutine stdlib${ii}$_ssbtrd pure module subroutine stdlib${ii}$_dsbtrd( vect, uplo, n, kd, ab, ldab, d, e, q, ldq,work, info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, ldq, n real(dp), intent(inout) :: ab(ldab,*), q(ldq,*) real(dp), intent(out) :: d(*), e(*), work(*) end subroutine stdlib${ii}$_dsbtrd #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] pure module subroutine stdlib${ii}$_${ri}$sbtrd( vect, uplo, n, kd, ab, ldab, d, e, q, ldq,work, info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, ldq, n real(${rk}$), intent(inout) :: ab(ldab,*), q(ldq,*) real(${rk}$), intent(out) :: d(*), e(*), work(*) end subroutine stdlib${ii}$_${ri}$sbtrd #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_chptrd( uplo, n, ap, d, e, tau, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: n real(sp), intent(out) :: d(*), e(*) complex(sp), intent(inout) :: ap(*) complex(sp), intent(out) :: tau(*) end subroutine stdlib${ii}$_chptrd pure module subroutine stdlib${ii}$_zhptrd( uplo, n, ap, d, e, tau, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: n real(dp), intent(out) :: d(*), e(*) complex(dp), intent(inout) :: ap(*) complex(dp), intent(out) :: tau(*) end subroutine stdlib${ii}$_zhptrd #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$hptrd( uplo, n, ap, d, e, tau, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: n real(${ck}$), intent(out) :: d(*), e(*) complex(${ck}$), intent(inout) :: ap(*) complex(${ck}$), intent(out) :: tau(*) end subroutine stdlib${ii}$_${ci}$hptrd #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_cupgtr( uplo, n, ap, tau, q, ldq, work, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldq, n complex(sp), intent(in) :: ap(*), tau(*) complex(sp), intent(out) :: q(ldq,*), work(*) end subroutine stdlib${ii}$_cupgtr pure module subroutine stdlib${ii}$_zupgtr( uplo, n, ap, tau, q, ldq, work, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldq, n complex(dp), intent(in) :: ap(*), tau(*) complex(dp), intent(out) :: q(ldq,*), work(*) end subroutine stdlib${ii}$_zupgtr #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$upgtr( uplo, n, ap, tau, q, ldq, work, info ) character, intent(in) :: uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldq, n complex(${ck}$), intent(in) :: ap(*), tau(*) complex(${ck}$), intent(out) :: q(ldq,*), work(*) end subroutine stdlib${ii}$_${ci}$upgtr #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_cupmtr( side, uplo, trans, m, n, ap, tau, c, ldc, work,info ) character, intent(in) :: side, trans, uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldc, m, n complex(sp), intent(inout) :: ap(*), c(ldc,*) complex(sp), intent(in) :: tau(*) complex(sp), intent(out) :: work(*) end subroutine stdlib${ii}$_cupmtr pure module subroutine stdlib${ii}$_zupmtr( side, uplo, trans, m, n, ap, tau, c, ldc, work,info ) character, intent(in) :: side, trans, uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldc, m, n complex(dp), intent(inout) :: ap(*), c(ldc,*) complex(dp), intent(in) :: tau(*) complex(dp), intent(out) :: work(*) end subroutine stdlib${ii}$_zupmtr #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$upmtr( side, uplo, trans, m, n, ap, tau, c, ldc, work,info ) character, intent(in) :: side, trans, uplo integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: ldc, m, n complex(${ck}$), intent(inout) :: ap(*), c(ldc,*) complex(${ck}$), intent(in) :: tau(*) complex(${ck}$), intent(out) :: work(*) end subroutine stdlib${ii}$_${ci}$upmtr #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES pure module subroutine stdlib${ii}$_chbtrd( vect, uplo, n, kd, ab, ldab, d, e, q, ldq,work, info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, ldq, n real(sp), intent(out) :: d(*), e(*) complex(sp), intent(inout) :: ab(ldab,*), q(ldq,*) complex(sp), intent(out) :: work(*) end subroutine stdlib${ii}$_chbtrd pure module subroutine stdlib${ii}$_zhbtrd( vect, uplo, n, kd, ab, ldab, d, e, q, ldq,work, info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, ldq, n real(dp), intent(out) :: d(*), e(*) complex(dp), intent(inout) :: ab(ldab,*), q(ldq,*) complex(dp), intent(out) :: work(*) end subroutine stdlib${ii}$_zhbtrd #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] pure module subroutine stdlib${ii}$_${ci}$hbtrd( vect, uplo, n, kd, ab, ldab, d, e, q, ldq,work, info ) character, intent(in) :: uplo, vect integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: kd, ldab, ldq, n real(${ck}$), intent(out) :: d(*), e(*) complex(${ck}$), intent(inout) :: ab(ldab,*), q(ldq,*) complex(${ck}$), intent(out) :: work(*) end subroutine stdlib${ii}$_${ci}$hbtrd #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES module subroutine stdlib${ii}$_sgeev( jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr,ldvr, work, lwork, & info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(sp), intent(inout) :: a(lda,*) real(sp), intent(out) :: vl(ldvl,*), vr(ldvr,*), wi(*), work(*), wr(*) end subroutine stdlib${ii}$_sgeev module subroutine stdlib${ii}$_dgeev( jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr,ldvr, work, lwork, & info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(dp), intent(inout) :: a(lda,*) real(dp), intent(out) :: vl(ldvl,*), vr(ldvr,*), wi(*), work(*), wr(*) end subroutine stdlib${ii}$_dgeev #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] module subroutine stdlib${ii}$_${ri}$geev( jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr,ldvr, work, lwork, & info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(out) :: vl(ldvl,*), vr(ldvr,*), wi(*), work(*), wr(*) end subroutine stdlib${ii}$_${ri}$geev #:endif #:endfor module subroutine stdlib${ii}$_cgeev( jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr,work, lwork, rwork, & info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(sp), intent(out) :: rwork(*) complex(sp), intent(inout) :: a(lda,*) complex(sp), intent(out) :: vl(ldvl,*), vr(ldvr,*), w(*), work(*) end subroutine stdlib${ii}$_cgeev module subroutine stdlib${ii}$_zgeev( jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr,work, lwork, rwork, & info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(dp), intent(out) :: rwork(*) complex(dp), intent(inout) :: a(lda,*) complex(dp), intent(out) :: vl(ldvl,*), vr(ldvr,*), w(*), work(*) end subroutine stdlib${ii}$_zgeev #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] module subroutine stdlib${ii}$_${ci}$geev( jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr,work, lwork, rwork, & info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(${ck}$), intent(out) :: rwork(*) complex(${ck}$), intent(inout) :: a(lda,*) complex(${ck}$), intent(out) :: vl(ldvl,*), vr(ldvr,*), w(*), work(*) end subroutine stdlib${ii}$_${ci}$geev #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES module subroutine stdlib${ii}$_sgeevx( balanc, jobvl, jobvr, sense, n, a, lda, wr, wi,vl, ldvl, vr, ldvr, & ilo, ihi, scale, abnrm,rconde, rcondv, work, lwork, iwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(sp), intent(out) :: abnrm integer(${ik}$), intent(out) :: iwork(*) real(sp), intent(inout) :: a(lda,*) real(sp), intent(out) :: rconde(*), rcondv(*), scale(*), vl(ldvl,*), vr(ldvr,*), wi(*),& work(*), wr(*) end subroutine stdlib${ii}$_sgeevx module subroutine stdlib${ii}$_dgeevx( balanc, jobvl, jobvr, sense, n, a, lda, wr, wi,vl, ldvl, vr, ldvr, & ilo, ihi, scale, abnrm,rconde, rcondv, work, lwork, iwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(dp), intent(out) :: abnrm integer(${ik}$), intent(out) :: iwork(*) real(dp), intent(inout) :: a(lda,*) real(dp), intent(out) :: rconde(*), rcondv(*), scale(*), vl(ldvl,*), vr(ldvr,*), wi(*),& work(*), wr(*) end subroutine stdlib${ii}$_dgeevx #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] module subroutine stdlib${ii}$_${ri}$geevx( balanc, jobvl, jobvr, sense, n, a, lda, wr, wi,vl, ldvl, vr, ldvr, & ilo, ihi, scale, abnrm,rconde, rcondv, work, lwork, iwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(${rk}$), intent(out) :: abnrm integer(${ik}$), intent(out) :: iwork(*) real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(out) :: rconde(*), rcondv(*), scale(*), vl(ldvl,*), vr(ldvr,*), wi(*),& work(*), wr(*) end subroutine stdlib${ii}$_${ri}$geevx #:endif #:endfor module subroutine stdlib${ii}$_cgeevx( balanc, jobvl, jobvr, sense, n, a, lda, w, vl,ldvl, vr, ldvr, ilo, & ihi, scale, abnrm, rconde,rcondv, work, lwork, rwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(sp), intent(out) :: abnrm real(sp), intent(out) :: rconde(*), rcondv(*), rwork(*), scale(*) complex(sp), intent(inout) :: a(lda,*) complex(sp), intent(out) :: vl(ldvl,*), vr(ldvr,*), w(*), work(*) end subroutine stdlib${ii}$_cgeevx module subroutine stdlib${ii}$_zgeevx( balanc, jobvl, jobvr, sense, n, a, lda, w, vl,ldvl, vr, ldvr, ilo, & ihi, scale, abnrm, rconde,rcondv, work, lwork, rwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(dp), intent(out) :: abnrm real(dp), intent(out) :: rconde(*), rcondv(*), rwork(*), scale(*) complex(dp), intent(inout) :: a(lda,*) complex(dp), intent(out) :: vl(ldvl,*), vr(ldvr,*), w(*), work(*) end subroutine stdlib${ii}$_zgeevx #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] module subroutine stdlib${ii}$_${ci}$geevx( balanc, jobvl, jobvr, sense, n, a, lda, w, vl,ldvl, vr, ldvr, ilo, & ihi, scale, abnrm, rconde,rcondv, work, lwork, rwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldvl, ldvr, lwork, n real(${ck}$), intent(out) :: abnrm real(${ck}$), intent(out) :: rconde(*), rcondv(*), rwork(*), scale(*) complex(${ck}$), intent(inout) :: a(lda,*) complex(${ck}$), intent(out) :: vl(ldvl,*), vr(ldvr,*), w(*), work(*) end subroutine stdlib${ii}$_${ci}$geevx #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES module subroutine stdlib${ii}$_sgees( jobvs, sort, select, n, a, lda, sdim, wr, wi,vs, ldvs, work, lwork, & bwork, info ) character, intent(in) :: jobvs, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, lwork, n logical(lk), intent(out) :: bwork(*) real(sp), intent(inout) :: a(lda,*) real(sp), intent(out) :: vs(ldvs,*), wi(*), work(*), wr(*) procedure(stdlib_select_s) :: select end subroutine stdlib${ii}$_sgees module subroutine stdlib${ii}$_dgees( jobvs, sort, select, n, a, lda, sdim, wr, wi,vs, ldvs, work, lwork, & bwork, info ) character, intent(in) :: jobvs, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, lwork, n logical(lk), intent(out) :: bwork(*) real(dp), intent(inout) :: a(lda,*) real(dp), intent(out) :: vs(ldvs,*), wi(*), work(*), wr(*) procedure(stdlib_select_d) :: select end subroutine stdlib${ii}$_dgees #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] module subroutine stdlib${ii}$_${ri}$gees( jobvs, sort, select, n, a, lda, sdim, wr, wi,vs, ldvs, work, lwork, & bwork, info ) character, intent(in) :: jobvs, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, lwork, n logical(lk), intent(out) :: bwork(*) real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(out) :: vs(ldvs,*), wi(*), work(*), wr(*) procedure(stdlib_select_${ri}$) :: select end subroutine stdlib${ii}$_${ri}$gees #:endif #:endfor module subroutine stdlib${ii}$_cgees( jobvs, sort, select, n, a, lda, sdim, w, vs,ldvs, work, lwork, & rwork, bwork, info ) character, intent(in) :: jobvs, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, lwork, n logical(lk), intent(out) :: bwork(*) real(sp), intent(out) :: rwork(*) complex(sp), intent(inout) :: a(lda,*) complex(sp), intent(out) :: vs(ldvs,*), w(*), work(*) procedure(stdlib_select_c) :: select end subroutine stdlib${ii}$_cgees module subroutine stdlib${ii}$_zgees( jobvs, sort, select, n, a, lda, sdim, w, vs,ldvs, work, lwork, & rwork, bwork, info ) character, intent(in) :: jobvs, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, lwork, n logical(lk), intent(out) :: bwork(*) real(dp), intent(out) :: rwork(*) complex(dp), intent(inout) :: a(lda,*) complex(dp), intent(out) :: vs(ldvs,*), w(*), work(*) procedure(stdlib_select_z) :: select end subroutine stdlib${ii}$_zgees #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] module subroutine stdlib${ii}$_${ci}$gees( jobvs, sort, select, n, a, lda, sdim, w, vs,ldvs, work, lwork, & rwork, bwork, info ) character, intent(in) :: jobvs, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, lwork, n logical(lk), intent(out) :: bwork(*) real(${ck}$), intent(out) :: rwork(*) complex(${ck}$), intent(inout) :: a(lda,*) complex(${ck}$), intent(out) :: vs(ldvs,*), w(*), work(*) procedure(stdlib_select_${ci}$) :: select end subroutine stdlib${ii}$_${ci}$gees #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES module subroutine stdlib${ii}$_sgeesx( jobvs, sort, select, sense, n, a, lda, sdim,wr, wi, vs, ldvs, & rconde, rcondv, work, lwork,iwork, liwork, bwork, info ) character, intent(in) :: jobvs, sense, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, liwork, lwork, n real(sp), intent(out) :: rconde, rcondv logical(lk), intent(out) :: bwork(*) integer(${ik}$), intent(out) :: iwork(*) real(sp), intent(inout) :: a(lda,*) real(sp), intent(out) :: vs(ldvs,*), wi(*), work(*), wr(*) procedure(stdlib_select_s) :: select end subroutine stdlib${ii}$_sgeesx module subroutine stdlib${ii}$_dgeesx( jobvs, sort, select, sense, n, a, lda, sdim,wr, wi, vs, ldvs, & rconde, rcondv, work, lwork,iwork, liwork, bwork, info ) character, intent(in) :: jobvs, sense, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, liwork, lwork, n real(dp), intent(out) :: rconde, rcondv logical(lk), intent(out) :: bwork(*) integer(${ik}$), intent(out) :: iwork(*) real(dp), intent(inout) :: a(lda,*) real(dp), intent(out) :: vs(ldvs,*), wi(*), work(*), wr(*) procedure(stdlib_select_d) :: select end subroutine stdlib${ii}$_dgeesx #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] module subroutine stdlib${ii}$_${ri}$geesx( jobvs, sort, select, sense, n, a, lda, sdim,wr, wi, vs, ldvs, & rconde, rcondv, work, lwork,iwork, liwork, bwork, info ) character, intent(in) :: jobvs, sense, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, liwork, lwork, n real(${rk}$), intent(out) :: rconde, rcondv logical(lk), intent(out) :: bwork(*) integer(${ik}$), intent(out) :: iwork(*) real(${rk}$), intent(inout) :: a(lda,*) real(${rk}$), intent(out) :: vs(ldvs,*), wi(*), work(*), wr(*) procedure(stdlib_select_${ri}$) :: select end subroutine stdlib${ii}$_${ri}$geesx #:endif #:endfor module subroutine stdlib${ii}$_cgeesx( jobvs, sort, select, sense, n, a, lda, sdim, w,vs, ldvs, rconde, & rcondv, work, lwork, rwork,bwork, info ) character, intent(in) :: jobvs, sense, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, lwork, n real(sp), intent(out) :: rconde, rcondv logical(lk), intent(out) :: bwork(*) real(sp), intent(out) :: rwork(*) complex(sp), intent(inout) :: a(lda,*) complex(sp), intent(out) :: vs(ldvs,*), w(*), work(*) procedure(stdlib_select_c) :: select end subroutine stdlib${ii}$_cgeesx module subroutine stdlib${ii}$_zgeesx( jobvs, sort, select, sense, n, a, lda, sdim, w,vs, ldvs, rconde, & rcondv, work, lwork, rwork,bwork, info ) character, intent(in) :: jobvs, sense, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, lwork, n real(dp), intent(out) :: rconde, rcondv logical(lk), intent(out) :: bwork(*) real(dp), intent(out) :: rwork(*) complex(dp), intent(inout) :: a(lda,*) complex(dp), intent(out) :: vs(ldvs,*), w(*), work(*) procedure(stdlib_select_z) :: select end subroutine stdlib${ii}$_zgeesx #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] module subroutine stdlib${ii}$_${ci}$geesx( jobvs, sort, select, sense, n, a, lda, sdim, w,vs, ldvs, rconde, & rcondv, work, lwork, rwork,bwork, info ) character, intent(in) :: jobvs, sense, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldvs, lwork, n real(${ck}$), intent(out) :: rconde, rcondv logical(lk), intent(out) :: bwork(*) real(${ck}$), intent(out) :: rwork(*) complex(${ck}$), intent(inout) :: a(lda,*) complex(${ck}$), intent(out) :: vs(ldvs,*), w(*), work(*) procedure(stdlib_select_${ci}$) :: select end subroutine stdlib${ii}$_${ci}$geesx #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES module subroutine stdlib${ii}$_sggev3( jobvl, jobvr, n, a, lda, b, ldb, alphar,alphai, beta, vl, ldvl, vr,& ldvr, work, lwork,info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(sp), intent(inout) :: a(lda,*), b(ldb,*) real(sp), intent(out) :: alphai(*), alphar(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_sggev3 module subroutine stdlib${ii}$_dggev3( jobvl, jobvr, n, a, lda, b, ldb, alphar,alphai, beta, vl, ldvl, vr,& ldvr, work, lwork,info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(dp), intent(inout) :: a(lda,*), b(ldb,*) real(dp), intent(out) :: alphai(*), alphar(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_dggev3 #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] module subroutine stdlib${ii}$_${ri}$ggev3( jobvl, jobvr, n, a, lda, b, ldb, alphar,alphai, beta, vl, ldvl, vr,& ldvr, work, lwork,info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(${rk}$), intent(inout) :: a(lda,*), b(ldb,*) real(${rk}$), intent(out) :: alphai(*), alphar(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_${ri}$ggev3 #:endif #:endfor module subroutine stdlib${ii}$_cggev3( jobvl, jobvr, n, a, lda, b, ldb, alpha, beta,vl, ldvl, vr, ldvr, & work, lwork, rwork, info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(sp), intent(out) :: rwork(*) complex(sp), intent(inout) :: a(lda,*), b(ldb,*) complex(sp), intent(out) :: alpha(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_cggev3 module subroutine stdlib${ii}$_zggev3( jobvl, jobvr, n, a, lda, b, ldb, alpha, beta,vl, ldvl, vr, ldvr, & work, lwork, rwork, info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(dp), intent(out) :: rwork(*) complex(dp), intent(inout) :: a(lda,*), b(ldb,*) complex(dp), intent(out) :: alpha(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_zggev3 #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] module subroutine stdlib${ii}$_${ci}$ggev3( jobvl, jobvr, n, a, lda, b, ldb, alpha, beta,vl, ldvl, vr, ldvr, & work, lwork, rwork, info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(${ck}$), intent(out) :: rwork(*) complex(${ck}$), intent(inout) :: a(lda,*), b(ldb,*) complex(${ck}$), intent(out) :: alpha(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_${ci}$ggev3 #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES module subroutine stdlib${ii}$_sggev( jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai,beta, vl, ldvl, vr, & ldvr, work, lwork, info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(sp), intent(inout) :: a(lda,*), b(ldb,*) real(sp), intent(out) :: alphai(*), alphar(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_sggev module subroutine stdlib${ii}$_dggev( jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai,beta, vl, ldvl, vr, & ldvr, work, lwork, info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(dp), intent(inout) :: a(lda,*), b(ldb,*) real(dp), intent(out) :: alphai(*), alphar(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_dggev #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] module subroutine stdlib${ii}$_${ri}$ggev( jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai,beta, vl, ldvl, vr, & ldvr, work, lwork, info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(${rk}$), intent(inout) :: a(lda,*), b(ldb,*) real(${rk}$), intent(out) :: alphai(*), alphar(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_${ri}$ggev #:endif #:endfor module subroutine stdlib${ii}$_cggev( jobvl, jobvr, n, a, lda, b, ldb, alpha, beta,vl, ldvl, vr, ldvr, & work, lwork, rwork, info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(sp), intent(out) :: rwork(*) complex(sp), intent(inout) :: a(lda,*), b(ldb,*) complex(sp), intent(out) :: alpha(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_cggev module subroutine stdlib${ii}$_zggev( jobvl, jobvr, n, a, lda, b, ldb, alpha, beta,vl, ldvl, vr, ldvr, & work, lwork, rwork, info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(dp), intent(out) :: rwork(*) complex(dp), intent(inout) :: a(lda,*), b(ldb,*) complex(dp), intent(out) :: alpha(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_zggev #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] module subroutine stdlib${ii}$_${ci}$ggev( jobvl, jobvr, n, a, lda, b, ldb, alpha, beta,vl, ldvl, vr, ldvr, & work, lwork, rwork, info ) character, intent(in) :: jobvl, jobvr integer(${ik}$), intent(out) :: info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(${ck}$), intent(out) :: rwork(*) complex(${ck}$), intent(inout) :: a(lda,*), b(ldb,*) complex(${ck}$), intent(out) :: alpha(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_${ci}$ggev #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES module subroutine stdlib${ii}$_sggevx( balanc, jobvl, jobvr, sense, n, a, lda, b, ldb,alphar, alphai, & beta, vl, ldvl, vr, ldvr, ilo,ihi, lscale, rscale, abnrm, bbnrm, rconde,rcondv, work, lwork, & iwork, bwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(sp), intent(out) :: abnrm, bbnrm logical(lk), intent(out) :: bwork(*) integer(${ik}$), intent(out) :: iwork(*) real(sp), intent(inout) :: a(lda,*), b(ldb,*) real(sp), intent(out) :: alphai(*), alphar(*), beta(*), lscale(*), rconde(*), rcondv(*)& , rscale(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_sggevx module subroutine stdlib${ii}$_dggevx( balanc, jobvl, jobvr, sense, n, a, lda, b, ldb,alphar, alphai, & beta, vl, ldvl, vr, ldvr, ilo,ihi, lscale, rscale, abnrm, bbnrm, rconde,rcondv, work, lwork, & iwork, bwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(dp), intent(out) :: abnrm, bbnrm logical(lk), intent(out) :: bwork(*) integer(${ik}$), intent(out) :: iwork(*) real(dp), intent(inout) :: a(lda,*), b(ldb,*) real(dp), intent(out) :: alphai(*), alphar(*), beta(*), lscale(*), rconde(*), rcondv(*)& , rscale(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_dggevx #:for rk,rt,ri in REAL_KINDS_TYPES #:if not rk in ["sp","dp"] module subroutine stdlib${ii}$_${ri}$ggevx( balanc, jobvl, jobvr, sense, n, a, lda, b, ldb,alphar, alphai, & beta, vl, ldvl, vr, ldvr, ilo,ihi, lscale, rscale, abnrm, bbnrm, rconde,rcondv, work, lwork, & iwork, bwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(${rk}$), intent(out) :: abnrm, bbnrm logical(lk), intent(out) :: bwork(*) integer(${ik}$), intent(out) :: iwork(*) real(${rk}$), intent(inout) :: a(lda,*), b(ldb,*) real(${rk}$), intent(out) :: alphai(*), alphar(*), beta(*), lscale(*), rconde(*), rcondv(*)& , rscale(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_${ri}$ggevx #:endif #:endfor module subroutine stdlib${ii}$_cggevx( balanc, jobvl, jobvr, sense, n, a, lda, b, ldb,alpha, beta, vl, & ldvl, vr, ldvr, ilo, ihi,lscale, rscale, abnrm, bbnrm, rconde, rcondv,work, lwork, rwork, & iwork, bwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(sp), intent(out) :: abnrm, bbnrm logical(lk), intent(out) :: bwork(*) integer(${ik}$), intent(out) :: iwork(*) real(sp), intent(out) :: lscale(*), rconde(*), rcondv(*), rscale(*), rwork(*) complex(sp), intent(inout) :: a(lda,*), b(ldb,*) complex(sp), intent(out) :: alpha(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_cggevx module subroutine stdlib${ii}$_zggevx( balanc, jobvl, jobvr, sense, n, a, lda, b, ldb,alpha, beta, vl, & ldvl, vr, ldvr, ilo, ihi,lscale, rscale, abnrm, bbnrm, rconde, rcondv,work, lwork, rwork, & iwork, bwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(dp), intent(out) :: abnrm, bbnrm logical(lk), intent(out) :: bwork(*) integer(${ik}$), intent(out) :: iwork(*) real(dp), intent(out) :: lscale(*), rconde(*), rcondv(*), rscale(*), rwork(*) complex(dp), intent(inout) :: a(lda,*), b(ldb,*) complex(dp), intent(out) :: alpha(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_zggevx #:for ck,ct,ci in CMPLX_KINDS_TYPES #:if not ck in ["sp","dp"] module subroutine stdlib${ii}$_${ci}$ggevx( balanc, jobvl, jobvr, sense, n, a, lda, b, ldb,alpha, beta, vl, & ldvl, vr, ldvr, ilo, ihi,lscale, rscale, abnrm, bbnrm, rconde, rcondv,work, lwork, rwork, & iwork, bwork, info ) character, intent(in) :: balanc, jobvl, jobvr, sense integer(${ik}$), intent(out) :: ihi, ilo, info integer(${ik}$), intent(in) :: lda, ldb, ldvl, ldvr, lwork, n real(${ck}$), intent(out) :: abnrm, bbnrm logical(lk), intent(out) :: bwork(*) integer(${ik}$), intent(out) :: iwork(*) real(${ck}$), intent(out) :: lscale(*), rconde(*), rcondv(*), rscale(*), rwork(*) complex(${ck}$), intent(inout) :: a(lda,*), b(ldb,*) complex(${ck}$), intent(out) :: alpha(*), beta(*), vl(ldvl,*), vr(ldvr,*), work(*) end subroutine stdlib${ii}$_${ci}$ggevx #:endif #:endfor #:endfor end interface interface #:for ik,it,ii in LINALG_INT_KINDS_TYPES module subroutine stdlib${ii}$_sgges3( jobvsl, jobvsr, sort, selctg, n, a, lda, b,ldb, sdim, alphar, & alphai, beta, vsl, ldvsl,vsr, ldvsr, work, lwork, bwork, info ) character, intent(in) :: jobvsl, jobvsr, sort integer(${ik}$), intent(out) :: info, sdim integer(${ik}$), intent(in) :: lda, ldb, ldvsl, ldvsr, lwork, n logical(lk), intent(out) :: bwork(*) real(sp), intent(inout) :: a(lda,*), b(ldb,*) real(sp), intent(out) :: alphai(*), alphar(*), beta(*), vsl(ldvsl,*), vsr(ldvsr,*), & work(*) procedure(stdlib_selctg_s) :: selctg end subroutine stdlib${ii}$_sgges3 module subroutine stdlib${ii}$_dgges3( jobvsl, jobvsr, sort, selctg, n, a, lda, b,ldb, sdim, alphar, & alphai, beta, vsl, ldvsl,vsr, ldvsr, work, lwork, bwork, info ) character, intent(in) ::