ggsvd3#

Functions

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

SGGSVD3 computes the generalized singular value decomposition (GSVD) of an M-by-N real matrix A and P-by-N real matrix B:

  U**T*A*Q = D1*( 0 R ),    V**T*B*Q = D2*( 0 R )
where U, V and Q are orthogonal matrices.

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
n

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

in
p

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

out
k

Subblock dimension.

out
l

Subblock dimension.

inout
A

On entry, the M-by-N matrix A. On exit, contains the triangular matrix R.

in
lda

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

inout
B

On entry, the P-by-N matrix B. On exit, may contain part of R.

in
ldb

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

out
alpha

Generalized singular values (dimension n).

out
beta

Generalized singular values (dimension n).

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
work

Workspace of dimension lwork.

in
lwork

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

out
iwork

Integer workspace of dimension n. Stores sorting info.

out
info

  • = 0: successful exit

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

  • = 1: the Jacobi-type procedure failed to converge.

Functions

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

DGGSVD3 computes the generalized singular value decomposition (GSVD) of an M-by-N real matrix A and P-by-N real matrix B:

  U**T*A*Q = D1*( 0 R ),    V**T*B*Q = D2*( 0 R )
where U, V and Q are orthogonal matrices.

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
n

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

in
p

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

out
k

Subblock dimension.

out
l

Subblock dimension.

inout
A

On entry, the M-by-N matrix A. On exit, contains the triangular matrix R.

in
lda

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

inout
B

On entry, the P-by-N matrix B. On exit, may contain part of R.

in
ldb

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

out
alpha

Generalized singular values (dimension n).

out
beta

Generalized singular values (dimension n).

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
work

Workspace of dimension lwork.

in
lwork

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

out
iwork

Integer workspace of dimension n. Stores sorting info.

out
info

  • = 0: successful exit

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

  • = 1: the Jacobi-type procedure failed to converge.

Functions

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

CGGSVD3 computes the generalized singular value decomposition (GSVD) of an M-by-N complex matrix A and P-by-N complex matrix B:

  U**H*A*Q = D1*( 0 R ),    V**H*B*Q = D2*( 0 R )
where U, V and Q are unitary matrices.

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
n

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

in
p

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

out
k

Subblock dimension.

out
l

Subblock dimension.

inout
A

On entry, the M-by-N matrix A. On exit, contains the triangular matrix R.

in
lda

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

inout
B

On entry, the P-by-N matrix B. On exit, may contain part of R.

in
ldb

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

out
alpha

Generalized singular values (dimension n).

out
beta

Generalized singular values (dimension n).

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
work

Complex workspace of dimension lwork.

in
lwork

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

out
rwork

Single precision workspace of dimension 2*n.

out
iwork

Integer workspace of dimension n. Stores sorting info.

out
info

  • = 0: successful exit

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

  • = 1: the Jacobi-type procedure failed to converge.

Functions

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

ZGGSVD3 computes the generalized singular value decomposition (GSVD) of an M-by-N complex matrix A and P-by-N complex matrix B:

  U**H*A*Q = D1*( 0 R ),    V**H*B*Q = D2*( 0 R )
where U, V and Q are unitary matrices.

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
n

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

in
p

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

out
k

Subblock dimension.

out
l

Subblock dimension.

inout
A

On entry, the M-by-N matrix A. On exit, contains the triangular matrix R.

in
lda

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

inout
B

On entry, the P-by-N matrix B. On exit, may contain part of R.

in
ldb

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

out
alpha

Generalized singular values (dimension n).

out
beta

Generalized singular values (dimension n).

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
work

Complex workspace of dimension lwork.

in
lwork

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

out
rwork

Double precision workspace of dimension 2*n.

out
iwork

Integer workspace of dimension n. Stores sorting info.

out
info

  • = 0: successful exit

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

  • = 1: the Jacobi-type procedure failed to converge.