!
!   ARMPL version 21.0 Copyright ARM, NAG 2021
!
!   Interface blocks for Fortran LAPACK routines in ARMPL
!
    Module armpl_lapack
!     .. Interface Blocks ..
      Interface
        Subroutine cbbcsd(jobu1, jobu2, jobv1t, jobv2t, trans, m, p, q, theta, &
          phi, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, b11d, b11e, b12d, &
          b12e, b21d, b21e, b22d, b22e, rwork, lrwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldv2t, lrwork, m, p, q
          Character (1) :: jobu1, jobu2, jobv1t, jobv2t, trans
!         .. Array Arguments ..
          Complex (wp) :: u1(ldu1, *), u2(ldu2, *), v1t(ldv1t, *), &
            v2t(ldv2t, *)
          Real (wp) :: b11d(*), b11e(*), b12d(*), b12e(*), b21d(*), &
            b21e(*), b22d(*), b22e(*), phi(*), rwork(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cbbcsd
        Subroutine cbdsqr(uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, &
          ldc, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, ldu, ldvt, n, ncc, ncvt, nru
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), u(ldu, *), vt(ldvt, *)
          Real (wp) :: d(*), e(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cbdsqr
        Subroutine cgbbrd(vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, &
          ldpt, c, ldc, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldc, ldpt, ldq, m, n, ncc
          Character (1) :: vect
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), c(ldc, *), pt(ldpt, *), q(ldq, *), &
            work(*)
          Real (wp) :: d(*), e(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbbrd
        Subroutine cgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, &
          rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, kl, ku, ldab, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbcon
        Subroutine cgbequb(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbequb
        Subroutine cgbequ(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbequ
        Subroutine cgbrfs(trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, &
          b, ldb, x, ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbrfs
        Subroutine cgbrfsx(trans, equed, n, kl, ku, nrhs, ab, ldab, afb, &
          ldafb, ipiv, r, c, b, ldb, x, ldx, rcond, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nparams, nrhs, &
            n_err_bnds
          Character (1) :: equed, trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbrfsx
        Subroutine cgbsv(n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbsv
        Subroutine cgbsvx(fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, &
          ipiv, equed, r, c, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), ferr(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbsvx
        Subroutine cgbsvxx(fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, &
          ipiv, equed, r, c, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nparams, nrhs, &
            n_err_bnds
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbsvxx
        Subroutine cgbtf2(m, n, kl, ku, ab, ldab, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbtf2
        Subroutine cgbtrf(m, n, kl, ku, ab, ldab, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbtrf
        Subroutine cgbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgbtrs
        Subroutine cgebak(job, side, n, ilo, ihi, scale, m, v, ldv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldv, m, n
          Character (1) :: job, side
!         .. Array Arguments ..
          Complex (wp) :: v(ldv, *)
          Real (wp) :: scale(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgebak
        Subroutine cgebal(job, n, a, lda, ilo, ihi, scale, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, n
          Character (1) :: job
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: scale(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgebal
        Subroutine cgebd2(m, n, a, lda, d, e, tauq, taup, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), taup(*), tauq(*), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgebd2
        Subroutine cgebrd(m, n, a, lda, d, e, tauq, taup, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), taup(*), tauq(*), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgebrd
        Subroutine cgecon(norm, n, a, lda, anorm, rcond, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgecon
        Subroutine cgeequb(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeequb
        Subroutine cgeequ(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeequ
        Subroutine cgees(jobvs, sort, select, n, a, lda, sdim, w, vs, ldvs, &
          work, lwork, rwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldvs, lwork, n, sdim
          Character (1) :: jobvs, sort
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), vs(ldvs, *), w(*), work(*)
          Real (wp) :: rwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: select
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgees
        Subroutine cgeesx(jobvs, sort, select, sense, n, a, lda, sdim, w, vs, &
          ldvs, rconde, rcondv, work, lwork, rwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rconde, rcondv
          Integer :: info, lda, ldvs, lwork, n, sdim
          Character (1) :: jobvs, sense, sort
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), vs(ldvs, *), w(*), work(*)
          Real (wp) :: rwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: select
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeesx
        Subroutine cgeev(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, &
          lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), vl(ldvl, *), vr(ldvr, *), w(*), &
            work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeev
        Subroutine cgeevx(balanc, jobvl, jobvr, sense, n, a, lda, w, vl, ldvl, &
          vr, ldvr, ilo, ihi, scale, abnrm, rconde, rcondv, work, lwork, &
          rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abnrm
          Integer :: ihi, ilo, info, lda, ldvl, ldvr, lwork, n
          Character (1) :: balanc, jobvl, jobvr, sense
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), vl(ldvl, *), vr(ldvr, *), w(*), &
            work(*)
          Real (wp) :: rconde(*), rcondv(*), rwork(*), scale(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeevx
        Subroutine cgegs(jobvsl, jobvsr, n, a, lda, b, ldb, alpha, beta, vsl, &
          ldvsl, vsr, ldvsr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n
          Character (1) :: jobvsl, jobvsr
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgegs
        Subroutine cgegv(jobvl, jobvr, n, a, lda, b, ldb, alpha, beta, vl, &
          ldvl, vr, ldvr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgegv
        Subroutine cgehd2(n, ilo, ihi, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgehd2
        Subroutine cgehrd(n, ilo, ihi, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, lwork, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgehrd
        Subroutine cgejsv(joba, jobu, jobv, jobr, jobt, jobp, m, n, a, lda, &
          sva, u, ldu, v, ldv, cwork, lwork, rwork, lrwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldv, lrwork, lwork, m, n
          Character (1) :: joba, jobp, jobr, jobt, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), cwork(lwork), u(ldu, *), v(ldv, *)
          Real (wp) :: rwork(lrwork), sva(n)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgejsv
        Subroutine cgelq2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgelq2
        Subroutine cgelq(m, n, a, lda, t, tsize, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n, tsize
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgelq
        Subroutine cgelqf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgelqf
        Recursive Subroutine cgelqt3(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgelqt3
        Subroutine cgelqt(m, n, mb, a, lda, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, mb, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgelqt
        Subroutine cgelsd(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, &
          lwork, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*), s(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgelsd
        Subroutine cgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgels
        Subroutine cgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, &
          lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgelss
        Subroutine cgelsx(m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, &
          rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, m, n, nrhs, rank
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgelsx
        Subroutine cgelsy(m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, &
          lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgelsy
        Subroutine cgemlq(side, trans, m, n, k, a, lda, t, tsize, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n, tsize
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgemlq
        Subroutine cgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, ldc, ldt, ldv, m, mb, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgemlqt
        Subroutine cgemqr(side, trans, m, n, k, a, lda, t, tsize, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n, tsize
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgemqr
        Subroutine cgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, ldc, ldt, ldv, m, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgemqrt
        Subroutine cgeql2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeql2
        Subroutine cgeqlf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqlf
        Subroutine cgeqp3(m, n, a, lda, jpvt, tau, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
          Real (wp) :: rwork(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqp3
        Subroutine cgeqpf(m, n, a, lda, jpvt, tau, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
          Real (wp) :: rwork(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqpf
        Subroutine cgeqr2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqr2
        Subroutine cgeqr2p(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqr2p
        Subroutine cgeqr(m, n, a, lda, t, tsize, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n, tsize
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqr
        Subroutine cgeqrf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqrf
        Subroutine cgeqrfp(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqrfp
        Subroutine cgeqrt2(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqrt2
        Recursive Subroutine cgeqrt3(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqrt3
        Subroutine cgeqrt(m, n, nb, a, lda, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgeqrt
        Subroutine cgerfs(trans, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, &
          ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgerfs
        Subroutine cgerfsx(trans, equed, n, nrhs, a, lda, af, ldaf, ipiv, r, &
          c, b, ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgerfsx
        Subroutine cgerq2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgerq2
        Subroutine cgerqf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgerqf
        Subroutine cgesc2(n, a, lda, rhs, ipiv, jpiv, scale)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), rhs(*)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgesc2
        Subroutine cgesdd(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, &
          lwork, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldvt, lwork, m, n
          Character (1) :: jobz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), u(ldu, *), vt(ldvt, *), work(*)
          Real (wp) :: rwork(*), s(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgesdd
        Subroutine cgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, &
          work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldvt, lwork, m, n
          Character (1) :: jobu, jobvt
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), u(ldu, *), vt(ldvt, *), work(*)
          Real (wp) :: rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgesvd
        Subroutine cgesvdq(joba, jobp, jobr, jobu, jobv, m, n, a, lda, s, u, &
          ldu, v, ldv, numrank, iwork, liwork, cwork, lcwork, rwork, lrwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lcwork, lda, ldu, ldv, liwork, lrwork, m, n, &
            numrank
          Character (1) :: joba, jobp, jobr, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), cwork(*), u(ldu, *), v(ldv, *)
          Real (wp) :: rwork(*), s(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgesvdq
        Subroutine cgesvdx(jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, &
          ns, s, u, ldu, vt, ldvt, work, lwork, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: vl, vu
          Integer :: il, info, iu, lda, ldu, ldvt, lwork, m, n, ns
          Character (1) :: jobu, jobvt, range
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), u(ldu, *), vt(ldvt, *), work(*)
          Real (wp) :: rwork(*), s(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgesvdx
        Subroutine cgesv(n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgesv
        Subroutine cgesvj(joba, jobu, jobv, m, n, a, lda, sva, mv, v, ldv, &
          cwork, lwork, rwork, lrwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldv, lrwork, lwork, m, mv, n
          Character (1) :: joba, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), cwork(lwork), v(ldv, *)
          Real (wp) :: rwork(lrwork), sva(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgesvj
        Subroutine cgesvx(fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, equed, &
          r, c, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), ferr(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgesvx
        Subroutine cgesvxx(fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, &
          equed, r, c, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgesvxx
        Subroutine cgetc2(n, a, lda, ipiv, jpiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgetc2
        Subroutine cgetf2(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgetf2
        Recursive Subroutine cgetrf2(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgetrf2
        Subroutine cgetrf(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgetrf
        Subroutine cgetri(n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgetri
        Subroutine cgetrs(trans, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgetrs
        Subroutine cgetsls(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgetsls
        Subroutine cggbak(job, side, n, ilo, ihi, lscale, rscale, m, v, ldv, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldv, m, n
          Character (1) :: job, side
!         .. Array Arguments ..
          Complex (wp) :: v(ldv, *)
          Real (wp) :: lscale(*), rscale(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggbak
        Subroutine cggbal(job, n, a, lda, b, ldb, ilo, ihi, lscale, rscale, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, n
          Character (1) :: job
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Real (wp) :: lscale(*), rscale(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggbal
        Subroutine cgges3(jobvsl, jobvsr, sort, selctg, n, a, lda, b, ldb, &
          sdim, alpha, beta, vsl, ldvsl, vsr, ldvsr, work, lwork, rwork, &
          bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sort
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Real (wp) :: rwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgges3
        Subroutine cgges(jobvsl, jobvsr, sort, selctg, n, a, lda, b, ldb, &
          sdim, alpha, beta, vsl, ldvsl, vsr, ldvsr, work, lwork, rwork, &
          bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sort
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Real (wp) :: rwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgges
        Subroutine cggesx(jobvsl, jobvsr, sort, selctg, sense, n, a, lda, b, &
          ldb, sdim, alpha, beta, vsl, ldvsl, vsr, ldvsr, rconde, rcondv, &
          work, lwork, rwork, iwork, liwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, liwork, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sense, sort
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Real (wp) :: rconde(2), rcondv(2), rwork(*)
          Integer :: iwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggesx
        Subroutine cggev3(jobvl, jobvr, n, a, lda, b, ldb, alpha, beta, vl, &
          ldvl, vr, ldvr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggev3
        Subroutine cggev(jobvl, jobvr, n, a, lda, b, ldb, alpha, beta, vl, &
          ldvl, vr, ldvr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggev
        Subroutine 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)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abnrm, bbnrm
          Integer :: ihi, ilo, info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: balanc, jobvl, jobvr, sense
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: lscale(*), rconde(*), rcondv(*), rscale(*), &
            rwork(*)
          Integer :: iwork(*)
          Logical :: bwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggevx
        Subroutine cggglm(n, m, p, a, lda, b, ldb, d, x, y, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), d(*), work(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggglm
        Subroutine cgghd3(compq, compz, n, ilo, ihi, a, lda, b, ldb, q, ldq, &
          z, ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, ldq, ldz, lwork, n
          Character (1) :: compq, compz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), work(*), &
            z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgghd3
        Subroutine cgghrd(compq, compz, n, ilo, ihi, a, lda, b, ldb, q, ldq, &
          z, ldz, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, ldq, ldz, n
          Character (1) :: compq, compz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgghrd
        Subroutine cgglse(m, n, p, a, lda, b, ldb, c, d, x, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), c(*), d(*), work(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgglse
        Subroutine cggqrf(n, m, p, a, lda, taua, b, ldb, taub, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), taua(*), taub(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggqrf
        Subroutine cggrqf(m, p, n, a, lda, taua, b, ldb, taub, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), taua(*), taub(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggrqf
        Subroutine cggsvd3(jobu, jobv, jobq, m, n, p, k, l, a, lda, b, ldb, &
          alpha, beta, u, ldu, v, ldv, q, ldq, work, lwork, rwork, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, lwork, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), u(ldu, *), &
            v(ldv, *), work(*)
          Real (wp) :: alpha(*), beta(*), rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggsvd3
        Subroutine cggsvd(jobu, jobv, jobq, m, n, p, k, l, a, lda, b, ldb, &
          alpha, beta, u, ldu, v, ldv, q, ldq, work, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), u(ldu, *), &
            v(ldv, *), work(*)
          Real (wp) :: alpha(*), beta(*), rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggsvd
        Subroutine cggsvp3(jobu, jobv, jobq, m, p, n, a, lda, b, ldb, tola, &
          tolb, k, l, u, ldu, v, ldv, q, ldq, iwork, rwork, tau, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, lwork, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), tau(*), &
            u(ldu, *), v(ldv, *), work(*)
          Real (wp) :: rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggsvp3
        Subroutine cggsvp(jobu, jobv, jobq, m, p, n, a, lda, b, ldb, tola, &
          tolb, k, l, u, ldu, v, ldv, q, ldq, iwork, rwork, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), tau(*), &
            u(ldu, *), v(ldv, *), work(*)
          Real (wp) :: rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cggsvp
        Subroutine cgsvj0(jobv, m, n, a, lda, d, sva, mv, v, ldv, eps, sfmin, &
          tol, nsweep, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: eps, sfmin, tol
          Integer :: info, lda, ldv, lwork, m, mv, n, nsweep
          Character (1) :: jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), d(n), v(ldv, *), work(lwork)
          Real (wp) :: sva(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgsvj0
        Subroutine cgsvj1(jobv, m, n, n1, a, lda, d, sva, mv, v, ldv, eps, &
          sfmin, tol, nsweep, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: eps, sfmin, tol
          Integer :: info, lda, ldv, lwork, m, mv, n, n1, nsweep
          Character (1) :: jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), d(n), v(ldv, *), work(lwork)
          Real (wp) :: sva(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgsvj1
        Subroutine cgtcon(norm, n, dl, d, du, du2, ipiv, anorm, rcond, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: d(*), dl(*), du(*), du2(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgtcon
        Subroutine cgtrfs(trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv, &
          b, ldb, x, ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), df(*), dl(*), dlf(*), du(*), &
            du2(*), duf(*), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgtrfs
        Subroutine cgtsv(n, nrhs, dl, d, du, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), dl(*), du(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgtsv
        Subroutine cgtsvx(fact, trans, n, nrhs, dl, d, du, dlf, df, duf, du2, &
          ipiv, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact, trans
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), df(*), dl(*), dlf(*), du(*), &
            du2(*), duf(*), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgtsvx
        Subroutine cgttrf(n, dl, d, du, du2, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Complex (wp) :: d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgttrf
        Subroutine cgttrs(trans, n, nrhs, dl, d, du, du2, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgttrs
        Subroutine cgtts2(itrans, n, nrhs, dl, d, du, du2, ipiv, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: itrans, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cgtts2
        Subroutine chb2st_kernels(uplo, wantz, ttype, st, ed, sweep, n, nb, &
          ib, a, lda, v, tau, ldvt, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ed, ib, lda, ldvt, n, nb, st, sweep, ttype
          Logical :: wantz
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chb2st_kernels
        Subroutine chbev_2stage(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, &
          lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbev_2stage
        Subroutine chbevd_2stage(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, &
          lwork, rwork, lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbevd_2stage
        Subroutine chbevd(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork, &
          rwork, lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbevd
        Subroutine chbev(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbev
        Subroutine chbevx_2stage(jobz, range, uplo, n, kd, ab, ldab, q, ldq, &
          vl, vu, il, iu, abstol, m, w, z, ldz, work, lwork, rwork, iwork, &
          ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, kd, ldab, ldq, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), q(ldq, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbevx_2stage
        Subroutine chbevx(jobz, range, uplo, n, kd, ab, ldab, q, ldq, vl, vu, &
          il, iu, abstol, m, w, z, ldz, work, rwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, kd, ldab, ldq, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), q(ldq, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbevx
        Subroutine chbgst(vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x, ldx, &
          work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldx, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), bb(ldbb, *), work(*), x(ldx, *)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbgst
        Subroutine chbgvd(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, &
          ldz, work, lwork, rwork, lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldz, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), bb(ldbb, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbgvd
        Subroutine chbgv(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz, &
          work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), bb(ldbb, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbgv
        Subroutine chbgvx(jobz, range, uplo, n, ka, kb, ab, ldab, bb, ldbb, q, &
          ldq, vl, vu, il, iu, abstol, m, w, z, ldz, work, rwork, iwork, &
          ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ka, kb, ldab, ldbb, ldq, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), bb(ldbb, *), q(ldq, *), work(*), &
            z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbgvx
        Subroutine chbtrd(vect, uplo, n, kd, ab, ldab, d, e, q, ldq, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldq, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), q(ldq, *), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chbtrd
        Subroutine checon_3(uplo, n, a, lda, e, ipiv, anorm, rcond, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine checon_3
        Subroutine checon(uplo, n, a, lda, ipiv, anorm, rcond, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine checon
        Subroutine checon_rook(uplo, n, a, lda, ipiv, anorm, rcond, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine checon_rook
        Subroutine cheequb(uplo, n, a, lda, s, scond, amax, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cheequb
        Subroutine cheev_2stage(jobz, uplo, n, a, lda, w, work, lwork, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cheev_2stage
        Subroutine cheevd_2stage(jobz, uplo, n, a, lda, w, work, lwork, rwork, &
          lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cheevd_2stage
        Subroutine cheevd(jobz, uplo, n, a, lda, w, work, lwork, rwork, &
          lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cheevd
        Subroutine cheev(jobz, uplo, n, a, lda, w, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cheev
        Subroutine cheevr_2stage(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, isuppz, work, lwork, rwork, lrwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, liwork, lrwork, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cheevr_2stage
        Subroutine cheevr(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, isuppz, work, lwork, rwork, lrwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, liwork, lrwork, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cheevr
        Subroutine cheevx_2stage(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, lwork, rwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cheevx_2stage
        Subroutine cheevx(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, lwork, rwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cheevx
        Subroutine chegs2(itype, uplo, n, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chegs2
        Subroutine chegst(itype, uplo, n, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chegst
        Subroutine chegv_2stage(itype, jobz, uplo, n, a, lda, b, ldb, w, work, &
          lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chegv_2stage
        Subroutine chegvd(itype, jobz, uplo, n, a, lda, b, ldb, w, work, &
          lwork, rwork, lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chegvd
        Subroutine chegv(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, &
          rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chegv
        Subroutine chegvx(itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, &
          il, iu, abstol, m, w, z, ldz, work, lwork, rwork, iwork, ifail, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, itype, iu, lda, ldb, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chegvx
        Subroutine cherfs(uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, &
          ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cherfs
        Subroutine cherfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, ipiv, s, b, &
          ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, &
          nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cherfsx
        Subroutine chesv_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chesv_aa_2stage
        Subroutine chesv_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chesv_aa
        Subroutine chesv(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chesv
        Subroutine chesv_rk(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chesv_rk
        Subroutine chesv_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chesv_rook
        Subroutine chesvx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, &
          x, ldx, rcond, ferr, berr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, lwork, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chesvx
        Subroutine chesvxx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, equed, &
          s, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chesvxx
        Subroutine cheswapr(uplo, n, a, lda, i1, i2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: i1, i2, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cheswapr
        Subroutine chetd2(uplo, n, a, lda, d, e, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetd2
        Subroutine chetf2(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetf2
        Subroutine chetf2_rk(uplo, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetf2_rk
        Subroutine chetf2_rook(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetf2_rook
        Subroutine chetrd_2stage(vect, uplo, n, a, lda, d, e, tau, hous2, &
          lhous2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lhous2, lwork, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), hous2(*), tau(*), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrd_2stage
        Subroutine chetrd(uplo, n, a, lda, d, e, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrd
        Subroutine chetrd_hb2st(stage1, vect, uplo, n, kd, ab, ldab, d, e, &
          hous, lhous, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, lhous, lwork, n
          Character (1) :: stage1, uplo, vect
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), hous(*), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrd_hb2st
        Subroutine chetrd_he2hb(uplo, n, kd, a, lda, ab, ldab, tau, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, lda, ldab, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), ab(ldab, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrd_he2hb
        Subroutine chetrf_aa_2stage(uplo, n, a, lda, tb, ltb, ipiv, ipiv2, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ltb, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrf_aa_2stage
        Subroutine chetrf_aa(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrf_aa
        Subroutine chetrf(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrf
        Subroutine chetrf_rk(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrf_rk
        Subroutine chetrf_rook(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrf_rook
        Subroutine chetri2(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetri2
        Subroutine chetri2x(uplo, n, a, lda, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetri2x
        Subroutine chetri_3(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetri_3
        Subroutine chetri_3x(uplo, n, a, lda, e, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetri_3x
        Subroutine chetri(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetri
        Subroutine chetri_rook(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetri_rook
        Subroutine chetrs2(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrs2
        Subroutine chetrs_3(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrs_3
        Subroutine chetrs_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), tb(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrs_aa_2stage
        Subroutine chetrs_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrs_aa
        Subroutine chetrs(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrs
        Subroutine chetrs_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chetrs_rook
        Subroutine chfrk(transr, uplo, trans, n, k, alpha, a, lda, beta, c)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: k, lda, n
          Character (1) :: trans, transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chfrk
        Subroutine chgeqz(job, compq, compz, n, ilo, ihi, h, ldh, t, ldt, &
          alpha, beta, q, ldq, z, ldz, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldh, ldq, ldt, ldz, lwork, n
          Character (1) :: compq, compz, job
!         .. Array Arguments ..
          Complex (wp) :: alpha(*), beta(*), h(ldh, *), q(ldq, *), &
            t(ldt, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chgeqz
        Function chla_transtype(trans)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Character (1) :: chla_transtype
!         .. Scalar Arguments ..
          Integer :: trans
        End Function chla_transtype
        Subroutine chpcon(uplo, n, ap, ipiv, anorm, rcond, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chpcon
        Subroutine chpevd(jobz, uplo, n, ap, w, z, ldz, work, lwork, rwork, &
          lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chpevd
        Subroutine chpev(jobz, uplo, n, ap, w, z, ldz, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chpev
        Subroutine chpevx(jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m, &
          w, z, ldz, work, rwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chpevx
        Subroutine chpgst(itype, uplo, n, ap, bp, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), bp(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chpgst
        Subroutine chpgvd(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, &
          lwork, rwork, lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, ldz, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), bp(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chpgvd
        Subroutine chpgv(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), bp(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chpgv
        Subroutine chpgvx(itype, jobz, range, uplo, n, ap, bp, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, rwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, itype, iu, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), bp(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chpgvx
        Subroutine chprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, &
          berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chprfs
        Subroutine chpsv(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chpsv
        Subroutine chpsvx(fact, uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, &
          rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chpsvx
        Subroutine chptrd(uplo, n, ap, d, e, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), tau(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chptrd
        Subroutine chptrf(uplo, n, ap, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chptrf
        Subroutine chptri(uplo, n, ap, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chptri
        Subroutine chptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chptrs
        Subroutine chsein(side, eigsrc, initv, select, n, h, ldh, w, vl, ldvl, &
          vr, ldvr, mm, m, work, rwork, ifaill, ifailr, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldh, ldvl, ldvr, m, mm, n
          Character (1) :: eigsrc, initv, side
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), vl(ldvl, *), vr(ldvr, *), w(*), &
            work(*)
          Real (wp) :: rwork(*)
          Integer :: ifaill(*), ifailr(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chsein
        Subroutine chseqr(job, compz, n, ilo, ihi, h, ldh, w, z, ldz, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldh, ldz, lwork, n
          Character (1) :: compz, job
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine chseqr
        Subroutine clabrd(m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldx, ldy, m, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), taup(*), tauq(*), x(ldx, *), &
            y(ldy, *)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clabrd
        Subroutine clacgv(n, x, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clacgv
        Subroutine clacn2(n, v, x, est, kase, isave)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: est
          Integer :: kase, n
!         .. Array Arguments ..
          Complex (wp) :: v(*), x(*)
          Integer :: isave(3)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clacn2
        Subroutine clacon(n, v, x, est, kase)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: est
          Integer :: kase, n
!         .. Array Arguments ..
          Complex (wp) :: v(n), x(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clacon
        Subroutine clacp2(uplo, m, n, a, lda, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldb, m, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *)
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clacp2
        Subroutine clacpy(uplo, m, n, a, lda, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldb, m, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clacpy
        Subroutine clacrm(m, n, a, lda, b, ldb, c, ldc, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldb, ldc, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *)
          Real (wp) :: b(ldb, *), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clacrm
        Subroutine clacrt(n, cx, incx, cy, incy, c, s)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: c, s
          Integer :: incx, incy, n
!         .. Array Arguments ..
          Complex (wp) :: cx(*), cy(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clacrt
        Function cladiv(x, y)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: x, y
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Complex (wp) :: cladiv
        End Function cladiv
        Subroutine claed0(qsiz, n, d, e, q, ldq, qstore, ldqs, rwork, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldq, ldqs, n, qsiz
!         .. Array Arguments ..
          Complex (wp) :: q(ldq, *), qstore(ldqs, *)
          Real (wp) :: d(*), e(*), rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claed0
        Subroutine claed7(n, cutpnt, qsiz, tlvls, curlvl, curpbm, d, q, ldq, &
          rho, indxq, qstore, qptr, prmptr, perm, givptr, givcol, givnum, &
          work, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: curlvl, curpbm, cutpnt, info, ldq, n, qsiz, tlvls
!         .. Array Arguments ..
          Complex (wp) :: q(ldq, *), work(*)
          Real (wp) :: d(*), givnum(2, *), qstore(*), rwork(*)
          Integer :: givcol(2, *), givptr(*), indxq(*), iwork(*), perm(*), &
            prmptr(*), qptr(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claed7
        Subroutine claed8(k, n, qsiz, q, ldq, d, rho, cutpnt, z, dlamda, q2, &
          ldq2, w, indxp, indx, indxq, perm, givptr, givcol, givnum, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: cutpnt, givptr, info, k, ldq, ldq2, n, qsiz
!         .. Array Arguments ..
          Complex (wp) :: q(ldq, *), q2(ldq2, *)
          Real (wp) :: d(*), dlamda(*), givnum(2, *), w(*), z(*)
          Integer :: givcol(2, *), indx(*), indxp(*), indxq(*), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claed8
        Subroutine claein(rightv, noinit, n, h, ldh, w, v, b, ldb, rwork, &
          eps3, smlnum, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: w
          Real (wp) :: eps3, smlnum
          Integer :: info, ldb, ldh, n
          Logical :: noinit, rightv
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), h(ldh, *), v(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claein
        Subroutine claesy(a, b, c, rt1, rt2, evscal, cs1, sn1)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: a, b, c, cs1, evscal, rt1, rt2, sn1
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claesy
        Subroutine claev2(a, b, c, rt1, rt2, cs1, sn1)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: a, b, c, sn1
          Real (wp) :: cs1, rt1, rt2
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claev2
        Subroutine clag2z(m, n, sa, ldsa, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: sp = kind(0.0)
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldsa, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Complex (sp) :: sa(ldsa, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clag2z
        Subroutine cla_gbamv(trans, m, n, kl, ku, alpha, ab, ldab, x, incx, &
          beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, kl, ku, ldab, m, n, trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), x(*)
          Real (wp) :: y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_gbamv
        Function cla_gbrcond_c(trans, n, kl, ku, ab, ldab, afb, ldafb, ipiv, &
          c, capply, info, work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldafb, n
          Logical :: capply
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), work(*)
          Real (wp) :: c(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_gbrcond_c
        End Function cla_gbrcond_c
        Function cla_gbrcond_x(trans, n, kl, ku, ab, ldab, afb, ldafb, ipiv, &
          x, info, work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldafb, n
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), work(*), x(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_gbrcond_x
        End Function cla_gbrcond_x
        Subroutine cla_gbrfsx_extended(prec_type, trans_type, n, kl, ku, nrhs, &
          ab, ldab, afb, ldafb, ipiv, colequ, c, b, ldb, y, ldy, berr_out, &
          n_norms, err_bnds_norm, err_bnds_comp, res, ayb, dy, y_tail, rcond, &
          ithresh, rthresh, dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, kl, ku, ldab, ldafb, ldb, ldy, n, nrhs, &
            n_norms, prec_type, trans_type
          Logical :: colequ, ignore_cwise
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), dy(*), &
            res(*), y(ldy, *), y_tail(*)
          Real (wp) :: ayb(*), berr_out(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_gbrfsx_extended
        Function cla_gbrpvgrw(n, kl, ku, ncols, ab, ldab, afb, ldafb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: kl, ku, ldab, ldafb, n, ncols
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_gbrpvgrw
        End Function cla_gbrpvgrw
        Subroutine cla_geamv(trans, m, n, alpha, a, lda, x, incx, beta, y, &
          incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, lda, m, n, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*)
          Real (wp) :: y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_geamv
        Function cla_gercond_c(trans, n, a, lda, af, ldaf, ipiv, c, capply, &
          info, work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Logical :: capply
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*)
          Real (wp) :: c(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_gercond_c
        End Function cla_gercond_c
        Function cla_gercond_x(trans, n, a, lda, af, ldaf, ipiv, x, info, &
          work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*), x(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_gercond_x
        End Function cla_gercond_x
        Subroutine cla_gerfsx_extended(prec_type, trans_type, n, nrhs, a, lda, &
          af, ldaf, ipiv, colequ, c, b, ldb, y, ldy, berr_out, n_norms, &
          errs_n, errs_c, res, ayb, dy, y_tail, rcond, ithresh, rthresh, &
          dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type, trans_type
          Logical :: colequ, ignore_cwise
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), dy(*), &
            res(*), y(ldy, *), y_tail(*)
          Real (wp) :: ayb(*), berr_out(*), c(*), errs_c(nrhs, *), &
            errs_n(nrhs, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_gerfsx_extended
        Function cla_gerpvgrw(n, ncols, a, lda, af, ldaf)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldaf, n, ncols
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_gerpvgrw
        End Function cla_gerpvgrw
        Subroutine clags2(upper, a1, a2, a3, b1, b2, b3, csu, snu, csv, snv, &
          csq, snq)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: a2, b2, snq, snu, snv
          Real (wp) :: a1, a3, b1, b3, csq, csu, csv
          Logical :: upper
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clags2
        Subroutine clagtm(trans, n, nrhs, alpha, dl, d, du, x, ldx, beta, b, &
          ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), dl(*), du(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clagtm
        Subroutine cla_heamv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, lda, n, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*)
          Real (wp) :: y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_heamv
        Subroutine clahef_aa(uplo, j1, m, nb, a, lda, ipiv, h, ldh, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: j1, lda, ldh, m, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), h(ldh, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clahef_aa
        Subroutine clahef(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clahef
        Subroutine clahef_rk(uplo, n, nb, kb, a, lda, e, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clahef_rk
        Subroutine clahef_rook(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clahef_rook
        Function cla_hercond_c(uplo, n, a, lda, af, ldaf, ipiv, c, capply, &
          info, work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Logical :: capply
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*)
          Real (wp) :: c(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_hercond_c
        End Function cla_hercond_c
        Function cla_hercond_x(uplo, n, a, lda, af, ldaf, ipiv, x, info, work, &
          rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*), x(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_hercond_x
        End Function cla_hercond_x
        Subroutine cla_herfsx_extended(prec_type, uplo, n, nrhs, a, lda, af, &
          ldaf, ipiv, colequ, c, b, ldb, y, ldy, berr_out, n_norms, &
          err_bnds_norm, err_bnds_comp, res, ayb, dy, y_tail, rcond, ithresh, &
          rthresh, dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type
          Logical :: colequ, ignore_cwise
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), dy(*), &
            res(*), y(ldy, *), y_tail(*)
          Real (wp) :: ayb(*), berr_out(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_herfsx_extended
        Function cla_herpvgrw(uplo, n, info, a, lda, af, ldaf, ipiv, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *)
          Real (wp) :: work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_herpvgrw
        End Function cla_herpvgrw
        Subroutine clahqr(wantt, wantz, n, ilo, ihi, h, ldh, w, iloz, ihiz, z, &
          ldz, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), w(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clahqr
        Subroutine clahr2(n, k, nb, a, lda, tau, t, ldt, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, lda, ldt, ldy, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, nb), tau(nb), y(ldy, nb)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clahr2
        Subroutine clahrd(n, k, nb, a, lda, tau, t, ldt, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, lda, ldt, ldy, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, nb), tau(nb), y(ldy, nb)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clahrd
        Subroutine claic1(job, j, x, sest, w, gamma, sestpr, s, c)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: c, gamma, s
          Real (wp) :: sest, sestpr
          Integer :: j, job
!         .. Array Arguments ..
          Complex (wp) :: w(j), x(j)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claic1
        Subroutine cla_lin_berr(n, nz, nrhs, res, ayb, berr)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n, nrhs, nz
!         .. Array Arguments ..
          Complex (wp) :: res(n, nrhs)
          Real (wp) :: ayb(n, nrhs), berr(nrhs)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_lin_berr
        Subroutine clals0(icompq, nl, nr, sqre, nrhs, b, ldb, bx, ldbx, perm, &
          givptr, givcol, ldgcol, givnum, ldgnum, poles, difl, difr, z, k, c, &
          s, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: c, s
          Integer :: givptr, icompq, info, k, ldb, ldbx, ldgcol, ldgnum, nl, &
            nr, nrhs, sqre
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), bx(ldbx, *)
          Real (wp) :: difl(*), difr(ldgnum, *), givnum(ldgnum, *), &
            poles(ldgnum, *), rwork(*), z(*)
          Integer :: givcol(ldgcol, *), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clals0
        Subroutine clalsa(icompq, smlsiz, n, nrhs, b, ldb, bx, ldbx, u, ldu, &
          vt, k, difl, difr, z, poles, givptr, givcol, ldgcol, perm, givnum, &
          c, s, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: icompq, info, ldb, ldbx, ldgcol, ldu, n, nrhs, smlsiz
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), bx(ldbx, *)
          Real (wp) :: c(*), difl(ldu, *), difr(ldu, *), givnum(ldu, *), &
            poles(ldu, *), rwork(*), s(*), u(ldu, *), vt(ldu, *), z(ldu, *)
          Integer :: givcol(ldgcol, *), givptr(*), iwork(*), k(*), &
            perm(ldgcol, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clalsa
        Subroutine clalsd(uplo, smlsiz, n, nrhs, d, e, b, ldb, rcond, rank, &
          work, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, n, nrhs, rank, smlsiz
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), work(*)
          Real (wp) :: d(*), e(*), rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clalsd
        Subroutine clamswlq(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, &
          ldc, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, ldt, lwork, m, mb, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clamswlq
        Subroutine clamtsqr(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, &
          ldc, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, ldt, lwork, m, mb, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clamtsqr
        Function clangb(norm, n, kl, ku, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: kl, ku, ldab, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clangb
        End Function clangb
        Function clange(norm, m, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clange
        End Function clange
        Function clangt(norm, n, dl, d, du)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: d(*), dl(*), du(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clangt
        End Function clangt
        Function clanhb(norm, uplo, n, k, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldab, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clanhb
        End Function clanhb
        Function clanhe(norm, uplo, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clanhe
        End Function clanhe
        Function clanhf(norm, transr, uplo, n, a, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm, transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*)
          Real (wp) :: work(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clanhf
        End Function clanhf
        Function clanhp(norm, uplo, n, ap, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clanhp
        End Function clanhp
        Function clanhs(norm, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clanhs
        End Function clanhs
        Function clanht(norm, n, d, e)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: e(*)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clanht
        End Function clanht
        Function clansb(norm, uplo, n, k, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldab, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clansb
        End Function clansb
        Function clansp(norm, uplo, n, ap, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clansp
        End Function clansp
        Function clansy(norm, uplo, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clansy
        End Function clansy
        Function clantb(norm, uplo, diag, n, k, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldab, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clantb
        End Function clantb
        Function clantp(norm, uplo, diag, n, ap, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clantp
        End Function clantp
        Function clantr(norm, uplo, diag, m, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: clantr
        End Function clantr
        Subroutine clapll(n, x, incx, y, incy, ssmin)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: ssmin
          Integer :: incx, incy, n
!         .. Array Arguments ..
          Complex (wp) :: x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clapll
        Subroutine clapmr(forwrd, m, n, x, ldx, k)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
          Logical :: forwrd
!         .. Array Arguments ..
          Complex (wp) :: x(ldx, *)
          Integer :: k(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clapmr
        Subroutine clapmt(forwrd, m, n, x, ldx, k)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
          Logical :: forwrd
!         .. Array Arguments ..
          Complex (wp) :: x(ldx, *)
          Integer :: k(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clapmt
        Function cla_porcond_c(uplo, n, a, lda, af, ldaf, c, capply, info, &
          work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Logical :: capply
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*)
          Real (wp) :: c(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_porcond_c
        End Function cla_porcond_c
        Function cla_porcond_x(uplo, n, a, lda, af, ldaf, x, info, work, &
          rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*), x(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_porcond_x
        End Function cla_porcond_x
        Subroutine cla_porfsx_extended(prec_type, uplo, n, nrhs, a, lda, af, &
          ldaf, colequ, c, b, ldb, y, ldy, berr_out, n_norms, err_bnds_norm, &
          err_bnds_comp, res, ayb, dy, y_tail, rcond, ithresh, rthresh, dz_ub, &
          ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type
          Logical :: colequ, ignore_cwise
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), dy(*), &
            res(*), y(ldy, *), y_tail(*)
          Real (wp) :: ayb(*), berr_out(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_porfsx_extended
        Function cla_porpvgrw(uplo, ncols, a, lda, af, ldaf, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldaf, ncols
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_porpvgrw
        End Function cla_porpvgrw
        Subroutine claqgb(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: kl, ku, ldab, m, n
          Character (1) :: equed
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqgb
        Subroutine claqge(m, n, a, lda, r, c, rowcnd, colcnd, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: lda, m, n
          Character (1) :: equed
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqge
        Subroutine claqhb(uplo, n, kd, ab, ldab, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: kd, ldab, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqhb
        Subroutine claqhe(uplo, n, a, lda, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: lda, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqhe
        Subroutine claqhp(uplo, n, ap, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqhp
        Subroutine claqp2(m, n, offset, a, lda, jpvt, tau, vn1, vn2, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n, offset
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
          Real (wp) :: vn1(*), vn2(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqp2
        Subroutine claqps(m, n, offset, nb, kb, a, lda, jpvt, tau, vn1, vn2, &
          auxv, f, ldf)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: kb, lda, ldf, m, n, nb, offset
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), auxv(*), f(ldf, *), tau(*)
          Real (wp) :: vn1(*), vn2(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqps
        Subroutine claqr0(wantt, wantz, n, ilo, ihi, h, ldh, w, iloz, ihiz, z, &
          ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, lwork, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqr0
        Subroutine claqr1(n, h, ldh, s1, s2, v)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: s1, s2
          Integer :: ldh, n
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), v(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqr1
        Subroutine claqr2(wantt, wantz, n, ktop, kbot, nw, h, ldh, iloz, ihiz, &
          z, ldz, ns, nd, sh, v, ldv, nh, t, ldt, nv, wv, ldwv, work, lwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kbot, ktop, ldh, ldt, ldv, ldwv, ldz, lwork, &
            n, nd, nh, ns, nv, nw
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), sh(*), t(ldt, *), v(ldv, *), &
            work(*), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqr2
        Subroutine claqr3(wantt, wantz, n, ktop, kbot, nw, h, ldh, iloz, ihiz, &
          z, ldz, ns, nd, sh, v, ldv, nh, t, ldt, nv, wv, ldwv, work, lwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kbot, ktop, ldh, ldt, ldv, ldwv, ldz, lwork, &
            n, nd, nh, ns, nv, nw
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), sh(*), t(ldt, *), v(ldv, *), &
            work(*), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqr3
        Subroutine claqr4(wantt, wantz, n, ilo, ihi, h, ldh, w, iloz, ihiz, z, &
          ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, lwork, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqr4
        Subroutine claqr5(wantt, wantz, kacc22, n, ktop, kbot, nshfts, s, h, &
          ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kacc22, kbot, ktop, ldh, ldu, ldv, ldwh, &
            ldwv, ldz, n, nh, nshfts, nv
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), s(*), u(ldu, *), v(ldv, *), &
            wh(ldwh, *), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqr5
        Subroutine claqsb(uplo, n, kd, ab, ldab, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: kd, ldab, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqsb
        Subroutine claqsp(uplo, n, ap, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqsp
        Subroutine claqsy(uplo, n, a, lda, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: lda, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claqsy
        Subroutine clar1v(n, b1, bn, lambda, d, l, ld, lld, pivmin, gaptol, z, &
          wantnc, negcnt, ztz, mingma, r, isuppz, nrminv, resid, rqcorr, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: gaptol, lambda, mingma, nrminv, pivmin, resid, &
            rqcorr, ztz
          Integer :: b1, bn, n, negcnt, r
          Logical :: wantnc
!         .. Array Arguments ..
          Complex (wp) :: z(*)
          Real (wp) :: d(*), l(*), ld(*), lld(*), work(*)
          Integer :: isuppz(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clar1v
        Subroutine clar2v(n, x, y, z, incx, c, s, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, n
!         .. Array Arguments ..
          Complex (wp) :: s(*), x(*), y(*), z(*)
          Real (wp) :: c(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clar2v
        Subroutine clarcm(m, n, a, lda, b, ldb, c, ldc, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldb, ldc, m, n
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), c(ldc, *)
          Real (wp) :: a(lda, *), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarcm
        Subroutine clarfb(side, trans, direct, storev, m, n, k, v, ldv, t, &
          ldt, c, ldc, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldc, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), &
            work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarfb
        Subroutine clarf(side, m, n, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: tau
          Integer :: incv, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarf
        Subroutine clarfg(n, alpha, x, incx, tau)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha, tau
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarfg
        Subroutine clarfgp(n, alpha, x, incx, tau)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha, tau
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarfgp
        Subroutine clarft(direct, storev, n, k, v, ldv, tau, t, ldt)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldt, ldv, n
          Character (1) :: direct, storev
!         .. Array Arguments ..
          Complex (wp) :: t(ldt, *), tau(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarft
        Subroutine clarfx(side, m, n, v, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: tau
          Integer :: ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarfx
        Subroutine clarfy(uplo, n, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: tau
          Integer :: incv, ldc, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarfy
        Subroutine clargv(n, x, incx, y, incy, c, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, incy, n
!         .. Array Arguments ..
          Complex (wp) :: x(*), y(*)
          Real (wp) :: c(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clargv
        Subroutine clarnv(idist, iseed, n, x)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: idist, n
!         .. Array Arguments ..
          Complex (wp) :: x(*)
          Integer :: iseed(4)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarnv
        Subroutine clarrv(n, vl, vu, d, l, pivmin, isplit, m, dol, dou, &
          minrgp, rtol1, rtol2, w, werr, wgap, iblock, indexw, gers, z, ldz, &
          isuppz, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: minrgp, pivmin, rtol1, rtol2, vl, vu
          Integer :: dol, dou, info, ldz, m, n
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), gers(*), l(*), w(*), werr(*), wgap(*), &
            work(*)
          Integer :: iblock(*), indexw(*), isplit(*), isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarrv
        Subroutine clarscl2(m, n, d, x, ldx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
!         .. Array Arguments ..
          Complex (wp) :: x(ldx, *)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarscl2
        Subroutine clartg(f, g, cs, sn, r)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: f, g, r, sn
          Real (wp) :: cs
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clartg
        Subroutine clartv(n, x, incx, y, incy, c, s, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, incy, n
!         .. Array Arguments ..
          Complex (wp) :: s(*), x(*), y(*)
          Real (wp) :: c(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clartv
        Subroutine clarzb(side, trans, direct, storev, m, n, k, l, v, ldv, t, &
          ldt, c, ldc, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, l, ldc, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), &
            work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarzb
        Subroutine clarz(side, m, n, l, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: tau
          Integer :: incv, l, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarz
        Subroutine clarzt(direct, storev, n, k, v, ldv, tau, t, ldt)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldt, ldv, n
          Character (1) :: direct, storev
!         .. Array Arguments ..
          Complex (wp) :: t(ldt, *), tau(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clarzt
        Subroutine clascl2(m, n, d, x, ldx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
!         .. Array Arguments ..
          Complex (wp) :: x(ldx, *)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clascl2
        Subroutine clascl(type, kl, ku, cfrom, cto, m, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: cfrom, cto
          Integer :: info, kl, ku, lda, m, n
          Character (1) :: type
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clascl
        Subroutine claset(uplo, m, n, alpha, beta, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha, beta
          Integer :: lda, m, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claset
        Subroutine clasr(side, pivot, direct, m, n, c, s, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: direct, pivot, side
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: c(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clasr
        Subroutine classq(n, x, incx, scale, sumsq)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale, sumsq
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine classq
        Subroutine claswlq(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claswlq
        Subroutine claswp(n, a, lda, k1, k2, ipiv, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incx, k1, k2, lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claswp
        Subroutine cla_syamv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, lda, n, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*)
          Real (wp) :: y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_syamv
        Subroutine clasyf_aa(uplo, j1, m, nb, a, lda, ipiv, h, ldh, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: j1, lda, ldh, m, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), h(ldh, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clasyf_aa
        Subroutine clasyf(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clasyf
        Subroutine clasyf_rk(uplo, n, nb, kb, a, lda, e, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clasyf_rk
        Subroutine clasyf_rook(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clasyf_rook
        Function cla_syrcond_c(uplo, n, a, lda, af, ldaf, ipiv, c, capply, &
          info, work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Logical :: capply
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*)
          Real (wp) :: c(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_syrcond_c
        End Function cla_syrcond_c
        Function cla_syrcond_x(uplo, n, a, lda, af, ldaf, ipiv, x, info, work, &
          rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*), x(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_syrcond_x
        End Function cla_syrcond_x
        Subroutine cla_syrfsx_extended(prec_type, uplo, n, nrhs, a, lda, af, &
          ldaf, ipiv, colequ, c, b, ldb, y, ldy, berr_out, n_norms, &
          err_bnds_norm, err_bnds_comp, res, ayb, dy, y_tail, rcond, ithresh, &
          rthresh, dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type
          Logical :: colequ, ignore_cwise
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), dy(*), &
            res(*), y(ldy, *), y_tail(*)
          Real (wp) :: ayb(*), berr_out(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_syrfsx_extended
        Function cla_syrpvgrw(uplo, n, info, a, lda, af, ldaf, ipiv, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *)
          Real (wp) :: work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: cla_syrpvgrw
        End Function cla_syrpvgrw
        Subroutine clatbs(uplo, trans, diag, normin, n, kd, ab, ldab, x, &
          scale, cnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, kd, ldab, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), x(*)
          Real (wp) :: cnorm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clatbs
        Subroutine clatdf(ijob, n, z, ldz, rhs, rdsum, rdscal, ipiv, jpiv)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rdscal, rdsum
          Integer :: ijob, ldz, n
!         .. Array Arguments ..
          Complex (wp) :: rhs(*), z(ldz, *)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clatdf
        Subroutine clatps(uplo, trans, diag, normin, n, ap, x, scale, cnorm, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), x(*)
          Real (wp) :: cnorm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clatps
        Subroutine clatrd(uplo, n, nb, a, lda, e, tau, w, ldw)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), w(ldw, *)
          Real (wp) :: e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clatrd
        Subroutine clatrs(uplo, trans, diag, normin, n, a, lda, x, scale, &
          cnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, lda, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*)
          Real (wp) :: cnorm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clatrs
        Subroutine clatrz(m, n, l, a, lda, tau, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: l, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clatrz
        Subroutine clatsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clatsqr
        Subroutine clatzm(side, m, n, v, incv, tau, c1, c2, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: tau
          Integer :: incv, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Complex (wp) :: c1(ldc, *), c2(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clatzm
        Recursive Subroutine claunhr_col_getrfnp2(m, n, a, lda, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claunhr_col_getrfnp2
        Subroutine claunhr_col_getrfnp(m, n, a, lda, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine claunhr_col_getrfnp
        Subroutine clauu2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clauu2
        Subroutine clauum(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine clauum
        Subroutine cla_wwaddw(n, x, y, w)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
!         .. Array Arguments ..
          Complex (wp) :: w(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cla_wwaddw
        Subroutine cpbcon(uplo, n, kd, ab, ldab, anorm, rcond, work, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpbcon
        Subroutine cpbequ(uplo, n, kd, ab, ldab, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpbequ
        Subroutine cpbrfs(uplo, n, kd, nrhs, ab, ldab, afb, ldafb, b, ldb, x, &
          ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpbrfs
        Subroutine cpbstf(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpbstf
        Subroutine cpbsv(uplo, n, kd, nrhs, ab, ldab, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpbsv
        Subroutine cpbsvx(fact, uplo, n, kd, nrhs, ab, ldab, afb, ldafb, &
          equed, s, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kd, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpbsvx
        Subroutine cpbtf2(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpbtf2
        Subroutine cpbtrf(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpbtrf
        Subroutine cpbtrs(uplo, n, kd, nrhs, ab, ldab, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpbtrs
        Subroutine cpftrf(transr, uplo, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpftrf
        Subroutine cpftri(transr, uplo, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpftri
        Subroutine cpftrs(transr, uplo, n, nrhs, a, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpftrs
        Subroutine cpocon(uplo, n, a, lda, anorm, rcond, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpocon
        Subroutine cpoequb(n, a, lda, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpoequb
        Subroutine cpoequ(n, a, lda, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpoequ
        Subroutine cporfs(uplo, n, nrhs, a, lda, af, ldaf, b, ldb, x, ldx, &
          ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cporfs
        Subroutine cporfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, s, b, ldb, &
          x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, &
          nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cporfsx
        Subroutine cposv(uplo, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cposv
        Subroutine cposvx(fact, uplo, n, nrhs, a, lda, af, ldaf, equed, s, b, &
          ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cposvx
        Subroutine cposvxx(fact, uplo, n, nrhs, a, lda, af, ldaf, equed, s, b, &
          ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cposvxx
        Subroutine cpotf2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpotf2
        Recursive Subroutine cpotrf2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpotrf2
        Subroutine cpotrf(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpotrf
        Subroutine cpotri(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpotri
        Subroutine cpotrs(uplo, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpotrs
        Subroutine cppcon(uplo, n, ap, anorm, rcond, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cppcon
        Subroutine cppequ(uplo, n, ap, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cppequ
        Subroutine cpprfs(uplo, n, nrhs, ap, afp, b, ldb, x, ldx, ferr, berr, &
          work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpprfs
        Subroutine cppsv(uplo, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cppsv
        Subroutine cppsvx(fact, uplo, n, nrhs, ap, afp, equed, s, b, ldb, x, &
          ldx, rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cppsvx
        Subroutine cpptrf(uplo, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpptrf
        Subroutine cpptri(uplo, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpptri
        Subroutine cpptrs(uplo, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpptrs
        Subroutine cpstf2(uplo, n, a, lda, piv, rank, tol, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tol
          Integer :: info, lda, n, rank
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(2*n)
          Integer :: piv(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpstf2
        Subroutine cpstrf(uplo, n, a, lda, piv, rank, tol, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tol
          Integer :: info, lda, n, rank
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(2*n)
          Integer :: piv(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpstrf
        Subroutine cptcon(n, d, e, anorm, rcond, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
!         .. Array Arguments ..
          Complex (wp) :: e(*)
          Real (wp) :: d(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cptcon
        Subroutine cpteqr(compz, n, d, e, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: compz
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), e(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpteqr
        Subroutine cptrfs(uplo, n, nrhs, d, e, df, ef, b, ldb, x, ldx, ferr, &
          berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), e(*), ef(*), work(*), x(ldx, *)
          Real (wp) :: berr(*), d(*), df(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cptrfs
        Subroutine cptsv(n, nrhs, d, e, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), e(*)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cptsv
        Subroutine cptsvx(fact, n, nrhs, d, e, df, ef, b, ldb, x, ldx, rcond, &
          ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), e(*), ef(*), work(*), x(ldx, *)
          Real (wp) :: berr(*), d(*), df(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cptsvx
        Subroutine cpttrf(n, d, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Complex (wp) :: e(*)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpttrf
        Subroutine cpttrs(uplo, n, nrhs, d, e, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), e(*)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cpttrs
        Subroutine cptts2(iuplo, n, nrhs, d, e, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: iuplo, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), e(*)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cptts2
        Subroutine crot(n, cx, incx, cy, incy, c, s)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: s
          Real (wp) :: c
          Integer :: incx, incy, n
!         .. Array Arguments ..
          Complex (wp) :: cx(*), cy(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine crot
        Subroutine cspcon(uplo, n, ap, ipiv, anorm, rcond, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cspcon
        Subroutine cspmv(uplo, n, alpha, ap, x, incx, beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha, beta
          Integer :: incx, incy, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cspmv
        Subroutine cspr(uplo, n, alpha, x, incx, ap)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha
          Integer :: incx, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cspr
        Subroutine csprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, &
          berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csprfs
        Subroutine cspsv(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cspsv
        Subroutine cspsvx(fact, uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, &
          rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cspsvx
        Subroutine csptrf(uplo, n, ap, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csptrf
        Subroutine csptri(uplo, n, ap, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csptri
        Subroutine csptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csptrs
        Subroutine csrscl(n, sa, sx, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: sa
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: sx(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csrscl
        Subroutine cstedc(compz, n, d, e, z, ldz, work, lwork, rwork, lrwork, &
          iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, liwork, lrwork, lwork, n
          Character (1) :: compz
!         .. Array Arguments ..
          Complex (wp) :: work(*), z(ldz, *)
          Real (wp) :: d(*), e(*), rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cstedc
        Subroutine cstegr(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, &
          z, ldz, isuppz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, liwork, lwork, m, n
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), e(*), w(*), work(*)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cstegr
        Subroutine cstein(n, d, e, m, w, iblock, isplit, z, ldz, work, iwork, &
          ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, m, n
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), e(*), w(*), work(*)
          Integer :: iblock(*), ifail(*), isplit(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cstein
        Subroutine cstemr(jobz, range, n, d, e, vl, vu, il, iu, m, w, z, ldz, &
          nzc, isuppz, tryrac, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: vl, vu
          Integer :: il, info, iu, ldz, liwork, lwork, m, n, nzc
          Logical :: tryrac
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), e(*), w(*), work(*)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cstemr
        Subroutine csteqr(compz, n, d, e, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: compz
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), e(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csteqr
        Subroutine csycon_3(uplo, n, a, lda, e, ipiv, anorm, rcond, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csycon_3
        Subroutine csycon(uplo, n, a, lda, ipiv, anorm, rcond, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csycon
        Subroutine csycon_rook(uplo, n, a, lda, ipiv, anorm, rcond, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csycon_rook
        Subroutine csyconv(uplo, way, n, a, lda, ipiv, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csyconv
        Subroutine csyconvf(uplo, way, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csyconvf
        Subroutine csyconvf_rook(uplo, way, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csyconvf_rook
        Subroutine csyequb(uplo, n, a, lda, s, scond, amax, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csyequb
        Subroutine csymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha, beta
          Integer :: incx, incy, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csymv
        Subroutine csyr(uplo, n, alpha, x, incx, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha
          Integer :: incx, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csyr
        Subroutine csyrfs(uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, &
          ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csyrfs
        Subroutine csyrfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, ipiv, s, b, &
          ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, &
          nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csyrfsx
        Subroutine csysv_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csysv_aa_2stage
        Subroutine csysv_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csysv_aa
        Subroutine csysv(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csysv
        Subroutine csysv_rk(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csysv_rk
        Subroutine csysv_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csysv_rook
        Subroutine csysvx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, &
          x, ldx, rcond, ferr, berr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, lwork, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csysvx
        Subroutine csysvxx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, equed, &
          s, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csysvxx
        Subroutine csyswapr(uplo, n, a, lda, i1, i2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: i1, i2, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csyswapr
        Subroutine csytf2(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytf2
        Subroutine csytf2_rk(uplo, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytf2_rk
        Subroutine csytf2_rook(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytf2_rook
        Subroutine csytrf_aa_2stage(uplo, n, a, lda, tb, ltb, ipiv, ipiv2, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ltb, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrf_aa_2stage
        Subroutine csytrf_aa(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrf_aa
        Subroutine csytrf(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrf
        Subroutine csytrf_rk(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrf_rk
        Subroutine csytrf_rook(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrf_rook
        Subroutine csytri2(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytri2
        Subroutine csytri2x(uplo, n, a, lda, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytri2x
        Subroutine csytri_3(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytri_3
        Subroutine csytri_3x(uplo, n, a, lda, e, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytri_3x
        Subroutine csytri(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytri
        Subroutine csytri_rook(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytri_rook
        Subroutine csytrs2(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrs2
        Subroutine csytrs_3(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrs_3
        Subroutine csytrs_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), tb(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrs_aa_2stage
        Subroutine csytrs_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrs_aa
        Subroutine csytrs(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrs
        Subroutine csytrs_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine csytrs_rook
        Subroutine ctbcon(norm, uplo, diag, n, kd, ab, ldab, rcond, work, &
          rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kd, ldab, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctbcon
        Subroutine ctbrfs(uplo, trans, diag, n, kd, nrhs, ab, ldab, b, ldb, x, &
          ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctbrfs
        Subroutine ctbtrs(uplo, trans, diag, n, kd, nrhs, ab, ldab, b, ldb, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctbtrs
        Subroutine ctfsm(transr, side, uplo, trans, diag, m, n, alpha, a, b, &
          ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha
          Integer :: ldb, m, n
          Character (1) :: diag, side, trans, transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*), b(0:ldb-1, 0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctfsm
        Subroutine ctftri(transr, uplo, diag, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: diag, transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctftri
        Subroutine ctfttp(transr, uplo, n, arf, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctfttp
        Subroutine ctfttr(transr, uplo, n, arf, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:lda-1, 0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctfttr
        Subroutine ctgevc(side, howmny, select, n, s, lds, p, ldp, vl, ldvl, &
          vr, ldvr, mm, m, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldp, lds, ldvl, ldvr, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Complex (wp) :: p(ldp, *), s(lds, *), vl(ldvl, *), vr(ldvr, *), &
            work(*)
          Real (wp) :: rwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctgevc
        Subroutine ctgex2(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, j1, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, j1, lda, ldb, ldq, ldz, n
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctgex2
        Subroutine ctgexc(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, &
          ifst, ilst, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ifst, ilst, info, lda, ldb, ldq, ldz, n
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctgexc
        Subroutine ctgsen(ijob, wantq, wantz, select, n, a, lda, b, ldb, &
          alpha, beta, q, ldq, z, ldz, m, pl, pr, dif, work, lwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: pl, pr
          Integer :: ijob, info, lda, ldb, ldq, ldz, liwork, lwork, m, n
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            q(ldq, *), work(*), z(ldz, *)
          Real (wp) :: dif(*)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctgsen
        Subroutine 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)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, ncycle, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), u(ldu, *), &
            v(ldv, *), work(*)
          Real (wp) :: alpha(*), beta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctgsja
        Subroutine ctgsna(job, howmny, select, n, a, lda, b, ldb, vl, ldvl, &
          vr, ldvr, s, dif, mm, m, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, m, mm, n
          Character (1) :: howmny, job
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), vl(ldvl, *), vr(ldvr, *), &
            work(*)
          Real (wp) :: dif(*), s(*)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctgsna
        Subroutine ctgsy2(trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, &
          e, lde, f, ldf, scale, rdsum, rdscal, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rdscal, rdsum, scale
          Integer :: ijob, info, lda, ldb, ldc, ldd, lde, ldf, m, n
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), c(ldc, *), d(ldd, *), &
            e(lde, *), f(ldf, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctgsy2
        Subroutine ctgsyl(trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, &
          e, lde, f, ldf, scale, dif, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dif, scale
          Integer :: ijob, info, lda, ldb, ldc, ldd, lde, ldf, lwork, m, n
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), c(ldc, *), d(ldd, *), &
            e(lde, *), f(ldf, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctgsyl
        Subroutine ctpcon(norm, uplo, diag, n, ap, rcond, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctpcon
        Subroutine ctplqt2(m, n, l, a, lda, b, ldb, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctplqt2
        Subroutine ctplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, mb, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctplqt
        Subroutine ctpmlqt(side, trans, m, n, k, l, mb, v, ldv, t, ldt, a, &
          lda, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldt, ldv, m, mb, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctpmlqt
        Subroutine ctpmqrt(side, trans, m, n, k, l, nb, v, ldv, t, ldt, a, &
          lda, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldt, ldv, m, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctpmqrt
        Subroutine ctpqrt2(m, n, l, a, lda, b, ldb, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctpqrt2
        Subroutine ctpqrt(m, n, l, nb, a, lda, b, ldb, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctpqrt
        Subroutine ctprfb(side, trans, direct, storev, m, n, k, l, v, ldv, t, &
          ldt, a, lda, b, ldb, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, l, lda, ldb, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctprfb
        Subroutine ctprfs(uplo, trans, diag, n, nrhs, ap, b, ldb, x, ldx, &
          ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctprfs
        Subroutine ctptri(uplo, diag, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctptri
        Subroutine ctptrs(uplo, trans, diag, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctptrs
        Subroutine ctpttf(transr, uplo, n, ap, arf, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctpttf
        Subroutine ctpttr(uplo, n, ap, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctpttr
        Subroutine ctrcon(norm, uplo, diag, n, a, lda, rcond, work, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrcon
        Subroutine ctrevc3(side, howmny, select, n, t, ldt, vl, ldvl, vr, &
          ldvr, mm, m, work, lwork, rwork, lrwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, lrwork, lwork, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Complex (wp) :: t(ldt, *), vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: rwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrevc3
        Subroutine ctrevc(side, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, &
          mm, m, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Complex (wp) :: t(ldt, *), vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: rwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrevc
        Subroutine ctrexc(compq, n, t, ldt, q, ldq, ifst, ilst, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ifst, ilst, info, ldq, ldt, n
          Character (1) :: compq
!         .. Array Arguments ..
          Complex (wp) :: q(ldq, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrexc
        Subroutine ctrrfs(uplo, trans, diag, n, nrhs, a, lda, b, ldb, x, ldx, &
          ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrrfs
        Subroutine ctrsen(job, compq, select, n, t, ldt, q, ldq, w, m, s, sep, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: s, sep
          Integer :: info, ldq, ldt, lwork, m, n
          Character (1) :: compq, job
!         .. Array Arguments ..
          Complex (wp) :: q(ldq, *), t(ldt, *), w(*), work(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrsen
        Subroutine ctrsna(job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, &
          s, sep, mm, m, work, ldwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, ldwork, m, mm, n
          Character (1) :: howmny, job
!         .. Array Arguments ..
          Complex (wp) :: t(ldt, *), vl(ldvl, *), vr(ldvr, *), &
            work(ldwork, *)
          Real (wp) :: rwork(*), s(*), sep(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrsna
        Subroutine ctrsyl(trana, tranb, isgn, m, n, a, lda, b, ldb, c, ldc, &
          scale, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, isgn, lda, ldb, ldc, m, n
          Character (1) :: trana, tranb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), c(ldc, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrsyl
        Subroutine ctrti2(uplo, diag, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrti2
        Subroutine ctrtri(uplo, diag, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrtri
        Subroutine ctrtrs(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrtrs
        Subroutine ctrttf(transr, uplo, n, a, lda, arf, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:lda-1, 0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrttf
        Subroutine ctrttp(uplo, n, a, lda, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctrttp
        Subroutine ctzrqf(m, n, a, lda, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctzrqf
        Subroutine ctzrzf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ctzrzf
        Subroutine cunbdb1(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Complex (wp) :: taup1(*), taup2(*), tauq1(*), work(*), &
            x11(ldx11, *), x21(ldx21, *)
          Real (wp) :: phi(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunbdb1
        Subroutine cunbdb2(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Complex (wp) :: taup1(*), taup2(*), tauq1(*), work(*), &
            x11(ldx11, *), x21(ldx21, *)
          Real (wp) :: phi(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunbdb2
        Subroutine cunbdb3(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Complex (wp) :: taup1(*), taup2(*), tauq1(*), work(*), &
            x11(ldx11, *), x21(ldx21, *)
          Real (wp) :: phi(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunbdb3
        Subroutine cunbdb4(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, phantom, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Complex (wp) :: phantom(*), taup1(*), taup2(*), tauq1(*), &
            work(*), x11(ldx11, *), x21(ldx21, *)
          Real (wp) :: phi(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunbdb4
        Subroutine cunbdb5(m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, &
          ldq2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incx1, incx2, info, ldq1, ldq2, lwork, m1, m2, n
!         .. Array Arguments ..
          Complex (wp) :: q1(ldq1, *), q2(ldq2, *), work(*), x1(*), x2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunbdb5
        Subroutine cunbdb6(m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, &
          ldq2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incx1, incx2, info, ldq1, ldq2, lwork, m1, m2, n
!         .. Array Arguments ..
          Complex (wp) :: q1(ldq1, *), q2(ldq2, *), work(*), x1(*), x2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunbdb6
        Subroutine cunbdb(trans, signs, m, p, q, x11, ldx11, x12, ldx12, x21, &
          ldx21, x22, ldx22, theta, phi, taup1, taup2, tauq1, tauq2, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx12, ldx21, ldx22, lwork, m, p, q
          Character (1) :: signs, trans
!         .. Array Arguments ..
          Complex (wp) :: taup1(*), taup2(*), tauq1(*), tauq2(*), &
            work(*), x11(ldx11, *), x12(ldx12, *), x21(ldx21, *), &
            x22(ldx22, *)
          Real (wp) :: phi(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunbdb
        Subroutine cuncsd2by1(jobu1, jobu2, jobv1t, m, p, q, x11, ldx11, x21, &
          ldx21, theta, u1, ldu1, u2, ldu2, v1t, ldv1t, work, lwork, rwork, &
          lrwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldx11, ldx21, lrwork, lwork, m, &
            p, q
          Character (1) :: jobu1, jobu2, jobv1t
!         .. Array Arguments ..
          Complex (wp) :: u1(ldu1, *), u2(ldu2, *), v1t(ldv1t, *), &
            work(*), x11(ldx11, *), x21(ldx21, *)
          Real (wp) :: rwork(*), theta(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cuncsd2by1
        Recursive Subroutine cuncsd(jobu1, jobu2, jobv1t, jobv2t, trans, &
          signs, m, p, q, x11, ldx11, x12, ldx12, x21, ldx21, x22, ldx22, &
          theta, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, work, lwork, &
          rwork, lrwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldv2t, ldx11, ldx12, ldx21, &
            ldx22, lrwork, lwork, m, p, q
          Character (1) :: jobu1, jobu2, jobv1t, jobv2t, signs, trans
!         .. Array Arguments ..
          Complex (wp) :: u1(ldu1, *), u2(ldu2, *), v1t(ldv1t, *), &
            v2t(ldv2t, *), work(*), x11(ldx11, *), x12(ldx12, *), &
            x21(ldx21, *), x22(ldx22, *)
          Real (wp) :: rwork(*), theta(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cuncsd
        Subroutine cung2l(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cung2l
        Subroutine cung2r(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cung2r
        Subroutine cungbr(vect, m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
          Character (1) :: vect
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cungbr
        Subroutine cunghr(n, ilo, ihi, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, lwork, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunghr
        Subroutine cungl2(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cungl2
        Subroutine cunglq(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunglq
        Subroutine cungql(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cungql
        Subroutine cungqr(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cungqr
        Subroutine cungr2(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cungr2
        Subroutine cungrq(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cungrq
        Subroutine cungtr(uplo, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cungtr
        Subroutine cungtsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cungtsqr
        Subroutine cunhr_col(m, n, nb, a, lda, t, ldt, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), d(*), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunhr_col
        Subroutine cunm22(side, trans, m, n, n1, n2, q, ldq, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, ldq, lwork, m, n, n1, n2
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), q(ldq, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunm22
        Subroutine cunm2l(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunm2l
        Subroutine cunm2r(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunm2r
        Subroutine cunmbr(vect, side, trans, m, n, k, a, lda, tau, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans, vect
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunmbr
        Subroutine cunmhr(side, trans, m, n, ilo, ihi, a, lda, tau, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunmhr
        Subroutine cunml2(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunml2
        Subroutine cunmlq(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunmlq
        Subroutine cunmql(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunmql
        Subroutine cunmqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunmqr
        Subroutine cunmr2(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunmr2
        Subroutine cunmr3(side, trans, m, n, k, l, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunmr3
        Subroutine cunmrq(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunmrq
        Subroutine cunmrz(side, trans, m, n, k, l, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunmrz
        Subroutine cunmtr(side, uplo, trans, m, n, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldc, lwork, m, n
          Character (1) :: side, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cunmtr
        Subroutine cupgtr(uplo, n, ap, tau, q, ldq, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldq, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), q(ldq, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cupgtr
        Subroutine cupmtr(side, uplo, trans, m, n, ap, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, m, n
          Character (1) :: side, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine cupmtr
        Subroutine dbbcsd(jobu1, jobu2, jobv1t, jobv2t, trans, m, p, q, theta, &
          phi, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, b11d, b11e, b12d, &
          b12e, b21d, b21e, b22d, b22e, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldv2t, lwork, m, p, q
          Character (1) :: jobu1, jobu2, jobv1t, jobv2t, trans
!         .. Array Arguments ..
          Real (wp) :: b11d(*), b11e(*), b12d(*), b12e(*), b21d(*), &
            b21e(*), b22d(*), b22e(*), phi(*), theta(*), u1(ldu1, *), &
            u2(ldu2, *), v1t(ldv1t, *), v2t(ldv2t, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dbbcsd
        Subroutine dbdsdc(uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldu, ldvt, n
          Character (1) :: compq, uplo
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), q(*), u(ldu, *), vt(ldvt, *), work(*)
          Integer :: iq(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dbdsdc
        Subroutine dbdsqr(uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, &
          ldc, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, ldu, ldvt, n, ncc, ncvt, nru
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), d(*), e(*), u(ldu, *), vt(ldvt, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dbdsqr
        Subroutine dbdsvdx(uplo, jobz, range, n, d, e, vl, vu, il, iu, ns, s, &
          z, ldz, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: vl, vu
          Integer :: il, info, iu, ldz, n, ns
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), s(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dbdsvdx
        Subroutine dcombssq(v1, v2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Array Arguments ..
          Real (wp) :: v1(2), v2(2)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dcombssq
        Subroutine ddisna(job, m, n, d, sep, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, m, n
          Character (1) :: job
!         .. Array Arguments ..
          Real (wp) :: d(*), sep(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ddisna
        Subroutine dgbbrd(vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, &
          ldpt, c, ldc, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldc, ldpt, ldq, m, n, ncc
          Character (1) :: vect
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), c(ldc, *), d(*), e(*), pt(ldpt, *), &
            q(ldq, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbbrd
        Subroutine dgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, kl, ku, ldab, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbcon
        Subroutine dgbequb(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbequb
        Subroutine dgbequ(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbequ
        Subroutine dgbrfs(trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, &
          b, ldb, x, ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbrfs
        Subroutine dgbrfsx(trans, equed, n, kl, ku, nrhs, ab, ldab, afb, &
          ldafb, ipiv, r, c, b, ldb, x, ldx, rcond, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nparams, nrhs, &
            n_err_bnds
          Character (1) :: equed, trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            c(*), err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), &
            r(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbrfsx
        Subroutine dgbsv(n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbsv
        Subroutine dgbsvx(fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, &
          ipiv, equed, r, c, b, ldb, x, ldx, rcond, ferr, berr, work, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            c(*), ferr(*), r(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbsvx
        Subroutine dgbsvxx(fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, &
          ipiv, equed, r, c, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nparams, nrhs, &
            n_err_bnds
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            c(*), err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), &
            r(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbsvxx
        Subroutine dgbtf2(m, n, kl, ku, ab, ldab, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbtf2
        Subroutine dgbtrf(m, n, kl, ku, ab, ldab, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbtrf
        Subroutine dgbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgbtrs
        Subroutine dgebak(job, side, n, ilo, ihi, scale, m, v, ldv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldv, m, n
          Character (1) :: job, side
!         .. Array Arguments ..
          Real (wp) :: scale(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgebak
        Subroutine dgebal(job, n, a, lda, ilo, ihi, scale, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, n
          Character (1) :: job
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), scale(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgebal
        Subroutine dgebd2(m, n, a, lda, d, e, tauq, taup, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), taup(*), tauq(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgebd2
        Subroutine dgebrd(m, n, a, lda, d, e, tauq, taup, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), taup(*), tauq(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgebrd
        Subroutine dgecon(norm, n, a, lda, anorm, rcond, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgecon
        Subroutine dgeequb(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeequb
        Subroutine dgeequ(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeequ
        Subroutine dgees(jobvs, sort, select, n, a, lda, sdim, wr, wi, vs, &
          ldvs, work, lwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldvs, lwork, n, sdim
          Character (1) :: jobvs, sort
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), vs(ldvs, *), wi(*), work(*), wr(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: select
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgees
        Subroutine dgeesx(jobvs, sort, select, sense, n, a, lda, sdim, wr, wi, &
          vs, ldvs, rconde, rcondv, work, lwork, iwork, liwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rconde, rcondv
          Integer :: info, lda, ldvs, liwork, lwork, n, sdim
          Character (1) :: jobvs, sense, sort
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), vs(ldvs, *), wi(*), work(*), wr(*)
          Integer :: iwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: select
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeesx
        Subroutine dgeev(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), vl(ldvl, *), vr(ldvr, *), wi(*), &
            work(*), wr(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeev
        Subroutine dgeevx(balanc, jobvl, jobvr, sense, n, a, lda, wr, wi, vl, &
          ldvl, vr, ldvr, ilo, ihi, scale, abnrm, rconde, rcondv, work, lwork, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abnrm
          Integer :: ihi, ilo, info, lda, ldvl, ldvr, lwork, n
          Character (1) :: balanc, jobvl, jobvr, sense
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), rconde(*), rcondv(*), scale(*), &
            vl(ldvl, *), vr(ldvr, *), wi(*), work(*), wr(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeevx
        Subroutine dgegs(jobvsl, jobvsr, n, a, lda, b, ldb, alphar, alphai, &
          beta, vsl, ldvsl, vsr, ldvsr, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n
          Character (1) :: jobvsl, jobvsr
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vsl(ldvsl, *), vsr(ldvsr, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgegs
        Subroutine dgegv(jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai, &
          beta, vl, ldvl, vr, ldvr, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vl(ldvl, *), vr(ldvr, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgegv
        Subroutine dgehd2(n, ilo, ihi, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgehd2
        Subroutine dgehrd(n, ilo, ihi, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, lwork, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgehrd
        Subroutine dgejsv(joba, jobu, jobv, jobr, jobt, jobp, m, n, a, lda, &
          sva, u, ldu, v, ldv, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldv, lwork, m, n
          Character (1) :: joba, jobp, jobr, jobt, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), sva(n), u(ldu, *), v(ldv, *), &
            work(lwork)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgejsv
        Subroutine dgelq2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgelq2
        Subroutine dgelq(m, n, a, lda, t, tsize, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n, tsize
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgelq
        Subroutine dgelqf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgelqf
        Recursive Subroutine dgelqt3(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgelqt3
        Subroutine dgelqt(m, n, mb, a, lda, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, mb, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgelqt
        Subroutine dgelsd(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, &
          lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), s(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgelsd
        Subroutine dgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgels
        Subroutine dgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), s(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgelss
        Subroutine dgelsx(m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, m, n, nrhs, rank
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgelsx
        Subroutine dgelsy(m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgelsy
        Subroutine dgemlq(side, trans, m, n, k, a, lda, t, tsize, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n, tsize
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgemlq
        Subroutine dgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, ldc, ldt, ldv, m, mb, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgemlqt
        Subroutine dgemqr(side, trans, m, n, k, a, lda, t, tsize, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n, tsize
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgemqr
        Subroutine dgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, ldc, ldt, ldv, m, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgemqrt
        Subroutine dgeql2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeql2
        Subroutine dgeqlf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqlf
        Subroutine dgeqp3(m, n, a, lda, jpvt, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqp3
        Subroutine dgeqpf(m, n, a, lda, jpvt, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqpf
        Subroutine dgeqr2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqr2
        Subroutine dgeqr2p(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqr2p
        Subroutine dgeqr(m, n, a, lda, t, tsize, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n, tsize
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqr
        Subroutine dgeqrf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqrf
        Subroutine dgeqrfp(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqrfp
        Subroutine dgeqrt2(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqrt2
        Recursive Subroutine dgeqrt3(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqrt3
        Subroutine dgeqrt(m, n, nb, a, lda, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgeqrt
        Subroutine dgerfs(trans, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, &
          ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgerfs
        Subroutine dgerfsx(trans, equed, n, nrhs, a, lda, af, ldaf, ipiv, r, &
          c, b, ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), c(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), r(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgerfsx
        Subroutine dgerq2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgerq2
        Subroutine dgerqf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgerqf
        Subroutine dgesc2(n, a, lda, rhs, ipiv, jpiv, scale)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), rhs(*)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgesc2
        Subroutine dgesdd(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, &
          lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldvt, lwork, m, n
          Character (1) :: jobz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*), u(ldu, *), vt(ldvt, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgesdd
        Subroutine dgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldvt, lwork, m, n
          Character (1) :: jobu, jobvt
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*), u(ldu, *), vt(ldvt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgesvd
        Subroutine dgesvdq(joba, jobp, jobr, jobu, jobv, m, n, a, lda, s, u, &
          ldu, v, ldv, numrank, iwork, liwork, work, lwork, rwork, lrwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldv, liwork, lrwork, lwork, m, n, numrank
          Character (1) :: joba, jobp, jobr, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), rwork(*), s(*), u(ldu, *), v(ldv, *), &
            work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgesvdq
        Subroutine dgesvdx(jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, &
          ns, s, u, ldu, vt, ldvt, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: vl, vu
          Integer :: il, info, iu, lda, ldu, ldvt, lwork, m, n, ns
          Character (1) :: jobu, jobvt, range
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*), u(ldu, *), vt(ldvt, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgesvdx
        Subroutine dgesv(n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgesv
        Subroutine dgesvj(joba, jobu, jobv, m, n, a, lda, sva, mv, v, ldv, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldv, lwork, m, mv, n
          Character (1) :: joba, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), sva(n), v(ldv, *), work(lwork)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgesvj
        Subroutine dgesvx(fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, equed, &
          r, c, b, ldb, x, ldx, rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), c(*), &
            ferr(*), r(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgesvx
        Subroutine dgesvxx(fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, &
          equed, r, c, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), c(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), r(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgesvxx
        Subroutine dgetc2(n, a, lda, ipiv, jpiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgetc2
        Subroutine dgetf2(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgetf2
        Recursive Subroutine dgetrf2(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgetrf2
        Subroutine dgetrf(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgetrf
        Subroutine dgetri(n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgetri
        Subroutine dgetrs(trans, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgetrs
        Subroutine dgetsls(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgetsls
        Subroutine dggbak(job, side, n, ilo, ihi, lscale, rscale, m, v, ldv, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldv, m, n
          Character (1) :: job, side
!         .. Array Arguments ..
          Real (wp) :: lscale(*), rscale(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggbak
        Subroutine dggbal(job, n, a, lda, b, ldb, ilo, ihi, lscale, rscale, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, n
          Character (1) :: job
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), lscale(*), rscale(*), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggbal
        Subroutine dgges3(jobvsl, jobvsr, sort, selctg, n, a, lda, b, ldb, &
          sdim, alphar, alphai, beta, vsl, ldvsl, vsr, ldvsr, work, lwork, &
          bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sort
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgges3
        Subroutine dgges(jobvsl, jobvsr, sort, selctg, n, a, lda, b, ldb, &
          sdim, alphar, alphai, beta, vsl, ldvsl, vsr, ldvsr, work, lwork, &
          bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sort
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgges
        Subroutine dggesx(jobvsl, jobvsr, sort, selctg, sense, n, a, lda, b, &
          ldb, sdim, alphar, alphai, beta, vsl, ldvsl, vsr, ldvsr, rconde, &
          rcondv, work, lwork, iwork, liwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, liwork, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sense, sort
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), rconde(2), rcondv(2), vsl(ldvsl, *), vsr(ldvsr, *), &
            work(*)
          Integer :: iwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggesx
        Subroutine dggev3(jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai, &
          beta, vl, ldvl, vr, ldvr, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vl(ldvl, *), vr(ldvr, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggev3
        Subroutine dggev(jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai, &
          beta, vl, ldvl, vr, ldvr, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vl(ldvl, *), vr(ldvr, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggev
        Subroutine 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)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abnrm, bbnrm
          Integer :: ihi, ilo, info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: balanc, jobvl, jobvr, sense
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), lscale(*), rconde(*), rcondv(*), rscale(*), vl(ldvl, *), &
            vr(ldvr, *), work(*)
          Integer :: iwork(*)
          Logical :: bwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggevx
        Subroutine dggglm(n, m, p, a, lda, b, ldb, d, x, y, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), d(*), work(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggglm
        Subroutine dgghd3(compq, compz, n, ilo, ihi, a, lda, b, ldb, q, ldq, &
          z, ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, ldq, ldz, lwork, n
          Character (1) :: compq, compz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), work(*), &
            z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgghd3
        Subroutine dgghrd(compq, compz, n, ilo, ihi, a, lda, b, ldb, q, ldq, &
          z, ldz, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, ldq, ldz, n
          Character (1) :: compq, compz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgghrd
        Subroutine dgglse(m, n, p, a, lda, b, ldb, c, d, x, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), c(*), d(*), work(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgglse
        Subroutine dggqrf(n, m, p, a, lda, taua, b, ldb, taub, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), taua(*), taub(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggqrf
        Subroutine dggrqf(m, p, n, a, lda, taua, b, ldb, taub, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), taua(*), taub(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggrqf
        Subroutine dggsvd3(jobu, jobv, jobq, m, n, p, k, l, a, lda, b, ldb, &
          alpha, beta, u, ldu, v, ldv, q, ldq, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, lwork, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            q(ldq, *), u(ldu, *), v(ldv, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggsvd3
        Subroutine dggsvd(jobu, jobv, jobq, m, n, p, k, l, a, lda, b, ldb, &
          alpha, beta, u, ldu, v, ldv, q, ldq, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            q(ldq, *), u(ldu, *), v(ldv, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggsvd
        Subroutine dggsvp3(jobu, jobv, jobq, m, p, n, a, lda, b, ldb, tola, &
          tolb, k, l, u, ldu, v, ldv, q, ldq, iwork, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, lwork, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), tau(*), &
            u(ldu, *), v(ldv, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggsvp3
        Subroutine dggsvp(jobu, jobv, jobq, m, p, n, a, lda, b, ldb, tola, &
          tolb, k, l, u, ldu, v, ldv, q, ldq, iwork, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), tau(*), &
            u(ldu, *), v(ldv, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dggsvp
        Subroutine dgsvj0(jobv, m, n, a, lda, d, sva, mv, v, ldv, eps, sfmin, &
          tol, nsweep, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: eps, sfmin, tol
          Integer :: info, lda, ldv, lwork, m, mv, n, nsweep
          Character (1) :: jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(n), sva(n), v(ldv, *), work(lwork)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgsvj0
        Subroutine dgsvj1(jobv, m, n, n1, a, lda, d, sva, mv, v, ldv, eps, &
          sfmin, tol, nsweep, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: eps, sfmin, tol
          Integer :: info, lda, ldv, lwork, m, mv, n, n1, nsweep
          Character (1) :: jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(n), sva(n), v(ldv, *), work(lwork)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgsvj1
        Subroutine dgtcon(norm, n, dl, d, du, du2, ipiv, anorm, rcond, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: d(*), dl(*), du(*), du2(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgtcon
        Subroutine dgtrfs(trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv, &
          b, ldb, x, ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), berr(*), d(*), df(*), dl(*), dlf(*), &
            du(*), du2(*), duf(*), ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgtrfs
        Subroutine dgtsv(n, nrhs, dl, d, du, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), dl(*), du(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgtsv
        Subroutine dgtsvx(fact, trans, n, nrhs, dl, d, du, dlf, df, duf, du2, &
          ipiv, b, ldb, x, ldx, rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact, trans
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), berr(*), d(*), df(*), dl(*), dlf(*), &
            du(*), du2(*), duf(*), ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgtsvx
        Subroutine dgttrf(n, dl, d, du, du2, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgttrf
        Subroutine dgttrs(trans, n, nrhs, dl, d, du, du2, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgttrs
        Subroutine dgtts2(itrans, n, nrhs, dl, d, du, du2, ipiv, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: itrans, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dgtts2
        Subroutine dhgeqz(job, compq, compz, n, ilo, ihi, h, ldh, t, ldt, &
          alphar, alphai, beta, q, ldq, z, ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldh, ldq, ldt, ldz, lwork, n
          Character (1) :: compq, compz, job
!         .. Array Arguments ..
          Real (wp) :: alphai(*), alphar(*), beta(*), h(ldh, *), &
            q(ldq, *), t(ldt, *), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dhgeqz
        Subroutine dhsein(side, eigsrc, initv, select, n, h, ldh, wr, wi, vl, &
          ldvl, vr, ldvr, mm, m, work, ifaill, ifailr, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldh, ldvl, ldvr, m, mm, n
          Character (1) :: eigsrc, initv, side
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), vl(ldvl, *), vr(ldvr, *), wi(*), &
            work(*), wr(*)
          Integer :: ifaill(*), ifailr(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dhsein
        Subroutine dhseqr(job, compz, n, ilo, ihi, h, ldh, wr, wi, z, ldz, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldh, ldz, lwork, n
          Character (1) :: compz, job
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), wi(*), work(*), wr(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dhseqr
        Function disnan(din)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Logical :: disnan
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp), Intent (In) :: din
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function disnan
        Subroutine dlabad(small, large)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: large, small
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlabad
        Subroutine dlabrd(m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldx, ldy, m, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), taup(*), tauq(*), &
            x(ldx, *), y(ldy, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlabrd
        Subroutine dlacn2(n, v, x, isgn, est, kase, isave)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: est
          Integer :: kase, n
!         .. Array Arguments ..
          Real (wp) :: v(*), x(*)
          Integer :: isave(3), isgn(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlacn2
        Subroutine dlacon(n, v, x, isgn, est, kase)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: est
          Integer :: kase, n
!         .. Array Arguments ..
          Real (wp) :: v(*), x(*)
          Integer :: isgn(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlacon
        Subroutine dlacpy(uplo, m, n, a, lda, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldb, m, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlacpy
        Subroutine dladiv(a, b, c, d, p, q)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, d, p, q
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dladiv
        Subroutine dladiv1(a, b, c, d, p, q)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, d, p, q
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dladiv1
        Function dladiv2(a, b, c, d, r, t)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, d, r, t
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dladiv2
        End Function dladiv2
        Subroutine dlae2(a, b, c, rt1, rt2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, rt1, rt2
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlae2
        Subroutine dlaebz(ijob, nitmax, n, mmax, minp, nbmin, abstol, reltol, &
          pivmin, d, e, e2, nval, ab, c, mout, nab, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, pivmin, reltol
          Integer :: ijob, info, minp, mmax, mout, n, nbmin, nitmax
!         .. Array Arguments ..
          Real (wp) :: ab(mmax, *), c(*), d(*), e(*), e2(*), work(*)
          Integer :: iwork(*), nab(mmax, *), nval(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaebz
        Subroutine dlaed0(icompq, qsiz, n, d, e, q, ldq, qstore, ldqs, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: icompq, info, ldq, ldqs, n, qsiz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), q(ldq, *), qstore(ldqs, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaed0
        Subroutine dlaed1(n, d, q, ldq, indxq, rho, cutpnt, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: cutpnt, info, ldq, n
!         .. Array Arguments ..
          Real (wp) :: d(*), q(ldq, *), work(*)
          Integer :: indxq(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaed1
        Subroutine dlaed2(k, n, n1, d, q, ldq, indxq, rho, z, dlamda, w, q2, &
          indx, indxc, indxp, coltyp, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: info, k, ldq, n, n1
!         .. Array Arguments ..
          Real (wp) :: d(*), dlamda(*), q(ldq, *), q2(*), w(*), z(*)
          Integer :: coltyp(*), indx(*), indxc(*), indxp(*), indxq(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaed2
        Subroutine dlaed3(k, n, n1, d, q, ldq, rho, dlamda, q2, indx, ctot, w, &
          s, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: info, k, ldq, n, n1
!         .. Array Arguments ..
          Real (wp) :: d(*), dlamda(*), q(ldq, *), q2(*), s(*), w(*)
          Integer :: ctot(*), indx(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaed3
        Subroutine dlaed4(n, i, d, z, delta, rho, dlam, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dlam, rho
          Integer :: i, info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), delta(*), z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaed4
        Subroutine dlaed5(i, d, z, delta, rho, dlam)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dlam, rho
          Integer :: i
!         .. Array Arguments ..
          Real (wp) :: d(2), delta(2), z(2)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaed5
        Subroutine dlaed6(kniter, orgati, rho, d, z, finit, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: finit, rho, tau
          Integer :: info, kniter
          Logical :: orgati
!         .. Array Arguments ..
          Real (wp) :: d(3), z(3)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaed6
        Subroutine dlaed7(icompq, n, qsiz, tlvls, curlvl, curpbm, d, q, ldq, &
          indxq, rho, cutpnt, qstore, qptr, prmptr, perm, givptr, givcol, &
          givnum, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: curlvl, curpbm, cutpnt, icompq, info, ldq, n, qsiz, tlvls
!         .. Array Arguments ..
          Real (wp) :: d(*), givnum(2, *), q(ldq, *), qstore(*), work(*)
          Integer :: givcol(2, *), givptr(*), indxq(*), iwork(*), perm(*), &
            prmptr(*), qptr(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaed7
        Subroutine dlaed8(icompq, k, n, qsiz, d, q, ldq, indxq, rho, cutpnt, &
          z, dlamda, q2, ldq2, w, perm, givptr, givcol, givnum, indxp, indx, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: cutpnt, givptr, icompq, info, k, ldq, ldq2, n, qsiz
!         .. Array Arguments ..
          Real (wp) :: d(*), dlamda(*), givnum(2, *), q(ldq, *), &
            q2(ldq2, *), w(*), z(*)
          Integer :: givcol(2, *), indx(*), indxp(*), indxq(*), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaed8
        Subroutine dlaed9(k, kstart, kstop, n, d, q, ldq, rho, dlamda, w, s, &
          lds, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: info, k, kstart, kstop, ldq, lds, n
!         .. Array Arguments ..
          Real (wp) :: d(*), dlamda(*), q(ldq, *), s(lds, *), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaed9
        Subroutine dlaeda(n, tlvls, curlvl, curpbm, prmptr, perm, givptr, &
          givcol, givnum, q, qptr, z, ztemp, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: curlvl, curpbm, info, n, tlvls
!         .. Array Arguments ..
          Real (wp) :: givnum(2, *), q(*), z(*), ztemp(*)
          Integer :: givcol(2, *), givptr(*), perm(*), prmptr(*), qptr(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaeda
        Subroutine dlaein(rightv, noinit, n, h, ldh, wr, wi, vr, vi, b, ldb, &
          work, eps3, smlnum, bignum, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: bignum, eps3, smlnum, wi, wr
          Integer :: info, ldb, ldh, n
          Logical :: noinit, rightv
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), h(ldh, *), vi(*), vr(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaein
        Subroutine dlaev2(a, b, c, rt1, rt2, cs1, sn1)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, cs1, rt1, rt2, sn1
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaev2
        Subroutine dlaexc(wantq, n, t, ldt, q, ldq, j1, n1, n2, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, j1, ldq, ldt, n, n1, n2
          Logical :: wantq
!         .. Array Arguments ..
          Real (wp) :: q(ldq, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaexc
        Subroutine dlag2(a, lda, b, ldb, safmin, scale1, scale2, wr1, wr2, wi)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: safmin, scale1, scale2, wi, wr1, wr2
          Integer :: lda, ldb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlag2
        Subroutine dlag2s(m, n, a, lda, sa, ldsa, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: sp = kind(0.0)
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldsa, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Real (sp) :: sa(ldsa, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlag2s
        Subroutine dla_gbamv(trans, m, n, kl, ku, alpha, ab, ldab, x, incx, &
          beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, kl, ku, ldab, m, n, trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dla_gbamv
        Function dla_gbrcond(trans, n, kl, ku, ab, ldab, afb, ldafb, ipiv, &
          cmode, c, info, work, iwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: cmode, info, kl, ku, ldab, ldafb, n
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), c(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dla_gbrcond
        End Function dla_gbrcond
        Subroutine dla_gbrfsx_extended(prec_type, trans_type, n, kl, ku, nrhs, &
          ab, ldab, afb, ldafb, ipiv, colequ, c, b, ldb, y, ldy, berr_out, &
          n_norms, err_bnds_norm, err_bnds_comp, res, ayb, dy, y_tail, rcond, &
          ithresh, rthresh, dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, kl, ku, ldab, ldafb, ldb, ldy, n, nrhs, &
            n_norms, prec_type, trans_type
          Logical :: colequ, ignore_cwise
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), ayb(*), b(ldb, *), &
            berr_out(*), c(*), dy(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), res(*), y(ldy, *), y_tail(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dla_gbrfsx_extended
        Function dla_gbrpvgrw(n, kl, ku, ncols, ab, ldab, afb, ldafb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: kl, ku, ldab, ldafb, n, ncols
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dla_gbrpvgrw
        End Function dla_gbrpvgrw
        Subroutine dla_geamv(trans, m, n, alpha, a, lda, x, incx, beta, y, &
          incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, lda, m, n, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dla_geamv
        Function dla_gercond(trans, n, a, lda, af, ldaf, ipiv, cmode, c, info, &
          work, iwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: cmode, info, lda, ldaf, n
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), c(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dla_gercond
        End Function dla_gercond
        Subroutine dla_gerfsx_extended(prec_type, trans_type, n, nrhs, a, lda, &
          af, ldaf, ipiv, colequ, c, b, ldb, y, ldy, berr_out, n_norms, &
          errs_n, errs_c, res, ayb, dy, y_tail, rcond, ithresh, rthresh, &
          dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type, trans_type
          Logical :: colequ, ignore_cwise
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), ayb(*), b(ldb, *), &
            berr_out(*), c(*), dy(*), errs_c(nrhs, *), errs_n(nrhs, *), &
            res(*), y(ldy, *), y_tail(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dla_gerfsx_extended
        Function dla_gerpvgrw(n, ncols, a, lda, af, ldaf)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldaf, n, ncols
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dla_gerpvgrw
        End Function dla_gerpvgrw
        Subroutine dlags2(upper, a1, a2, a3, b1, b2, b3, csu, snu, csv, snv, &
          csq, snq)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: a1, a2, a3, b1, b2, b3, csq, csu, csv, snq, snu, &
            snv
          Logical :: upper
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlags2
        Subroutine dlagtf(n, a, lambda, b, c, tol, d, in, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: lambda, tol
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: a(*), b(*), c(*), d(*)
          Integer :: in(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlagtf
        Subroutine dlagtm(trans, n, nrhs, alpha, dl, d, du, x, ldx, beta, b, &
          ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), dl(*), du(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlagtm
        Subroutine dlagts(job, n, a, b, c, d, in, y, tol, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tol
          Integer :: info, job, n
!         .. Array Arguments ..
          Real (wp) :: a(*), b(*), c(*), d(*), y(*)
          Integer :: in(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlagts
        Subroutine dlagv2(a, lda, b, ldb, alphar, alphai, beta, csl, snl, csr, &
          snr)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: csl, csr, snl, snr
          Integer :: lda, ldb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(2), alphar(2), b(ldb, *), &
            beta(2)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlagv2
        Subroutine dlahqr(wantt, wantz, n, ilo, ihi, h, ldh, wr, wi, iloz, &
          ihiz, z, ldz, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), wi(*), wr(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlahqr
        Subroutine dlahr2(n, k, nb, a, lda, tau, t, ldt, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, lda, ldt, ldy, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, nb), tau(nb), y(ldy, nb)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlahr2
        Subroutine dlahrd(n, k, nb, a, lda, tau, t, ldt, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, lda, ldt, ldy, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, nb), tau(nb), y(ldy, nb)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlahrd
        Subroutine dlaic1(job, j, x, sest, w, gamma, sestpr, s, c)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: c, gamma, s, sest, sestpr
          Integer :: j, job
!         .. Array Arguments ..
          Real (wp) :: w(j), x(j)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaic1
        Function dlaisnan(din1, din2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Logical :: dlaisnan
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp), Intent (In) :: din1, din2
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function dlaisnan
        Subroutine dla_lin_berr(n, nz, nrhs, res, ayb, berr)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n, nrhs, nz
!         .. Array Arguments ..
          Real (wp) :: ayb(n, nrhs), berr(nrhs), res(n, nrhs)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dla_lin_berr
        Subroutine dlaln2(ltrans, na, nw, smin, ca, a, lda, d1, d2, b, ldb, &
          wr, wi, x, ldx, scale, xnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: ca, d1, d2, scale, smin, wi, wr, xnorm
          Integer :: info, lda, ldb, ldx, na, nw
          Logical :: ltrans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaln2
        Subroutine dlals0(icompq, nl, nr, sqre, nrhs, b, ldb, bx, ldbx, perm, &
          givptr, givcol, ldgcol, givnum, ldgnum, poles, difl, difr, z, k, c, &
          s, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: c, s
          Integer :: givptr, icompq, info, k, ldb, ldbx, ldgcol, ldgnum, nl, &
            nr, nrhs, sqre
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), bx(ldbx, *), difl(*), difr(ldgnum, *), &
            givnum(ldgnum, *), poles(ldgnum, *), work(*), z(*)
          Integer :: givcol(ldgcol, *), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlals0
        Subroutine dlalsa(icompq, smlsiz, n, nrhs, b, ldb, bx, ldbx, u, ldu, &
          vt, k, difl, difr, z, poles, givptr, givcol, ldgcol, perm, givnum, &
          c, s, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: icompq, info, ldb, ldbx, ldgcol, ldu, n, nrhs, smlsiz
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), bx(ldbx, *), c(*), difl(ldu, *), &
            difr(ldu, *), givnum(ldu, *), poles(ldu, *), s(*), u(ldu, *), &
            vt(ldu, *), work(*), z(ldu, *)
          Integer :: givcol(ldgcol, *), givptr(*), iwork(*), k(*), &
            perm(ldgcol, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlalsa
        Subroutine dlalsd(uplo, smlsiz, n, nrhs, d, e, b, ldb, rcond, rank, &
          work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, n, nrhs, rank, smlsiz
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), e(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlalsd
        Function dlamc3(a, b)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlamc3
        End Function dlamc3
        Function dlamch(cmach)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Character (1) :: cmach
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlamch
        End Function dlamch
        Subroutine dlamrg(n1, n2, a, dtrd1, dtrd2, index)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: dtrd1, dtrd2, n1, n2
!         .. Array Arguments ..
          Real (wp) :: a(*)
          Integer :: index(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlamrg
        Subroutine dlamswlq(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, &
          ldc, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, ldt, lwork, m, mb, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlamswlq
        Subroutine dlamtsqr(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, &
          ldc, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, ldt, lwork, m, mb, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlamtsqr
        Function dlaneg(n, d, lld, sigma, pivmin, r)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: dlaneg
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, sigma
          Integer :: n, r
!         .. Array Arguments ..
          Real (wp) :: d(*), lld(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function dlaneg
        Function dlangb(norm, n, kl, ku, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: kl, ku, ldab, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlangb
        End Function dlangb
        Function dlange(norm, m, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlange
        End Function dlange
        Function dlangt(norm, n, dl, d, du)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: d(*), dl(*), du(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlangt
        End Function dlangt
        Function dlanhs(norm, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlanhs
        End Function dlanhs
        Function dlansb(norm, uplo, n, k, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldab, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlansb
        End Function dlansb
        Function dlansf(norm, transr, uplo, n, a, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm, transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*), work(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlansf
        End Function dlansf
        Function dlansp(norm, uplo, n, ap, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlansp
        End Function dlansp
        Function dlanst(norm, n, d, e)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlanst
        End Function dlanst
        Function dlansy(norm, uplo, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlansy
        End Function dlansy
        Function dlantb(norm, uplo, diag, n, k, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldab, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlantb
        End Function dlantb
        Function dlantp(norm, uplo, diag, n, ap, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlantp
        End Function dlantp
        Function dlantr(norm, uplo, diag, m, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlantr
        End Function dlantr
        Subroutine dlanv2(a, b, c, d, rt1r, rt1i, rt2r, rt2i, cs, sn)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, cs, d, rt1i, rt1r, rt2i, rt2r, sn
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlanv2
        Recursive Subroutine dlaorhr_col_getrfnp2(m, n, a, lda, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaorhr_col_getrfnp2
        Subroutine dlaorhr_col_getrfnp(m, n, a, lda, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaorhr_col_getrfnp
        Subroutine dlapll(n, x, incx, y, incy, ssmin)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: ssmin
          Integer :: incx, incy, n
!         .. Array Arguments ..
          Real (wp) :: x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlapll
        Subroutine dlapmr(forwrd, m, n, x, ldx, k)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
          Logical :: forwrd
!         .. Array Arguments ..
          Real (wp) :: x(ldx, *)
          Integer :: k(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlapmr
        Subroutine dlapmt(forwrd, m, n, x, ldx, k)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
          Logical :: forwrd
!         .. Array Arguments ..
          Real (wp) :: x(ldx, *)
          Integer :: k(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlapmt
        Function dla_porcond(uplo, n, a, lda, af, ldaf, cmode, c, info, work, &
          iwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: cmode, info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), c(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dla_porcond
        End Function dla_porcond
        Subroutine dla_porfsx_extended(prec_type, uplo, n, nrhs, a, lda, af, &
          ldaf, colequ, c, b, ldb, y, ldy, berr_out, n_norms, err_bnds_norm, &
          err_bnds_comp, res, ayb, dy, y_tail, rcond, ithresh, rthresh, dz_ub, &
          ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type
          Logical :: colequ, ignore_cwise
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), ayb(*), b(ldb, *), &
            berr_out(*), c(*), dy(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), res(*), y(ldy, *), y_tail(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dla_porfsx_extended
        Function dla_porpvgrw(uplo, ncols, a, lda, af, ldaf, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldaf, ncols
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dla_porpvgrw
        End Function dla_porpvgrw
        Function dlapy2(x, y)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: x, y
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlapy2
        End Function dlapy2
        Function dlapy3(x, y, z)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: x, y, z
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dlapy3
        End Function dlapy3
        Subroutine dlaqgb(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: kl, ku, ldab, m, n
          Character (1) :: equed
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqgb
        Subroutine dlaqge(m, n, a, lda, r, c, rowcnd, colcnd, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: lda, m, n
          Character (1) :: equed
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqge
        Subroutine dlaqp2(m, n, offset, a, lda, jpvt, tau, vn1, vn2, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n, offset
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), vn1(*), vn2(*), work(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqp2
        Subroutine dlaqps(m, n, offset, nb, kb, a, lda, jpvt, tau, vn1, vn2, &
          auxv, f, ldf)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: kb, lda, ldf, m, n, nb, offset
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), auxv(*), f(ldf, *), tau(*), vn1(*), &
            vn2(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqps
        Subroutine dlaqr0(wantt, wantz, n, ilo, ihi, h, ldh, wr, wi, iloz, &
          ihiz, z, ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, lwork, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), wi(*), work(*), wr(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqr0
        Subroutine dlaqr1(n, h, ldh, sr1, si1, sr2, si2, v)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: si1, si2, sr1, sr2
          Integer :: ldh, n
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), v(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqr1
        Subroutine dlaqr2(wantt, wantz, n, ktop, kbot, nw, h, ldh, iloz, ihiz, &
          z, ldz, ns, nd, sr, si, v, ldv, nh, t, ldt, nv, wv, ldwv, work, &
          lwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kbot, ktop, ldh, ldt, ldv, ldwv, ldz, lwork, &
            n, nd, nh, ns, nv, nw
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), si(*), sr(*), t(ldt, *), v(ldv, *), &
            work(*), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqr2
        Subroutine dlaqr3(wantt, wantz, n, ktop, kbot, nw, h, ldh, iloz, ihiz, &
          z, ldz, ns, nd, sr, si, v, ldv, nh, t, ldt, nv, wv, ldwv, work, &
          lwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kbot, ktop, ldh, ldt, ldv, ldwv, ldz, lwork, &
            n, nd, nh, ns, nv, nw
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), si(*), sr(*), t(ldt, *), v(ldv, *), &
            work(*), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqr3
        Subroutine dlaqr4(wantt, wantz, n, ilo, ihi, h, ldh, wr, wi, iloz, &
          ihiz, z, ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, lwork, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), wi(*), work(*), wr(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqr4
        Subroutine dlaqr5(wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, &
          h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, &
          ldwh)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kacc22, kbot, ktop, ldh, ldu, ldv, ldwh, &
            ldwv, ldz, n, nh, nshfts, nv
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), si(*), sr(*), u(ldu, *), v(ldv, *), &
            wh(ldwh, *), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqr5
        Subroutine dlaqsb(uplo, n, kd, ab, ldab, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: kd, ldab, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqsb
        Subroutine dlaqsp(uplo, n, ap, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqsp
        Subroutine dlaqsy(uplo, n, a, lda, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: lda, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqsy
        Subroutine dlaqtr(ltran, lreal, n, t, ldt, b, w, scale, x, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale, w
          Integer :: info, ldt, n
          Logical :: lreal, ltran
!         .. Array Arguments ..
          Real (wp) :: b(*), t(ldt, *), work(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaqtr
        Subroutine dlar1v(n, b1, bn, lambda, d, l, ld, lld, pivmin, gaptol, z, &
          wantnc, negcnt, ztz, mingma, r, isuppz, nrminv, resid, rqcorr, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: gaptol, lambda, mingma, nrminv, pivmin, resid, &
            rqcorr, ztz
          Integer :: b1, bn, n, negcnt, r
          Logical :: wantnc
!         .. Array Arguments ..
          Real (wp) :: d(*), l(*), ld(*), lld(*), work(*), z(*)
          Integer :: isuppz(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlar1v
        Subroutine dlar2v(n, x, y, z, incx, c, s, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, n
!         .. Array Arguments ..
          Real (wp) :: c(*), s(*), x(*), y(*), z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlar2v
        Subroutine dlarfb(side, trans, direct, storev, m, n, k, v, ldv, t, &
          ldt, c, ldc, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldc, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarfb
        Subroutine dlarf(side, m, n, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tau
          Integer :: incv, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarf
        Subroutine dlarfg(n, alpha, x, incx, tau)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, tau
          Integer :: incx, n
!         .. Array Arguments ..
          Real (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarfg
        Subroutine dlarfgp(n, alpha, x, incx, tau)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, tau
          Integer :: incx, n
!         .. Array Arguments ..
          Real (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarfgp
        Subroutine dlarft(direct, storev, n, k, v, ldv, tau, t, ldt)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldt, ldv, n
          Character (1) :: direct, storev
!         .. Array Arguments ..
          Real (wp) :: t(ldt, *), tau(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarft
        Subroutine dlarfx(side, m, n, v, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tau
          Integer :: ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarfx
        Subroutine dlarfy(uplo, n, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tau
          Integer :: incv, ldc, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarfy
        Subroutine dlargv(n, x, incx, y, incy, c, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, incy, n
!         .. Array Arguments ..
          Real (wp) :: c(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlargv
        Subroutine dlarnv(idist, iseed, n, x)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: idist, n
!         .. Array Arguments ..
          Real (wp) :: x(*)
          Integer :: iseed(4)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarnv
        Subroutine dlarra(n, d, e, e2, spltol, tnrm, nsplit, isplit, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: spltol, tnrm
          Integer :: info, n, nsplit
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), e2(*)
          Integer :: isplit(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarra
        Subroutine dlarrb(n, d, lld, ifirst, ilast, rtol1, rtol2, offset, w, &
          wgap, werr, work, iwork, pivmin, spdiam, twist, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, rtol1, rtol2, spdiam
          Integer :: ifirst, ilast, info, n, offset, twist
!         .. Array Arguments ..
          Real (wp) :: d(*), lld(*), w(*), werr(*), wgap(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarrb
        Subroutine dlarrc(jobt, n, vl, vu, d, e, pivmin, eigcnt, lcnt, rcnt, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, vl, vu
          Integer :: eigcnt, info, lcnt, n, rcnt
          Character (1) :: jobt
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarrc
        Subroutine dlarrd(range, order, n, vl, vu, il, iu, gers, reltol, d, e, &
          e2, pivmin, nsplit, isplit, m, w, werr, wl, wu, iblock, indexw, &
          work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, reltol, vl, vu, wl, wu
          Integer :: il, info, iu, m, n, nsplit
          Character (1) :: order, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), e2(*), gers(*), w(*), werr(*), work(*)
          Integer :: iblock(*), indexw(*), isplit(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarrd
        Subroutine dlarre(range, n, vl, vu, il, iu, d, e, e2, rtol1, rtol2, &
          spltol, nsplit, isplit, m, w, werr, wgap, iblock, indexw, gers, &
          pivmin, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, rtol1, rtol2, spltol, vl, vu
          Integer :: il, info, iu, m, n, nsplit
          Character (1) :: range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), e2(*), gers(*), w(*), werr(*), &
            wgap(*), work(*)
          Integer :: iblock(*), indexw(*), isplit(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarre
        Subroutine dlarrf(n, d, l, ld, clstrt, clend, w, wgap, werr, spdiam, &
          clgapl, clgapr, pivmin, sigma, dplus, lplus, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: clgapl, clgapr, pivmin, sigma, spdiam
          Integer :: clend, clstrt, info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), dplus(*), l(*), ld(*), lplus(*), w(*), &
            werr(*), wgap(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarrf
        Subroutine dlarrj(n, d, e2, ifirst, ilast, rtol, offset, w, werr, &
          work, iwork, pivmin, spdiam, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, rtol, spdiam
          Integer :: ifirst, ilast, info, n, offset
!         .. Array Arguments ..
          Real (wp) :: d(*), e2(*), w(*), werr(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarrj
        Subroutine dlarrk(n, iw, gl, gu, d, e2, pivmin, reltol, w, werr, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: gl, gu, pivmin, reltol, w, werr
          Integer :: info, iw, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarrk
        Subroutine dlarrr(n, d, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarrr
        Subroutine dlarrv(n, vl, vu, d, l, pivmin, isplit, m, dol, dou, &
          minrgp, rtol1, rtol2, w, werr, wgap, iblock, indexw, gers, z, ldz, &
          isuppz, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: minrgp, pivmin, rtol1, rtol2, vl, vu
          Integer :: dol, dou, info, ldz, m, n
!         .. Array Arguments ..
          Real (wp) :: d(*), gers(*), l(*), w(*), werr(*), wgap(*), &
            work(*), z(ldz, *)
          Integer :: iblock(*), indexw(*), isplit(*), isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarrv
        Subroutine dlarscl2(m, n, d, x, ldx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
!         .. Array Arguments ..
          Real (wp) :: d(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarscl2
        Subroutine dlartg(f, g, cs, sn, r)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: cs, f, g, r, sn
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlartg
        Subroutine dlartgp(f, g, cs, sn, r)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: cs, f, g, r, sn
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlartgp
        Subroutine dlartgs(x, y, sigma, cs, sn)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: cs, sigma, sn, x, y
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlartgs
        Subroutine dlartv(n, x, incx, y, incy, c, s, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, incy, n
!         .. Array Arguments ..
          Real (wp) :: c(*), s(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlartv
        Subroutine dlaruv(iseed, n, x)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
!         .. Array Arguments ..
          Real (wp) :: x(n)
          Integer :: iseed(4)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaruv
        Subroutine dlarzb(side, trans, direct, storev, m, n, k, l, v, ldv, t, &
          ldt, c, ldc, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, l, ldc, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarzb
        Subroutine dlarz(side, m, n, l, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tau
          Integer :: incv, l, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarz
        Subroutine dlarzt(direct, storev, n, k, v, ldv, tau, t, ldt)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldt, ldv, n
          Character (1) :: direct, storev
!         .. Array Arguments ..
          Real (wp) :: t(ldt, *), tau(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlarzt
        Subroutine dlas2(f, g, h, ssmin, ssmax)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: f, g, h, ssmax, ssmin
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlas2
        Subroutine dlascl2(m, n, d, x, ldx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
!         .. Array Arguments ..
          Real (wp) :: d(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlascl2
        Subroutine dlascl(type, kl, ku, cfrom, cto, m, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: cfrom, cto
          Integer :: info, kl, ku, lda, m, n
          Character (1) :: type
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlascl
        Subroutine dlasd0(n, sqre, d, e, u, ldu, vt, ldvt, smlsiz, iwork, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldu, ldvt, n, smlsiz, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), u(ldu, *), vt(ldvt, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasd0
        Subroutine dlasd1(nl, nr, sqre, d, alpha, beta, u, ldu, vt, ldvt, &
          idxq, iwork, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: info, ldu, ldvt, nl, nr, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), u(ldu, *), vt(ldvt, *), work(*)
          Integer :: idxq(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasd1
        Subroutine dlasd2(nl, nr, sqre, k, d, z, alpha, beta, u, ldu, vt, &
          ldvt, dsigma, u2, ldu2, vt2, ldvt2, idxp, idx, idxc, idxq, coltyp, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: info, k, ldu, ldu2, ldvt, ldvt2, nl, nr, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), dsigma(*), u(ldu, *), u2(ldu2, *), &
            vt(ldvt, *), vt2(ldvt2, *), z(*)
          Integer :: coltyp(*), idx(*), idxc(*), idxp(*), idxq(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasd2
        Subroutine dlasd3(nl, nr, sqre, k, d, q, ldq, dsigma, u, ldu, u2, &
          ldu2, vt, ldvt, vt2, ldvt2, idxc, ctot, z, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, ldq, ldu, ldu2, ldvt, ldvt2, nl, nr, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), dsigma(*), q(ldq, *), u(ldu, *), &
            u2(ldu2, *), vt(ldvt, *), vt2(ldvt2, *), z(*)
          Integer :: ctot(*), idxc(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasd3
        Subroutine dlasd4(n, i, d, z, delta, rho, sigma, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rho, sigma
          Integer :: i, info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), delta(*), work(*), z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasd4
        Subroutine dlasd5(i, d, z, delta, rho, dsigma, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dsigma, rho
          Integer :: i
!         .. Array Arguments ..
          Real (wp) :: d(2), delta(2), work(2), z(2)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasd5
        Subroutine dlasd6(icompq, nl, nr, sqre, d, vf, vl, alpha, beta, idxq, &
          perm, givptr, givcol, ldgcol, givnum, ldgnum, poles, difl, difr, z, &
          k, c, s, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta, c, s
          Integer :: givptr, icompq, info, k, ldgcol, ldgnum, nl, nr, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), difl(*), difr(*), givnum(ldgnum, *), &
            poles(ldgnum, *), vf(*), vl(*), work(*), z(*)
          Integer :: givcol(ldgcol, *), idxq(*), iwork(*), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasd6
        Subroutine dlasd7(icompq, nl, nr, sqre, k, d, z, zw, vf, vfw, vl, vlw, &
          alpha, beta, dsigma, idx, idxp, idxq, perm, givptr, givcol, ldgcol, &
          givnum, ldgnum, c, s, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta, c, s
          Integer :: givptr, icompq, info, k, ldgcol, ldgnum, nl, nr, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), dsigma(*), givnum(ldgnum, *), vf(*), vfw(*), &
            vl(*), vlw(*), z(*), zw(*)
          Integer :: givcol(ldgcol, *), idx(*), idxp(*), idxq(*), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasd7
        Subroutine dlasd8(icompq, k, d, z, vf, vl, difl, difr, lddifr, dsigma, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: icompq, info, k, lddifr
!         .. Array Arguments ..
          Real (wp) :: d(*), difl(*), difr(lddifr, *), dsigma(*), vf(*), &
            vl(*), work(*), z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasd8
        Subroutine dlasda(icompq, smlsiz, n, sqre, d, e, u, ldu, vt, k, difl, &
          difr, z, poles, givptr, givcol, ldgcol, perm, givnum, c, s, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: icompq, info, ldgcol, ldu, n, smlsiz, sqre
!         .. Array Arguments ..
          Real (wp) :: c(*), d(*), difl(ldu, *), difr(ldu, *), e(*), &
            givnum(ldu, *), poles(ldu, *), s(*), u(ldu, *), vt(ldu, *), &
            work(*), z(ldu, *)
          Integer :: givcol(ldgcol, *), givptr(*), iwork(*), k(*), &
            perm(ldgcol, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasda
        Subroutine dlasdq(uplo, sqre, n, ncvt, nru, ncc, d, e, vt, ldvt, u, &
          ldu, c, ldc, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, ldu, ldvt, n, ncc, ncvt, nru, sqre
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), d(*), e(*), u(ldu, *), vt(ldvt, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasdq
        Subroutine dlasdt(n, lvl, nd, inode, ndiml, ndimr, msub)
!         .. Implicit None Statement ..
          Implicit None
!         .. Scalar Arguments ..
          Integer :: lvl, msub, n, nd
!         .. Array Arguments ..
          Integer :: inode(*), ndiml(*), ndimr(*)
        End Subroutine dlasdt
        Subroutine dlaset(uplo, m, n, alpha, beta, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: lda, m, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaset
        Subroutine dlasq1(n, d, e, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasq1
        Subroutine dlasq2(n, z, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasq2
        Subroutine dlasq3(i0, n0, z, pp, dmin, sigma, desig, qmax, nfail, &
          iter, ndiv, ieee, ttype, dmin1, dmin2, dn, dn1, dn2, g, tau)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: desig, dmin, dmin1, dmin2, dn, dn1, dn2, g, qmax, &
            sigma, tau
          Integer :: i0, iter, n0, ndiv, nfail, pp, ttype
          Logical :: ieee
!         .. Array Arguments ..
          Real (wp) :: z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasq3
        Subroutine dlasq4(i0, n0, z, pp, n0in, dmin, dmin1, dmin2, dn, dn1, &
          dn2, tau, ttype, g)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dmin, dmin1, dmin2, dn, dn1, dn2, g, tau
          Integer :: i0, n0, n0in, pp, ttype
!         .. Array Arguments ..
          Real (wp) :: z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasq4
        Subroutine dlasq5(i0, n0, z, pp, tau, sigma, dmin, dmin1, dmin2, dn, &
          dnm1, dnm2, ieee, eps)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dmin, dmin1, dmin2, dn, dnm1, dnm2, eps, sigma, &
            tau
          Integer :: i0, n0, pp
          Logical :: ieee
!         .. Array Arguments ..
          Real (wp) :: z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasq5
        Subroutine dlasq6(i0, n0, z, pp, dmin, dmin1, dmin2, dn, dnm1, dnm2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dmin, dmin1, dmin2, dn, dnm1, dnm2
          Integer :: i0, n0, pp
!         .. Array Arguments ..
          Real (wp) :: z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasq6
        Subroutine dlasr(side, pivot, direct, m, n, c, s, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: direct, pivot, side
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasr
        Subroutine dlasrt(id, n, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: id
!         .. Array Arguments ..
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasrt
        Subroutine dlassq(n, x, incx, scale, sumsq)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale, sumsq
          Integer :: incx, n
!         .. Array Arguments ..
          Real (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlassq
        Subroutine dlasv2(f, g, h, ssmin, ssmax, snr, csr, snl, csl)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: csl, csr, f, g, h, snl, snr, ssmax, ssmin
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasv2
        Subroutine dlaswlq(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaswlq
        Subroutine dlaswp(n, a, lda, k1, k2, ipiv, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incx, k1, k2, lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlaswp
        Subroutine dlasy2(ltranl, ltranr, isgn, n1, n2, tl, ldtl, tr, ldtr, b, &
          ldb, scale, x, ldx, xnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale, xnorm
          Integer :: info, isgn, ldb, ldtl, ldtr, ldx, n1, n2
          Logical :: ltranl, ltranr
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), tl(ldtl, *), tr(ldtr, *), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasy2
        Subroutine dla_syamv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, lda, n, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dla_syamv
        Subroutine dlasyf_aa(uplo, j1, m, nb, a, lda, ipiv, h, ldh, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: j1, lda, ldh, m, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), h(ldh, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasyf_aa
        Subroutine dlasyf(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasyf
        Subroutine dlasyf_rk(uplo, n, nb, kb, a, lda, e, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasyf_rk
        Subroutine dlasyf_rook(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlasyf_rook
        Function dla_syrcond(uplo, n, a, lda, af, ldaf, ipiv, cmode, c, info, &
          work, iwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: cmode, info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), c(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dla_syrcond
        End Function dla_syrcond
        Subroutine dla_syrfsx_extended(prec_type, uplo, n, nrhs, a, lda, af, &
          ldaf, ipiv, colequ, c, b, ldb, y, ldy, berr_out, n_norms, &
          err_bnds_norm, err_bnds_comp, res, ayb, dy, y_tail, rcond, ithresh, &
          rthresh, dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type
          Logical :: colequ, ignore_cwise
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), ayb(*), b(ldb, *), &
            berr_out(*), c(*), dy(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), res(*), y(ldy, *), y_tail(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dla_syrfsx_extended
        Function dla_syrpvgrw(uplo, n, info, a, lda, af, ldaf, ipiv, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dla_syrpvgrw
        End Function dla_syrpvgrw
        Subroutine dlat2s(uplo, n, a, lda, sa, ldsa, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: sp = kind(0.0)
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldsa, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Real (sp) :: sa(ldsa, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlat2s
        Subroutine dlatbs(uplo, trans, diag, normin, n, kd, ab, ldab, x, &
          scale, cnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, kd, ldab, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), cnorm(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlatbs
        Subroutine dlatdf(ijob, n, z, ldz, rhs, rdsum, rdscal, ipiv, jpiv)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rdscal, rdsum
          Integer :: ijob, ldz, n
!         .. Array Arguments ..
          Real (wp) :: rhs(*), z(ldz, *)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlatdf
        Subroutine dlatps(uplo, trans, diag, normin, n, ap, x, scale, cnorm, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), cnorm(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlatps
        Subroutine dlatrd(uplo, n, nb, a, lda, e, tau, w, ldw)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), tau(*), w(ldw, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlatrd
        Subroutine dlatrs(uplo, trans, diag, normin, n, a, lda, x, scale, &
          cnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, lda, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), cnorm(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlatrs
        Subroutine dlatrz(m, n, l, a, lda, tau, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: l, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlatrz
        Subroutine dlatsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlatsqr
        Subroutine dlatzm(side, m, n, v, incv, tau, c1, c2, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tau
          Integer :: incv, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Real (wp) :: c1(ldc, *), c2(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlatzm
        Subroutine dlauu2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlauu2
        Subroutine dlauum(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dlauum
        Subroutine dla_wwaddw(n, x, y, w)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
!         .. Array Arguments ..
          Real (wp) :: w(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dla_wwaddw
        Subroutine dopgtr(uplo, n, ap, tau, q, ldq, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldq, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), q(ldq, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dopgtr
        Subroutine dopmtr(side, uplo, trans, m, n, ap, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, m, n
          Character (1) :: side, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dopmtr
        Subroutine dorbdb1(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Real (wp) :: phi(*), taup1(*), taup2(*), tauq1(*), theta(*), &
            work(*), x11(ldx11, *), x21(ldx21, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorbdb1
        Subroutine dorbdb2(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Real (wp) :: phi(*), taup1(*), taup2(*), tauq1(*), theta(*), &
            work(*), x11(ldx11, *), x21(ldx21, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorbdb2
        Subroutine dorbdb3(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Real (wp) :: phi(*), taup1(*), taup2(*), tauq1(*), theta(*), &
            work(*), x11(ldx11, *), x21(ldx21, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorbdb3
        Subroutine dorbdb4(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, phantom, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Real (wp) :: phantom(*), phi(*), taup1(*), taup2(*), tauq1(*), &
            theta(*), work(*), x11(ldx11, *), x21(ldx21, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorbdb4
        Subroutine dorbdb5(m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, &
          ldq2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incx1, incx2, info, ldq1, ldq2, lwork, m1, m2, n
!         .. Array Arguments ..
          Real (wp) :: q1(ldq1, *), q2(ldq2, *), work(*), x1(*), x2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorbdb5
        Subroutine dorbdb6(m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, &
          ldq2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incx1, incx2, info, ldq1, ldq2, lwork, m1, m2, n
!         .. Array Arguments ..
          Real (wp) :: q1(ldq1, *), q2(ldq2, *), work(*), x1(*), x2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorbdb6
        Subroutine dorbdb(trans, signs, m, p, q, x11, ldx11, x12, ldx12, x21, &
          ldx21, x22, ldx22, theta, phi, taup1, taup2, tauq1, tauq2, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx12, ldx21, ldx22, lwork, m, p, q
          Character (1) :: signs, trans
!         .. Array Arguments ..
          Real (wp) :: phi(*), taup1(*), taup2(*), tauq1(*), tauq2(*), &
            theta(*), work(*), x11(ldx11, *), x12(ldx12, *), x21(ldx21, *), &
            x22(ldx22, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorbdb
        Subroutine dorcsd2by1(jobu1, jobu2, jobv1t, m, p, q, x11, ldx11, x21, &
          ldx21, theta, u1, ldu1, u2, ldu2, v1t, ldv1t, work, lwork, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldx11, ldx21, lwork, m, p, q
          Character (1) :: jobu1, jobu2, jobv1t
!         .. Array Arguments ..
          Real (wp) :: theta(*), u1(ldu1, *), u2(ldu2, *), v1t(ldv1t, *), &
            work(*), x11(ldx11, *), x21(ldx21, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorcsd2by1
        Recursive Subroutine dorcsd(jobu1, jobu2, jobv1t, jobv2t, trans, &
          signs, m, p, q, x11, ldx11, x12, ldx12, x21, ldx21, x22, ldx22, &
          theta, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, work, lwork, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldv2t, ldx11, ldx12, ldx21, &
            ldx22, lwork, m, p, q
          Character (1) :: jobu1, jobu2, jobv1t, jobv2t, signs, trans
!         .. Array Arguments ..
          Real (wp) :: theta(*), u1(ldu1, *), u2(ldu2, *), v1t(ldv1t, *), &
            v2t(ldv2t, *), work(*), x11(ldx11, *), x12(ldx12, *), &
            x21(ldx21, *), x22(ldx22, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorcsd
        Subroutine dorg2l(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorg2l
        Subroutine dorg2r(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorg2r
        Subroutine dorgbr(vect, m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
          Character (1) :: vect
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorgbr
        Subroutine dorghr(n, ilo, ihi, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, lwork, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorghr
        Subroutine dorgl2(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorgl2
        Subroutine dorglq(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorglq
        Subroutine dorgql(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorgql
        Subroutine dorgqr(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorgqr
        Subroutine dorgr2(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorgr2
        Subroutine dorgrq(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorgrq
        Subroutine dorgtr(uplo, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorgtr
        Subroutine dorgtsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorgtsqr
        Subroutine dorhr_col(m, n, nb, a, lda, t, ldt, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorhr_col
        Subroutine dorm22(side, trans, m, n, n1, n2, q, ldq, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, ldq, lwork, m, n, n1, n2
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), q(ldq, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorm22
        Subroutine dorm2l(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorm2l
        Subroutine dorm2r(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorm2r
        Subroutine dormbr(vect, side, trans, m, n, k, a, lda, tau, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans, vect
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dormbr
        Subroutine dormhr(side, trans, m, n, ilo, ihi, a, lda, tau, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dormhr
        Subroutine dorml2(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dorml2
        Subroutine dormlq(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dormlq
        Subroutine dormql(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dormql
        Subroutine dormqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dormqr
        Subroutine dormr2(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dormr2
        Subroutine dormr3(side, trans, m, n, k, l, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dormr3
        Subroutine dormrq(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dormrq
        Subroutine dormrz(side, trans, m, n, k, l, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dormrz
        Subroutine dormtr(side, uplo, trans, m, n, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldc, lwork, m, n
          Character (1) :: side, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dormtr
        Subroutine dpbcon(uplo, n, kd, ab, ldab, anorm, rcond, work, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpbcon
        Subroutine dpbequ(uplo, n, kd, ab, ldab, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpbequ
        Subroutine dpbrfs(uplo, n, kd, nrhs, ab, ldab, afb, ldafb, b, ldb, x, &
          ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpbrfs
        Subroutine dpbstf(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpbstf
        Subroutine dpbsv(uplo, n, kd, nrhs, ab, ldab, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpbsv
        Subroutine dpbsvx(fact, uplo, n, kd, nrhs, ab, ldab, afb, ldafb, &
          equed, s, b, ldb, x, ldx, rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kd, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            ferr(*), s(*), work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpbsvx
        Subroutine dpbtf2(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpbtf2
        Subroutine dpbtrf(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpbtrf
        Subroutine dpbtrs(uplo, n, kd, nrhs, ab, ldab, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpbtrs
        Subroutine dpftrf(transr, uplo, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpftrf
        Subroutine dpftri(transr, uplo, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpftri
        Subroutine dpftrs(transr, uplo, n, nrhs, a, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpftrs
        Subroutine dpocon(uplo, n, a, lda, anorm, rcond, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpocon
        Subroutine dpoequb(n, a, lda, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpoequb
        Subroutine dpoequ(n, a, lda, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpoequ
        Subroutine dporfs(uplo, n, nrhs, a, lda, af, ldaf, b, ldb, x, ldx, &
          ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dporfs
        Subroutine dporfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, s, b, ldb, &
          x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, &
          nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), s(*), &
            work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dporfsx
        Subroutine dposv(uplo, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dposv
        Subroutine dposvx(fact, uplo, n, nrhs, a, lda, af, ldaf, equed, s, b, &
          ldb, x, ldx, rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            ferr(*), s(*), work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dposvx
        Subroutine dposvxx(fact, uplo, n, nrhs, a, lda, af, ldaf, equed, s, b, &
          ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), s(*), &
            work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dposvxx
        Subroutine dpotf2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpotf2
        Recursive Subroutine dpotrf2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpotrf2
        Subroutine dpotrf(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpotrf
        Subroutine dpotri(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpotri
        Subroutine dpotrs(uplo, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpotrs
        Subroutine dppcon(uplo, n, ap, anorm, rcond, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dppcon
        Subroutine dppequ(uplo, n, ap, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dppequ
        Subroutine dpprfs(uplo, n, nrhs, ap, afp, b, ldb, x, ldx, ferr, berr, &
          work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: afp(*), ap(*), b(ldb, *), berr(*), ferr(*), &
            work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpprfs
        Subroutine dppsv(uplo, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dppsv
        Subroutine dppsvx(fact, uplo, n, nrhs, ap, afp, equed, s, b, ldb, x, &
          ldx, rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Real (wp) :: afp(*), ap(*), b(ldb, *), berr(*), ferr(*), s(*), &
            work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dppsvx
        Subroutine dpptrf(uplo, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpptrf
        Subroutine dpptri(uplo, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpptri
        Subroutine dpptrs(uplo, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpptrs
        Subroutine dpstf2(uplo, n, a, lda, piv, rank, tol, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tol
          Integer :: info, lda, n, rank
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(2*n)
          Integer :: piv(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpstf2
        Subroutine dpstrf(uplo, n, a, lda, piv, rank, tol, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tol
          Integer :: info, lda, n, rank
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(2*n)
          Integer :: piv(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpstrf
        Subroutine dptcon(n, d, e, anorm, rcond, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dptcon
        Subroutine dpteqr(compz, n, d, e, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: compz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpteqr
        Subroutine dptrfs(n, nrhs, d, e, df, ef, b, ldb, x, ldx, ferr, berr, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), berr(*), d(*), df(*), e(*), ef(*), &
            ferr(*), work(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dptrfs
        Subroutine dptsv(n, nrhs, d, e, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dptsv
        Subroutine dptsvx(fact, n, nrhs, d, e, df, ef, b, ldb, x, ldx, rcond, &
          ferr, berr, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), berr(*), d(*), df(*), e(*), ef(*), &
            ferr(*), work(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dptsvx
        Subroutine dpttrf(n, d, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpttrf
        Subroutine dpttrs(n, nrhs, d, e, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dpttrs
        Subroutine dptts2(n, nrhs, d, e, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dptts2
        Subroutine drscl(n, sa, sx, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: sa
          Integer :: incx, n
!         .. Array Arguments ..
          Real (wp) :: sx(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine drscl
        Subroutine dsb2st_kernels(uplo, wantz, ttype, st, ed, sweep, n, nb, &
          ib, a, lda, v, tau, ldvt, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ed, ib, lda, ldvt, n, nb, st, sweep, ttype
          Logical :: wantz
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsb2st_kernels
        Subroutine dsbev_2stage(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbev_2stage
        Subroutine dsbevd_2stage(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, &
          lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), w(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbevd_2stage
        Subroutine dsbevd(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork, &
          iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), w(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbevd
        Subroutine dsbev(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbev
        Subroutine dsbevx_2stage(jobz, range, uplo, n, kd, ab, ldab, q, ldq, &
          vl, vu, il, iu, abstol, m, w, z, ldz, work, lwork, iwork, ifail, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, kd, ldab, ldq, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), q(ldq, *), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbevx_2stage
        Subroutine dsbevx(jobz, range, uplo, n, kd, ab, ldab, q, ldq, vl, vu, &
          il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, kd, ldab, ldq, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), q(ldq, *), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbevx
        Subroutine dsbgst(vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x, ldx, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldx, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), bb(ldbb, *), work(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbgst
        Subroutine dsbgvd(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, &
          ldz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldz, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), bb(ldbb, *), w(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbgvd
        Subroutine dsbgv(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), bb(ldbb, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbgv
        Subroutine dsbgvx(jobz, range, uplo, n, ka, kb, ab, ldab, bb, ldbb, q, &
          ldq, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ka, kb, ldab, ldbb, ldq, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), bb(ldbb, *), q(ldq, *), w(*), &
            work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbgvx
        Subroutine dsbtrd(vect, uplo, n, kd, ab, ldab, d, e, q, ldq, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldq, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), d(*), e(*), q(ldq, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsbtrd
        Function dsecnd()
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dsecnd
        End Function dsecnd
        Subroutine dsfrk(transr, uplo, trans, n, k, alpha, a, lda, beta, c)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: k, lda, n
          Character (1) :: trans, transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsfrk
        Subroutine dsgesv(n, nrhs, a, lda, ipiv, b, ldb, x, ldx, work, swork, &
          iter, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: sp = kind(0.0)
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, iter, lda, ldb, ldx, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(n, *), x(ldx, *)
          Real (sp) :: swork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsgesv
        Subroutine dspcon(uplo, n, ap, ipiv, anorm, rcond, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dspcon
        Subroutine dspevd(jobz, uplo, n, ap, w, z, ldz, work, lwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), w(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dspevd
        Subroutine dspev(jobz, uplo, n, ap, w, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dspev
        Subroutine dspevx(jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m, &
          w, z, ldz, work, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dspevx
        Subroutine dspgst(itype, uplo, n, ap, bp, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), bp(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dspgst
        Subroutine dspgvd(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, &
          lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, ldz, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), bp(*), w(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dspgvd
        Subroutine dspgv(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), bp(*), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dspgv
        Subroutine dspgvx(itype, jobz, range, uplo, n, ap, bp, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, itype, iu, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), bp(*), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dspgvx
        Subroutine dsposv(uplo, n, nrhs, a, lda, b, ldb, x, ldx, work, swork, &
          iter, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: sp = kind(0.0)
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, iter, lda, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(n, *), x(ldx, *)
          Real (sp) :: swork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsposv
        Subroutine dsprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, &
          berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: afp(*), ap(*), b(ldb, *), berr(*), ferr(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsprfs
        Subroutine dspsv(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dspsv
        Subroutine dspsvx(fact, uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, &
          rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Real (wp) :: afp(*), ap(*), b(ldb, *), berr(*), ferr(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dspsvx
        Subroutine dsptrd(uplo, n, ap, d, e, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), d(*), e(*), tau(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsptrd
        Subroutine dsptrf(uplo, n, ap, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsptrf
        Subroutine dsptri(uplo, n, ap, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsptri
        Subroutine dsptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsptrs
        Subroutine dstebz(range, order, n, vl, vu, il, iu, abstol, d, e, m, &
          nsplit, w, iblock, isplit, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, m, n, nsplit
          Character (1) :: order, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*)
          Integer :: iblock(*), isplit(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dstebz
        Subroutine dstedc(compz, n, d, e, z, ldz, work, lwork, iwork, liwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, liwork, lwork, n
          Character (1) :: compz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dstedc
        Subroutine dstegr(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, &
          z, ldz, isuppz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, liwork, lwork, m, n
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*), z(ldz, *)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dstegr
        Subroutine dstein(n, d, e, m, w, iblock, isplit, z, ldz, work, iwork, &
          ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, m, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*), z(ldz, *)
          Integer :: iblock(*), ifail(*), isplit(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dstein
        Subroutine dstemr(jobz, range, n, d, e, vl, vu, il, iu, m, w, z, ldz, &
          nzc, isuppz, tryrac, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: vl, vu
          Integer :: il, info, iu, ldz, liwork, lwork, m, n, nzc
          Logical :: tryrac
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*), z(ldz, *)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dstemr
        Subroutine dsteqr(compz, n, d, e, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: compz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsteqr
        Subroutine dsterf(n, d, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsterf
        Subroutine dstevd(jobz, n, d, e, z, ldz, work, lwork, iwork, liwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, liwork, lwork, n
          Character (1) :: jobz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dstevd
        Subroutine dstev(jobz, n, d, e, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: jobz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dstev
        Subroutine dstevr(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, &
          z, ldz, isuppz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, liwork, lwork, m, n
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*), z(ldz, *)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dstevr
        Subroutine dstevx(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, &
          z, ldz, work, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, m, n
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dstevx
        Subroutine dsycon_3(uplo, n, a, lda, e, ipiv, anorm, rcond, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsycon_3
        Subroutine dsycon(uplo, n, a, lda, ipiv, anorm, rcond, work, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsycon
        Subroutine dsycon_rook(uplo, n, a, lda, ipiv, anorm, rcond, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsycon_rook
        Subroutine dsyconv(uplo, way, n, a, lda, ipiv, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyconv
        Subroutine dsyconvf(uplo, way, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyconvf
        Subroutine dsyconvf_rook(uplo, way, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyconvf_rook
        Subroutine dsyequb(uplo, n, a, lda, s, scond, amax, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyequb
        Subroutine dsyev_2stage(jobz, uplo, n, a, lda, w, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyev_2stage
        Subroutine dsyevd_2stage(jobz, uplo, n, a, lda, w, work, lwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyevd_2stage
        Subroutine dsyevd(jobz, uplo, n, a, lda, w, work, lwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyevd
        Subroutine dsyev(jobz, uplo, n, a, lda, w, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyev
        Subroutine dsyevr_2stage(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, isuppz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, liwork, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*), z(ldz, *)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyevr_2stage
        Subroutine dsyevr(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, isuppz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, liwork, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*), z(ldz, *)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyevr
        Subroutine dsyevx_2stage(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, lwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyevx_2stage
        Subroutine dsyevx(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, lwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyevx
        Subroutine dsygs2(itype, uplo, n, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsygs2
        Subroutine dsygst(itype, uplo, n, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsygst
        Subroutine dsygv_2stage(itype, jobz, uplo, n, a, lda, b, ldb, w, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), w(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsygv_2stage
        Subroutine dsygvd(itype, jobz, uplo, n, a, lda, b, ldb, w, work, &
          lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), w(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsygvd
        Subroutine dsygv(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), w(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsygv
        Subroutine dsygvx(itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, &
          il, iu, abstol, m, w, z, ldz, work, lwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, itype, iu, lda, ldb, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsygvx
        Subroutine dsyrfs(uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, &
          ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyrfs
        Subroutine dsyrfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, ipiv, s, b, &
          ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, &
          nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), s(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyrfsx
        Subroutine dsysv_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsysv_aa_2stage
        Subroutine dsysv_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsysv_aa
        Subroutine dsysv(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsysv
        Subroutine dsysv_rk(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsysv_rk
        Subroutine dsysv_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsysv_rook
        Subroutine dsysvx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, &
          x, ldx, rcond, ferr, berr, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, lwork, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsysvx
        Subroutine dsysvxx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, equed, &
          s, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), s(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsysvxx
        Subroutine dsyswapr(uplo, n, a, lda, i1, i2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: i1, i2, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsyswapr
        Subroutine dsytd2(uplo, n, a, lda, d, e, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), tau(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytd2
        Subroutine dsytf2(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytf2
        Subroutine dsytf2_rk(uplo, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytf2_rk
        Subroutine dsytf2_rook(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytf2_rook
        Subroutine dsytrd_2stage(vect, uplo, n, a, lda, d, e, tau, hous2, &
          lhous2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lhous2, lwork, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), hous2(*), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrd_2stage
        Subroutine dsytrd(uplo, n, a, lda, d, e, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrd
        Subroutine dsytrd_sb2st(stage1, vect, uplo, n, kd, ab, ldab, d, e, &
          hous, lhous, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, lhous, lwork, n
          Character (1) :: stage1, uplo, vect
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), d(*), e(*), hous(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrd_sb2st
        Subroutine dsytrd_sy2sb(uplo, n, kd, a, lda, ab, ldab, tau, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, lda, ldab, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), ab(ldab, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrd_sy2sb
        Subroutine dsytrf_aa_2stage(uplo, n, a, lda, tb, ltb, ipiv, ipiv2, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ltb, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrf_aa_2stage
        Subroutine dsytrf_aa(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrf_aa
        Subroutine dsytrf(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrf
        Subroutine dsytrf_rk(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrf_rk
        Subroutine dsytrf_rook(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrf_rook
        Subroutine dsytri2(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytri2
        Subroutine dsytri2x(uplo, n, a, lda, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytri2x
        Subroutine dsytri_3(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytri_3
        Subroutine dsytri_3x(uplo, n, a, lda, e, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytri_3x
        Subroutine dsytri(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytri
        Subroutine dsytri_rook(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytri_rook
        Subroutine dsytrs2(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrs2
        Subroutine dsytrs_3(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrs_3
        Subroutine dsytrs_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), tb(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrs_aa_2stage
        Subroutine dsytrs_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrs_aa
        Subroutine dsytrs(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrs
        Subroutine dsytrs_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dsytrs_rook
        Subroutine dtbcon(norm, uplo, diag, n, kd, ab, ldab, rcond, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kd, ldab, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtbcon
        Subroutine dtbrfs(uplo, trans, diag, n, kd, nrhs, ab, ldab, b, ldb, x, &
          ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *), berr(*), ferr(*), work(*), &
            x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtbrfs
        Subroutine dtbtrs(uplo, trans, diag, n, kd, nrhs, ab, ldab, b, ldb, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtbtrs
        Subroutine dtfsm(transr, side, uplo, trans, diag, m, n, alpha, a, b, &
          ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha
          Integer :: ldb, m, n
          Character (1) :: diag, side, trans, transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*), b(0:ldb-1, 0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtfsm
        Subroutine dtftri(transr, uplo, diag, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: diag, transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtftri
        Subroutine dtfttp(transr, uplo, n, arf, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtfttp
        Subroutine dtfttr(transr, uplo, n, arf, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:lda-1, 0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtfttr
        Subroutine dtgevc(side, howmny, select, n, s, lds, p, ldp, vl, ldvl, &
          vr, ldvr, mm, m, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldp, lds, ldvl, ldvr, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Real (wp) :: p(ldp, *), s(lds, *), vl(ldvl, *), vr(ldvr, *), &
            work(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtgevc
        Subroutine dtgex2(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, j1, &
          n1, n2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, j1, lda, ldb, ldq, ldz, lwork, n, n1, n2
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), work(*), &
            z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtgex2
        Subroutine dtgexc(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, &
          ifst, ilst, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ifst, ilst, info, lda, ldb, ldq, ldz, lwork, n
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), work(*), &
            z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtgexc
        Subroutine dtgsen(ijob, wantq, wantz, select, n, a, lda, b, ldb, &
          alphar, alphai, beta, q, ldq, z, ldz, m, pl, pr, dif, work, lwork, &
          iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: pl, pr
          Integer :: ijob, info, lda, ldb, ldq, ldz, liwork, lwork, m, n
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), dif(*), q(ldq, *), work(*), z(ldz, *)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtgsen
        Subroutine 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)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, ncycle, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            q(ldq, *), u(ldu, *), v(ldv, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtgsja
        Subroutine dtgsna(job, howmny, select, n, a, lda, b, ldb, vl, ldvl, &
          vr, ldvr, s, dif, mm, m, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, m, mm, n
          Character (1) :: howmny, job
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), dif(*), s(*), vl(ldvl, *), &
            vr(ldvr, *), work(*)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtgsna
        Subroutine dtgsy2(trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, &
          e, lde, f, ldf, scale, rdsum, rdscal, iwork, pq, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rdscal, rdsum, scale
          Integer :: ijob, info, lda, ldb, ldc, ldd, lde, ldf, m, n, pq
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), c(ldc, *), d(ldd, *), &
            e(lde, *), f(ldf, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtgsy2
        Subroutine dtgsyl(trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, &
          e, lde, f, ldf, scale, dif, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dif, scale
          Integer :: ijob, info, lda, ldb, ldc, ldd, lde, ldf, lwork, m, n
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), c(ldc, *), d(ldd, *), &
            e(lde, *), f(ldf, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtgsyl
        Subroutine dtpcon(norm, uplo, diag, n, ap, rcond, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtpcon
        Subroutine dtplqt2(m, n, l, a, lda, b, ldb, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtplqt2
        Subroutine dtplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, mb, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtplqt
        Subroutine dtpmlqt(side, trans, m, n, k, l, mb, v, ldv, t, ldt, a, &
          lda, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldt, ldv, m, mb, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtpmlqt
        Subroutine dtpmqrt(side, trans, m, n, k, l, nb, v, ldv, t, ldt, a, &
          lda, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldt, ldv, m, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtpmqrt
        Subroutine dtpqrt2(m, n, l, a, lda, b, ldb, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtpqrt2
        Subroutine dtpqrt(m, n, l, nb, a, lda, b, ldb, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtpqrt
        Subroutine dtprfb(side, trans, direct, storev, m, n, k, l, v, ldv, t, &
          ldt, a, lda, b, ldb, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, l, lda, ldb, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtprfb
        Subroutine dtprfs(uplo, trans, diag, n, nrhs, ap, b, ldb, x, ldx, &
          ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *), berr(*), ferr(*), work(*), &
            x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtprfs
        Subroutine dtptri(uplo, diag, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtptri
        Subroutine dtptrs(uplo, trans, diag, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtptrs
        Subroutine dtpttf(transr, uplo, n, ap, arf, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtpttf
        Subroutine dtpttr(uplo, n, ap, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtpttr
        Subroutine dtrcon(norm, uplo, diag, n, a, lda, rcond, work, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrcon
        Subroutine dtrevc3(side, howmny, select, n, t, ldt, vl, ldvl, vr, &
          ldvr, mm, m, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, lwork, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Real (wp) :: t(ldt, *), vl(ldvl, *), vr(ldvr, *), work(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrevc3
        Subroutine dtrevc(side, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, &
          mm, m, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Real (wp) :: t(ldt, *), vl(ldvl, *), vr(ldvr, *), work(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrevc
        Subroutine dtrexc(compq, n, t, ldt, q, ldq, ifst, ilst, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ifst, ilst, info, ldq, ldt, n
          Character (1) :: compq
!         .. Array Arguments ..
          Real (wp) :: q(ldq, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrexc
        Subroutine dtrrfs(uplo, trans, diag, n, nrhs, a, lda, b, ldb, x, ldx, &
          ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), berr(*), ferr(*), work(*), &
            x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrrfs
        Subroutine dtrsen(job, compq, select, n, t, ldt, q, ldq, wr, wi, m, s, &
          sep, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: s, sep
          Integer :: info, ldq, ldt, liwork, lwork, m, n
          Character (1) :: compq, job
!         .. Array Arguments ..
          Real (wp) :: q(ldq, *), t(ldt, *), wi(*), work(*), wr(*)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrsen
        Subroutine dtrsna(job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, &
          s, sep, mm, m, work, ldwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, ldwork, m, mm, n
          Character (1) :: howmny, job
!         .. Array Arguments ..
          Real (wp) :: s(*), sep(*), t(ldt, *), vl(ldvl, *), vr(ldvr, *), &
            work(ldwork, *)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrsna
        Subroutine dtrsyl(trana, tranb, isgn, m, n, a, lda, b, ldb, c, ldc, &
          scale, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, isgn, lda, ldb, ldc, m, n
          Character (1) :: trana, tranb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), c(ldc, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrsyl
        Subroutine dtrti2(uplo, diag, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrti2
        Subroutine dtrtri(uplo, diag, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrtri
        Subroutine dtrtrs(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrtrs
        Subroutine dtrttf(transr, uplo, n, a, lda, arf, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:lda-1, 0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrttf
        Subroutine dtrttp(uplo, n, a, lda, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtrttp
        Subroutine dtzrqf(m, n, a, lda, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtzrqf
        Subroutine dtzrzf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine dtzrzf
        Function dzsum1(n, cx, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: cx(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: dzsum1
        End Function dzsum1
        Function icmax1(n, cx, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: icmax1
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: cx(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function icmax1
        Function ieeeck(ispec, zero, one)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ieeeck
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: one, zero
          Integer :: ispec
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function ieeeck
        Function ilaclc(m, n, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilaclc
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function ilaclc
        Function ilaclr(m, n, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilaclr
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function ilaclr
        Function iladiag(diag)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: iladiag
!         .. Scalar Arguments ..
          Character (1) :: diag
        End Function iladiag
        Function iladlc(m, n, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: iladlc
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function iladlc
        Function iladlr(m, n, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: iladlr
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function iladlr
        Function ilaenv2stage(ispec, name, opts, n1, n2, n3, n4)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilaenv2stage
!         .. Scalar Arguments ..
          Integer :: ispec, n1, n2, n3, n4
          Character (*) :: name, opts
        End Function ilaenv2stage
        Recursive Function ilaenv(ispec, name, opts, n1, n2, n3, n4)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilaenv
!         .. Scalar Arguments ..
          Integer :: ispec, n1, n2, n3, n4
          Character (*) :: name, opts
        End Function ilaenv
        Recursive Subroutine ilaenvkernel(ispec, name, opts, n1, n2, n3, n4, &
          getval, nvalue, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Scalar Arguments ..
          Integer :: info, ispec, n1, n2, n3, n4, nvalue
          Logical :: getval
          Character (*) :: name, opts
        End Subroutine ilaenvkernel
        Subroutine ilaenvset(ispec, name, opts, n1, n2, n3, n4, nvalue, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Scalar Arguments ..
          Integer :: info, ispec, n1, n2, n3, n4, nvalue
          Character (*) :: name, opts
        End Subroutine ilaenvset
        Function ilaprec(prec)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilaprec
!         .. Scalar Arguments ..
          Character (1) :: prec
        End Function ilaprec
        Function ilaslc(m, n, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilaslc
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function ilaslc
        Function ilaslr(m, n, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilaslr
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function ilaslr
        Function ilatrans(trans)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilatrans
!         .. Scalar Arguments ..
          Character (1) :: trans
        End Function ilatrans
        Function ilauplo(uplo)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilauplo
!         .. Scalar Arguments ..
          Character (1) :: uplo
        End Function ilauplo
        Subroutine ilaver(vers_major, vers_minor, vers_patch)
!         .. Implicit None Statement ..
          Implicit None
!         .. Scalar Arguments ..
          Integer :: vers_major, vers_minor, vers_patch
        End Subroutine ilaver
        Function ilazlc(m, n, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilazlc
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function ilazlc
        Function ilazlr(m, n, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: ilazlr
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function ilazlr
        Function iparam2stage(ispec, name, opts, ni, nbi, ibi, nxi)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: iparam2stage
!         .. Scalar Arguments ..
          Integer :: ibi, ispec, nbi, ni, nxi
          Character (*) :: name, opts
        End Function iparam2stage
        Function iparmq(ispec, name, opts, n, ilo, ihi, lwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: iparmq
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, ispec, lwork, n
          Character (*) :: name, opts
        End Function iparmq
        Function izmax1(n, zx, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: izmax1
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: zx(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function izmax1
        Function lsamen(n, ca, cb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Logical :: lsamen
!         .. Scalar Arguments ..
          Integer :: n
          Character (*) :: ca, cb
        End Function lsamen
        Subroutine sbbcsd(jobu1, jobu2, jobv1t, jobv2t, trans, m, p, q, theta, &
          phi, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, b11d, b11e, b12d, &
          b12e, b21d, b21e, b22d, b22e, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldv2t, lwork, m, p, q
          Character (1) :: jobu1, jobu2, jobv1t, jobv2t, trans
!         .. Array Arguments ..
          Real (wp) :: b11d(*), b11e(*), b12d(*), b12e(*), b21d(*), &
            b21e(*), b22d(*), b22e(*), phi(*), theta(*), u1(ldu1, *), &
            u2(ldu2, *), v1t(ldv1t, *), v2t(ldv2t, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sbbcsd
        Subroutine sbdsdc(uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldu, ldvt, n
          Character (1) :: compq, uplo
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), q(*), u(ldu, *), vt(ldvt, *), work(*)
          Integer :: iq(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sbdsdc
        Subroutine sbdsqr(uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, &
          ldc, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, ldu, ldvt, n, ncc, ncvt, nru
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), d(*), e(*), u(ldu, *), vt(ldvt, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sbdsqr
        Subroutine sbdsvdx(uplo, jobz, range, n, d, e, vl, vu, il, iu, ns, s, &
          z, ldz, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: vl, vu
          Integer :: il, info, iu, ldz, n, ns
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), s(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sbdsvdx
        Subroutine scombssq(v1, v2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Array Arguments ..
          Real (wp) :: v1(2), v2(2)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine scombssq
        Function scsum1(n, cx, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: cx(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: scsum1
        End Function scsum1
        Subroutine sdisna(job, m, n, d, sep, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, m, n
          Character (1) :: job
!         .. Array Arguments ..
          Real (wp) :: d(*), sep(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sdisna
        Function second()
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: second
        End Function second
        Subroutine sgbbrd(vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, &
          ldpt, c, ldc, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldc, ldpt, ldq, m, n, ncc
          Character (1) :: vect
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), c(ldc, *), d(*), e(*), pt(ldpt, *), &
            q(ldq, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbbrd
        Subroutine sgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, kl, ku, ldab, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbcon
        Subroutine sgbequb(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbequb
        Subroutine sgbequ(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbequ
        Subroutine sgbrfs(trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, &
          b, ldb, x, ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbrfs
        Subroutine sgbrfsx(trans, equed, n, kl, ku, nrhs, ab, ldab, afb, &
          ldafb, ipiv, r, c, b, ldb, x, ldx, rcond, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nparams, nrhs, &
            n_err_bnds
          Character (1) :: equed, trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            c(*), err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), &
            r(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbrfsx
        Subroutine sgbsv(n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbsv
        Subroutine sgbsvx(fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, &
          ipiv, equed, r, c, b, ldb, x, ldx, rcond, ferr, berr, work, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            c(*), ferr(*), r(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbsvx
        Subroutine sgbsvxx(fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, &
          ipiv, equed, r, c, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nparams, nrhs, &
            n_err_bnds
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            c(*), err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), &
            r(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbsvxx
        Subroutine sgbtf2(m, n, kl, ku, ab, ldab, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbtf2
        Subroutine sgbtrf(m, n, kl, ku, ab, ldab, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbtrf
        Subroutine sgbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgbtrs
        Subroutine sgebak(job, side, n, ilo, ihi, scale, m, v, ldv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldv, m, n
          Character (1) :: job, side
!         .. Array Arguments ..
          Real (wp) :: scale(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgebak
        Subroutine sgebal(job, n, a, lda, ilo, ihi, scale, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, n
          Character (1) :: job
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), scale(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgebal
        Subroutine sgebd2(m, n, a, lda, d, e, tauq, taup, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), taup(*), tauq(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgebd2
        Subroutine sgebrd(m, n, a, lda, d, e, tauq, taup, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), taup(*), tauq(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgebrd
        Subroutine sgecon(norm, n, a, lda, anorm, rcond, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgecon
        Subroutine sgeequb(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeequb
        Subroutine sgeequ(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeequ
        Subroutine sgees(jobvs, sort, select, n, a, lda, sdim, wr, wi, vs, &
          ldvs, work, lwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldvs, lwork, n, sdim
          Character (1) :: jobvs, sort
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), vs(ldvs, *), wi(*), work(*), wr(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: select
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgees
        Subroutine sgeesx(jobvs, sort, select, sense, n, a, lda, sdim, wr, wi, &
          vs, ldvs, rconde, rcondv, work, lwork, iwork, liwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rconde, rcondv
          Integer :: info, lda, ldvs, liwork, lwork, n, sdim
          Character (1) :: jobvs, sense, sort
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), vs(ldvs, *), wi(*), work(*), wr(*)
          Integer :: iwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: select
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeesx
        Subroutine sgeev(jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), vl(ldvl, *), vr(ldvr, *), wi(*), &
            work(*), wr(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeev
        Subroutine sgeevx(balanc, jobvl, jobvr, sense, n, a, lda, wr, wi, vl, &
          ldvl, vr, ldvr, ilo, ihi, scale, abnrm, rconde, rcondv, work, lwork, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abnrm
          Integer :: ihi, ilo, info, lda, ldvl, ldvr, lwork, n
          Character (1) :: balanc, jobvl, jobvr, sense
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), rconde(*), rcondv(*), scale(*), &
            vl(ldvl, *), vr(ldvr, *), wi(*), work(*), wr(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeevx
        Subroutine sgegs(jobvsl, jobvsr, n, a, lda, b, ldb, alphar, alphai, &
          beta, vsl, ldvsl, vsr, ldvsr, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n
          Character (1) :: jobvsl, jobvsr
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vsl(ldvsl, *), vsr(ldvsr, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgegs
        Subroutine sgegv(jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai, &
          beta, vl, ldvl, vr, ldvr, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vl(ldvl, *), vr(ldvr, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgegv
        Subroutine sgehd2(n, ilo, ihi, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgehd2
        Subroutine sgehrd(n, ilo, ihi, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, lwork, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgehrd
        Subroutine sgejsv(joba, jobu, jobv, jobr, jobt, jobp, m, n, a, lda, &
          sva, u, ldu, v, ldv, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldv, lwork, m, n
          Character (1) :: joba, jobp, jobr, jobt, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), sva(n), u(ldu, *), v(ldv, *), &
            work(lwork)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgejsv
        Subroutine sgelq2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgelq2
        Subroutine sgelq(m, n, a, lda, t, tsize, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n, tsize
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgelq
        Subroutine sgelqf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgelqf
        Recursive Subroutine sgelqt3(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgelqt3
        Subroutine sgelqt(m, n, mb, a, lda, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, mb, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgelqt
        Subroutine sgelsd(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, &
          lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), s(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgelsd
        Subroutine sgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgels
        Subroutine sgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), s(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgelss
        Subroutine sgelsx(m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, m, n, nrhs, rank
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgelsx
        Subroutine sgelsy(m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgelsy
        Subroutine sgemlq(side, trans, m, n, k, a, lda, t, tsize, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n, tsize
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgemlq
        Subroutine sgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, ldc, ldt, ldv, m, mb, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgemlqt
        Subroutine sgemqr(side, trans, m, n, k, a, lda, t, tsize, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n, tsize
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgemqr
        Subroutine sgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, ldc, ldt, ldv, m, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgemqrt
        Subroutine sgeql2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeql2
        Subroutine sgeqlf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqlf
        Subroutine sgeqp3(m, n, a, lda, jpvt, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqp3
        Subroutine sgeqpf(m, n, a, lda, jpvt, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqpf
        Subroutine sgeqr2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqr2
        Subroutine sgeqr2p(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqr2p
        Subroutine sgeqr(m, n, a, lda, t, tsize, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n, tsize
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqr
        Subroutine sgeqrf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqrf
        Subroutine sgeqrfp(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqrfp
        Subroutine sgeqrt2(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqrt2
        Recursive Subroutine sgeqrt3(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqrt3
        Subroutine sgeqrt(m, n, nb, a, lda, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgeqrt
        Subroutine sgerfs(trans, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, &
          ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgerfs
        Subroutine sgerfsx(trans, equed, n, nrhs, a, lda, af, ldaf, ipiv, r, &
          c, b, ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), c(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), r(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgerfsx
        Subroutine sgerq2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgerq2
        Subroutine sgerqf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgerqf
        Subroutine sgesc2(n, a, lda, rhs, ipiv, jpiv, scale)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), rhs(*)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgesc2
        Subroutine sgesdd(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, &
          lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldvt, lwork, m, n
          Character (1) :: jobz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*), u(ldu, *), vt(ldvt, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgesdd
        Subroutine sgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldvt, lwork, m, n
          Character (1) :: jobu, jobvt
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*), u(ldu, *), vt(ldvt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgesvd
        Subroutine sgesvdq(joba, jobp, jobr, jobu, jobv, m, n, a, lda, s, u, &
          ldu, v, ldv, numrank, iwork, liwork, work, lwork, rwork, lrwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldv, liwork, lrwork, lwork, m, n, numrank
          Character (1) :: joba, jobp, jobr, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), rwork(*), s(*), u(ldu, *), v(ldv, *), &
            work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgesvdq
        Subroutine sgesvdx(jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, &
          ns, s, u, ldu, vt, ldvt, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: vl, vu
          Integer :: il, info, iu, lda, ldu, ldvt, lwork, m, n, ns
          Character (1) :: jobu, jobvt, range
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*), u(ldu, *), vt(ldvt, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgesvdx
        Subroutine sgesv(n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgesv
        Subroutine sgesvj(joba, jobu, jobv, m, n, a, lda, sva, mv, v, ldv, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldv, lwork, m, mv, n
          Character (1) :: joba, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), sva(n), v(ldv, *), work(lwork)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgesvj
        Subroutine sgesvx(fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, equed, &
          r, c, b, ldb, x, ldx, rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), c(*), &
            ferr(*), r(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgesvx
        Subroutine sgesvxx(fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, &
          equed, r, c, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), c(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), r(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgesvxx
        Subroutine sgetc2(n, a, lda, ipiv, jpiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgetc2
        Subroutine sgetf2(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgetf2
        Recursive Subroutine sgetrf2(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgetrf2
        Subroutine sgetrf(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgetrf
        Subroutine sgetri(n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgetri
        Subroutine sgetrs(trans, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgetrs
        Subroutine sgetsls(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgetsls
        Subroutine sggbak(job, side, n, ilo, ihi, lscale, rscale, m, v, ldv, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldv, m, n
          Character (1) :: job, side
!         .. Array Arguments ..
          Real (wp) :: lscale(*), rscale(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggbak
        Subroutine sggbal(job, n, a, lda, b, ldb, ilo, ihi, lscale, rscale, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, n
          Character (1) :: job
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), lscale(*), rscale(*), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggbal
        Subroutine sgges3(jobvsl, jobvsr, sort, selctg, n, a, lda, b, ldb, &
          sdim, alphar, alphai, beta, vsl, ldvsl, vsr, ldvsr, work, lwork, &
          bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sort
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgges3
        Subroutine sgges(jobvsl, jobvsr, sort, selctg, n, a, lda, b, ldb, &
          sdim, alphar, alphai, beta, vsl, ldvsl, vsr, ldvsr, work, lwork, &
          bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sort
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgges
        Subroutine sggesx(jobvsl, jobvsr, sort, selctg, sense, n, a, lda, b, &
          ldb, sdim, alphar, alphai, beta, vsl, ldvsl, vsr, ldvsr, rconde, &
          rcondv, work, lwork, iwork, liwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, liwork, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sense, sort
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), rconde(2), rcondv(2), vsl(ldvsl, *), vsr(ldvsr, *), &
            work(*)
          Integer :: iwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggesx
        Subroutine sggev3(jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai, &
          beta, vl, ldvl, vr, ldvr, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vl(ldvl, *), vr(ldvr, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggev3
        Subroutine sggev(jobvl, jobvr, n, a, lda, b, ldb, alphar, alphai, &
          beta, vl, ldvl, vr, ldvr, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), vl(ldvl, *), vr(ldvr, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggev
        Subroutine 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)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abnrm, bbnrm
          Integer :: ihi, ilo, info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: balanc, jobvl, jobvr, sense
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), lscale(*), rconde(*), rcondv(*), rscale(*), vl(ldvl, *), &
            vr(ldvr, *), work(*)
          Integer :: iwork(*)
          Logical :: bwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggevx
        Subroutine sggglm(n, m, p, a, lda, b, ldb, d, x, y, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), d(*), work(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggglm
        Subroutine sgghd3(compq, compz, n, ilo, ihi, a, lda, b, ldb, q, ldq, &
          z, ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, ldq, ldz, lwork, n
          Character (1) :: compq, compz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), work(*), &
            z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgghd3
        Subroutine sgghrd(compq, compz, n, ilo, ihi, a, lda, b, ldb, q, ldq, &
          z, ldz, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, ldq, ldz, n
          Character (1) :: compq, compz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgghrd
        Subroutine sgglse(m, n, p, a, lda, b, ldb, c, d, x, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), c(*), d(*), work(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgglse
        Subroutine sggqrf(n, m, p, a, lda, taua, b, ldb, taub, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), taua(*), taub(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggqrf
        Subroutine sggrqf(m, p, n, a, lda, taua, b, ldb, taub, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), taua(*), taub(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggrqf
        Subroutine sggsvd3(jobu, jobv, jobq, m, n, p, k, l, a, lda, b, ldb, &
          alpha, beta, u, ldu, v, ldv, q, ldq, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, lwork, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            q(ldq, *), u(ldu, *), v(ldv, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggsvd3
        Subroutine sggsvd(jobu, jobv, jobq, m, n, p, k, l, a, lda, b, ldb, &
          alpha, beta, u, ldu, v, ldv, q, ldq, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            q(ldq, *), u(ldu, *), v(ldv, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggsvd
        Subroutine sggsvp3(jobu, jobv, jobq, m, p, n, a, lda, b, ldb, tola, &
          tolb, k, l, u, ldu, v, ldv, q, ldq, iwork, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, lwork, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), tau(*), &
            u(ldu, *), v(ldv, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggsvp3
        Subroutine sggsvp(jobu, jobv, jobq, m, p, n, a, lda, b, ldb, tola, &
          tolb, k, l, u, ldu, v, ldv, q, ldq, iwork, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), tau(*), &
            u(ldu, *), v(ldv, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sggsvp
        Subroutine sgsvj0(jobv, m, n, a, lda, d, sva, mv, v, ldv, eps, sfmin, &
          tol, nsweep, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: eps, sfmin, tol
          Integer :: info, lda, ldv, lwork, m, mv, n, nsweep
          Character (1) :: jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(n), sva(n), v(ldv, *), work(lwork)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgsvj0
        Subroutine sgsvj1(jobv, m, n, n1, a, lda, d, sva, mv, v, ldv, eps, &
          sfmin, tol, nsweep, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: eps, sfmin, tol
          Integer :: info, lda, ldv, lwork, m, mv, n, n1, nsweep
          Character (1) :: jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(n), sva(n), v(ldv, *), work(lwork)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgsvj1
        Subroutine sgtcon(norm, n, dl, d, du, du2, ipiv, anorm, rcond, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: d(*), dl(*), du(*), du2(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgtcon
        Subroutine sgtrfs(trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv, &
          b, ldb, x, ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), berr(*), d(*), df(*), dl(*), dlf(*), &
            du(*), du2(*), duf(*), ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgtrfs
        Subroutine sgtsv(n, nrhs, dl, d, du, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), dl(*), du(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgtsv
        Subroutine sgtsvx(fact, trans, n, nrhs, dl, d, du, dlf, df, duf, du2, &
          ipiv, b, ldb, x, ldx, rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact, trans
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), berr(*), d(*), df(*), dl(*), dlf(*), &
            du(*), du2(*), duf(*), ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgtsvx
        Subroutine sgttrf(n, dl, d, du, du2, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgttrf
        Subroutine sgttrs(trans, n, nrhs, dl, d, du, du2, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgttrs
        Subroutine sgtts2(itrans, n, nrhs, dl, d, du, du2, ipiv, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: itrans, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sgtts2
        Subroutine shgeqz(job, compq, compz, n, ilo, ihi, h, ldh, t, ldt, &
          alphar, alphai, beta, q, ldq, z, ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldh, ldq, ldt, ldz, lwork, n
          Character (1) :: compq, compz, job
!         .. Array Arguments ..
          Real (wp) :: alphai(*), alphar(*), beta(*), h(ldh, *), &
            q(ldq, *), t(ldt, *), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine shgeqz
        Subroutine shsein(side, eigsrc, initv, select, n, h, ldh, wr, wi, vl, &
          ldvl, vr, ldvr, mm, m, work, ifaill, ifailr, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldh, ldvl, ldvr, m, mm, n
          Character (1) :: eigsrc, initv, side
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), vl(ldvl, *), vr(ldvr, *), wi(*), &
            work(*), wr(*)
          Integer :: ifaill(*), ifailr(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine shsein
        Subroutine shseqr(job, compz, n, ilo, ihi, h, ldh, wr, wi, z, ldz, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldh, ldz, lwork, n
          Character (1) :: compz, job
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), wi(*), work(*), wr(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine shseqr
        Function sisnan(sin)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Logical :: sisnan
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp), Intent (In) :: sin
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function sisnan
        Subroutine slabad(small, large)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: large, small
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slabad
        Subroutine slabrd(m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldx, ldy, m, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), taup(*), tauq(*), &
            x(ldx, *), y(ldy, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slabrd
        Subroutine slacn2(n, v, x, isgn, est, kase, isave)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: est
          Integer :: kase, n
!         .. Array Arguments ..
          Real (wp) :: v(*), x(*)
          Integer :: isave(3), isgn(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slacn2
        Subroutine slacon(n, v, x, isgn, est, kase)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: est
          Integer :: kase, n
!         .. Array Arguments ..
          Real (wp) :: v(*), x(*)
          Integer :: isgn(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slacon
        Subroutine slacpy(uplo, m, n, a, lda, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldb, m, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slacpy
        Subroutine sladiv(a, b, c, d, p, q)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, d, p, q
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sladiv
        Subroutine sladiv1(a, b, c, d, p, q)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, d, p, q
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sladiv1
        Function sladiv2(a, b, c, d, r, t)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, d, r, t
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: sladiv2
        End Function sladiv2
        Subroutine slae2(a, b, c, rt1, rt2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, rt1, rt2
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slae2
        Subroutine slaebz(ijob, nitmax, n, mmax, minp, nbmin, abstol, reltol, &
          pivmin, d, e, e2, nval, ab, c, mout, nab, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, pivmin, reltol
          Integer :: ijob, info, minp, mmax, mout, n, nbmin, nitmax
!         .. Array Arguments ..
          Real (wp) :: ab(mmax, *), c(*), d(*), e(*), e2(*), work(*)
          Integer :: iwork(*), nab(mmax, *), nval(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaebz
        Subroutine slaed0(icompq, qsiz, n, d, e, q, ldq, qstore, ldqs, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: icompq, info, ldq, ldqs, n, qsiz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), q(ldq, *), qstore(ldqs, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaed0
        Subroutine slaed1(n, d, q, ldq, indxq, rho, cutpnt, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: cutpnt, info, ldq, n
!         .. Array Arguments ..
          Real (wp) :: d(*), q(ldq, *), work(*)
          Integer :: indxq(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaed1
        Subroutine slaed2(k, n, n1, d, q, ldq, indxq, rho, z, dlamda, w, q2, &
          indx, indxc, indxp, coltyp, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: info, k, ldq, n, n1
!         .. Array Arguments ..
          Real (wp) :: d(*), dlamda(*), q(ldq, *), q2(*), w(*), z(*)
          Integer :: coltyp(*), indx(*), indxc(*), indxp(*), indxq(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaed2
        Subroutine slaed3(k, n, n1, d, q, ldq, rho, dlamda, q2, indx, ctot, w, &
          s, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: info, k, ldq, n, n1
!         .. Array Arguments ..
          Real (wp) :: d(*), dlamda(*), q(ldq, *), q2(*), s(*), w(*)
          Integer :: ctot(*), indx(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaed3
        Subroutine slaed4(n, i, d, z, delta, rho, dlam, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dlam, rho
          Integer :: i, info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), delta(*), z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaed4
        Subroutine slaed5(i, d, z, delta, rho, dlam)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dlam, rho
          Integer :: i
!         .. Array Arguments ..
          Real (wp) :: d(2), delta(2), z(2)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaed5
        Subroutine slaed6(kniter, orgati, rho, d, z, finit, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: finit, rho, tau
          Integer :: info, kniter
          Logical :: orgati
!         .. Array Arguments ..
          Real (wp) :: d(3), z(3)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaed6
        Subroutine slaed7(icompq, n, qsiz, tlvls, curlvl, curpbm, d, q, ldq, &
          indxq, rho, cutpnt, qstore, qptr, prmptr, perm, givptr, givcol, &
          givnum, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: curlvl, curpbm, cutpnt, icompq, info, ldq, n, qsiz, tlvls
!         .. Array Arguments ..
          Real (wp) :: d(*), givnum(2, *), q(ldq, *), qstore(*), work(*)
          Integer :: givcol(2, *), givptr(*), indxq(*), iwork(*), perm(*), &
            prmptr(*), qptr(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaed7
        Subroutine slaed8(icompq, k, n, qsiz, d, q, ldq, indxq, rho, cutpnt, &
          z, dlamda, q2, ldq2, w, perm, givptr, givcol, givnum, indxp, indx, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: cutpnt, givptr, icompq, info, k, ldq, ldq2, n, qsiz
!         .. Array Arguments ..
          Real (wp) :: d(*), dlamda(*), givnum(2, *), q(ldq, *), &
            q2(ldq2, *), w(*), z(*)
          Integer :: givcol(2, *), indx(*), indxp(*), indxq(*), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaed8
        Subroutine slaed9(k, kstart, kstop, n, d, q, ldq, rho, dlamda, w, s, &
          lds, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: info, k, kstart, kstop, ldq, lds, n
!         .. Array Arguments ..
          Real (wp) :: d(*), dlamda(*), q(ldq, *), s(lds, *), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaed9
        Subroutine slaeda(n, tlvls, curlvl, curpbm, prmptr, perm, givptr, &
          givcol, givnum, q, qptr, z, ztemp, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: curlvl, curpbm, info, n, tlvls
!         .. Array Arguments ..
          Real (wp) :: givnum(2, *), q(*), z(*), ztemp(*)
          Integer :: givcol(2, *), givptr(*), perm(*), prmptr(*), qptr(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaeda
        Subroutine slaein(rightv, noinit, n, h, ldh, wr, wi, vr, vi, b, ldb, &
          work, eps3, smlnum, bignum, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: bignum, eps3, smlnum, wi, wr
          Integer :: info, ldb, ldh, n
          Logical :: noinit, rightv
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), h(ldh, *), vi(*), vr(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaein
        Subroutine slaev2(a, b, c, rt1, rt2, cs1, sn1)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, cs1, rt1, rt2, sn1
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaev2
        Subroutine slaexc(wantq, n, t, ldt, q, ldq, j1, n1, n2, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, j1, ldq, ldt, n, n1, n2
          Logical :: wantq
!         .. Array Arguments ..
          Real (wp) :: q(ldq, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaexc
        Subroutine slag2d(m, n, sa, ldsa, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: sp = kind(0.0)
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldsa, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Real (sp) :: sa(ldsa, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slag2d
        Subroutine slag2(a, lda, b, ldb, safmin, scale1, scale2, wr1, wr2, wi)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: safmin, scale1, scale2, wi, wr1, wr2
          Integer :: lda, ldb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slag2
        Subroutine sla_gbamv(trans, m, n, kl, ku, alpha, ab, ldab, x, incx, &
          beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, kl, ku, ldab, m, n, trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sla_gbamv
        Function sla_gbrcond(trans, n, kl, ku, ab, ldab, afb, ldafb, ipiv, &
          cmode, c, info, work, iwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: cmode, info, kl, ku, ldab, ldafb, n
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), c(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: sla_gbrcond
        End Function sla_gbrcond
        Subroutine sla_gbrfsx_extended(prec_type, trans_type, n, kl, ku, nrhs, &
          ab, ldab, afb, ldafb, ipiv, colequ, c, b, ldb, y, ldy, berr_out, &
          n_norms, err_bnds_norm, err_bnds_comp, res, ayb, dy, y_tail, rcond, &
          ithresh, rthresh, dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, kl, ku, ldab, ldafb, ldb, ldy, n, nrhs, &
            n_norms, prec_type, trans_type
          Logical :: colequ, ignore_cwise
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), ayb(*), b(ldb, *), &
            berr_out(*), c(*), dy(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), res(*), y(ldy, *), y_tail(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sla_gbrfsx_extended
        Function sla_gbrpvgrw(n, kl, ku, ncols, ab, ldab, afb, ldafb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: kl, ku, ldab, ldafb, n, ncols
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: sla_gbrpvgrw
        End Function sla_gbrpvgrw
        Subroutine sla_geamv(trans, m, n, alpha, a, lda, x, incx, beta, y, &
          incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, lda, m, n, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sla_geamv
        Function sla_gercond(trans, n, a, lda, af, ldaf, ipiv, cmode, c, info, &
          work, iwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: cmode, info, lda, ldaf, n
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), c(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: sla_gercond
        End Function sla_gercond
        Subroutine sla_gerfsx_extended(prec_type, trans_type, n, nrhs, a, lda, &
          af, ldaf, ipiv, colequ, c, b, ldb, y, ldy, berr_out, n_norms, &
          errs_n, errs_c, res, ayb, dy, y_tail, rcond, ithresh, rthresh, &
          dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type, trans_type
          Logical :: colequ, ignore_cwise
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), ayb(*), b(ldb, *), &
            berr_out(*), c(*), dy(*), errs_c(nrhs, *), errs_n(nrhs, *), &
            res(*), y(ldy, *), y_tail(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sla_gerfsx_extended
        Function sla_gerpvgrw(n, ncols, a, lda, af, ldaf)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldaf, n, ncols
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: sla_gerpvgrw
        End Function sla_gerpvgrw
        Subroutine slags2(upper, a1, a2, a3, b1, b2, b3, csu, snu, csv, snv, &
          csq, snq)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: a1, a2, a3, b1, b2, b3, csq, csu, csv, snq, snu, &
            snv
          Logical :: upper
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slags2
        Subroutine slagtf(n, a, lambda, b, c, tol, d, in, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: lambda, tol
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: a(*), b(*), c(*), d(*)
          Integer :: in(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slagtf
        Subroutine slagtm(trans, n, nrhs, alpha, dl, d, du, x, ldx, beta, b, &
          ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), dl(*), du(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slagtm
        Subroutine slagts(job, n, a, b, c, d, in, y, tol, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tol
          Integer :: info, job, n
!         .. Array Arguments ..
          Real (wp) :: a(*), b(*), c(*), d(*), y(*)
          Integer :: in(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slagts
        Subroutine slagv2(a, lda, b, ldb, alphar, alphai, beta, csl, snl, csr, &
          snr)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: csl, csr, snl, snr
          Integer :: lda, ldb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(2), alphar(2), b(ldb, *), &
            beta(2)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slagv2
        Subroutine slahqr(wantt, wantz, n, ilo, ihi, h, ldh, wr, wi, iloz, &
          ihiz, z, ldz, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), wi(*), wr(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slahqr
        Subroutine slahr2(n, k, nb, a, lda, tau, t, ldt, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, lda, ldt, ldy, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, nb), tau(nb), y(ldy, nb)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slahr2
        Subroutine slahrd(n, k, nb, a, lda, tau, t, ldt, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, lda, ldt, ldy, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, nb), tau(nb), y(ldy, nb)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slahrd
        Subroutine slaic1(job, j, x, sest, w, gamma, sestpr, s, c)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: c, gamma, s, sest, sestpr
          Integer :: j, job
!         .. Array Arguments ..
          Real (wp) :: w(j), x(j)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaic1
        Function slaisnan(sin1, sin2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Logical :: slaisnan
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp), Intent (In) :: sin1, sin2
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function slaisnan
        Subroutine sla_lin_berr(n, nz, nrhs, res, ayb, berr)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n, nrhs, nz
!         .. Array Arguments ..
          Real (wp) :: ayb(n, nrhs), berr(nrhs), res(n, nrhs)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sla_lin_berr
        Subroutine slaln2(ltrans, na, nw, smin, ca, a, lda, d1, d2, b, ldb, &
          wr, wi, x, ldx, scale, xnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: ca, d1, d2, scale, smin, wi, wr, xnorm
          Integer :: info, lda, ldb, ldx, na, nw
          Logical :: ltrans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaln2
        Subroutine slals0(icompq, nl, nr, sqre, nrhs, b, ldb, bx, ldbx, perm, &
          givptr, givcol, ldgcol, givnum, ldgnum, poles, difl, difr, z, k, c, &
          s, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: c, s
          Integer :: givptr, icompq, info, k, ldb, ldbx, ldgcol, ldgnum, nl, &
            nr, nrhs, sqre
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), bx(ldbx, *), difl(*), difr(ldgnum, *), &
            givnum(ldgnum, *), poles(ldgnum, *), work(*), z(*)
          Integer :: givcol(ldgcol, *), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slals0
        Subroutine slalsa(icompq, smlsiz, n, nrhs, b, ldb, bx, ldbx, u, ldu, &
          vt, k, difl, difr, z, poles, givptr, givcol, ldgcol, perm, givnum, &
          c, s, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: icompq, info, ldb, ldbx, ldgcol, ldu, n, nrhs, smlsiz
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), bx(ldbx, *), c(*), difl(ldu, *), &
            difr(ldu, *), givnum(ldu, *), poles(ldu, *), s(*), u(ldu, *), &
            vt(ldu, *), work(*), z(ldu, *)
          Integer :: givcol(ldgcol, *), givptr(*), iwork(*), k(*), &
            perm(ldgcol, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slalsa
        Subroutine slalsd(uplo, smlsiz, n, nrhs, d, e, b, ldb, rcond, rank, &
          work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, n, nrhs, rank, smlsiz
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), e(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slalsd
        Function slamc3(a, b)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slamc3
        End Function slamc3
        Function slamch(cmach)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Character (1) :: cmach
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slamch
        End Function slamch
        Subroutine slamrg(n1, n2, a, strd1, strd2, index)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n1, n2, strd1, strd2
!         .. Array Arguments ..
          Real (wp) :: a(*)
          Integer :: index(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slamrg
        Subroutine slamswlq(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, &
          ldc, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, ldt, lwork, m, mb, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slamswlq
        Subroutine slamtsqr(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, &
          ldc, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, ldt, lwork, m, mb, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slamtsqr
        Function slaneg(n, d, lld, sigma, pivmin, r)
!         .. Implicit None Statement ..
          Implicit None
!         .. Function Return Value ..
          Integer :: slaneg
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, sigma
          Integer :: n, r
!         .. Array Arguments ..
          Real (wp) :: d(*), lld(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Function slaneg
        Function slangb(norm, n, kl, ku, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: kl, ku, ldab, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slangb
        End Function slangb
        Function slange(norm, m, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slange
        End Function slange
        Function slangt(norm, n, dl, d, du)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: d(*), dl(*), du(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slangt
        End Function slangt
        Function slanhs(norm, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slanhs
        End Function slanhs
        Function slansb(norm, uplo, n, k, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldab, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slansb
        End Function slansb
        Function slansf(norm, transr, uplo, n, a, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm, transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*), work(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slansf
        End Function slansf
        Function slansp(norm, uplo, n, ap, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slansp
        End Function slansp
        Function slanst(norm, n, d, e)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slanst
        End Function slanst
        Function slansy(norm, uplo, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slansy
        End Function slansy
        Function slantb(norm, uplo, diag, n, k, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldab, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slantb
        End Function slantb
        Function slantp(norm, uplo, diag, n, ap, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slantp
        End Function slantp
        Function slantr(norm, uplo, diag, m, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slantr
        End Function slantr
        Subroutine slanv2(a, b, c, d, rt1r, rt1i, rt2r, rt2i, cs, sn)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: a, b, c, cs, d, rt1i, rt1r, rt2i, rt2r, sn
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slanv2
        Recursive Subroutine slaorhr_col_getrfnp2(m, n, a, lda, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaorhr_col_getrfnp2
        Subroutine slaorhr_col_getrfnp(m, n, a, lda, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaorhr_col_getrfnp
        Subroutine slapll(n, x, incx, y, incy, ssmin)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: ssmin
          Integer :: incx, incy, n
!         .. Array Arguments ..
          Real (wp) :: x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slapll
        Subroutine slapmr(forwrd, m, n, x, ldx, k)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
          Logical :: forwrd
!         .. Array Arguments ..
          Real (wp) :: x(ldx, *)
          Integer :: k(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slapmr
        Subroutine slapmt(forwrd, m, n, x, ldx, k)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
          Logical :: forwrd
!         .. Array Arguments ..
          Real (wp) :: x(ldx, *)
          Integer :: k(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slapmt
        Function sla_porcond(uplo, n, a, lda, af, ldaf, cmode, c, info, work, &
          iwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: cmode, info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), c(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: sla_porcond
        End Function sla_porcond
        Subroutine sla_porfsx_extended(prec_type, uplo, n, nrhs, a, lda, af, &
          ldaf, colequ, c, b, ldb, y, ldy, berr_out, n_norms, err_bnds_norm, &
          err_bnds_comp, res, ayb, dy, y_tail, rcond, ithresh, rthresh, dz_ub, &
          ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type
          Logical :: colequ, ignore_cwise
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), ayb(*), b(ldb, *), &
            berr_out(*), c(*), dy(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), res(*), y(ldy, *), y_tail(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sla_porfsx_extended
        Function sla_porpvgrw(uplo, ncols, a, lda, af, ldaf, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldaf, ncols
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: sla_porpvgrw
        End Function sla_porpvgrw
        Function slapy2(x, y)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: x, y
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slapy2
        End Function slapy2
        Function slapy3(x, y, z)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: x, y, z
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: slapy3
        End Function slapy3
        Subroutine slaqgb(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: kl, ku, ldab, m, n
          Character (1) :: equed
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqgb
        Subroutine slaqge(m, n, a, lda, r, c, rowcnd, colcnd, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: lda, m, n
          Character (1) :: equed
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqge
        Subroutine slaqp2(m, n, offset, a, lda, jpvt, tau, vn1, vn2, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n, offset
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), vn1(*), vn2(*), work(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqp2
        Subroutine slaqps(m, n, offset, nb, kb, a, lda, jpvt, tau, vn1, vn2, &
          auxv, f, ldf)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: kb, lda, ldf, m, n, nb, offset
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), auxv(*), f(ldf, *), tau(*), vn1(*), &
            vn2(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqps
        Subroutine slaqr0(wantt, wantz, n, ilo, ihi, h, ldh, wr, wi, iloz, &
          ihiz, z, ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, lwork, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), wi(*), work(*), wr(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqr0
        Subroutine slaqr1(n, h, ldh, sr1, si1, sr2, si2, v)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: si1, si2, sr1, sr2
          Integer :: ldh, n
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), v(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqr1
        Subroutine slaqr2(wantt, wantz, n, ktop, kbot, nw, h, ldh, iloz, ihiz, &
          z, ldz, ns, nd, sr, si, v, ldv, nh, t, ldt, nv, wv, ldwv, work, &
          lwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kbot, ktop, ldh, ldt, ldv, ldwv, ldz, lwork, &
            n, nd, nh, ns, nv, nw
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), si(*), sr(*), t(ldt, *), v(ldv, *), &
            work(*), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqr2
        Subroutine slaqr3(wantt, wantz, n, ktop, kbot, nw, h, ldh, iloz, ihiz, &
          z, ldz, ns, nd, sr, si, v, ldv, nh, t, ldt, nv, wv, ldwv, work, &
          lwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kbot, ktop, ldh, ldt, ldv, ldwv, ldz, lwork, &
            n, nd, nh, ns, nv, nw
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), si(*), sr(*), t(ldt, *), v(ldv, *), &
            work(*), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqr3
        Subroutine slaqr4(wantt, wantz, n, ilo, ihi, h, ldh, wr, wi, iloz, &
          ihiz, z, ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, lwork, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), wi(*), work(*), wr(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqr4
        Subroutine slaqr5(wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si, &
          h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, &
          ldwh)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kacc22, kbot, ktop, ldh, ldu, ldv, ldwh, &
            ldwv, ldz, n, nh, nshfts, nv
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Real (wp) :: h(ldh, *), si(*), sr(*), u(ldu, *), v(ldv, *), &
            wh(ldwh, *), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqr5
        Subroutine slaqsb(uplo, n, kd, ab, ldab, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: kd, ldab, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqsb
        Subroutine slaqsp(uplo, n, ap, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqsp
        Subroutine slaqsy(uplo, n, a, lda, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: lda, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqsy
        Subroutine slaqtr(ltran, lreal, n, t, ldt, b, w, scale, x, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale, w
          Integer :: info, ldt, n
          Logical :: lreal, ltran
!         .. Array Arguments ..
          Real (wp) :: b(*), t(ldt, *), work(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaqtr
        Subroutine slar1v(n, b1, bn, lambda, d, l, ld, lld, pivmin, gaptol, z, &
          wantnc, negcnt, ztz, mingma, r, isuppz, nrminv, resid, rqcorr, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: gaptol, lambda, mingma, nrminv, pivmin, resid, &
            rqcorr, ztz
          Integer :: b1, bn, n, negcnt, r
          Logical :: wantnc
!         .. Array Arguments ..
          Real (wp) :: d(*), l(*), ld(*), lld(*), work(*), z(*)
          Integer :: isuppz(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slar1v
        Subroutine slar2v(n, x, y, z, incx, c, s, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, n
!         .. Array Arguments ..
          Real (wp) :: c(*), s(*), x(*), y(*), z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slar2v
        Subroutine slarfb(side, trans, direct, storev, m, n, k, v, ldv, t, &
          ldt, c, ldc, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldc, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarfb
        Subroutine slarf(side, m, n, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tau
          Integer :: incv, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarf
        Subroutine slarfg(n, alpha, x, incx, tau)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, tau
          Integer :: incx, n
!         .. Array Arguments ..
          Real (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarfg
        Subroutine slarfgp(n, alpha, x, incx, tau)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, tau
          Integer :: incx, n
!         .. Array Arguments ..
          Real (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarfgp
        Subroutine slarft(direct, storev, n, k, v, ldv, tau, t, ldt)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldt, ldv, n
          Character (1) :: direct, storev
!         .. Array Arguments ..
          Real (wp) :: t(ldt, *), tau(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarft
        Subroutine slarfx(side, m, n, v, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tau
          Integer :: ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarfx
        Subroutine slarfy(uplo, n, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tau
          Integer :: incv, ldc, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarfy
        Subroutine slargv(n, x, incx, y, incy, c, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, incy, n
!         .. Array Arguments ..
          Real (wp) :: c(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slargv
        Subroutine slarnv(idist, iseed, n, x)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: idist, n
!         .. Array Arguments ..
          Real (wp) :: x(*)
          Integer :: iseed(4)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarnv
        Subroutine slarra(n, d, e, e2, spltol, tnrm, nsplit, isplit, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: spltol, tnrm
          Integer :: info, n, nsplit
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), e2(*)
          Integer :: isplit(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarra
        Subroutine slarrb(n, d, lld, ifirst, ilast, rtol1, rtol2, offset, w, &
          wgap, werr, work, iwork, pivmin, spdiam, twist, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, rtol1, rtol2, spdiam
          Integer :: ifirst, ilast, info, n, offset, twist
!         .. Array Arguments ..
          Real (wp) :: d(*), lld(*), w(*), werr(*), wgap(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarrb
        Subroutine slarrc(jobt, n, vl, vu, d, e, pivmin, eigcnt, lcnt, rcnt, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, vl, vu
          Integer :: eigcnt, info, lcnt, n, rcnt
          Character (1) :: jobt
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarrc
        Subroutine slarrd(range, order, n, vl, vu, il, iu, gers, reltol, d, e, &
          e2, pivmin, nsplit, isplit, m, w, werr, wl, wu, iblock, indexw, &
          work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, reltol, vl, vu, wl, wu
          Integer :: il, info, iu, m, n, nsplit
          Character (1) :: order, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), e2(*), gers(*), w(*), werr(*), work(*)
          Integer :: iblock(*), indexw(*), isplit(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarrd
        Subroutine slarre(range, n, vl, vu, il, iu, d, e, e2, rtol1, rtol2, &
          spltol, nsplit, isplit, m, w, werr, wgap, iblock, indexw, gers, &
          pivmin, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, rtol1, rtol2, spltol, vl, vu
          Integer :: il, info, iu, m, n, nsplit
          Character (1) :: range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), e2(*), gers(*), w(*), werr(*), &
            wgap(*), work(*)
          Integer :: iblock(*), indexw(*), isplit(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarre
        Subroutine slarrf(n, d, l, ld, clstrt, clend, w, wgap, werr, spdiam, &
          clgapl, clgapr, pivmin, sigma, dplus, lplus, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: clgapl, clgapr, pivmin, sigma, spdiam
          Integer :: clend, clstrt, info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), dplus(*), l(*), ld(*), lplus(*), w(*), &
            werr(*), wgap(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarrf
        Subroutine slarrj(n, d, e2, ifirst, ilast, rtol, offset, w, werr, &
          work, iwork, pivmin, spdiam, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: pivmin, rtol, spdiam
          Integer :: ifirst, ilast, info, n, offset
!         .. Array Arguments ..
          Real (wp) :: d(*), e2(*), w(*), werr(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarrj
        Subroutine slarrk(n, iw, gl, gu, d, e2, pivmin, reltol, w, werr, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: gl, gu, pivmin, reltol, w, werr
          Integer :: info, iw, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarrk
        Subroutine slarrr(n, d, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarrr
        Subroutine slarrv(n, vl, vu, d, l, pivmin, isplit, m, dol, dou, &
          minrgp, rtol1, rtol2, w, werr, wgap, iblock, indexw, gers, z, ldz, &
          isuppz, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: minrgp, pivmin, rtol1, rtol2, vl, vu
          Integer :: dol, dou, info, ldz, m, n
!         .. Array Arguments ..
          Real (wp) :: d(*), gers(*), l(*), w(*), werr(*), wgap(*), &
            work(*), z(ldz, *)
          Integer :: iblock(*), indexw(*), isplit(*), isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarrv
        Subroutine slarscl2(m, n, d, x, ldx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
!         .. Array Arguments ..
          Real (wp) :: d(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarscl2
        Subroutine slartg(f, g, cs, sn, r)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: cs, f, g, r, sn
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slartg
        Subroutine slartgp(f, g, cs, sn, r)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: cs, f, g, r, sn
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slartgp
        Subroutine slartgs(x, y, sigma, cs, sn)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: cs, sigma, sn, x, y
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slartgs
        Subroutine slartv(n, x, incx, y, incy, c, s, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, incy, n
!         .. Array Arguments ..
          Real (wp) :: c(*), s(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slartv
        Subroutine slaruv(iseed, n, x)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
!         .. Array Arguments ..
          Real (wp) :: x(n)
          Integer :: iseed(4)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaruv
        Subroutine slarzb(side, trans, direct, storev, m, n, k, l, v, ldv, t, &
          ldt, c, ldc, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, l, ldc, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarzb
        Subroutine slarz(side, m, n, l, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tau
          Integer :: incv, l, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarz
        Subroutine slarzt(direct, storev, n, k, v, ldv, tau, t, ldt)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, ldt, ldv, n
          Character (1) :: direct, storev
!         .. Array Arguments ..
          Real (wp) :: t(ldt, *), tau(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slarzt
        Subroutine slas2(f, g, h, ssmin, ssmax)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: f, g, h, ssmax, ssmin
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slas2
        Subroutine slascl2(m, n, d, x, ldx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
!         .. Array Arguments ..
          Real (wp) :: d(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slascl2
        Subroutine slascl(type, kl, ku, cfrom, cto, m, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: cfrom, cto
          Integer :: info, kl, ku, lda, m, n
          Character (1) :: type
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slascl
        Subroutine slasd0(n, sqre, d, e, u, ldu, vt, ldvt, smlsiz, iwork, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldu, ldvt, n, smlsiz, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), u(ldu, *), vt(ldvt, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasd0
        Subroutine slasd1(nl, nr, sqre, d, alpha, beta, u, ldu, vt, ldvt, &
          idxq, iwork, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: info, ldu, ldvt, nl, nr, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), u(ldu, *), vt(ldvt, *), work(*)
          Integer :: idxq(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasd1
        Subroutine slasd2(nl, nr, sqre, k, d, z, alpha, beta, u, ldu, vt, &
          ldvt, dsigma, u2, ldu2, vt2, ldvt2, idxp, idx, idxc, idxq, coltyp, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: info, k, ldu, ldu2, ldvt, ldvt2, nl, nr, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), dsigma(*), u(ldu, *), u2(ldu2, *), &
            vt(ldvt, *), vt2(ldvt2, *), z(*)
          Integer :: coltyp(*), idx(*), idxc(*), idxp(*), idxq(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasd2
        Subroutine slasd3(nl, nr, sqre, k, d, q, ldq, dsigma, u, ldu, u2, &
          ldu2, vt, ldvt, vt2, ldvt2, idxc, ctot, z, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, ldq, ldu, ldu2, ldvt, ldvt2, nl, nr, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), dsigma(*), q(ldq, *), u(ldu, *), &
            u2(ldu2, *), vt(ldvt, *), vt2(ldvt2, *), z(*)
          Integer :: ctot(*), idxc(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasd3
        Subroutine slasd4(n, i, d, z, delta, rho, sigma, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rho, sigma
          Integer :: i, info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), delta(*), work(*), z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasd4
        Subroutine slasd5(i, d, z, delta, rho, dsigma, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dsigma, rho
          Integer :: i
!         .. Array Arguments ..
          Real (wp) :: d(2), delta(2), work(2), z(2)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasd5
        Subroutine slasd6(icompq, nl, nr, sqre, d, vf, vl, alpha, beta, idxq, &
          perm, givptr, givcol, ldgcol, givnum, ldgnum, poles, difl, difr, z, &
          k, c, s, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta, c, s
          Integer :: givptr, icompq, info, k, ldgcol, ldgnum, nl, nr, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), difl(*), difr(*), givnum(ldgnum, *), &
            poles(ldgnum, *), vf(*), vl(*), work(*), z(*)
          Integer :: givcol(ldgcol, *), idxq(*), iwork(*), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasd6
        Subroutine slasd7(icompq, nl, nr, sqre, k, d, z, zw, vf, vfw, vl, vlw, &
          alpha, beta, dsigma, idx, idxp, idxq, perm, givptr, givcol, ldgcol, &
          givnum, ldgnum, c, s, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta, c, s
          Integer :: givptr, icompq, info, k, ldgcol, ldgnum, nl, nr, sqre
!         .. Array Arguments ..
          Real (wp) :: d(*), dsigma(*), givnum(ldgnum, *), vf(*), vfw(*), &
            vl(*), vlw(*), z(*), zw(*)
          Integer :: givcol(ldgcol, *), idx(*), idxp(*), idxq(*), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasd7
        Subroutine slasd8(icompq, k, d, z, vf, vl, difl, difr, lddifr, dsigma, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: icompq, info, k, lddifr
!         .. Array Arguments ..
          Real (wp) :: d(*), difl(*), difr(lddifr, *), dsigma(*), vf(*), &
            vl(*), work(*), z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasd8
        Subroutine slasda(icompq, smlsiz, n, sqre, d, e, u, ldu, vt, k, difl, &
          difr, z, poles, givptr, givcol, ldgcol, perm, givnum, c, s, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: icompq, info, ldgcol, ldu, n, smlsiz, sqre
!         .. Array Arguments ..
          Real (wp) :: c(*), d(*), difl(ldu, *), difr(ldu, *), e(*), &
            givnum(ldu, *), poles(ldu, *), s(*), u(ldu, *), vt(ldu, *), &
            work(*), z(ldu, *)
          Integer :: givcol(ldgcol, *), givptr(*), iwork(*), k(*), &
            perm(ldgcol, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasda
        Subroutine slasdq(uplo, sqre, n, ncvt, nru, ncc, d, e, vt, ldvt, u, &
          ldu, c, ldc, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, ldu, ldvt, n, ncc, ncvt, nru, sqre
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), d(*), e(*), u(ldu, *), vt(ldvt, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasdq
        Subroutine slasdt(n, lvl, nd, inode, ndiml, ndimr, msub)
!         .. Implicit None Statement ..
          Implicit None
!         .. Scalar Arguments ..
          Integer :: lvl, msub, n, nd
!         .. Array Arguments ..
          Integer :: inode(*), ndiml(*), ndimr(*)
        End Subroutine slasdt
        Subroutine slaset(uplo, m, n, alpha, beta, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: lda, m, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaset
        Subroutine slasq1(n, d, e, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasq1
        Subroutine slasq2(n, z, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasq2
        Subroutine slasq3(i0, n0, z, pp, dmin, sigma, desig, qmax, nfail, &
          iter, ndiv, ieee, ttype, dmin1, dmin2, dn, dn1, dn2, g, tau)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: desig, dmin, dmin1, dmin2, dn, dn1, dn2, g, qmax, &
            sigma, tau
          Integer :: i0, iter, n0, ndiv, nfail, pp, ttype
          Logical :: ieee
!         .. Array Arguments ..
          Real (wp) :: z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasq3
        Subroutine slasq4(i0, n0, z, pp, n0in, dmin, dmin1, dmin2, dn, dn1, &
          dn2, tau, ttype, g)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dmin, dmin1, dmin2, dn, dn1, dn2, g, tau
          Integer :: i0, n0, n0in, pp, ttype
!         .. Array Arguments ..
          Real (wp) :: z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasq4
        Subroutine slasq5(i0, n0, z, pp, tau, sigma, dmin, dmin1, dmin2, dn, &
          dnm1, dnm2, ieee, eps)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dmin, dmin1, dmin2, dn, dnm1, dnm2, eps, sigma, &
            tau
          Integer :: i0, n0, pp
          Logical :: ieee
!         .. Array Arguments ..
          Real (wp) :: z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasq5
        Subroutine slasq6(i0, n0, z, pp, dmin, dmin1, dmin2, dn, dnm1, dnm2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dmin, dmin1, dmin2, dn, dnm1, dnm2
          Integer :: i0, n0, pp
!         .. Array Arguments ..
          Real (wp) :: z(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasq6
        Subroutine slasr(side, pivot, direct, m, n, c, s, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: direct, pivot, side
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasr
        Subroutine slasrt(id, n, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: id
!         .. Array Arguments ..
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasrt
        Subroutine slassq(n, x, incx, scale, sumsq)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale, sumsq
          Integer :: incx, n
!         .. Array Arguments ..
          Real (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slassq
        Subroutine slasv2(f, g, h, ssmin, ssmax, snr, csr, snl, csl)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: csl, csr, f, g, h, snl, snr, ssmax, ssmin
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasv2
        Subroutine slaswlq(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaswlq
        Subroutine slaswp(n, a, lda, k1, k2, ipiv, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incx, k1, k2, lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slaswp
        Subroutine slasy2(ltranl, ltranr, isgn, n1, n2, tl, ldtl, tr, ldtr, b, &
          ldb, scale, x, ldx, xnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale, xnorm
          Integer :: info, isgn, ldb, ldtl, ldtr, ldx, n1, n2
          Logical :: ltranl, ltranr
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), tl(ldtl, *), tr(ldtr, *), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasy2
        Subroutine sla_syamv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, lda, n, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sla_syamv
        Subroutine slasyf_aa(uplo, j1, m, nb, a, lda, ipiv, h, ldh, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: j1, lda, ldh, m, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), h(ldh, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasyf_aa
        Subroutine slasyf(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasyf
        Subroutine slasyf_rk(uplo, n, nb, kb, a, lda, e, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasyf_rk
        Subroutine slasyf_rook(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slasyf_rook
        Function sla_syrcond(uplo, n, a, lda, af, ldaf, ipiv, cmode, c, info, &
          work, iwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: cmode, info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), c(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: sla_syrcond
        End Function sla_syrcond
        Subroutine sla_syrfsx_extended(prec_type, uplo, n, nrhs, a, lda, af, &
          ldaf, ipiv, colequ, c, b, ldb, y, ldy, berr_out, n_norms, &
          err_bnds_norm, err_bnds_comp, res, ayb, dy, y_tail, rcond, ithresh, &
          rthresh, dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type
          Logical :: colequ, ignore_cwise
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), ayb(*), b(ldb, *), &
            berr_out(*), c(*), dy(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), res(*), y(ldy, *), y_tail(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sla_syrfsx_extended
        Function sla_syrpvgrw(uplo, n, info, a, lda, af, ldaf, ipiv, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: sla_syrpvgrw
        End Function sla_syrpvgrw
        Subroutine slatbs(uplo, trans, diag, normin, n, kd, ab, ldab, x, &
          scale, cnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, kd, ldab, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), cnorm(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slatbs
        Subroutine slatdf(ijob, n, z, ldz, rhs, rdsum, rdscal, ipiv, jpiv)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rdscal, rdsum
          Integer :: ijob, ldz, n
!         .. Array Arguments ..
          Real (wp) :: rhs(*), z(ldz, *)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slatdf
        Subroutine slatps(uplo, trans, diag, normin, n, ap, x, scale, cnorm, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), cnorm(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slatps
        Subroutine slatrd(uplo, n, nb, a, lda, e, tau, w, ldw)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), tau(*), w(ldw, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slatrd
        Subroutine slatrs(uplo, trans, diag, normin, n, a, lda, x, scale, &
          cnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, lda, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), cnorm(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slatrs
        Subroutine slatrz(m, n, l, a, lda, tau, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: l, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slatrz
        Subroutine slatsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slatsqr
        Subroutine slatzm(side, m, n, v, incv, tau, c1, c2, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tau
          Integer :: incv, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Real (wp) :: c1(ldc, *), c2(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slatzm
        Subroutine slauu2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slauu2
        Subroutine slauum(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine slauum
        Subroutine sla_wwaddw(n, x, y, w)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: n
!         .. Array Arguments ..
          Real (wp) :: w(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sla_wwaddw
        Subroutine sopgtr(uplo, n, ap, tau, q, ldq, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldq, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), q(ldq, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sopgtr
        Subroutine sopmtr(side, uplo, trans, m, n, ap, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, m, n
          Character (1) :: side, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sopmtr
        Subroutine sorbdb1(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Real (wp) :: phi(*), taup1(*), taup2(*), tauq1(*), theta(*), &
            work(*), x11(ldx11, *), x21(ldx21, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorbdb1
        Subroutine sorbdb2(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Real (wp) :: phi(*), taup1(*), taup2(*), tauq1(*), theta(*), &
            work(*), x11(ldx11, *), x21(ldx21, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorbdb2
        Subroutine sorbdb3(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Real (wp) :: phi(*), taup1(*), taup2(*), tauq1(*), theta(*), &
            work(*), x11(ldx11, *), x21(ldx21, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorbdb3
        Subroutine sorbdb4(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, phantom, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Real (wp) :: phantom(*), phi(*), taup1(*), taup2(*), tauq1(*), &
            theta(*), work(*), x11(ldx11, *), x21(ldx21, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorbdb4
        Subroutine sorbdb5(m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, &
          ldq2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incx1, incx2, info, ldq1, ldq2, lwork, m1, m2, n
!         .. Array Arguments ..
          Real (wp) :: q1(ldq1, *), q2(ldq2, *), work(*), x1(*), x2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorbdb5
        Subroutine sorbdb6(m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, &
          ldq2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: incx1, incx2, info, ldq1, ldq2, lwork, m1, m2, n
!         .. Array Arguments ..
          Real (wp) :: q1(ldq1, *), q2(ldq2, *), work(*), x1(*), x2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorbdb6
        Subroutine sorbdb(trans, signs, m, p, q, x11, ldx11, x12, ldx12, x21, &
          ldx21, x22, ldx22, theta, phi, taup1, taup2, tauq1, tauq2, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx12, ldx21, ldx22, lwork, m, p, q
          Character (1) :: signs, trans
!         .. Array Arguments ..
          Real (wp) :: phi(*), taup1(*), taup2(*), tauq1(*), tauq2(*), &
            theta(*), work(*), x11(ldx11, *), x12(ldx12, *), x21(ldx21, *), &
            x22(ldx22, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorbdb
        Subroutine sorcsd2by1(jobu1, jobu2, jobv1t, m, p, q, x11, ldx11, x21, &
          ldx21, theta, u1, ldu1, u2, ldu2, v1t, ldv1t, work, lwork, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldx11, ldx21, lwork, m, p, q
          Character (1) :: jobu1, jobu2, jobv1t
!         .. Array Arguments ..
          Real (wp) :: theta(*), u1(ldu1, *), u2(ldu2, *), v1t(ldv1t, *), &
            work(*), x11(ldx11, *), x21(ldx21, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorcsd2by1
        Recursive Subroutine sorcsd(jobu1, jobu2, jobv1t, jobv2t, trans, &
          signs, m, p, q, x11, ldx11, x12, ldx12, x21, ldx21, x22, ldx22, &
          theta, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, work, lwork, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldv2t, ldx11, ldx12, ldx21, &
            ldx22, lwork, m, p, q
          Character (1) :: jobu1, jobu2, jobv1t, jobv2t, signs, trans
!         .. Array Arguments ..
          Real (wp) :: theta(*), u1(ldu1, *), u2(ldu2, *), v1t(ldv1t, *), &
            v2t(ldv2t, *), work(*), x11(ldx11, *), x12(ldx12, *), &
            x21(ldx21, *), x22(ldx22, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorcsd
        Subroutine sorg2l(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorg2l
        Subroutine sorg2r(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorg2r
        Subroutine sorgbr(vect, m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
          Character (1) :: vect
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorgbr
        Subroutine sorghr(n, ilo, ihi, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, lwork, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorghr
        Subroutine sorgl2(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorgl2
        Subroutine sorglq(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorglq
        Subroutine sorgql(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorgql
        Subroutine sorgqr(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorgqr
        Subroutine sorgr2(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorgr2
        Subroutine sorgrq(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorgrq
        Subroutine sorgtr(uplo, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorgtr
        Subroutine sorgtsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorgtsqr
        Subroutine sorhr_col(m, n, nb, a, lda, t, ldt, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorhr_col
        Subroutine sorm22(side, trans, m, n, n1, n2, q, ldq, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, ldq, lwork, m, n, n1, n2
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: c(ldc, *), q(ldq, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorm22
        Subroutine sorm2l(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorm2l
        Subroutine sorm2r(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorm2r
        Subroutine sormbr(vect, side, trans, m, n, k, a, lda, tau, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans, vect
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sormbr
        Subroutine sormhr(side, trans, m, n, ilo, ihi, a, lda, tau, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sormhr
        Subroutine sorml2(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sorml2
        Subroutine sormlq(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sormlq
        Subroutine sormql(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sormql
        Subroutine sormqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sormqr
        Subroutine sormr2(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sormr2
        Subroutine sormr3(side, trans, m, n, k, l, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sormr3
        Subroutine sormrq(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sormrq
        Subroutine sormrz(side, trans, m, n, k, l, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sormrz
        Subroutine sormtr(side, uplo, trans, m, n, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldc, lwork, m, n
          Character (1) :: side, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sormtr
        Subroutine spbcon(uplo, n, kd, ab, ldab, anorm, rcond, work, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spbcon
        Subroutine spbequ(uplo, n, kd, ab, ldab, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spbequ
        Subroutine spbrfs(uplo, n, kd, nrhs, ab, ldab, afb, ldafb, b, ldb, x, &
          ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spbrfs
        Subroutine spbstf(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spbstf
        Subroutine spbsv(uplo, n, kd, nrhs, ab, ldab, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spbsv
        Subroutine spbsvx(fact, uplo, n, kd, nrhs, ab, ldab, afb, ldafb, &
          equed, s, b, ldb, x, ldx, rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kd, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), berr(*), &
            ferr(*), s(*), work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spbsvx
        Subroutine spbtf2(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spbtf2
        Subroutine spbtrf(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spbtrf
        Subroutine spbtrs(uplo, n, kd, nrhs, ab, ldab, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spbtrs
        Subroutine spftrf(transr, uplo, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spftrf
        Subroutine spftri(transr, uplo, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spftri
        Subroutine spftrs(transr, uplo, n, nrhs, a, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spftrs
        Subroutine spocon(uplo, n, a, lda, anorm, rcond, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spocon
        Subroutine spoequb(n, a, lda, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spoequb
        Subroutine spoequ(n, a, lda, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spoequ
        Subroutine sporfs(uplo, n, nrhs, a, lda, af, ldaf, b, ldb, x, ldx, &
          ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sporfs
        Subroutine sporfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, s, b, ldb, &
          x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, &
          nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), s(*), &
            work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sporfsx
        Subroutine sposv(uplo, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sposv
        Subroutine sposvx(fact, uplo, n, nrhs, a, lda, af, ldaf, equed, s, b, &
          ldb, x, ldx, rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            ferr(*), s(*), work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sposvx
        Subroutine sposvxx(fact, uplo, n, nrhs, a, lda, af, ldaf, equed, s, b, &
          ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), s(*), &
            work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sposvxx
        Subroutine spotf2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spotf2
        Recursive Subroutine spotrf2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spotrf2
        Subroutine spotrf(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spotrf
        Subroutine spotri(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spotri
        Subroutine spotrs(uplo, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spotrs
        Subroutine sppcon(uplo, n, ap, anorm, rcond, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sppcon
        Subroutine sppequ(uplo, n, ap, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sppequ
        Subroutine spprfs(uplo, n, nrhs, ap, afp, b, ldb, x, ldx, ferr, berr, &
          work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: afp(*), ap(*), b(ldb, *), berr(*), ferr(*), &
            work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spprfs
        Subroutine sppsv(uplo, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sppsv
        Subroutine sppsvx(fact, uplo, n, nrhs, ap, afp, equed, s, b, ldb, x, &
          ldx, rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Real (wp) :: afp(*), ap(*), b(ldb, *), berr(*), ferr(*), s(*), &
            work(*), x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sppsvx
        Subroutine spptrf(uplo, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spptrf
        Subroutine spptri(uplo, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spptri
        Subroutine spptrs(uplo, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spptrs
        Subroutine spstf2(uplo, n, a, lda, piv, rank, tol, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tol
          Integer :: info, lda, n, rank
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(2*n)
          Integer :: piv(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spstf2
        Subroutine spstrf(uplo, n, a, lda, piv, rank, tol, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tol
          Integer :: info, lda, n, rank
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(2*n)
          Integer :: piv(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spstrf
        Subroutine sptcon(n, d, e, anorm, rcond, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sptcon
        Subroutine spteqr(compz, n, d, e, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: compz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spteqr
        Subroutine sptrfs(n, nrhs, d, e, df, ef, b, ldb, x, ldx, ferr, berr, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), berr(*), d(*), df(*), e(*), ef(*), &
            ferr(*), work(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sptrfs
        Subroutine sptsv(n, nrhs, d, e, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sptsv
        Subroutine sptsvx(fact, n, nrhs, d, e, df, ef, b, ldb, x, ldx, rcond, &
          ferr, berr, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), berr(*), d(*), df(*), e(*), ef(*), &
            ferr(*), work(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sptsvx
        Subroutine spttrf(n, d, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spttrf
        Subroutine spttrs(n, nrhs, d, e, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine spttrs
        Subroutine sptts2(n, nrhs, d, e, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ldb, n, nrhs
!         .. Array Arguments ..
          Real (wp) :: b(ldb, *), d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sptts2
        Subroutine srscl(n, sa, sx, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: sa
          Integer :: incx, n
!         .. Array Arguments ..
          Real (wp) :: sx(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine srscl
        Subroutine ssb2st_kernels(uplo, wantz, ttype, st, ed, sweep, n, nb, &
          ib, a, lda, v, tau, ldvt, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ed, ib, lda, ldvt, n, nb, st, sweep, ttype
          Logical :: wantz
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssb2st_kernels
        Subroutine ssbev_2stage(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbev_2stage
        Subroutine ssbevd_2stage(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, &
          lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), w(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbevd_2stage
        Subroutine ssbevd(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork, &
          iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), w(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbevd
        Subroutine ssbev(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbev
        Subroutine ssbevx_2stage(jobz, range, uplo, n, kd, ab, ldab, q, ldq, &
          vl, vu, il, iu, abstol, m, w, z, ldz, work, lwork, iwork, ifail, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, kd, ldab, ldq, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), q(ldq, *), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbevx_2stage
        Subroutine ssbevx(jobz, range, uplo, n, kd, ab, ldab, q, ldq, vl, vu, &
          il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, kd, ldab, ldq, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), q(ldq, *), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbevx
        Subroutine ssbgst(vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x, ldx, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldx, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), bb(ldbb, *), work(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbgst
        Subroutine ssbgvd(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, &
          ldz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldz, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), bb(ldbb, *), w(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbgvd
        Subroutine ssbgv(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), bb(ldbb, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbgv
        Subroutine ssbgvx(jobz, range, uplo, n, ka, kb, ab, ldab, bb, ldbb, q, &
          ldq, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ka, kb, ldab, ldbb, ldq, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), bb(ldbb, *), q(ldq, *), w(*), &
            work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbgvx
        Subroutine ssbtrd(vect, uplo, n, kd, ab, ldab, d, e, q, ldq, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldq, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), d(*), e(*), q(ldq, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssbtrd
        Subroutine ssfrk(transr, uplo, trans, n, k, alpha, a, lda, beta, c)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: k, lda, n
          Character (1) :: trans, transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), c(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssfrk
        Subroutine sspcon(uplo, n, ap, ipiv, anorm, rcond, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sspcon
        Subroutine sspevd(jobz, uplo, n, ap, w, z, ldz, work, lwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), w(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sspevd
        Subroutine sspev(jobz, uplo, n, ap, w, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sspev
        Subroutine sspevx(jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m, &
          w, z, ldz, work, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sspevx
        Subroutine sspgst(itype, uplo, n, ap, bp, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), bp(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sspgst
        Subroutine sspgvd(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, &
          lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, ldz, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), bp(*), w(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sspgvd
        Subroutine sspgv(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), bp(*), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sspgv
        Subroutine sspgvx(itype, jobz, range, uplo, n, ap, bp, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, itype, iu, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), bp(*), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sspgvx
        Subroutine ssprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, &
          berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: afp(*), ap(*), b(ldb, *), berr(*), ferr(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssprfs
        Subroutine sspsv(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sspsv
        Subroutine sspsvx(fact, uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, &
          rcond, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Real (wp) :: afp(*), ap(*), b(ldb, *), berr(*), ferr(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sspsvx
        Subroutine ssptrd(uplo, n, ap, d, e, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), d(*), e(*), tau(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssptrd
        Subroutine ssptrf(uplo, n, ap, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssptrf
        Subroutine ssptri(uplo, n, ap, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssptri
        Subroutine ssptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssptrs
        Subroutine sstebz(range, order, n, vl, vu, il, iu, abstol, d, e, m, &
          nsplit, w, iblock, isplit, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, m, n, nsplit
          Character (1) :: order, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*)
          Integer :: iblock(*), isplit(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sstebz
        Subroutine sstedc(compz, n, d, e, z, ldz, work, lwork, iwork, liwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, liwork, lwork, n
          Character (1) :: compz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sstedc
        Subroutine sstegr(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, &
          z, ldz, isuppz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, liwork, lwork, m, n
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*), z(ldz, *)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sstegr
        Subroutine sstein(n, d, e, m, w, iblock, isplit, z, ldz, work, iwork, &
          ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, m, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*), z(ldz, *)
          Integer :: iblock(*), ifail(*), isplit(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sstein
        Subroutine sstemr(jobz, range, n, d, e, vl, vu, il, iu, m, w, z, ldz, &
          nzc, isuppz, tryrac, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: vl, vu
          Integer :: il, info, iu, ldz, liwork, lwork, m, n, nzc
          Logical :: tryrac
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*), z(ldz, *)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sstemr
        Subroutine ssteqr(compz, n, d, e, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: compz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssteqr
        Subroutine ssterf(n, d, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssterf
        Subroutine sstevd(jobz, n, d, e, z, ldz, work, lwork, iwork, liwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, liwork, lwork, n
          Character (1) :: jobz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*), z(ldz, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sstevd
        Subroutine sstev(jobz, n, d, e, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: jobz
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sstev
        Subroutine sstevr(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, &
          z, ldz, isuppz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, liwork, lwork, m, n
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*), z(ldz, *)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sstevr
        Subroutine sstevx(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, &
          z, ldz, work, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, m, n
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Real (wp) :: d(*), e(*), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine sstevx
        Subroutine ssycon_3(uplo, n, a, lda, e, ipiv, anorm, rcond, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssycon_3
        Subroutine ssycon(uplo, n, a, lda, ipiv, anorm, rcond, work, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssycon
        Subroutine ssycon_rook(uplo, n, a, lda, ipiv, anorm, rcond, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssycon_rook
        Subroutine ssyconv(uplo, way, n, a, lda, ipiv, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyconv
        Subroutine ssyconvf(uplo, way, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyconvf
        Subroutine ssyconvf_rook(uplo, way, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyconvf_rook
        Subroutine ssyequb(uplo, n, a, lda, s, scond, amax, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), s(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyequb
        Subroutine ssyev_2stage(jobz, uplo, n, a, lda, w, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyev_2stage
        Subroutine ssyevd_2stage(jobz, uplo, n, a, lda, w, work, lwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyevd_2stage
        Subroutine ssyevd(jobz, uplo, n, a, lda, w, work, lwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyevd
        Subroutine ssyev(jobz, uplo, n, a, lda, w, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyev
        Subroutine ssyevr_2stage(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, isuppz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, liwork, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*), z(ldz, *)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyevr_2stage
        Subroutine ssyevr(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, isuppz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, liwork, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*), z(ldz, *)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyevr
        Subroutine ssyevx_2stage(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, lwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyevx_2stage
        Subroutine ssyevx(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, lwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyevx
        Subroutine ssygs2(itype, uplo, n, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssygs2
        Subroutine ssygst(itype, uplo, n, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssygst
        Subroutine ssygv_2stage(itype, jobz, uplo, n, a, lda, b, ldb, w, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), w(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssygv_2stage
        Subroutine ssygvd(itype, jobz, uplo, n, a, lda, b, ldb, w, work, &
          lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, liwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), w(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssygvd
        Subroutine ssygv(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), w(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssygv
        Subroutine ssygvx(itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, &
          il, iu, abstol, m, w, z, ldz, work, lwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, itype, iu, lda, ldb, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), w(*), work(*), z(ldz, *)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssygvx
        Subroutine ssyrfs(uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, &
          ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyrfs
        Subroutine ssyrfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, ipiv, s, b, &
          ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, &
          nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), s(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyrfsx
        Subroutine ssysv_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssysv_aa_2stage
        Subroutine ssysv_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssysv_aa
        Subroutine ssysv(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssysv
        Subroutine ssysv_rk(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssysv_rk
        Subroutine ssysv_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssysv_rook
        Subroutine ssysvx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, &
          x, ldx, rcond, ferr, berr, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, lwork, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            ferr(*), work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssysvx
        Subroutine ssysvxx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, equed, &
          s, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), berr(*), &
            err_bnds_comp(nrhs, *), err_bnds_norm(nrhs, *), params(*), s(*), &
            work(*), x(ldx, *)
          Integer :: ipiv(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssysvxx
        Subroutine ssyswapr(uplo, n, a, lda, i1, i2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: i1, i2, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssyswapr
        Subroutine ssytd2(uplo, n, a, lda, d, e, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), tau(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytd2
        Subroutine ssytf2(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytf2
        Subroutine ssytf2_rk(uplo, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytf2_rk
        Subroutine ssytf2_rook(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytf2_rook
        Subroutine ssytrd_2stage(vect, uplo, n, a, lda, d, e, tau, hous2, &
          lhous2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lhous2, lwork, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), hous2(*), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrd_2stage
        Subroutine ssytrd(uplo, n, a, lda, d, e, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), d(*), e(*), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrd
        Subroutine ssytrd_sb2st(stage1, vect, uplo, n, kd, ab, ldab, d, e, &
          hous, lhous, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, lhous, lwork, n
          Character (1) :: stage1, uplo, vect
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), d(*), e(*), hous(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrd_sb2st
        Subroutine ssytrd_sy2sb(uplo, n, kd, a, lda, ab, ldab, tau, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, lda, ldab, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), ab(ldab, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrd_sy2sb
        Subroutine ssytrf_aa_2stage(uplo, n, a, lda, tb, ltb, ipiv, ipiv2, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ltb, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrf_aa_2stage
        Subroutine ssytrf_aa(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrf_aa
        Subroutine ssytrf(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrf
        Subroutine ssytrf_rk(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrf_rk
        Subroutine ssytrf_rook(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrf_rook
        Subroutine ssytri2(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytri2
        Subroutine ssytri2x(uplo, n, a, lda, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytri2x
        Subroutine ssytri_3(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytri_3
        Subroutine ssytri_3x(uplo, n, a, lda, e, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), e(*), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytri_3x
        Subroutine ssytri(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytri
        Subroutine ssytri_rook(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytri_rook
        Subroutine ssytrs2(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrs2
        Subroutine ssytrs_3(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrs_3
        Subroutine ssytrs_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), tb(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrs_aa_2stage
        Subroutine ssytrs_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrs_aa
        Subroutine ssytrs(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrs
        Subroutine ssytrs_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ssytrs_rook
        Subroutine stbcon(norm, uplo, diag, n, kd, ab, ldab, rcond, work, &
          iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kd, ldab, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stbcon
        Subroutine stbrfs(uplo, trans, diag, n, kd, nrhs, ab, ldab, b, ldb, x, &
          ldx, ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *), berr(*), ferr(*), work(*), &
            x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stbrfs
        Subroutine stbtrs(uplo, trans, diag, n, kd, nrhs, ab, ldab, b, ldb, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stbtrs
        Subroutine stfsm(transr, side, uplo, trans, diag, m, n, alpha, a, b, &
          ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha
          Integer :: ldb, m, n
          Character (1) :: diag, side, trans, transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*), b(0:ldb-1, 0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stfsm
        Subroutine stftri(transr, uplo, diag, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: diag, transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stftri
        Subroutine stfttp(transr, uplo, n, arf, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stfttp
        Subroutine stfttr(transr, uplo, n, arf, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:lda-1, 0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stfttr
        Subroutine stgevc(side, howmny, select, n, s, lds, p, ldp, vl, ldvl, &
          vr, ldvr, mm, m, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldp, lds, ldvl, ldvr, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Real (wp) :: p(ldp, *), s(lds, *), vl(ldvl, *), vr(ldvr, *), &
            work(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stgevc
        Subroutine stgex2(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, j1, &
          n1, n2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, j1, lda, ldb, ldq, ldz, lwork, n, n1, n2
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), work(*), &
            z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stgex2
        Subroutine stgexc(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, &
          ifst, ilst, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ifst, ilst, info, lda, ldb, ldq, ldz, lwork, n
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), q(ldq, *), work(*), &
            z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stgexc
        Subroutine stgsen(ijob, wantq, wantz, select, n, a, lda, b, ldb, &
          alphar, alphai, beta, q, ldq, z, ldz, m, pl, pr, dif, work, lwork, &
          iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: pl, pr
          Integer :: ijob, info, lda, ldb, ldq, ldz, liwork, lwork, m, n
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alphai(*), alphar(*), b(ldb, *), &
            beta(*), dif(*), q(ldq, *), work(*), z(ldz, *)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stgsen
        Subroutine 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)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, ncycle, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            q(ldq, *), u(ldu, *), v(ldv, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stgsja
        Subroutine stgsna(job, howmny, select, n, a, lda, b, ldb, vl, ldvl, &
          vr, ldvr, s, dif, mm, m, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, m, mm, n
          Character (1) :: howmny, job
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), dif(*), s(*), vl(ldvl, *), &
            vr(ldvr, *), work(*)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stgsna
        Subroutine stgsy2(trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, &
          e, lde, f, ldf, scale, rdsum, rdscal, iwork, pq, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rdscal, rdsum, scale
          Integer :: ijob, info, lda, ldb, ldc, ldd, lde, ldf, m, n, pq
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), c(ldc, *), d(ldd, *), &
            e(lde, *), f(ldf, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stgsy2
        Subroutine stgsyl(trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, &
          e, lde, f, ldf, scale, dif, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: dif, scale
          Integer :: ijob, info, lda, ldb, ldc, ldd, lde, ldf, lwork, m, n
          Character (1) :: trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), c(ldc, *), d(ldd, *), &
            e(lde, *), f(ldf, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stgsyl
        Subroutine stpcon(norm, uplo, diag, n, ap, rcond, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stpcon
        Subroutine stplqt2(m, n, l, a, lda, b, ldb, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stplqt2
        Subroutine stplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, mb, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stplqt
        Subroutine stpmlqt(side, trans, m, n, k, l, mb, v, ldv, t, ldt, a, &
          lda, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldt, ldv, m, mb, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stpmlqt
        Subroutine stpmqrt(side, trans, m, n, k, l, nb, v, ldv, t, ldt, a, &
          lda, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldt, ldv, m, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stpmqrt
        Subroutine stpqrt2(m, n, l, a, lda, b, ldb, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stpqrt2
        Subroutine stpqrt(m, n, l, nb, a, lda, b, ldb, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n, nb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stpqrt
        Subroutine stprfb(side, trans, direct, storev, m, n, k, l, v, ldv, t, &
          ldt, a, lda, b, ldb, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: k, l, lda, ldb, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stprfb
        Subroutine stprfs(uplo, trans, diag, n, nrhs, ap, b, ldb, x, ldx, &
          ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *), berr(*), ferr(*), work(*), &
            x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stprfs
        Subroutine stptri(uplo, diag, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stptri
        Subroutine stptrs(uplo, trans, diag, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stptrs
        Subroutine stpttf(transr, uplo, n, ap, arf, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: ap(0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stpttf
        Subroutine stpttr(uplo, n, ap, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stpttr
        Subroutine strcon(norm, uplo, diag, n, a, lda, rcond, work, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strcon
        Subroutine strevc3(side, howmny, select, n, t, ldt, vl, ldvl, vr, &
          ldvr, mm, m, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, lwork, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Real (wp) :: t(ldt, *), vl(ldvl, *), vr(ldvr, *), work(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strevc3
        Subroutine strevc(side, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, &
          mm, m, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Real (wp) :: t(ldt, *), vl(ldvl, *), vr(ldvr, *), work(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strevc
        Subroutine strexc(compq, n, t, ldt, q, ldq, ifst, ilst, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: ifst, ilst, info, ldq, ldt, n
          Character (1) :: compq
!         .. Array Arguments ..
          Real (wp) :: q(ldq, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strexc
        Subroutine strrfs(uplo, trans, diag, n, nrhs, a, lda, b, ldb, x, ldx, &
          ferr, berr, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), berr(*), ferr(*), work(*), &
            x(ldx, *)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strrfs
        Subroutine strsen(job, compq, select, n, t, ldt, q, ldq, wr, wi, m, s, &
          sep, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: s, sep
          Integer :: info, ldq, ldt, liwork, lwork, m, n
          Character (1) :: compq, job
!         .. Array Arguments ..
          Real (wp) :: q(ldq, *), t(ldt, *), wi(*), work(*), wr(*)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strsen
        Subroutine strsna(job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, &
          s, sep, mm, m, work, ldwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, ldwork, m, mm, n
          Character (1) :: howmny, job
!         .. Array Arguments ..
          Real (wp) :: s(*), sep(*), t(ldt, *), vl(ldvl, *), vr(ldvr, *), &
            work(ldwork, *)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strsna
        Subroutine strsyl(trana, tranb, isgn, m, n, a, lda, b, ldb, c, ldc, &
          scale, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, isgn, lda, ldb, ldc, m, n
          Character (1) :: trana, tranb
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *), c(ldc, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strsyl
        Subroutine strti2(uplo, diag, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strti2
        Subroutine strtri(uplo, diag, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strtri
        Subroutine strtrs(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strtrs
        Subroutine strttf(transr, uplo, n, a, lda, arf, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Real (wp) :: a(0:lda-1, 0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strttf
        Subroutine strttp(uplo, n, a, lda, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine strttp
        Subroutine stzrqf(m, n, a, lda, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stzrqf
        Subroutine stzrzf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Real (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine stzrzf
        Subroutine xerbla_array(srname_array, srname_len, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Scalar Arguments ..
          Integer :: info, srname_len
!         .. Array Arguments ..
          Character (1) :: srname_array(srname_len)
        End Subroutine xerbla_array
        Subroutine zbbcsd(jobu1, jobu2, jobv1t, jobv2t, trans, m, p, q, theta, &
          phi, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, b11d, b11e, b12d, &
          b12e, b21d, b21e, b22d, b22e, rwork, lrwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldv2t, lrwork, m, p, q
          Character (1) :: jobu1, jobu2, jobv1t, jobv2t, trans
!         .. Array Arguments ..
          Complex (wp) :: u1(ldu1, *), u2(ldu2, *), v1t(ldv1t, *), &
            v2t(ldv2t, *)
          Real (wp) :: b11d(*), b11e(*), b12d(*), b12e(*), b21d(*), &
            b21e(*), b22d(*), b22e(*), phi(*), rwork(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zbbcsd
        Subroutine zbdsqr(uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, &
          ldc, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, ldu, ldvt, n, ncc, ncvt, nru
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), u(ldu, *), vt(ldvt, *)
          Real (wp) :: d(*), e(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zbdsqr
        Subroutine zcgesv(n, nrhs, a, lda, ipiv, b, ldb, x, ldx, work, swork, &
          rwork, iter, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: sp = kind(0.0)
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, iter, lda, ldb, ldx, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(n, *), x(ldx, *)
          Complex (sp) :: swork(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zcgesv
        Subroutine zcposv(uplo, n, nrhs, a, lda, b, ldb, x, ldx, work, swork, &
          rwork, iter, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: sp = kind(0.0)
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, iter, lda, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(n, *), x(ldx, *)
          Complex (sp) :: swork(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zcposv
        Subroutine zdrscl(n, sa, sx, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: sa
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: sx(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zdrscl
        Subroutine zgbbrd(vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, &
          ldpt, c, ldc, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldc, ldpt, ldq, m, n, ncc
          Character (1) :: vect
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), c(ldc, *), pt(ldpt, *), q(ldq, *), &
            work(*)
          Real (wp) :: d(*), e(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbbrd
        Subroutine zgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, &
          rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, kl, ku, ldab, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbcon
        Subroutine zgbequb(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbequb
        Subroutine zgbequ(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbequ
        Subroutine zgbrfs(trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, &
          b, ldb, x, ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbrfs
        Subroutine zgbrfsx(trans, equed, n, kl, ku, nrhs, ab, ldab, afb, &
          ldafb, ipiv, r, c, b, ldb, x, ldx, rcond, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nparams, nrhs, &
            n_err_bnds
          Character (1) :: equed, trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbrfsx
        Subroutine zgbsv(n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbsv
        Subroutine zgbsvx(fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, &
          ipiv, equed, r, c, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), ferr(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbsvx
        Subroutine zgbsvxx(fact, trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, &
          ipiv, equed, r, c, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, kl, ku, ldab, ldafb, ldb, ldx, n, nparams, nrhs, &
            n_err_bnds
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbsvxx
        Subroutine zgbtf2(m, n, kl, ku, ab, ldab, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbtf2
        Subroutine zgbtrf(m, n, kl, ku, ab, ldab, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, m, n
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbtrf
        Subroutine zgbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgbtrs
        Subroutine zgebak(job, side, n, ilo, ihi, scale, m, v, ldv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldv, m, n
          Character (1) :: job, side
!         .. Array Arguments ..
          Complex (wp) :: v(ldv, *)
          Real (wp) :: scale(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgebak
        Subroutine zgebal(job, n, a, lda, ilo, ihi, scale, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, n
          Character (1) :: job
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: scale(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgebal
        Subroutine zgebd2(m, n, a, lda, d, e, tauq, taup, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), taup(*), tauq(*), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgebd2
        Subroutine zgebrd(m, n, a, lda, d, e, tauq, taup, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), taup(*), tauq(*), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgebrd
        Subroutine zgecon(norm, n, a, lda, anorm, rcond, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgecon
        Subroutine zgeequb(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeequb
        Subroutine zgeequ(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeequ
        Subroutine zgees(jobvs, sort, select, n, a, lda, sdim, w, vs, ldvs, &
          work, lwork, rwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldvs, lwork, n, sdim
          Character (1) :: jobvs, sort
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), vs(ldvs, *), w(*), work(*)
          Real (wp) :: rwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: select
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgees
        Subroutine zgeesx(jobvs, sort, select, sense, n, a, lda, sdim, w, vs, &
          ldvs, rconde, rcondv, work, lwork, rwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rconde, rcondv
          Integer :: info, lda, ldvs, lwork, n, sdim
          Character (1) :: jobvs, sense, sort
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), vs(ldvs, *), w(*), work(*)
          Real (wp) :: rwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: select
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeesx
        Subroutine zgeev(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, &
          lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), vl(ldvl, *), vr(ldvr, *), w(*), &
            work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeev
        Subroutine zgeevx(balanc, jobvl, jobvr, sense, n, a, lda, w, vl, ldvl, &
          vr, ldvr, ilo, ihi, scale, abnrm, rconde, rcondv, work, lwork, &
          rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abnrm
          Integer :: ihi, ilo, info, lda, ldvl, ldvr, lwork, n
          Character (1) :: balanc, jobvl, jobvr, sense
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), vl(ldvl, *), vr(ldvr, *), w(*), &
            work(*)
          Real (wp) :: rconde(*), rcondv(*), rwork(*), scale(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeevx
        Subroutine zgegs(jobvsl, jobvsr, n, a, lda, b, ldb, alpha, beta, vsl, &
          ldvsl, vsr, ldvsr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n
          Character (1) :: jobvsl, jobvsr
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgegs
        Subroutine zgegv(jobvl, jobvr, n, a, lda, b, ldb, alpha, beta, vl, &
          ldvl, vr, ldvr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgegv
        Subroutine zgehd2(n, ilo, ihi, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgehd2
        Subroutine zgehrd(n, ilo, ihi, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, lwork, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgehrd
        Subroutine zgejsv(joba, jobu, jobv, jobr, jobt, jobp, m, n, a, lda, &
          sva, u, ldu, v, ldv, cwork, lwork, rwork, lrwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldv, lrwork, lwork, m, n
          Character (1) :: joba, jobp, jobr, jobt, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), cwork(lwork), u(ldu, *), v(ldv, *)
          Real (wp) :: rwork(lrwork), sva(n)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgejsv
        Subroutine zgelq2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgelq2
        Subroutine zgelq(m, n, a, lda, t, tsize, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n, tsize
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgelq
        Subroutine zgelqf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgelqf
        Recursive Subroutine zgelqt3(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgelqt3
        Subroutine zgelqt(m, n, mb, a, lda, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, mb, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgelqt
        Subroutine zgelsd(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, &
          lwork, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*), s(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgelsd
        Subroutine zgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgels
        Subroutine zgelss(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, &
          lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgelss
        Subroutine zgelsx(m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, &
          rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, m, n, nrhs, rank
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgelsx
        Subroutine zgelsy(m, n, nrhs, a, lda, b, ldb, jpvt, rcond, rank, work, &
          lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldb, lwork, m, n, nrhs, rank
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgelsy
        Subroutine zgemlq(side, trans, m, n, k, a, lda, t, tsize, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n, tsize
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgemlq
        Subroutine zgemlqt(side, trans, m, n, k, mb, v, ldv, t, ldt, c, ldc, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, ldc, ldt, ldv, m, mb, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgemlqt
        Subroutine zgemqr(side, trans, m, n, k, a, lda, t, tsize, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n, tsize
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgemqr
        Subroutine zgemqrt(side, trans, m, n, k, nb, v, ldv, t, ldt, c, ldc, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, ldc, ldt, ldv, m, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgemqrt
        Subroutine zgeql2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeql2
        Subroutine zgeqlf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqlf
        Subroutine zgeqp3(m, n, a, lda, jpvt, tau, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
          Real (wp) :: rwork(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqp3
        Subroutine zgeqpf(m, n, a, lda, jpvt, tau, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
          Real (wp) :: rwork(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqpf
        Subroutine zgeqr2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqr2
        Subroutine zgeqr2p(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqr2p
        Subroutine zgeqr(m, n, a, lda, t, tsize, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n, tsize
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqr
        Subroutine zgeqrf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqrf
        Subroutine zgeqrfp(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqrfp
        Subroutine zgeqrt2(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqrt2
        Recursive Subroutine zgeqrt3(m, n, a, lda, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqrt3
        Subroutine zgeqrt(m, n, nb, a, lda, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgeqrt
        Subroutine zgerfs(trans, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, &
          ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgerfs
        Subroutine zgerfsx(trans, equed, n, nrhs, a, lda, af, ldaf, ipiv, r, &
          c, b, ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgerfsx
        Subroutine zgerq2(m, n, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgerq2
        Subroutine zgerqf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgerqf
        Subroutine zgesc2(n, a, lda, rhs, ipiv, jpiv, scale)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), rhs(*)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgesc2
        Subroutine zgesdd(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, &
          lwork, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldvt, lwork, m, n
          Character (1) :: jobz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), u(ldu, *), vt(ldvt, *), work(*)
          Real (wp) :: rwork(*), s(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgesdd
        Subroutine zgesvd(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, &
          work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldu, ldvt, lwork, m, n
          Character (1) :: jobu, jobvt
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), u(ldu, *), vt(ldvt, *), work(*)
          Real (wp) :: rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgesvd
        Subroutine zgesvdq(joba, jobp, jobr, jobu, jobv, m, n, a, lda, s, u, &
          ldu, v, ldv, numrank, iwork, liwork, cwork, lcwork, rwork, lrwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lcwork, lda, ldu, ldv, liwork, lrwork, m, n, &
            numrank
          Character (1) :: joba, jobp, jobr, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), cwork(*), u(ldu, *), v(ldv, *)
          Real (wp) :: rwork(*), s(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgesvdq
        Subroutine zgesvdx(jobu, jobvt, range, m, n, a, lda, vl, vu, il, iu, &
          ns, s, u, ldu, vt, ldvt, work, lwork, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: vl, vu
          Integer :: il, info, iu, lda, ldu, ldvt, lwork, m, n, ns
          Character (1) :: jobu, jobvt, range
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), u(ldu, *), vt(ldvt, *), work(*)
          Real (wp) :: rwork(*), s(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgesvdx
        Subroutine zgesv(n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgesv
        Subroutine zgesvj(joba, jobu, jobv, m, n, a, lda, sva, mv, v, ldv, &
          cwork, lwork, rwork, lrwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldv, lrwork, lwork, m, mv, n
          Character (1) :: joba, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), cwork(lwork), v(ldv, *)
          Real (wp) :: rwork(lrwork), sva(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgesvj
        Subroutine zgesvx(fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, equed, &
          r, c, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), ferr(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgesvx
        Subroutine zgesvxx(fact, trans, n, nrhs, a, lda, af, ldaf, ipiv, &
          equed, r, c, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, &
          err_bnds_norm, err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), r(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgesvxx
        Subroutine zgetc2(n, a, lda, ipiv, jpiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgetc2
        Subroutine zgetf2(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgetf2
        Recursive Subroutine zgetrf2(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgetrf2
        Subroutine zgetrf(m, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgetrf
        Subroutine zgetri(n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgetri
        Subroutine zgetrs(trans, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgetrs
        Subroutine zgetsls(trans, m, n, nrhs, a, lda, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgetsls
        Subroutine zggbak(job, side, n, ilo, ihi, lscale, rscale, m, v, ldv, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldv, m, n
          Character (1) :: job, side
!         .. Array Arguments ..
          Complex (wp) :: v(ldv, *)
          Real (wp) :: lscale(*), rscale(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggbak
        Subroutine zggbal(job, n, a, lda, b, ldb, ilo, ihi, lscale, rscale, &
          work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, n
          Character (1) :: job
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Real (wp) :: lscale(*), rscale(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggbal
        Subroutine zgges3(jobvsl, jobvsr, sort, selctg, n, a, lda, b, ldb, &
          sdim, alpha, beta, vsl, ldvsl, vsr, ldvsr, work, lwork, rwork, &
          bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sort
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Real (wp) :: rwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgges3
        Subroutine zgges(jobvsl, jobvsr, sort, selctg, n, a, lda, b, ldb, &
          sdim, alpha, beta, vsl, ldvsl, vsr, ldvsr, work, lwork, rwork, &
          bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sort
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Real (wp) :: rwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgges
        Subroutine zggesx(jobvsl, jobvsr, sort, selctg, sense, n, a, lda, b, &
          ldb, sdim, alpha, beta, vsl, ldvsl, vsr, ldvsr, rconde, rcondv, &
          work, lwork, rwork, iwork, liwork, bwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvsl, ldvsr, liwork, lwork, n, sdim
          Character (1) :: jobvsl, jobvsr, sense, sort
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vsl(ldvsl, *), vsr(ldvsr, *), work(*)
          Real (wp) :: rconde(2), rcondv(2), rwork(*)
          Integer :: iwork(*)
          Logical :: bwork(*)
!         .. Procedure Arguments ..
          Logical, External :: selctg
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggesx
        Subroutine zggev3(jobvl, jobvr, n, a, lda, b, ldb, alpha, beta, vl, &
          ldvl, vr, ldvr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggev3
        Subroutine zggev(jobvl, jobvr, n, a, lda, b, ldb, alpha, beta, vl, &
          ldvl, vr, ldvr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: jobvl, jobvr
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggev
        Subroutine 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)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abnrm, bbnrm
          Integer :: ihi, ilo, info, lda, ldb, ldvl, ldvr, lwork, n
          Character (1) :: balanc, jobvl, jobvr, sense
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: lscale(*), rconde(*), rcondv(*), rscale(*), &
            rwork(*)
          Integer :: iwork(*)
          Logical :: bwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggevx
        Subroutine zggglm(n, m, p, a, lda, b, ldb, d, x, y, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), d(*), work(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggglm
        Subroutine zgghd3(compq, compz, n, ilo, ihi, a, lda, b, ldb, q, ldq, &
          z, ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, ldq, ldz, lwork, n
          Character (1) :: compq, compz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), work(*), &
            z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgghd3
        Subroutine zgghrd(compq, compz, n, ilo, ihi, a, lda, b, ldb, q, ldq, &
          z, ldz, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldb, ldq, ldz, n
          Character (1) :: compq, compz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgghrd
        Subroutine zgglse(m, n, p, a, lda, b, ldb, c, d, x, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), c(*), d(*), work(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgglse
        Subroutine zggqrf(n, m, p, a, lda, taua, b, ldb, taub, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), taua(*), taub(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggqrf
        Subroutine zggrqf(m, p, n, a, lda, taua, b, ldb, taub, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, m, n, p
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), taua(*), taub(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggrqf
        Subroutine zggsvd3(jobu, jobv, jobq, m, n, p, k, l, a, lda, b, ldb, &
          alpha, beta, u, ldu, v, ldv, q, ldq, work, lwork, rwork, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, lwork, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), u(ldu, *), &
            v(ldv, *), work(*)
          Real (wp) :: alpha(*), beta(*), rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggsvd3
        Subroutine zggsvd(jobu, jobv, jobq, m, n, p, k, l, a, lda, b, ldb, &
          alpha, beta, u, ldu, v, ldv, q, ldq, work, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), u(ldu, *), &
            v(ldv, *), work(*)
          Real (wp) :: alpha(*), beta(*), rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggsvd
        Subroutine zggsvp3(jobu, jobv, jobq, m, p, n, a, lda, b, ldb, tola, &
          tolb, k, l, u, ldu, v, ldv, q, ldq, iwork, rwork, tau, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, lwork, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), tau(*), &
            u(ldu, *), v(ldv, *), work(*)
          Real (wp) :: rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggsvp3
        Subroutine zggsvp(jobu, jobv, jobq, m, p, n, a, lda, b, ldb, tola, &
          tolb, k, l, u, ldu, v, ldv, q, ldq, iwork, rwork, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), tau(*), &
            u(ldu, *), v(ldv, *), work(*)
          Real (wp) :: rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zggsvp
        Subroutine zgsvj0(jobv, m, n, a, lda, d, sva, mv, v, ldv, eps, sfmin, &
          tol, nsweep, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: eps, sfmin, tol
          Integer :: info, lda, ldv, lwork, m, mv, n, nsweep
          Character (1) :: jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), d(n), v(ldv, *), work(lwork)
          Real (wp) :: sva(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgsvj0
        Subroutine zgsvj1(jobv, m, n, n1, a, lda, d, sva, mv, v, ldv, eps, &
          sfmin, tol, nsweep, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: eps, sfmin, tol
          Integer :: info, lda, ldv, lwork, m, mv, n, n1, nsweep
          Character (1) :: jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), d(n), v(ldv, *), work(lwork)
          Real (wp) :: sva(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgsvj1
        Subroutine zgtcon(norm, n, dl, d, du, du2, ipiv, anorm, rcond, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: d(*), dl(*), du(*), du2(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgtcon
        Subroutine zgtrfs(trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv, &
          b, ldb, x, ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), df(*), dl(*), dlf(*), du(*), &
            du2(*), duf(*), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgtrfs
        Subroutine zgtsv(n, nrhs, dl, d, du, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), dl(*), du(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgtsv
        Subroutine zgtsvx(fact, trans, n, nrhs, dl, d, du, dlf, df, duf, du2, &
          ipiv, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact, trans
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), df(*), dl(*), dlf(*), du(*), &
            du2(*), duf(*), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgtsvx
        Subroutine zgttrf(n, dl, d, du, du2, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Complex (wp) :: d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgttrf
        Subroutine zgttrs(trans, n, nrhs, dl, d, du, du2, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgttrs
        Subroutine zgtts2(itrans, n, nrhs, dl, d, du, du2, ipiv, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: itrans, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), dl(*), du(*), du2(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zgtts2
        Subroutine zhb2st_kernels(uplo, wantz, ttype, st, ed, sweep, n, nb, &
          ib, a, lda, v, tau, ldvt, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ed, ib, lda, ldvt, n, nb, st, sweep, ttype
          Logical :: wantz
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhb2st_kernels
        Subroutine zhbev_2stage(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, &
          lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbev_2stage
        Subroutine zhbevd_2stage(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, &
          lwork, rwork, lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbevd_2stage
        Subroutine zhbevd(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, lwork, &
          rwork, lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbevd
        Subroutine zhbev(jobz, uplo, n, kd, ab, ldab, w, z, ldz, work, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbev
        Subroutine zhbevx_2stage(jobz, range, uplo, n, kd, ab, ldab, q, ldq, &
          vl, vu, il, iu, abstol, m, w, z, ldz, work, lwork, rwork, iwork, &
          ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, kd, ldab, ldq, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), q(ldq, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbevx_2stage
        Subroutine zhbevx(jobz, range, uplo, n, kd, ab, ldab, q, ldq, vl, vu, &
          il, iu, abstol, m, w, z, ldz, work, rwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, kd, ldab, ldq, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), q(ldq, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbevx
        Subroutine zhbgst(vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x, ldx, &
          work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldx, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), bb(ldbb, *), work(*), x(ldx, *)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbgst
        Subroutine zhbgvd(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, &
          ldz, work, lwork, rwork, lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldz, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), bb(ldbb, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbgvd
        Subroutine zhbgv(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz, &
          work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ka, kb, ldab, ldbb, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), bb(ldbb, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbgv
        Subroutine zhbgvx(jobz, range, uplo, n, ka, kb, ab, ldab, bb, ldbb, q, &
          ldq, vl, vu, il, iu, abstol, m, w, z, ldz, work, rwork, iwork, &
          ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ka, kb, ldab, ldbb, ldq, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), bb(ldbb, *), q(ldq, *), work(*), &
            z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbgvx
        Subroutine zhbtrd(vect, uplo, n, kd, ab, ldab, d, e, q, ldq, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldq, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), q(ldq, *), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhbtrd
        Subroutine zhecon_3(uplo, n, a, lda, e, ipiv, anorm, rcond, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhecon_3
        Subroutine zhecon(uplo, n, a, lda, ipiv, anorm, rcond, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhecon
        Subroutine zhecon_rook(uplo, n, a, lda, ipiv, anorm, rcond, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhecon_rook
        Subroutine zheequb(uplo, n, a, lda, s, scond, amax, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zheequb
        Subroutine zheev_2stage(jobz, uplo, n, a, lda, w, work, lwork, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zheev_2stage
        Subroutine zheevd_2stage(jobz, uplo, n, a, lda, w, work, lwork, rwork, &
          lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zheevd_2stage
        Subroutine zheevd(jobz, uplo, n, a, lda, w, work, lwork, rwork, &
          lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zheevd
        Subroutine zheev(jobz, uplo, n, a, lda, w, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zheev
        Subroutine zheevr_2stage(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, isuppz, work, lwork, rwork, lrwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, liwork, lrwork, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zheevr_2stage
        Subroutine zheevr(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, isuppz, work, lwork, rwork, lrwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, liwork, lrwork, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zheevr
        Subroutine zheevx_2stage(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, lwork, rwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zheevx_2stage
        Subroutine zheevx(jobz, range, uplo, n, a, lda, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, lwork, rwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, lda, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zheevx
        Subroutine zhegs2(itype, uplo, n, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhegs2
        Subroutine zhegst(itype, uplo, n, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhegst
        Subroutine zhegv_2stage(itype, jobz, uplo, n, a, lda, b, ldb, w, work, &
          lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhegv_2stage
        Subroutine zhegvd(itype, jobz, uplo, n, a, lda, b, ldb, w, work, &
          lwork, rwork, lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhegvd
        Subroutine zhegv(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, &
          rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, lda, ldb, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhegv
        Subroutine zhegvx(itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, &
          il, iu, abstol, m, w, z, ldz, work, lwork, rwork, iwork, ifail, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, itype, iu, lda, ldb, ldz, lwork, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhegvx
        Subroutine zherfs(uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, &
          ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zherfs
        Subroutine zherfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, ipiv, s, b, &
          ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, &
          nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zherfsx
        Subroutine zhesv_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhesv_aa_2stage
        Subroutine zhesv_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhesv_aa
        Subroutine zhesv(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhesv
        Subroutine zhesv_rk(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhesv_rk
        Subroutine zhesv_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhesv_rook
        Subroutine zhesvx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, &
          x, ldx, rcond, ferr, berr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, lwork, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhesvx
        Subroutine zhesvxx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, equed, &
          s, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhesvxx
        Subroutine zheswapr(uplo, n, a, lda, i1, i2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: i1, i2, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zheswapr
        Subroutine zhetd2(uplo, n, a, lda, d, e, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetd2
        Subroutine zhetf2(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetf2
        Subroutine zhetf2_rk(uplo, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetf2_rk
        Subroutine zhetf2_rook(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetf2_rook
        Subroutine zhetrd_2stage(vect, uplo, n, a, lda, d, e, tau, hous2, &
          lhous2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lhous2, lwork, n
          Character (1) :: uplo, vect
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), hous2(*), tau(*), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrd_2stage
        Subroutine zhetrd(uplo, n, a, lda, d, e, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrd
        Subroutine zhetrd_hb2st(stage1, vect, uplo, n, kd, ab, ldab, d, e, &
          hous, lhous, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, lhous, lwork, n
          Character (1) :: stage1, uplo, vect
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), hous(*), work(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrd_hb2st
        Subroutine zhetrd_he2hb(uplo, n, kd, a, lda, ab, ldab, tau, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, lda, ldab, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), ab(ldab, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrd_he2hb
        Subroutine zhetrf_aa_2stage(uplo, n, a, lda, tb, ltb, ipiv, ipiv2, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ltb, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrf_aa_2stage
        Subroutine zhetrf_aa(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrf_aa
        Subroutine zhetrf(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrf
        Subroutine zhetrf_rk(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrf_rk
        Subroutine zhetrf_rook(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrf_rook
        Subroutine zhetri2(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetri2
        Subroutine zhetri2x(uplo, n, a, lda, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetri2x
        Subroutine zhetri_3(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetri_3
        Subroutine zhetri_3x(uplo, n, a, lda, e, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetri_3x
        Subroutine zhetri(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetri
        Subroutine zhetri_rook(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetri_rook
        Subroutine zhetrs2(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrs2
        Subroutine zhetrs_3(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrs_3
        Subroutine zhetrs_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), tb(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrs_aa_2stage
        Subroutine zhetrs_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrs_aa
        Subroutine zhetrs(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrs
        Subroutine zhetrs_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhetrs_rook
        Subroutine zhfrk(transr, uplo, trans, n, k, alpha, a, lda, beta, c)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: k, lda, n
          Character (1) :: trans, transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhfrk
        Subroutine zhgeqz(job, compq, compz, n, ilo, ihi, h, ldh, t, ldt, &
          alpha, beta, q, ldq, z, ldz, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldh, ldq, ldt, ldz, lwork, n
          Character (1) :: compq, compz, job
!         .. Array Arguments ..
          Complex (wp) :: alpha(*), beta(*), h(ldh, *), q(ldq, *), &
            t(ldt, *), work(*), z(ldz, *)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhgeqz
        Subroutine zhpcon(uplo, n, ap, ipiv, anorm, rcond, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhpcon
        Subroutine zhpevd(jobz, uplo, n, ap, w, z, ldz, work, lwork, rwork, &
          lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhpevd
        Subroutine zhpev(jobz, uplo, n, ap, w, z, ldz, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhpev
        Subroutine zhpevx(jobz, range, uplo, n, ap, vl, vu, il, iu, abstol, m, &
          w, z, ldz, work, rwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhpevx
        Subroutine zhpgst(itype, uplo, n, ap, bp, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), bp(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhpgst
        Subroutine zhpgvd(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, &
          lwork, rwork, lrwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, ldz, liwork, lrwork, lwork, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), bp(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhpgvd
        Subroutine zhpgv(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, itype, ldz, n
          Character (1) :: jobz, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), bp(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhpgv
        Subroutine zhpgvx(itype, jobz, range, uplo, n, ap, bp, vl, vu, il, iu, &
          abstol, m, w, z, ldz, work, rwork, iwork, ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, itype, iu, ldz, m, n
          Character (1) :: jobz, range, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), bp(*), work(*), z(ldz, *)
          Real (wp) :: rwork(*), w(*)
          Integer :: ifail(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhpgvx
        Subroutine zhprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, &
          berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhprfs
        Subroutine zhpsv(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhpsv
        Subroutine zhpsvx(fact, uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, &
          rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhpsvx
        Subroutine zhptrd(uplo, n, ap, d, e, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), tau(*)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhptrd
        Subroutine zhptrf(uplo, n, ap, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhptrf
        Subroutine zhptri(uplo, n, ap, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhptri
        Subroutine zhptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhptrs
        Subroutine zhsein(side, eigsrc, initv, select, n, h, ldh, w, vl, ldvl, &
          vr, ldvr, mm, m, work, rwork, ifaill, ifailr, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldh, ldvl, ldvr, m, mm, n
          Character (1) :: eigsrc, initv, side
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), vl(ldvl, *), vr(ldvr, *), w(*), &
            work(*)
          Real (wp) :: rwork(*)
          Integer :: ifaill(*), ifailr(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhsein
        Subroutine zhseqr(job, compz, n, ilo, ihi, h, ldh, w, z, ldz, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, ldh, ldz, lwork, n
          Character (1) :: compz, job
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zhseqr
        Subroutine zlabrd(m, n, nb, a, lda, d, e, tauq, taup, x, ldx, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldx, ldy, m, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), taup(*), tauq(*), x(ldx, *), &
            y(ldy, *)
          Real (wp) :: d(*), e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlabrd
        Subroutine zlacgv(n, x, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlacgv
        Subroutine zlacn2(n, v, x, est, kase, isave)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: est
          Integer :: kase, n
!         .. Array Arguments ..
          Complex (wp) :: v(*), x(*)
          Integer :: isave(3)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlacn2
        Subroutine zlacon(n, v, x, est, kase)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: est
          Integer :: kase, n
!         .. Array Arguments ..
          Complex (wp) :: v(n), x(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlacon
        Subroutine zlacp2(uplo, m, n, a, lda, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldb, m, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *)
          Real (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlacp2
        Subroutine zlacpy(uplo, m, n, a, lda, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldb, m, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlacpy
        Subroutine zlacrm(m, n, a, lda, b, ldb, c, ldc, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldb, ldc, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *)
          Real (wp) :: b(ldb, *), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlacrm
        Subroutine zlacrt(n, cx, incx, cy, incy, c, s)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: c, s
          Integer :: incx, incy, n
!         .. Array Arguments ..
          Complex (wp) :: cx(*), cy(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlacrt
        Function zladiv(x, y)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: x, y
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Complex (wp) :: zladiv
        End Function zladiv
        Subroutine zlaed0(qsiz, n, d, e, q, ldq, qstore, ldqs, rwork, iwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldq, ldqs, n, qsiz
!         .. Array Arguments ..
          Complex (wp) :: q(ldq, *), qstore(ldqs, *)
          Real (wp) :: d(*), e(*), rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaed0
        Subroutine zlaed7(n, cutpnt, qsiz, tlvls, curlvl, curpbm, d, q, ldq, &
          rho, indxq, qstore, qptr, prmptr, perm, givptr, givcol, givnum, &
          work, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: curlvl, curpbm, cutpnt, info, ldq, n, qsiz, tlvls
!         .. Array Arguments ..
          Complex (wp) :: q(ldq, *), work(*)
          Real (wp) :: d(*), givnum(2, *), qstore(*), rwork(*)
          Integer :: givcol(2, *), givptr(*), indxq(*), iwork(*), perm(*), &
            prmptr(*), qptr(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaed7
        Subroutine zlaed8(k, n, qsiz, q, ldq, d, rho, cutpnt, z, dlamda, q2, &
          ldq2, w, indxp, indx, indxq, perm, givptr, givcol, givnum, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rho
          Integer :: cutpnt, givptr, info, k, ldq, ldq2, n, qsiz
!         .. Array Arguments ..
          Complex (wp) :: q(ldq, *), q2(ldq2, *)
          Real (wp) :: d(*), dlamda(*), givnum(2, *), w(*), z(*)
          Integer :: givcol(2, *), indx(*), indxp(*), indxq(*), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaed8
        Subroutine zlaein(rightv, noinit, n, h, ldh, w, v, b, ldb, rwork, &
          eps3, smlnum, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: w
          Real (wp) :: eps3, smlnum
          Integer :: info, ldb, ldh, n
          Logical :: noinit, rightv
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), h(ldh, *), v(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaein
        Subroutine zlaesy(a, b, c, rt1, rt2, evscal, cs1, sn1)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: a, b, c, cs1, evscal, rt1, rt2, sn1
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaesy
        Subroutine zlaev2(a, b, c, rt1, rt2, cs1, sn1)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: a, b, c, sn1
          Real (wp) :: cs1, rt1, rt2
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaev2
        Subroutine zlag2c(m, n, a, lda, sa, ldsa, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: sp = kind(0.0)
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldsa, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Complex (sp) :: sa(ldsa, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlag2c
        Subroutine zla_gbamv(trans, m, n, kl, ku, alpha, ab, ldab, x, incx, &
          beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, kl, ku, ldab, m, n, trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), x(*)
          Real (wp) :: y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_gbamv
        Function zla_gbrcond_c(trans, n, kl, ku, ab, ldab, afb, ldafb, ipiv, &
          c, capply, info, work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldafb, n
          Logical :: capply
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), work(*)
          Real (wp) :: c(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_gbrcond_c
        End Function zla_gbrcond_c
        Function zla_gbrcond_x(trans, n, kl, ku, ab, ldab, afb, ldafb, ipiv, &
          x, info, work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kl, ku, ldab, ldafb, n
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), work(*), x(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_gbrcond_x
        End Function zla_gbrcond_x
        Subroutine zla_gbrfsx_extended(prec_type, trans_type, n, kl, ku, nrhs, &
          ab, ldab, afb, ldafb, ipiv, colequ, c, b, ldb, y, ldy, berr_out, &
          n_norms, err_bnds_norm, err_bnds_comp, res, ayb, dy, y_tail, rcond, &
          ithresh, rthresh, dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, kl, ku, ldab, ldafb, ldb, ldy, n, nrhs, &
            n_norms, prec_type, trans_type
          Logical :: colequ, ignore_cwise
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), dy(*), &
            res(*), y(ldy, *), y_tail(*)
          Real (wp) :: ayb(*), berr_out(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_gbrfsx_extended
        Function zla_gbrpvgrw(n, kl, ku, ncols, ab, ldab, afb, ldafb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: kl, ku, ldab, ldafb, n, ncols
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_gbrpvgrw
        End Function zla_gbrpvgrw
        Subroutine zla_geamv(trans, m, n, alpha, a, lda, x, incx, beta, y, &
          incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, lda, m, n, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*)
          Real (wp) :: y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_geamv
        Function zla_gercond_c(trans, n, a, lda, af, ldaf, ipiv, c, capply, &
          info, work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Logical :: capply
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*)
          Real (wp) :: c(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_gercond_c
        End Function zla_gercond_c
        Function zla_gercond_x(trans, n, a, lda, af, ldaf, ipiv, x, info, &
          work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*), x(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_gercond_x
        End Function zla_gercond_x
        Subroutine zla_gerfsx_extended(prec_type, trans_type, n, nrhs, a, lda, &
          af, ldaf, ipiv, colequ, c, b, ldb, y, ldy, berr_out, n_norms, &
          errs_n, errs_c, res, ayb, dy, y_tail, rcond, ithresh, rthresh, &
          dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type, trans_type
          Logical :: colequ, ignore_cwise
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), dy(*), &
            res(*), y(ldy, *), y_tail(*)
          Real (wp) :: ayb(*), berr_out(*), c(*), errs_c(nrhs, *), &
            errs_n(nrhs, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_gerfsx_extended
        Function zla_gerpvgrw(n, ncols, a, lda, af, ldaf)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldaf, n, ncols
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_gerpvgrw
        End Function zla_gerpvgrw
        Subroutine zlags2(upper, a1, a2, a3, b1, b2, b3, csu, snu, csv, snv, &
          csq, snq)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: a2, b2, snq, snu, snv
          Real (wp) :: a1, a3, b1, b3, csq, csu, csv
          Logical :: upper
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlags2
        Subroutine zlagtm(trans, n, nrhs, alpha, dl, d, du, x, ldx, beta, b, &
          ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: ldb, ldx, n, nrhs
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), d(*), dl(*), du(*), x(ldx, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlagtm
        Subroutine zla_heamv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, lda, n, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*)
          Real (wp) :: y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_heamv
        Subroutine zlahef_aa(uplo, j1, m, nb, a, lda, ipiv, h, ldh, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: j1, lda, ldh, m, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), h(ldh, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlahef_aa
        Subroutine zlahef(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlahef
        Subroutine zlahef_rk(uplo, n, nb, kb, a, lda, e, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlahef_rk
        Subroutine zlahef_rook(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlahef_rook
        Function zla_hercond_c(uplo, n, a, lda, af, ldaf, ipiv, c, capply, &
          info, work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Logical :: capply
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*)
          Real (wp) :: c(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_hercond_c
        End Function zla_hercond_c
        Function zla_hercond_x(uplo, n, a, lda, af, ldaf, ipiv, x, info, work, &
          rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*), x(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_hercond_x
        End Function zla_hercond_x
        Subroutine zla_herfsx_extended(prec_type, uplo, n, nrhs, a, lda, af, &
          ldaf, ipiv, colequ, c, b, ldb, y, ldy, berr_out, n_norms, &
          err_bnds_norm, err_bnds_comp, res, ayb, dy, y_tail, rcond, ithresh, &
          rthresh, dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type
          Logical :: colequ, ignore_cwise
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), dy(*), &
            res(*), y(ldy, *), y_tail(*)
          Real (wp) :: ayb(*), berr_out(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_herfsx_extended
        Function zla_herpvgrw(uplo, n, info, a, lda, af, ldaf, ipiv, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *)
          Real (wp) :: work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_herpvgrw
        End Function zla_herpvgrw
        Subroutine zlahqr(wantt, wantz, n, ilo, ihi, h, ldh, w, iloz, ihiz, z, &
          ldz, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), w(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlahqr
        Subroutine zlahr2(n, k, nb, a, lda, tau, t, ldt, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, lda, ldt, ldy, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, nb), tau(nb), y(ldy, nb)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlahr2
        Subroutine zlahrd(n, k, nb, a, lda, tau, t, ldt, y, ldy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, lda, ldt, ldy, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, nb), tau(nb), y(ldy, nb)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlahrd
        Subroutine zlaic1(job, j, x, sest, w, gamma, sestpr, s, c)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: c, gamma, s
          Real (wp) :: sest, sestpr
          Integer :: j, job
!         .. Array Arguments ..
          Complex (wp) :: w(j), x(j)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaic1
        Subroutine zla_lin_berr(n, nz, nrhs, res, ayb, berr)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n, nrhs, nz
!         .. Array Arguments ..
          Complex (wp) :: res(n, nrhs)
          Real (wp) :: ayb(n, nrhs), berr(nrhs)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_lin_berr
        Subroutine zlals0(icompq, nl, nr, sqre, nrhs, b, ldb, bx, ldbx, perm, &
          givptr, givcol, ldgcol, givnum, ldgnum, poles, difl, difr, z, k, c, &
          s, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: c, s
          Integer :: givptr, icompq, info, k, ldb, ldbx, ldgcol, ldgnum, nl, &
            nr, nrhs, sqre
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), bx(ldbx, *)
          Real (wp) :: difl(*), difr(ldgnum, *), givnum(ldgnum, *), &
            poles(ldgnum, *), rwork(*), z(*)
          Integer :: givcol(ldgcol, *), perm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlals0
        Subroutine zlalsa(icompq, smlsiz, n, nrhs, b, ldb, bx, ldbx, u, ldu, &
          vt, k, difl, difr, z, poles, givptr, givcol, ldgcol, perm, givnum, &
          c, s, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: icompq, info, ldb, ldbx, ldgcol, ldu, n, nrhs, smlsiz
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), bx(ldbx, *)
          Real (wp) :: c(*), difl(ldu, *), difr(ldu, *), givnum(ldu, *), &
            poles(ldu, *), rwork(*), s(*), u(ldu, *), vt(ldu, *), z(ldu, *)
          Integer :: givcol(ldgcol, *), givptr(*), iwork(*), k(*), &
            perm(ldgcol, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlalsa
        Subroutine zlalsd(uplo, smlsiz, n, nrhs, d, e, b, ldb, rcond, rank, &
          work, rwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, n, nrhs, rank, smlsiz
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), work(*)
          Real (wp) :: d(*), e(*), rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlalsd
        Subroutine zlamswlq(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, &
          ldc, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, ldt, lwork, m, mb, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlamswlq
        Subroutine zlamtsqr(side, trans, m, n, k, mb, nb, a, lda, t, ldt, c, &
          ldc, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, ldt, lwork, m, mb, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlamtsqr
        Function zlangb(norm, n, kl, ku, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: kl, ku, ldab, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlangb
        End Function zlangb
        Function zlange(norm, m, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlange
        End Function zlange
        Function zlangt(norm, n, dl, d, du)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: d(*), dl(*), du(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlangt
        End Function zlangt
        Function zlanhb(norm, uplo, n, k, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldab, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlanhb
        End Function zlanhb
        Function zlanhe(norm, uplo, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlanhe
        End Function zlanhe
        Function zlanhf(norm, transr, uplo, n, a, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm, transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*)
          Real (wp) :: work(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlanhf
        End Function zlanhf
        Function zlanhp(norm, uplo, n, ap, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlanhp
        End Function zlanhp
        Function zlanhs(norm, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlanhs
        End Function zlanhs
        Function zlanht(norm, n, d, e)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm
!         .. Array Arguments ..
          Complex (wp) :: e(*)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlanht
        End Function zlanht
        Function zlansb(norm, uplo, n, k, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldab, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlansb
        End Function zlansb
        Function zlansp(norm, uplo, n, ap, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlansp
        End Function zlansp
        Function zlansy(norm, uplo, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, n
          Character (1) :: norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlansy
        End Function zlansy
        Function zlantb(norm, uplo, diag, n, k, ab, ldab, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldab, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlantb
        End Function zlantb
        Function zlantp(norm, uplo, diag, n, ap, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlantp
        End Function zlantp
        Function zlantr(norm, uplo, diag, m, n, a, lda, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zlantr
        End Function zlantr
        Subroutine zlapll(n, x, incx, y, incy, ssmin)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: ssmin
          Integer :: incx, incy, n
!         .. Array Arguments ..
          Complex (wp) :: x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlapll
        Subroutine zlapmr(forwrd, m, n, x, ldx, k)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
          Logical :: forwrd
!         .. Array Arguments ..
          Complex (wp) :: x(ldx, *)
          Integer :: k(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlapmr
        Subroutine zlapmt(forwrd, m, n, x, ldx, k)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
          Logical :: forwrd
!         .. Array Arguments ..
          Complex (wp) :: x(ldx, *)
          Integer :: k(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlapmt
        Function zla_porcond_c(uplo, n, a, lda, af, ldaf, c, capply, info, &
          work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Logical :: capply
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*)
          Real (wp) :: c(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_porcond_c
        End Function zla_porcond_c
        Function zla_porcond_x(uplo, n, a, lda, af, ldaf, x, info, work, &
          rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*), x(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_porcond_x
        End Function zla_porcond_x
        Subroutine zla_porfsx_extended(prec_type, uplo, n, nrhs, a, lda, af, &
          ldaf, colequ, c, b, ldb, y, ldy, berr_out, n_norms, err_bnds_norm, &
          err_bnds_comp, res, ayb, dy, y_tail, rcond, ithresh, rthresh, dz_ub, &
          ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type
          Logical :: colequ, ignore_cwise
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), dy(*), &
            res(*), y(ldy, *), y_tail(*)
          Real (wp) :: ayb(*), berr_out(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_porfsx_extended
        Function zla_porpvgrw(uplo, ncols, a, lda, af, ldaf, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldaf, ncols
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *)
          Real (wp) :: work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_porpvgrw
        End Function zla_porpvgrw
        Subroutine zlaqgb(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, &
          equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: kl, ku, ldab, m, n
          Character (1) :: equed
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqgb
        Subroutine zlaqge(m, n, a, lda, r, c, rowcnd, colcnd, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, colcnd, rowcnd
          Integer :: lda, m, n
          Character (1) :: equed
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: c(*), r(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqge
        Subroutine zlaqhb(uplo, n, kd, ab, ldab, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: kd, ldab, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqhb
        Subroutine zlaqhe(uplo, n, a, lda, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: lda, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqhe
        Subroutine zlaqhp(uplo, n, ap, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqhp
        Subroutine zlaqp2(m, n, offset, a, lda, jpvt, tau, vn1, vn2, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n, offset
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
          Real (wp) :: vn1(*), vn2(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqp2
        Subroutine zlaqps(m, n, offset, nb, kb, a, lda, jpvt, tau, vn1, vn2, &
          auxv, f, ldf)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: kb, lda, ldf, m, n, nb, offset
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), auxv(*), f(ldf, *), tau(*)
          Real (wp) :: vn1(*), vn2(*)
          Integer :: jpvt(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqps
        Subroutine zlaqr0(wantt, wantz, n, ilo, ihi, h, ldh, w, iloz, ihiz, z, &
          ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, lwork, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqr0
        Subroutine zlaqr1(n, h, ldh, s1, s2, v)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: s1, s2
          Integer :: ldh, n
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), v(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqr1
        Subroutine zlaqr2(wantt, wantz, n, ktop, kbot, nw, h, ldh, iloz, ihiz, &
          z, ldz, ns, nd, sh, v, ldv, nh, t, ldt, nv, wv, ldwv, work, lwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kbot, ktop, ldh, ldt, ldv, ldwv, ldz, lwork, &
            n, nd, nh, ns, nv, nw
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), sh(*), t(ldt, *), v(ldv, *), &
            work(*), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqr2
        Subroutine zlaqr3(wantt, wantz, n, ktop, kbot, nw, h, ldh, iloz, ihiz, &
          z, ldz, ns, nd, sh, v, ldv, nh, t, ldt, nv, wv, ldwv, work, lwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kbot, ktop, ldh, ldt, ldv, ldwv, ldz, lwork, &
            n, nd, nh, ns, nv, nw
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), sh(*), t(ldt, *), v(ldv, *), &
            work(*), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqr3
        Subroutine zlaqr4(wantt, wantz, n, ilo, ihi, h, ldh, w, iloz, ihiz, z, &
          ldz, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ihiz, ilo, iloz, info, ldh, ldz, lwork, n
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), w(*), work(*), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqr4
        Subroutine zlaqr5(wantt, wantz, kacc22, n, ktop, kbot, nshfts, s, h, &
          ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh, ldwh)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihiz, iloz, kacc22, kbot, ktop, ldh, ldu, ldv, ldwh, &
            ldwv, ldz, n, nh, nshfts, nv
          Logical :: wantt, wantz
!         .. Array Arguments ..
          Complex (wp) :: h(ldh, *), s(*), u(ldu, *), v(ldv, *), &
            wh(ldwh, *), wv(ldwv, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqr5
        Subroutine zlaqsb(uplo, n, kd, ab, ldab, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: kd, ldab, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqsb
        Subroutine zlaqsp(uplo, n, ap, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqsp
        Subroutine zlaqsy(uplo, n, a, lda, s, scond, amax, equed)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: lda, n
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaqsy
        Subroutine zlar1v(n, b1, bn, lambda, d, l, ld, lld, pivmin, gaptol, z, &
          wantnc, negcnt, ztz, mingma, r, isuppz, nrminv, resid, rqcorr, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: gaptol, lambda, mingma, nrminv, pivmin, resid, &
            rqcorr, ztz
          Integer :: b1, bn, n, negcnt, r
          Logical :: wantnc
!         .. Array Arguments ..
          Complex (wp) :: z(*)
          Real (wp) :: d(*), l(*), ld(*), lld(*), work(*)
          Integer :: isuppz(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlar1v
        Subroutine zlar2v(n, x, y, z, incx, c, s, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, n
!         .. Array Arguments ..
          Complex (wp) :: s(*), x(*), y(*), z(*)
          Real (wp) :: c(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlar2v
        Subroutine zlarcm(m, n, a, lda, b, ldb, c, ldc, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldb, ldc, m, n
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), c(ldc, *)
          Real (wp) :: a(lda, *), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarcm
        Subroutine zlarfb(side, trans, direct, storev, m, n, k, v, ldv, t, &
          ldt, c, ldc, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldc, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), &
            work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarfb
        Subroutine zlarf(side, m, n, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: tau
          Integer :: incv, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarf
        Subroutine zlarfg(n, alpha, x, incx, tau)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha, tau
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarfg
        Subroutine zlarfgp(n, alpha, x, incx, tau)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha, tau
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarfgp
        Subroutine zlarft(direct, storev, n, k, v, ldv, tau, t, ldt)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldt, ldv, n
          Character (1) :: direct, storev
!         .. Array Arguments ..
          Complex (wp) :: t(ldt, *), tau(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarft
        Subroutine zlarfx(side, m, n, v, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: tau
          Integer :: ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarfx
        Subroutine zlarfy(uplo, n, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: tau
          Integer :: incv, ldc, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarfy
        Subroutine zlargv(n, x, incx, y, incy, c, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, incy, n
!         .. Array Arguments ..
          Complex (wp) :: x(*), y(*)
          Real (wp) :: c(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlargv
        Subroutine zlarnv(idist, iseed, n, x)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: idist, n
!         .. Array Arguments ..
          Complex (wp) :: x(*)
          Integer :: iseed(4)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarnv
        Subroutine zlarrv(n, vl, vu, d, l, pivmin, isplit, m, dol, dou, &
          minrgp, rtol1, rtol2, w, werr, wgap, iblock, indexw, gers, z, ldz, &
          isuppz, work, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: minrgp, pivmin, rtol1, rtol2, vl, vu
          Integer :: dol, dou, info, ldz, m, n
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), gers(*), l(*), w(*), werr(*), wgap(*), &
            work(*)
          Integer :: iblock(*), indexw(*), isplit(*), isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarrv
        Subroutine zlarscl2(m, n, d, x, ldx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
!         .. Array Arguments ..
          Complex (wp) :: x(ldx, *)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarscl2
        Subroutine zlartg(f, g, cs, sn, r)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: f, g, r, sn
          Real (wp) :: cs
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlartg
        Subroutine zlartv(n, x, incx, y, incy, c, s, incc)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incc, incx, incy, n
!         .. Array Arguments ..
          Complex (wp) :: s(*), x(*), y(*)
          Real (wp) :: c(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlartv
        Subroutine zlarzb(side, trans, direct, storev, m, n, k, l, v, ldv, t, &
          ldt, c, ldc, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, l, ldc, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), t(ldt, *), v(ldv, *), &
            work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarzb
        Subroutine zlarz(side, m, n, l, v, incv, tau, c, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: tau
          Integer :: incv, l, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarz
        Subroutine zlarzt(direct, storev, n, k, v, ldv, tau, t, ldt)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, ldt, ldv, n
          Character (1) :: direct, storev
!         .. Array Arguments ..
          Complex (wp) :: t(ldt, *), tau(*), v(ldv, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlarzt
        Subroutine zlascl2(m, n, d, x, ldx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ldx, m, n
!         .. Array Arguments ..
          Complex (wp) :: x(ldx, *)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlascl2
        Subroutine zlascl(type, kl, ku, cfrom, cto, m, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: cfrom, cto
          Integer :: info, kl, ku, lda, m, n
          Character (1) :: type
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlascl
        Subroutine zlaset(uplo, m, n, alpha, beta, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha, beta
          Integer :: lda, m, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaset
        Subroutine zlasr(side, pivot, direct, m, n, c, s, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, m, n
          Character (1) :: direct, pivot, side
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: c(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlasr
        Subroutine zlassq(n, x, incx, scale, sumsq)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale, sumsq
          Integer :: incx, n
!         .. Array Arguments ..
          Complex (wp) :: x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlassq
        Subroutine zlaswlq(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaswlq
        Subroutine zlaswp(n, a, lda, k1, k2, ipiv, incx)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incx, k1, k2, lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaswp
        Subroutine zla_syamv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: alpha, beta
          Integer :: incx, incy, lda, n, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*)
          Real (wp) :: y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_syamv
        Subroutine zlasyf_aa(uplo, j1, m, nb, a, lda, ipiv, h, ldh, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: j1, lda, ldh, m, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), h(ldh, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlasyf_aa
        Subroutine zlasyf(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlasyf
        Subroutine zlasyf_rk(uplo, n, nb, kb, a, lda, e, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlasyf_rk
        Subroutine zlasyf_rook(uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kb, lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), w(ldw, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlasyf_rook
        Function zla_syrcond_c(uplo, n, a, lda, af, ldaf, ipiv, c, capply, &
          info, work, rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Logical :: capply
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*)
          Real (wp) :: c(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_syrcond_c
        End Function zla_syrcond_c
        Function zla_syrcond_x(uplo, n, a, lda, af, ldaf, ipiv, x, info, work, &
          rwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), work(*), x(*)
          Real (wp) :: rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_syrcond_x
        End Function zla_syrcond_x
        Subroutine zla_syrfsx_extended(prec_type, uplo, n, nrhs, a, lda, af, &
          ldaf, ipiv, colequ, c, b, ldb, y, ldy, berr_out, n_norms, &
          err_bnds_norm, err_bnds_comp, res, ayb, dy, y_tail, rcond, ithresh, &
          rthresh, dz_ub, ignore_cwise, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dz_ub, rcond, rthresh
          Integer :: info, ithresh, lda, ldaf, ldb, ldy, n, nrhs, n_norms, &
            prec_type
          Logical :: colequ, ignore_cwise
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), dy(*), &
            res(*), y(ldy, *), y_tail(*)
          Real (wp) :: ayb(*), berr_out(*), c(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_syrfsx_extended
        Function zla_syrpvgrw(uplo, n, info, a, lda, af, ldaf, ipiv, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *)
          Real (wp) :: work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
!         .. Function Return Value ..
          Real (wp) :: zla_syrpvgrw
        End Function zla_syrpvgrw
        Subroutine zlat2c(uplo, n, a, lda, sa, ldsa, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: sp = kind(0.0)
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldsa, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Complex (sp) :: sa(ldsa, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlat2c
        Subroutine zlatbs(uplo, trans, diag, normin, n, kd, ab, ldab, x, &
          scale, cnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, kd, ldab, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), x(*)
          Real (wp) :: cnorm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlatbs
        Subroutine zlatdf(ijob, n, z, ldz, rhs, rdsum, rdscal, ipiv, jpiv)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rdscal, rdsum
          Integer :: ijob, ldz, n
!         .. Array Arguments ..
          Complex (wp) :: rhs(*), z(ldz, *)
          Integer :: ipiv(*), jpiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlatdf
        Subroutine zlatps(uplo, trans, diag, normin, n, ap, x, scale, cnorm, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), x(*)
          Real (wp) :: cnorm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlatps
        Subroutine zlatrd(uplo, n, nb, a, lda, e, tau, w, ldw)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: lda, ldw, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), w(ldw, *)
          Real (wp) :: e(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlatrd
        Subroutine zlatrs(uplo, trans, diag, normin, n, a, lda, x, scale, &
          cnorm, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, lda, n
          Character (1) :: diag, normin, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*)
          Real (wp) :: cnorm(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlatrs
        Subroutine zlatrz(m, n, l, a, lda, tau, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: l, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlatrz
        Subroutine zlatsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlatsqr
        Subroutine zlatzm(side, m, n, v, incv, tau, c1, c2, ldc, work)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: tau
          Integer :: incv, ldc, m, n
          Character (1) :: side
!         .. Array Arguments ..
          Complex (wp) :: c1(ldc, *), c2(ldc, *), v(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlatzm
        Recursive Subroutine zlaunhr_col_getrfnp2(m, n, a, lda, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaunhr_col_getrfnp2
        Subroutine zlaunhr_col_getrfnp(m, n, a, lda, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlaunhr_col_getrfnp
        Subroutine zlauu2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlauu2
        Subroutine zlauum(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zlauum
        Subroutine zla_wwaddw(n, x, y, w)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: n
!         .. Array Arguments ..
          Complex (wp) :: w(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zla_wwaddw
        Subroutine zpbcon(uplo, n, kd, ab, ldab, anorm, rcond, work, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpbcon
        Subroutine zpbequ(uplo, n, kd, ab, ldab, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpbequ
        Subroutine zpbrfs(uplo, n, kd, nrhs, ab, ldab, afb, ldafb, b, ldb, x, &
          ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpbrfs
        Subroutine zpbstf(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpbstf
        Subroutine zpbsv(uplo, n, kd, nrhs, ab, ldab, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpbsv
        Subroutine zpbsvx(fact, uplo, n, kd, nrhs, ab, ldab, afb, ldafb, &
          equed, s, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kd, ldab, ldafb, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), afb(ldafb, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpbsvx
        Subroutine zpbtf2(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpbtf2
        Subroutine zpbtrf(uplo, n, kd, ab, ldab, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpbtrf
        Subroutine zpbtrs(uplo, n, kd, nrhs, ab, ldab, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpbtrs
        Subroutine zpftrf(transr, uplo, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpftrf
        Subroutine zpftri(transr, uplo, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpftri
        Subroutine zpftrs(transr, uplo, n, nrhs, a, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpftrs
        Subroutine zpocon(uplo, n, a, lda, anorm, rcond, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpocon
        Subroutine zpoequb(n, a, lda, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpoequb
        Subroutine zpoequ(n, a, lda, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpoequ
        Subroutine zporfs(uplo, n, nrhs, a, lda, af, ldaf, b, ldb, x, ldx, &
          ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zporfs
        Subroutine zporfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, s, b, ldb, &
          x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, &
          nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zporfsx
        Subroutine zposv(uplo, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zposv
        Subroutine zposvx(fact, uplo, n, nrhs, a, lda, af, ldaf, equed, s, b, &
          ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zposvx
        Subroutine zposvxx(fact, uplo, n, nrhs, a, lda, af, ldaf, equed, s, b, &
          ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zposvxx
        Subroutine zpotf2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpotf2
        Recursive Subroutine zpotrf2(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpotrf2
        Subroutine zpotrf(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpotrf
        Subroutine zpotri(uplo, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpotri
        Subroutine zpotrs(uplo, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpotrs
        Subroutine zppcon(uplo, n, ap, anorm, rcond, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zppcon
        Subroutine zppequ(uplo, n, ap, s, scond, amax, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zppequ
        Subroutine zpprfs(uplo, n, nrhs, ap, afp, b, ldb, x, ldx, ferr, berr, &
          work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpprfs
        Subroutine zppsv(uplo, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zppsv
        Subroutine zppsvx(fact, uplo, n, nrhs, ap, afp, equed, s, b, ldb, x, &
          ldx, rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*), s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zppsvx
        Subroutine zpptrf(uplo, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpptrf
        Subroutine zpptri(uplo, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpptri
        Subroutine zpptrs(uplo, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpptrs
        Subroutine zpstf2(uplo, n, a, lda, piv, rank, tol, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tol
          Integer :: info, lda, n, rank
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(2*n)
          Integer :: piv(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpstf2
        Subroutine zpstrf(uplo, n, a, lda, piv, rank, tol, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tol
          Integer :: info, lda, n, rank
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Real (wp) :: work(2*n)
          Integer :: piv(n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpstrf
        Subroutine zptcon(n, d, e, anorm, rcond, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
!         .. Array Arguments ..
          Complex (wp) :: e(*)
          Real (wp) :: d(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zptcon
        Subroutine zpteqr(compz, n, d, e, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: compz
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), e(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpteqr
        Subroutine zptrfs(uplo, n, nrhs, d, e, df, ef, b, ldb, x, ldx, ferr, &
          berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), e(*), ef(*), work(*), x(ldx, *)
          Real (wp) :: berr(*), d(*), df(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zptrfs
        Subroutine zptsv(n, nrhs, d, e, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), e(*)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zptsv
        Subroutine zptsvx(fact, n, nrhs, d, e, df, ef, b, ldb, x, ldx, rcond, &
          ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), e(*), ef(*), work(*), x(ldx, *)
          Real (wp) :: berr(*), d(*), df(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zptsvx
        Subroutine zpttrf(n, d, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
!         .. Array Arguments ..
          Complex (wp) :: e(*)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpttrf
        Subroutine zpttrs(uplo, n, nrhs, d, e, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), e(*)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zpttrs
        Subroutine zptts2(iuplo, n, nrhs, d, e, b, ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: iuplo, ldb, n, nrhs
!         .. Array Arguments ..
          Complex (wp) :: b(ldb, *), e(*)
          Real (wp) :: d(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zptts2
        Subroutine zrot(n, cx, incx, cy, incy, c, s)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: s
          Real (wp) :: c
          Integer :: incx, incy, n
!         .. Array Arguments ..
          Complex (wp) :: cx(*), cy(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zrot
        Subroutine zspcon(uplo, n, ap, ipiv, anorm, rcond, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zspcon
        Subroutine zspmv(uplo, n, alpha, ap, x, incx, beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha, beta
          Integer :: incx, incy, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zspmv
        Subroutine zspr(uplo, n, alpha, x, incx, ap)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha
          Integer :: incx, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zspr
        Subroutine zsprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, &
          berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsprfs
        Subroutine zspsv(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zspsv
        Subroutine zspsvx(fact, uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, &
          rcond, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: afp(*), ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zspsvx
        Subroutine zsptrf(uplo, n, ap, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsptrf
        Subroutine zsptri(uplo, n, ap, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsptri
        Subroutine zsptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsptrs
        Subroutine zstedc(compz, n, d, e, z, ldz, work, lwork, rwork, lrwork, &
          iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, liwork, lrwork, lwork, n
          Character (1) :: compz
!         .. Array Arguments ..
          Complex (wp) :: work(*), z(ldz, *)
          Real (wp) :: d(*), e(*), rwork(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zstedc
        Subroutine zstegr(jobz, range, n, d, e, vl, vu, il, iu, abstol, m, w, &
          z, ldz, isuppz, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: abstol, vl, vu
          Integer :: il, info, iu, ldz, liwork, lwork, m, n
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), e(*), w(*), work(*)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zstegr
        Subroutine zstein(n, d, e, m, w, iblock, isplit, z, ldz, work, iwork, &
          ifail, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, m, n
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), e(*), w(*), work(*)
          Integer :: iblock(*), ifail(*), isplit(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zstein
        Subroutine zstemr(jobz, range, n, d, e, vl, vu, il, iu, m, w, z, ldz, &
          nzc, isuppz, tryrac, work, lwork, iwork, liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: vl, vu
          Integer :: il, info, iu, ldz, liwork, lwork, m, n, nzc
          Logical :: tryrac
          Character (1) :: jobz, range
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), e(*), w(*), work(*)
          Integer :: isuppz(*), iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zstemr
        Subroutine zsteqr(compz, n, d, e, z, ldz, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldz, n
          Character (1) :: compz
!         .. Array Arguments ..
          Complex (wp) :: z(ldz, *)
          Real (wp) :: d(*), e(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsteqr
        Subroutine zsycon_3(uplo, n, a, lda, e, ipiv, anorm, rcond, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsycon_3
        Subroutine zsycon(uplo, n, a, lda, ipiv, anorm, rcond, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsycon
        Subroutine zsycon_rook(uplo, n, a, lda, ipiv, anorm, rcond, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: anorm, rcond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsycon_rook
        Subroutine zsyconv(uplo, way, n, a, lda, ipiv, e, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsyconv
        Subroutine zsyconvf(uplo, way, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsyconvf
        Subroutine zsyconvf_rook(uplo, way, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo, way
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsyconvf_rook
        Subroutine zsyequb(uplo, n, a, lda, s, scond, amax, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: amax, scond
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: s(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsyequb
        Subroutine zsymv(uplo, n, alpha, a, lda, x, incx, beta, y, incy)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha, beta
          Integer :: incx, incy, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*), y(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsymv
        Subroutine zsyr(uplo, n, alpha, x, incx, a, lda)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha
          Integer :: incx, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), x(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsyr
        Subroutine zsyrfs(uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, &
          ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldaf, ldb, ldx, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsyrfs
        Subroutine zsyrfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, ipiv, s, b, &
          ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, &
          nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsyrfsx
        Subroutine zsysv_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsysv_aa_2stage
        Subroutine zsysv_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsysv_aa
        Subroutine zsysv(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsysv
        Subroutine zsysv_rk(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsysv_rk
        Subroutine zsysv_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsysv_rook
        Subroutine zsysvx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, &
          x, ldx, rcond, ferr, berr, work, lwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, ldaf, ldb, ldx, lwork, n, nrhs
          Character (1) :: fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsysvx
        Subroutine zsysvxx(fact, uplo, n, nrhs, a, lda, af, ldaf, ipiv, equed, &
          s, b, ldb, x, ldx, rcond, rpvgrw, berr, n_err_bnds, err_bnds_norm, &
          err_bnds_comp, nparams, params, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond, rpvgrw
          Integer :: info, lda, ldaf, ldb, ldx, n, nparams, nrhs, n_err_bnds
          Character (1) :: equed, fact, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), af(ldaf, *), b(ldb, *), work(*), &
            x(ldx, *)
          Real (wp) :: berr(*), err_bnds_comp(nrhs, *), &
            err_bnds_norm(nrhs, *), params(*), rwork(*), s(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsysvxx
        Subroutine zsyswapr(uplo, n, a, lda, i1, i2)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: i1, i2, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, n)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsyswapr
        Subroutine zsytf2(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytf2
        Subroutine zsytf2_rk(uplo, n, a, lda, e, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytf2_rk
        Subroutine zsytf2_rook(uplo, n, a, lda, ipiv, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytf2_rook
        Subroutine zsytrf_aa_2stage(uplo, n, a, lda, tb, ltb, ipiv, ipiv2, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ltb, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tb(*), work(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrf_aa_2stage
        Subroutine zsytrf_aa(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrf_aa
        Subroutine zsytrf(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrf
        Subroutine zsytrf_rk(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrf_rk
        Subroutine zsytrf_rook(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrf_rook
        Subroutine zsytri2(uplo, n, a, lda, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytri2
        Subroutine zsytri2x(uplo, n, a, lda, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytri2x
        Subroutine zsytri_3(uplo, n, a, lda, e, ipiv, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytri_3
        Subroutine zsytri_3x(uplo, n, a, lda, e, ipiv, work, nb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n, nb
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), e(*), work(n+nb+1, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytri_3x
        Subroutine zsytri(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytri
        Subroutine zsytri_rook(uplo, n, a, lda, ipiv, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytri_rook
        Subroutine zsytrs2(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrs2
        Subroutine zsytrs_3(uplo, n, nrhs, a, lda, e, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), e(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrs_3
        Subroutine zsytrs_aa_2stage(uplo, n, nrhs, a, lda, tb, ltb, ipiv, &
          ipiv2, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ltb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), tb(*)
          Integer :: ipiv(*), ipiv2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrs_aa_2stage
        Subroutine zsytrs_aa(uplo, n, nrhs, a, lda, ipiv, b, ldb, work, lwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, lwork, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrs_aa
        Subroutine zsytrs(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrs
        Subroutine zsytrs_rook(uplo, n, nrhs, a, lda, ipiv, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
          Integer :: ipiv(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zsytrs_rook
        Subroutine ztbcon(norm, uplo, diag, n, kd, ab, ldab, rcond, work, &
          rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, kd, ldab, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztbcon
        Subroutine ztbrfs(uplo, trans, diag, n, kd, nrhs, ab, ldab, b, ldb, x, &
          ldx, ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztbrfs
        Subroutine ztbtrs(uplo, trans, diag, n, kd, nrhs, ab, ldab, b, ldb, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, kd, ldab, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ab(ldab, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztbtrs
        Subroutine ztfsm(transr, side, uplo, trans, diag, m, n, alpha, a, b, &
          ldb)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Complex (wp) :: alpha
          Integer :: ldb, m, n
          Character (1) :: diag, side, trans, transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*), b(0:ldb-1, 0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztfsm
        Subroutine ztftri(transr, uplo, diag, n, a, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: diag, transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztftri
        Subroutine ztfttp(transr, uplo, n, arf, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztfttp
        Subroutine ztfttr(transr, uplo, n, arf, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:lda-1, 0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztfttr
        Subroutine ztgevc(side, howmny, select, n, s, lds, p, ldp, vl, ldvl, &
          vr, ldvr, mm, m, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldp, lds, ldvl, ldvr, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Complex (wp) :: p(ldp, *), s(lds, *), vl(ldvl, *), vr(ldvr, *), &
            work(*)
          Real (wp) :: rwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztgevc
        Subroutine ztgex2(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, j1, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, j1, lda, ldb, ldq, ldz, n
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztgex2
        Subroutine ztgexc(wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz, &
          ifst, ilst, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ifst, ilst, info, lda, ldb, ldq, ldz, n
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), z(ldz, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztgexc
        Subroutine ztgsen(ijob, wantq, wantz, select, n, a, lda, b, ldb, &
          alpha, beta, q, ldq, z, ldz, m, pl, pr, dif, work, lwork, iwork, &
          liwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: pl, pr
          Integer :: ijob, info, lda, ldb, ldq, ldz, liwork, lwork, m, n
          Logical :: wantq, wantz
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), alpha(*), b(ldb, *), beta(*), &
            q(ldq, *), work(*), z(ldz, *)
          Real (wp) :: dif(*)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztgsen
        Subroutine 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)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: tola, tolb
          Integer :: info, k, l, lda, ldb, ldq, ldu, ldv, m, n, ncycle, p
          Character (1) :: jobq, jobu, jobv
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), q(ldq, *), u(ldu, *), &
            v(ldv, *), work(*)
          Real (wp) :: alpha(*), beta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztgsja
        Subroutine ztgsna(job, howmny, select, n, a, lda, b, ldb, vl, ldvl, &
          vr, ldvr, s, dif, mm, m, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldvl, ldvr, lwork, m, mm, n
          Character (1) :: howmny, job
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), vl(ldvl, *), vr(ldvr, *), &
            work(*)
          Real (wp) :: dif(*), s(*)
          Integer :: iwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztgsna
        Subroutine ztgsy2(trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, &
          e, lde, f, ldf, scale, rdsum, rdscal, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rdscal, rdsum, scale
          Integer :: ijob, info, lda, ldb, ldc, ldd, lde, ldf, m, n
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), c(ldc, *), d(ldd, *), &
            e(lde, *), f(ldf, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztgsy2
        Subroutine ztgsyl(trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, &
          e, lde, f, ldf, scale, dif, work, lwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: dif, scale
          Integer :: ijob, info, lda, ldb, ldc, ldd, lde, ldf, lwork, m, n
          Character (1) :: trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), c(ldc, *), d(ldd, *), &
            e(lde, *), f(ldf, *), work(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztgsyl
        Subroutine ztpcon(norm, uplo, diag, n, ap, rcond, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztpcon
        Subroutine ztplqt2(m, n, l, a, lda, b, ldb, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztplqt2
        Subroutine ztplqt(m, n, l, mb, a, lda, b, ldb, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, mb, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztplqt
        Subroutine ztpmlqt(side, trans, m, n, k, l, mb, v, ldv, t, ldt, a, &
          lda, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldt, ldv, m, mb, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztpmlqt
        Subroutine ztpmqrt(side, trans, m, n, k, l, nb, v, ldv, t, ldt, a, &
          lda, b, ldb, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldb, ldt, ldv, m, n, nb
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztpmqrt
        Subroutine ztpqrt2(m, n, l, a, lda, b, ldb, t, ldt, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztpqrt2
        Subroutine ztpqrt(m, n, l, nb, a, lda, b, ldb, t, ldt, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, l, lda, ldb, ldt, m, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztpqrt
        Subroutine ztprfb(side, trans, direct, storev, m, n, k, l, v, ldv, t, &
          ldt, a, lda, b, ldb, work, ldwork)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: k, l, lda, ldb, ldt, ldv, ldwork, m, n
          Character (1) :: direct, side, storev, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), t(ldt, *), v(ldv, *), &
            work(ldwork, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztprfb
        Subroutine ztprfs(uplo, trans, diag, n, nrhs, ap, b, ldb, x, ldx, &
          ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztprfs
        Subroutine ztptri(uplo, diag, n, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztptri
        Subroutine ztptrs(uplo, trans, diag, n, nrhs, ap, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztptrs
        Subroutine ztpttf(transr, uplo, n, ap, arf, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztpttf
        Subroutine ztpttr(uplo, n, ap, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztpttr
        Subroutine ztrcon(norm, uplo, diag, n, a, lda, rcond, work, rwork, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: rcond
          Integer :: info, lda, n
          Character (1) :: diag, norm, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), work(*)
          Real (wp) :: rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrcon
        Subroutine ztrevc3(side, howmny, select, n, t, ldt, vl, ldvl, vr, &
          ldvr, mm, m, work, lwork, rwork, lrwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, lrwork, lwork, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Complex (wp) :: t(ldt, *), vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: rwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrevc3
        Subroutine ztrevc(side, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, &
          mm, m, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, m, mm, n
          Character (1) :: howmny, side
!         .. Array Arguments ..
          Complex (wp) :: t(ldt, *), vl(ldvl, *), vr(ldvr, *), work(*)
          Real (wp) :: rwork(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrevc
        Subroutine ztrexc(compq, n, t, ldt, q, ldq, ifst, ilst, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ifst, ilst, info, ldq, ldt, n
          Character (1) :: compq
!         .. Array Arguments ..
          Complex (wp) :: q(ldq, *), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrexc
        Subroutine ztrrfs(uplo, trans, diag, n, nrhs, a, lda, b, ldb, x, ldx, &
          ferr, berr, work, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, ldx, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), work(*), x(ldx, *)
          Real (wp) :: berr(*), ferr(*), rwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrrfs
        Subroutine ztrsen(job, compq, select, n, t, ldt, q, ldq, w, m, s, sep, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: s, sep
          Integer :: info, ldq, ldt, lwork, m, n
          Character (1) :: compq, job
!         .. Array Arguments ..
          Complex (wp) :: q(ldq, *), t(ldt, *), w(*), work(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrsen
        Subroutine ztrsna(job, howmny, select, n, t, ldt, vl, ldvl, vr, ldvr, &
          s, sep, mm, m, work, ldwork, rwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldt, ldvl, ldvr, ldwork, m, mm, n
          Character (1) :: howmny, job
!         .. Array Arguments ..
          Complex (wp) :: t(ldt, *), vl(ldvl, *), vr(ldvr, *), &
            work(ldwork, *)
          Real (wp) :: rwork(*), s(*), sep(*)
          Logical :: select(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrsna
        Subroutine ztrsyl(trana, tranb, isgn, m, n, a, lda, b, ldb, c, ldc, &
          scale, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Real (wp) :: scale
          Integer :: info, isgn, lda, ldb, ldc, m, n
          Character (1) :: trana, tranb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *), c(ldc, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrsyl
        Subroutine ztrti2(uplo, diag, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrti2
        Subroutine ztrtri(uplo, diag, n, a, lda, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: diag, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrtri
        Subroutine ztrtrs(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldb, n, nrhs
          Character (1) :: diag, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), b(ldb, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrtrs
        Subroutine ztrttf(transr, uplo, n, a, lda, arf, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: transr, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(0:lda-1, 0:*), arf(0:*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrttf
        Subroutine ztrttp(uplo, n, a, lda, ap, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), ap(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztrttp
        Subroutine ztzrqf(m, n, a, lda, tau, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztzrqf
        Subroutine ztzrzf(m, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine ztzrzf
        Subroutine zunbdb1(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Complex (wp) :: taup1(*), taup2(*), tauq1(*), work(*), &
            x11(ldx11, *), x21(ldx21, *)
          Real (wp) :: phi(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunbdb1
        Subroutine zunbdb2(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Complex (wp) :: taup1(*), taup2(*), tauq1(*), work(*), &
            x11(ldx11, *), x21(ldx21, *)
          Real (wp) :: phi(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunbdb2
        Subroutine zunbdb3(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Complex (wp) :: taup1(*), taup2(*), tauq1(*), work(*), &
            x11(ldx11, *), x21(ldx21, *)
          Real (wp) :: phi(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunbdb3
        Subroutine zunbdb4(m, p, q, x11, ldx11, x21, ldx21, theta, phi, taup1, &
          taup2, tauq1, phantom, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx21, lwork, m, p, q
!         .. Array Arguments ..
          Complex (wp) :: phantom(*), taup1(*), taup2(*), tauq1(*), &
            work(*), x11(ldx11, *), x21(ldx21, *)
          Real (wp) :: phi(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunbdb4
        Subroutine zunbdb5(m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, &
          ldq2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incx1, incx2, info, ldq1, ldq2, lwork, m1, m2, n
!         .. Array Arguments ..
          Complex (wp) :: q1(ldq1, *), q2(ldq2, *), work(*), x1(*), x2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunbdb5
        Subroutine zunbdb6(m1, m2, n, x1, incx1, x2, incx2, q1, ldq1, q2, &
          ldq2, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: incx1, incx2, info, ldq1, ldq2, lwork, m1, m2, n
!         .. Array Arguments ..
          Complex (wp) :: q1(ldq1, *), q2(ldq2, *), work(*), x1(*), x2(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunbdb6
        Subroutine zunbdb(trans, signs, m, p, q, x11, ldx11, x12, ldx12, x21, &
          ldx21, x22, ldx22, theta, phi, taup1, taup2, tauq1, tauq2, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldx11, ldx12, ldx21, ldx22, lwork, m, p, q
          Character (1) :: signs, trans
!         .. Array Arguments ..
          Complex (wp) :: taup1(*), taup2(*), tauq1(*), tauq2(*), &
            work(*), x11(ldx11, *), x12(ldx12, *), x21(ldx21, *), &
            x22(ldx22, *)
          Real (wp) :: phi(*), theta(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunbdb
        Subroutine zuncsd2by1(jobu1, jobu2, jobv1t, m, p, q, x11, ldx11, x21, &
          ldx21, theta, u1, ldu1, u2, ldu2, v1t, ldv1t, work, lwork, rwork, &
          lrwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldx11, ldx21, lrwork, lwork, m, &
            p, q
          Character (1) :: jobu1, jobu2, jobv1t
!         .. Array Arguments ..
          Complex (wp) :: u1(ldu1, *), u2(ldu2, *), v1t(ldv1t, *), &
            work(*), x11(ldx11, *), x21(ldx21, *)
          Real (wp) :: rwork(*), theta(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zuncsd2by1
        Recursive Subroutine zuncsd(jobu1, jobu2, jobv1t, jobv2t, trans, &
          signs, m, p, q, x11, ldx11, x12, ldx12, x21, ldx21, x22, ldx22, &
          theta, u1, ldu1, u2, ldu2, v1t, ldv1t, v2t, ldv2t, work, lwork, &
          rwork, lrwork, iwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldu1, ldu2, ldv1t, ldv2t, ldx11, ldx12, ldx21, &
            ldx22, lrwork, lwork, m, p, q
          Character (1) :: jobu1, jobu2, jobv1t, jobv2t, signs, trans
!         .. Array Arguments ..
          Complex (wp) :: u1(ldu1, *), u2(ldu2, *), v1t(ldv1t, *), &
            v2t(ldv2t, *), work(*), x11(ldx11, *), x12(ldx12, *), &
            x21(ldx21, *), x22(ldx22, *)
          Real (wp) :: rwork(*), theta(*)
          Integer :: iwork(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zuncsd
        Subroutine zung2l(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zung2l
        Subroutine zung2r(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zung2r
        Subroutine zungbr(vect, m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
          Character (1) :: vect
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zungbr
        Subroutine zunghr(n, ilo, ihi, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, lwork, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunghr
        Subroutine zungl2(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zungl2
        Subroutine zunglq(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunglq
        Subroutine zungql(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zungql
        Subroutine zungqr(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zungqr
        Subroutine zungr2(m, n, k, a, lda, tau, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zungr2
        Subroutine zungrq(m, n, k, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, lwork, m, n
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zungrq
        Subroutine zungtr(uplo, n, a, lda, tau, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, lwork, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zungtr
        Subroutine zungtsqr(m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, lwork, m, mb, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), t(ldt, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zungtsqr
        Subroutine zunhr_col(m, n, nb, a, lda, t, ldt, d, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldt, m, n, nb
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), d(*), t(ldt, *)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunhr_col
        Subroutine zunm22(side, trans, m, n, n1, n2, q, ldq, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, ldq, lwork, m, n, n1, n2
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: c(ldc, *), q(ldq, *), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunm22
        Subroutine zunm2l(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunm2l
        Subroutine zunm2r(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunm2r
        Subroutine zunmbr(vect, side, trans, m, n, k, a, lda, tau, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans, vect
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunmbr
        Subroutine zunmhr(side, trans, m, n, ilo, ihi, a, lda, tau, c, ldc, &
          work, lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: ihi, ilo, info, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunmhr
        Subroutine zunml2(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunml2
        Subroutine zunmlq(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunmlq
        Subroutine zunmql(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunmql
        Subroutine zunmqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunmqr
        Subroutine zunmr2(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunmr2
        Subroutine zunmr3(side, trans, m, n, k, l, a, lda, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldc, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunmr3
        Subroutine zunmrq(side, trans, m, n, k, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunmrq
        Subroutine zunmrz(side, trans, m, n, k, l, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, k, l, lda, ldc, lwork, m, n
          Character (1) :: side, trans
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunmrz
        Subroutine zunmtr(side, uplo, trans, m, n, a, lda, tau, c, ldc, work, &
          lwork, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, lda, ldc, lwork, m, n
          Character (1) :: side, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: a(lda, *), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zunmtr
        Subroutine zupgtr(uplo, n, ap, tau, q, ldq, work, info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldq, n
          Character (1) :: uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), q(ldq, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zupgtr
        Subroutine zupmtr(side, uplo, trans, m, n, ap, tau, c, ldc, work, &
          info)
!         .. Implicit None Statement ..
          Implicit None
!         .. Parameters ..
          Integer, Parameter :: wp = kind(0.0D0)
!         .. Scalar Arguments ..
          Integer :: info, ldc, m, n
          Character (1) :: side, trans, uplo
!         .. Array Arguments ..
          Complex (wp) :: ap(*), c(ldc, *), tau(*), work(*)
!         .. Intrinsic Procedures ..
          Intrinsic :: kind
        End Subroutine zupmtr
      End Interface
    End Module armpl_lapack
