ggsvp3#

Functions

void sggsvp3(
    const char*          jobu,
    const char*          jobv,
    const char*          jobq,
    const INT            m,
    const INT            p,
    const INT            n,
          f32*  restrict A,
    const INT            lda,
          f32*  restrict B,
    const INT            ldb,
    const f32            tola,
    const f32            tolb,
          INT*           k,
          INT*           l,
          f32*  restrict U,
    const INT            ldu,
          f32*  restrict V,
    const INT            ldv,
          f32*  restrict Q,
    const INT            ldq,
          INT*  restrict iwork,
          f32*  restrict tau,
          f32*  restrict work,
    const INT            lwork,
          INT*           info
);
void sggsvp3(const char *jobu, const char *jobv, const char *jobq, const INT m, const INT p, const INT n, f32 *restrict A, const INT lda, f32 *restrict B, const INT ldb, const f32 tola, const f32 tolb, INT *k, INT *l, f32 *restrict U, const INT ldu, f32 *restrict V, const INT ldv, f32 *restrict Q, const INT ldq, INT *restrict iwork, f32 *restrict tau, f32 *restrict work, const INT lwork, INT *info)#

SGGSVP3 computes orthogonal matrices U, V and Q such that.

               N-K-L  K    L
U**T*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0; L ( 0 0 A23 ) M-K-L ( 0 0 0 )
 N-K-L  K    L
= K ( 0 A12 A13 ) if M-K-L < 0; M-K ( 0 0 A23 )
 N-K-L  K    L
V**T*B*Q = L ( 0 0 B13 ) P-L ( 0 0 0 )

where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular upper triangular. K+L = the effective numerical rank of (A**T,B**T)**T.

Parameters

in
jobu

= ‘U’: Orthogonal matrix U is computed; = ‘N’: U is not computed.

in
jobv

= ‘V’: Orthogonal matrix V is computed; = ‘N’: V is not computed.

in
jobq

= ‘Q’: Orthogonal matrix Q is computed; = ‘N’: Q is not computed.

in
m

The number of rows of matrix A. m >= 0.

in
p

The number of rows of matrix B. p >= 0.

in
n

The number of columns of A and B. n >= 0.

inout
A

On entry, the M-by-N matrix A. On exit, triangular (or trapezoidal) matrix.

in
lda

Leading dimension of A. lda >= max(1,m).

inout
B

On entry, the P-by-N matrix B. On exit, triangular matrix.

in
ldb

Leading dimension of B. ldb >= max(1,p).

in
tola

Threshold for rank determination of A.

in
tolb

Threshold for rank determination of B.

out
k

Subblock dimension.

out
l

Subblock dimension.

out
U

Orthogonal matrix U (dimension ldu,m).

in
ldu

Leading dimension of U.

out
V

Orthogonal matrix V (dimension ldv,p).

in
ldv

Leading dimension of V.

out
Q

Orthogonal matrix Q (dimension ldq,n).

in
ldq

Leading dimension of Q.

out
iwork

Integer workspace of dimension n.

out
tau

Workspace of dimension n.

out
work

Workspace of dimension lwork.

in
lwork

Dimension of work. If lwork = -1, workspace query.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value.

Functions

void dggsvp3(
    const char*          jobu,
    const char*          jobv,
    const char*          jobq,
    const INT            m,
    const INT            p,
    const INT            n,
          f64*  restrict A,
    const INT            lda,
          f64*  restrict B,
    const INT            ldb,
    const f64            tola,
    const f64            tolb,
          INT*           k,
          INT*           l,
          f64*  restrict U,
    const INT            ldu,
          f64*  restrict V,
    const INT            ldv,
          f64*  restrict Q,
    const INT            ldq,
          INT*  restrict iwork,
          f64*  restrict tau,
          f64*  restrict work,
    const INT            lwork,
          INT*           info
);
void dggsvp3(const char *jobu, const char *jobv, const char *jobq, const INT m, const INT p, const INT n, f64 *restrict A, const INT lda, f64 *restrict B, const INT ldb, const f64 tola, const f64 tolb, INT *k, INT *l, f64 *restrict U, const INT ldu, f64 *restrict V, const INT ldv, f64 *restrict Q, const INT ldq, INT *restrict iwork, f64 *restrict tau, f64 *restrict work, const INT lwork, INT *info)#

DGGSVP3 computes orthogonal matrices U, V and Q such that.

               N-K-L  K    L
U**T*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0; L ( 0 0 A23 ) M-K-L ( 0 0 0 )
 N-K-L  K    L
= K ( 0 A12 A13 ) if M-K-L < 0; M-K ( 0 0 A23 )
 N-K-L  K    L
V**T*B*Q = L ( 0 0 B13 ) P-L ( 0 0 0 )

where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular upper triangular. K+L = the effective numerical rank of (A**T,B**T)**T.

Parameters

in
jobu

= ‘U’: Orthogonal matrix U is computed; = ‘N’: U is not computed.

in
jobv

= ‘V’: Orthogonal matrix V is computed; = ‘N’: V is not computed.

in
jobq

= ‘Q’: Orthogonal matrix Q is computed; = ‘N’: Q is not computed.

in
m

The number of rows of matrix A. m >= 0.

in
p

The number of rows of matrix B. p >= 0.

in
n

The number of columns of A and B. n >= 0.

inout
A

On entry, the M-by-N matrix A. On exit, triangular (or trapezoidal) matrix.

in
lda

Leading dimension of A. lda >= max(1,m).

inout
B

On entry, the P-by-N matrix B. On exit, triangular matrix.

in
ldb

Leading dimension of B. ldb >= max(1,p).

in
tola

Threshold for rank determination of A.

in
tolb

Threshold for rank determination of B.

out
k

Subblock dimension.

out
l

Subblock dimension.

out
U

Orthogonal matrix U (dimension ldu,m).

in
ldu

Leading dimension of U.

out
V

Orthogonal matrix V (dimension ldv,p).

in
ldv

Leading dimension of V.

out
Q

Orthogonal matrix Q (dimension ldq,n).

in
ldq

Leading dimension of Q.

out
iwork

Integer workspace of dimension n.

out
tau

Workspace of dimension n.

out
work

Workspace of dimension lwork.

in
lwork

Dimension of work. If lwork = -1, workspace query.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value.

Functions

void cggsvp3(
    const char*          jobu,
    const char*          jobv,
    const char*          jobq,
    const INT            m,
    const INT            p,
    const INT            n,
          c64*  restrict A,
    const INT            lda,
          c64*  restrict B,
    const INT            ldb,
    const f32            tola,
    const f32            tolb,
          INT*           k,
          INT*           l,
          c64*  restrict U,
    const INT            ldu,
          c64*  restrict V,
    const INT            ldv,
          c64*  restrict Q,
    const INT            ldq,
          INT*  restrict iwork,
          f32*  restrict rwork,
          c64*  restrict tau,
          c64*  restrict work,
    const INT            lwork,
          INT*           info
);
void cggsvp3(const char *jobu, const char *jobv, const char *jobq, const INT m, const INT p, const INT n, c64 *restrict A, const INT lda, c64 *restrict B, const INT ldb, const f32 tola, const f32 tolb, INT *k, INT *l, c64 *restrict U, const INT ldu, c64 *restrict V, const INT ldv, c64 *restrict Q, const INT ldq, INT *restrict iwork, f32 *restrict rwork, c64 *restrict tau, c64 *restrict work, const INT lwork, INT *info)#

CGGSVP3 computes unitary matrices U, V and Q such that.

               N-K-L  K    L
U**H*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0; L ( 0 0 A23 ) M-K-L ( 0 0 0 )
 N-K-L  K    L
= K ( 0 A12 A13 ) if M-K-L < 0; M-K ( 0 0 A23 )
 N-K-L  K    L
V**H*B*Q = L ( 0 0 B13 ) P-L ( 0 0 0 )

where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular upper triangular. K+L = the effective numerical rank of (A**H,B**H)**H.

Parameters

in
jobu

= ‘U’: Unitary matrix U is computed; = ‘N’: U is not computed.

in
jobv

= ‘V’: Unitary matrix V is computed; = ‘N’: V is not computed.

in
jobq

= ‘Q’: Unitary matrix Q is computed; = ‘N’: Q is not computed.

in
m

The number of rows of matrix A. m >= 0.

in
p

The number of rows of matrix B. p >= 0.

in
n

The number of columns of A and B. n >= 0.

inout
A

On entry, the M-by-N matrix A. On exit, triangular (or trapezoidal) matrix.

in
lda

Leading dimension of A. lda >= max(1,m).

inout
B

On entry, the P-by-N matrix B. On exit, triangular matrix.

in
ldb

Leading dimension of B. ldb >= max(1,p).

in
tola

Threshold for rank determination of A.

in
tolb

Threshold for rank determination of B.

out
k

Subblock dimension.

out
l

Subblock dimension.

out
U

Unitary matrix U (dimension ldu,m).

in
ldu

Leading dimension of U.

out
V

Unitary matrix V (dimension ldv,p).

in
ldv

Leading dimension of V.

out
Q

Unitary matrix Q (dimension ldq,n).

in
ldq

Leading dimension of Q.

out
iwork

Integer workspace of dimension n.

out
rwork

Single precision workspace of dimension 2*n.

out
tau

Complex workspace of dimension n.

out
work

Complex workspace of dimension lwork.

in
lwork

Dimension of work. If lwork = -1, workspace query.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value.

Functions

void zggsvp3(
    const char*          jobu,
    const char*          jobv,
    const char*          jobq,
    const INT            m,
    const INT            p,
    const INT            n,
          c128* restrict A,
    const INT            lda,
          c128* restrict B,
    const INT            ldb,
    const f64            tola,
    const f64            tolb,
          INT*           k,
          INT*           l,
          c128* restrict U,
    const INT            ldu,
          c128* restrict V,
    const INT            ldv,
          c128* restrict Q,
    const INT            ldq,
          INT*  restrict iwork,
          f64*  restrict rwork,
          c128* restrict tau,
          c128* restrict work,
    const INT            lwork,
          INT*           info
);
void zggsvp3(const char *jobu, const char *jobv, const char *jobq, const INT m, const INT p, const INT n, c128 *restrict A, const INT lda, c128 *restrict B, const INT ldb, const f64 tola, const f64 tolb, INT *k, INT *l, c128 *restrict U, const INT ldu, c128 *restrict V, const INT ldv, c128 *restrict Q, const INT ldq, INT *restrict iwork, f64 *restrict rwork, c128 *restrict tau, c128 *restrict work, const INT lwork, INT *info)#

ZGGSVP3 computes unitary matrices U, V and Q such that.

               N-K-L  K    L
U**H*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0; L ( 0 0 A23 ) M-K-L ( 0 0 0 )
 N-K-L  K    L
= K ( 0 A12 A13 ) if M-K-L < 0; M-K ( 0 0 A23 )
 N-K-L  K    L
V**H*B*Q = L ( 0 0 B13 ) P-L ( 0 0 0 )

where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular upper triangular. K+L = the effective numerical rank of (A**H,B**H)**H.

Parameters

in
jobu

= ‘U’: Unitary matrix U is computed; = ‘N’: U is not computed.

in
jobv

= ‘V’: Unitary matrix V is computed; = ‘N’: V is not computed.

in
jobq

= ‘Q’: Unitary matrix Q is computed; = ‘N’: Q is not computed.

in
m

The number of rows of matrix A. m >= 0.

in
p

The number of rows of matrix B. p >= 0.

in
n

The number of columns of A and B. n >= 0.

inout
A

On entry, the M-by-N matrix A. On exit, triangular (or trapezoidal) matrix.

in
lda

Leading dimension of A. lda >= max(1,m).

inout
B

On entry, the P-by-N matrix B. On exit, triangular matrix.

in
ldb

Leading dimension of B. ldb >= max(1,p).

in
tola

Threshold for rank determination of A.

in
tolb

Threshold for rank determination of B.

out
k

Subblock dimension.

out
l

Subblock dimension.

out
U

Unitary matrix U (dimension ldu,m).

in
ldu

Leading dimension of U.

out
V

Unitary matrix V (dimension ldv,p).

in
ldv

Leading dimension of V.

out
Q

Unitary matrix Q (dimension ldq,n).

in
ldq

Leading dimension of Q.

out
iwork

Integer workspace of dimension n.

out
rwork

Double precision workspace of dimension 2*n.

out
tau

Complex workspace of dimension n.

out
work

Complex workspace of dimension lwork.

in
lwork

Dimension of work. If lwork = -1, workspace query.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value.