laqz2(3)

NAME
laqz2 - laqz2: step in ggev3, gges3

SYNOPSIS

  Functions

recursive subroutine claqz2 (ilschur, ilq, ilz, n, ilo, ihi, nw, a, lda, b, ldb, q, ldq, z, ldz, ns, nd, alpha, beta, qc, ldqc, zc, ldzc, work, lwork, rwork, rec, info)
CLAQZ2
subroutine dlaqz2 (ilq, ilz, k, istartm, istopm, ihi, a, lda, b, ldb, nq, qstart, q, ldq, nz, zstart, z, ldz)
DLAQZ2
subroutine slaqz2 (ilq, ilz, k, istartm, istopm, ihi, a, lda, b, ldb, nq, qstart, q, ldq, nz, zstart, z, ldz)
SLAQZ2
recursive subroutine zlaqz2 (ilschur, ilq, ilz, n, ilo, ihi, nw, a, lda, b, ldb, q, ldq, z, ldz, ns, nd, alpha, beta, qc, ldqc, zc, ldzc, work, lwork, rwork, rec, info)
ZLAQZ2

Detailed Description

Function Documentation

  recursive subroutine claqz2 (logical, intent(in) ilschur, logical, intent(in) ilq, logical, intent(in) ilz, integer, intent(in) n, integer, intent(in) ilo, integer, intent(in) ihi, integer, intent(in) nw, complex, dimension( lda, * ), intent(inout) a, integer, intent(in) lda, complex, dimension( ldb, * ), intent(inout) b, integer, intent(in) ldb, complex, dimension( ldq, * ), intent(inout) q, integer, intent(in) ldq, complex, dimension( ldz, * ), intent(inout) z, integer, intent(in) ldz, integer, intent(out) ns, integer, intent(out) nd, complex, dimension( * ), intent(inout) alpha, complex, dimension( * ), intent(inout) beta, complex, dimension( ldqc, * ) qc, integer, intent(in) ldqc, complex, dimension( ldzc, * ) zc, integer, intent(in) ldzc, complex, dimension( * ) work, integer, intent(in) lwork, real, dimension( * ) rwork, integer, intent(in) rec, integer, intent(out) info)

CLAQZ2

Purpose:

    !>
    !> CLAQZ2 performs AED
    !>

Parameters
    ILSCHUR

    !>          ILSCHUR is LOGICAL
    !>              Determines whether or not to update the full Schur form
    !>

    ILQ

    !>          ILQ is LOGICAL
    !>              Determines whether or not to update the matrix Q
    !>

    ILZ

    !>          ILZ is LOGICAL
    !>              Determines whether or not to update the matrix Z
    !>

    N

    !>          N is INTEGER
    !>          The order of the matrices A, B, Q, and Z.  N >= 0.
    !>

    ILO

    !>          ILO is INTEGER
    !>

    IHI

    !>          IHI is INTEGER
    !>          ILO and IHI mark the rows and columns of (A,B) which
    !>          are to be normalized
    !>

    NW

    !>          NW is INTEGER
    !>          The desired size of the deflation window.
    !>

    A

    !>          A is COMPLEX array, dimension (LDA, N)
    !>

    LDA

    !>          LDA is INTEGER
    !>          The leading dimension of the array A.  LDA >= max( 1, N ).
    !>

    B

    !>          B is COMPLEX array, dimension (LDB, N)
    !>

    LDB

    !>          LDB is INTEGER
    !>          The leading dimension of the array B.  LDB >= max( 1, N ).
    !>

    Q

    !>          Q is COMPLEX array, dimension (LDQ, N)
    !>

    LDQ

    !>          LDQ is INTEGER
    !>

    Z

    !>          Z is COMPLEX array, dimension (LDZ, N)
    !>

    LDZ

    !>          LDZ is INTEGER
    !>

    NS

    !>          NS is INTEGER
    !>          The number of unconverged eigenvalues available to
    !>          use as shifts.
    !>

    ND

    !>          ND is INTEGER
    !>          The number of converged eigenvalues found.
    !>

    ALPHA

    !>          ALPHA is COMPLEX array, dimension (N)
    !>          Each scalar alpha defining an eigenvalue
    !>          of GNEP.
    !>

    BETA

    !>          BETA is COMPLEX array, dimension (N)
    !>          The scalars beta that define the eigenvalues of GNEP.
    !>          Together, the quantities alpha = ALPHA(j) and
    !>          beta = BETA(j) represent the j-th eigenvalue of the matrix
    !>          pair (A,B), in one of the forms lambda = alpha/beta or
    !>          mu = beta/alpha.  Since either lambda or mu may overflow,
    !>          they should not, in general, be computed.
    !>

    QC

    !>          QC is COMPLEX array, dimension (LDQC, NW)
    !>

    LDQC

    !>          LDQC is INTEGER
    !>

    ZC

    !>          ZC is COMPLEX array, dimension (LDZC, NW)
    !>

    LDZC

    !>          LDZ is INTEGER
    !>

    WORK

    !>          WORK is COMPLEX array, dimension (MAX(1,LWORK))
    !>          On exit, if INFO >= 0, WORK(1) returns the optimal LWORK.
    !>

    LWORK

    !>          LWORK is INTEGER
    !>          The dimension of the array WORK.  LWORK >= max(1,N).
    !>
    !>          If LWORK = -1, then a workspace query is assumed; the routine
    !>          only calculates the optimal size of the WORK array, returns
    !>          this value as the first entry of the WORK array, and no error
    !>          message related to LWORK is issued by XERBLA.
    !>

    RWORK

    !>          RWORK is REAL array, dimension (N)
    !>

    REC

    !>          REC is INTEGER
    !>             REC indicates the current recursion level. Should be set
    !>             to 0 on first call.
    !>

    INFO

    !>          INFO is INTEGER
    !>          = 0: successful exit
    !>          < 0: if INFO = -i, the i-th argument had an illegal value
    !>

Author
    Thijs Steel, KU Leuven, KU Leuven

Date
    May 2020

  subroutine dlaqz2 (logical, intent(in) ilq, logical, intent(in) ilz, integer, intent(in) k, integer, intent(in) istartm, integer, intent(in) istopm, integer, intent(in) ihi, double precision, dimension( lda, * ) a, integer, intent(in) lda, double precision, dimension( ldb, * ) b, integer, intent(in) ldb, integer, intent(in) nq, integer, intent(in) qstart, double precision, dimension( ldq, * ) q, integer, intent(in) ldq, integer, intent(in) nz, integer, intent(in) zstart, double precision, dimension( ldz, * ) z, integer, intent(in) ldz)

DLAQZ2

Purpose:

    !>
    !>      DLAQZ2 chases a 2x2 shift bulge in a matrix pencil down a single position
    !>

Parameters
    ILQ

    !>          ILQ is LOGICAL
    !>              Determines whether or not to update the matrix Q
    !>

    ILZ

    !>          ILZ is LOGICAL
    !>              Determines whether or not to update the matrix Z
    !>

    K

    !>          K is INTEGER
    !>              Index indicating the position of the bulge.
    !>              On entry, the bulge is located in
    !>              (A(k+1:k+2,k:k+1),B(k+1:k+2,k:k+1)).
    !>              On exit, the bulge is located in
    !>              (A(k+2:k+3,k+1:k+2),B(k+2:k+3,k+1:k+2)).
    !>

    ISTARTM

    !>          ISTARTM is INTEGER
    !>

    ISTOPM

    !>          ISTOPM is INTEGER
    !>              Updates to (A,B) are restricted to
    !>              (istartm:k+3,k:istopm). It is assumed
    !>              without checking that istartm <= k+1 and
    !>              k+2 <= istopm
    !>

    IHI

    !>          IHI is INTEGER
    !>

    A

    !>          A is DOUBLE PRECISION array, dimension (LDA,N)
    !>

    LDA

    !>          LDA is INTEGER
    !>              The leading dimension of A as declared in
    !>              the calling procedure.
    !>

    B

    !>          B is DOUBLE PRECISION array, dimension (LDB,N)
    !>

    LDB

    !>          LDB is INTEGER
    !>              The leading dimension of B as declared in
    !>              the calling procedure.
    !>

    NQ

    !>          NQ is INTEGER
    !>              The order of the matrix Q
    !>

    QSTART

    !>          QSTART is INTEGER
    !>              Start index of the matrix Q. Rotations are applied
    !>              To columns k+2-qStart:k+4-qStart of Q.
    !>

    Q

    !>          Q is DOUBLE PRECISION array, dimension (LDQ,NQ)
    !>

    LDQ

    !>          LDQ is INTEGER
    !>              The leading dimension of Q as declared in
    !>              the calling procedure.
    !>

    NZ

    !>          NZ is INTEGER
    !>              The order of the matrix Z
    !>

    ZSTART

    !>          ZSTART is INTEGER
    !>              Start index of the matrix Z. Rotations are applied
    !>              To columns k+1-qStart:k+3-qStart of Z.
    !>

    Z

    !>          Z is DOUBLE PRECISION array, dimension (LDZ,NZ)
    !>

    LDZ

    !>          LDZ is INTEGER
    !>              The leading dimension of Q as declared in
    !>              the calling procedure.
    !>

Author
    Thijs Steel, KU Leuven

Date
    May 2020

  subroutine slaqz2 (logical, intent(in) ilq, logical, intent(in) ilz, integer, intent(in) k, integer, intent(in) istartm, integer, intent(in) istopm, integer, intent(in) ihi, real, dimension( lda, * ) a, integer, intent(in) lda, real, dimension( ldb, * ) b, integer, intent(in) ldb, integer, intent(in) nq, integer, intent(in) qstart, real, dimension( ldq, * ) q, integer, intent(in) ldq, integer, intent(in) nz, integer, intent(in) zstart, real, dimension( ldz, * ) z, integer, intent(in) ldz)

SLAQZ2

Purpose:

    !>
    !>      SLAQZ2 chases a 2x2 shift bulge in a matrix pencil down a single position
    !>

Parameters
    ILQ

    !>          ILQ is LOGICAL
    !>              Determines whether or not to update the matrix Q
    !>

    ILZ

    !>          ILZ is LOGICAL
    !>              Determines whether or not to update the matrix Z
    !>

    K

    !>          K is INTEGER
    !>              Index indicating the position of the bulge.
    !>              On entry, the bulge is located in
    !>              (A(k+1:k+2,k:k+1),B(k+1:k+2,k:k+1)).
    !>              On exit, the bulge is located in
    !>              (A(k+2:k+3,k+1:k+2),B(k+2:k+3,k+1:k+2)).
    !>

    ISTARTM

    !>          ISTARTM is INTEGER
    !>

    ISTOPM

    !>          ISTOPM is INTEGER
    !>              Updates to (A,B) are restricted to
    !>              (istartm:k+3,k:istopm). It is assumed
    !>              without checking that istartm <= k+1 and
    !>              k+2 <= istopm
    !>

    IHI

    !>          IHI is INTEGER
    !>

    A

    !>          A is REAL array, dimension (LDA,N)
    !>

    LDA

    !>          LDA is INTEGER
    !>              The leading dimension of A as declared in
    !>              the calling procedure.
    !>

    B

    !>          B is REAL array, dimension (LDB,N)
    !>

    LDB

    !>          LDB is INTEGER
    !>              The leading dimension of B as declared in
    !>              the calling procedure.
    !>

    NQ

    !>          NQ is INTEGER
    !>              The order of the matrix Q
    !>

    QSTART

    !>          QSTART is INTEGER
    !>              Start index of the matrix Q. Rotations are applied
    !>              To columns k+2-qStart:k+4-qStart of Q.
    !>

    Q

    !>          Q is REAL array, dimension (LDQ,NQ)
    !>

    LDQ

    !>          LDQ is INTEGER
    !>              The leading dimension of Q as declared in
    !>              the calling procedure.
    !>

    NZ

    !>          NZ is INTEGER
    !>              The order of the matrix Z
    !>

    ZSTART

    !>          ZSTART is INTEGER
    !>              Start index of the matrix Z. Rotations are applied
    !>              To columns k+1-qStart:k+3-qStart of Z.
    !>

    Z

    !>          Z is REAL array, dimension (LDZ,NZ)
    !>

    LDZ

    !>          LDZ is INTEGER
    !>              The leading dimension of Q as declared in
    !>              the calling procedure.
    !>

Author
    Thijs Steel, KU Leuven

Date
    May 2020

  recursive subroutine zlaqz2 (logical, intent(in) ilschur, logical, intent(in) ilq, logical, intent(in) ilz, integer, intent(in) n, integer, intent(in) ilo, integer, intent(in) ihi, integer, intent(in) nw, complex*16, dimension( lda, * ), intent(inout) a, integer, intent(in) lda, complex*16, dimension( ldb, * ), intent(inout) b, integer, intent(in) ldb, complex*16, dimension( ldq, * ), intent(inout) q, integer, intent(in) ldq, complex*16, dimension( ldz, * ), intent(inout) z, integer, intent(in) ldz, integer, intent(out) ns, integer, intent(out) nd, complex*16, dimension( * ), intent(inout) alpha, complex*16, dimension( * ), intent(inout) beta, complex*16, dimension( ldqc, * ) qc, integer, intent(in) ldqc, complex*16, dimension( ldzc, * ) zc, integer, intent(in) ldzc, complex*16, dimension( * ) work, integer, intent(in) lwork, double precision, dimension( * ) rwork, integer, intent(in) rec, integer, intent(out) info)

ZLAQZ2

Purpose:

    !>
    !> ZLAQZ2 performs AED
    !>

Parameters
    ILSCHUR

    !>          ILSCHUR is LOGICAL
    !>              Determines whether or not to update the full Schur form
    !>

    ILQ

    !>          ILQ is LOGICAL
    !>              Determines whether or not to update the matrix Q
    !>

    ILZ

    !>          ILZ is LOGICAL
    !>              Determines whether or not to update the matrix Z
    !>

    N

    !>          N is INTEGER
    !>          The order of the matrices A, B, Q, and Z.  N >= 0.
    !>

    ILO

    !>          ILO is INTEGER
    !>

    IHI

    !>          IHI is INTEGER
    !>          ILO and IHI mark the rows and columns of (A,B) which
    !>          are to be normalized
    !>

    NW

    !>          NW is INTEGER
    !>          The desired size of the deflation window.
    !>

    A

    !>          A is COMPLEX*16 array, dimension (LDA, N)
    !>

    LDA

    !>          LDA is INTEGER
    !>          The leading dimension of the array A.  LDA >= max( 1, N ).
    !>

    B

    !>          B is COMPLEX*16 array, dimension (LDB, N)
    !>

    LDB

    !>          LDB is INTEGER
    !>          The leading dimension of the array B.  LDB >= max( 1, N ).
    !>

    Q

    !>          Q is COMPLEX*16 array, dimension (LDQ, N)
    !>

    LDQ

    !>          LDQ is INTEGER
    !>

    Z

    !>          Z is COMPLEX*16 array, dimension (LDZ, N)
    !>

    LDZ

    !>          LDZ is INTEGER
    !>

    NS

    !>          NS is INTEGER
    !>          The number of unconverged eigenvalues available to
    !>          use as shifts.
    !>

    ND

    !>          ND is INTEGER
    !>          The number of converged eigenvalues found.
    !>

    ALPHA

    !>          ALPHA is COMPLEX*16 array, dimension (N)
    !>          Each scalar alpha defining an eigenvalue
    !>          of GNEP.
    !>

    BETA

    !>          BETA is COMPLEX*16 array, dimension (N)
    !>          The scalars beta that define the eigenvalues of GNEP.
    !>          Together, the quantities alpha = ALPHA(j) and
    !>          beta = BETA(j) represent the j-th eigenvalue of the matrix
    !>          pair (A,B), in one of the forms lambda = alpha/beta or
    !>          mu = beta/alpha.  Since either lambda or mu may overflow,
    !>          they should not, in general, be computed.
    !>

    QC

    !>          QC is COMPLEX*16 array, dimension (LDQC, NW)
    !>

    LDQC

    !>          LDQC is INTEGER
    !>

    ZC

    !>          ZC is COMPLEX*16 array, dimension (LDZC, NW)
    !>

    LDZC

    !>          LDZ is INTEGER
    !>

    WORK

    !>          WORK is COMPLEX*16 array, dimension (MAX(1,LWORK))
    !>          On exit, if INFO >= 0, WORK(1) returns the optimal LWORK.
    !>

    LWORK

    !>          LWORK is INTEGER
    !>          The dimension of the array WORK.  LWORK >= max(1,N).
    !>
    !>          If LWORK = -1, then a workspace query is assumed; the routine
    !>          only calculates the optimal size of the WORK array, returns
    !>          this value as the first entry of the WORK array, and no error
    !>          message related to LWORK is issued by XERBLA.
    !>

    RWORK

    !>          RWORK is DOUBLE PRECISION array, dimension (N)
    !>

    REC

    !>          REC is INTEGER
    !>             REC indicates the current recursion level. Should be set
    !>             to 0 on first call.
    !>

    INFO

    !>          INFO is INTEGER
    !>          = 0: successful exit
    !>          < 0: if INFO = -i, the i-th argument had an illegal value
    !>

Author
    Thijs Steel, KU Leuven

Date
    May 2020

Author

Generated automatically by Doxygen for LAPACK from the source code.