fortran-lapack
|
BBCSD: computes the CS decomposition of a unitary matrix in bidiagonal-block form, [ B11 | B12 0 0 ] [ 0 | 0 -I 0 ] X = [-------------—] [ B21 | B22 0 0 ] [ 0 | 0 0 I ] [ C | -S 0 0 ] [ U1 | ] [ 0 | 0 -I 0 ] [ V1 | ]**H = [------—] [------------—] [------—] . [ | U2 ] [ S | C 0 0 ] [ | V2 ] [ 0 | 0 0 I ] X is M-by-M, its top-left block is P-by-Q, and Q must be no larger than P, M-P, or M-Q. (If Q is not the smallest index, then X must be transposed and/or permuted. This can be done in constant time using the TRANS and SIGNS options. See CUNCSD for details.) The bidiagonal matrices B11, B12, B21, and B22 are represented implicitly by angles THETA(1:Q) and PHI(1:Q-1). The unitary matrices U1, U2, V1T, and V2T are input/output. The input matrices are pre- or post-multiplied by the appropriate singular vector matrices. More...
Public Member Functions | |
pure 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) |
la_cbbcsd | |
pure 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) |
la_dbbcsd | |
la_qbbcsd | |
pure 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) |
la_sbbcsd | |
la_wbbcsd | |
pure 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) |
la_zbbcsd | |
BBCSD: computes the CS decomposition of a unitary matrix in bidiagonal-block form, [ B11 | B12 0 0 ] [ 0 | 0 -I 0 ] X = [-------------—] [ B21 | B22 0 0 ] [ 0 | 0 0 I ] [ C | -S 0 0 ] [ U1 | ] [ 0 | 0 -I 0 ] [ V1 | ]**H = [------—] [------------—] [------—] . [ | U2 ] [ S | C 0 0 ] [ | V2 ] [ 0 | 0 0 I ] X is M-by-M, its top-left block is P-by-Q, and Q must be no larger than P, M-P, or M-Q. (If Q is not the smallest index, then X must be transposed and/or permuted. This can be done in constant time using the TRANS and SIGNS options. See CUNCSD for details.) The bidiagonal matrices B11, B12, B21, and B22 are represented implicitly by angles THETA(1:Q) and PHI(1:Q-1). The unitary matrices U1, U2, V1T, and V2T are input/output. The input matrices are pre- or post-multiplied by the appropriate singular vector matrices.
pure subroutine la_lapack::bbcsd::cbbcsd | ( | character, intent(in) | jobu1, |
character, intent(in) | jobu2, | ||
character, intent(in) | jobv1t, | ||
character, intent(in) | jobv2t, | ||
character, intent(in) | trans, | ||
integer(ilp), intent(in) | m, | ||
integer(ilp), intent(in) | p, | ||
integer(ilp), intent(in) | q, | ||
real(sp), dimension(*), intent(inout) | theta, | ||
real(sp), dimension(*), intent(inout) | phi, | ||
complex(sp), dimension(ldu1,*), intent(inout) | u1, | ||
integer(ilp), intent(in) | ldu1, | ||
complex(sp), dimension(ldu2,*), intent(inout) | u2, | ||
integer(ilp), intent(in) | ldu2, | ||
complex(sp), dimension(ldv1t,*), intent(inout) | v1t, | ||
integer(ilp), intent(in) | ldv1t, | ||
complex(sp), dimension(ldv2t,*), intent(inout) | v2t, | ||
integer(ilp), intent(in) | ldv2t, | ||
real(sp), dimension(*), intent(out) | b11d, | ||
real(sp), dimension(*), intent(out) | b11e, | ||
real(sp), dimension(*), intent(out) | b12d, | ||
real(sp), dimension(*), intent(out) | b12e, | ||
real(sp), dimension(*), intent(out) | b21d, | ||
real(sp), dimension(*), intent(out) | b21e, | ||
real(sp), dimension( *), intent(out) | b22d, | ||
real(sp), dimension(*), intent(out) | b22e, | ||
real(sp), dimension(*), intent(out) | rwork, | ||
integer(ilp), intent(in) | lrwork, | ||
integer(ilp), intent(out) | info | ||
) |
pure subroutine la_lapack::bbcsd::dbbcsd | ( | character, intent(in) | jobu1, |
character, intent(in) | jobu2, | ||
character, intent(in) | jobv1t, | ||
character, intent(in) | jobv2t, | ||
character, intent(in) | trans, | ||
integer(ilp), intent(in) | m, | ||
integer(ilp), intent(in) | p, | ||
integer(ilp), intent(in) | q, | ||
real(dp), dimension(*), intent(inout) | theta, | ||
real(dp), dimension(*), intent(inout) | phi, | ||
real(dp), dimension(ldu1,*), intent(inout) | u1, | ||
integer(ilp), intent(in) | ldu1, | ||
real(dp), dimension(ldu2,*), intent(inout) | u2, | ||
integer(ilp), intent(in) | ldu2, | ||
real(dp), dimension(ldv1t,*), intent(inout) | v1t, | ||
integer(ilp), intent(in) | ldv1t, | ||
real(dp), dimension(ldv2t,*), intent(inout) | v2t, | ||
integer(ilp), intent(in) | ldv2t, | ||
real(dp), dimension(*), intent(out) | b11d, | ||
real(dp), dimension(*), intent(out) | b11e, | ||
real(dp), dimension(*), intent(out) | b12d, | ||
real(dp), dimension(*), intent(out) | b12e, | ||
real(dp), dimension(*), intent(out) | b21d, | ||
real(dp), dimension(*), intent(out) | b21e, | ||
real(dp), dimension( *), intent(out) | b22d, | ||
real(dp), dimension(*), intent(out) | b22e, | ||
real(dp), dimension(*), intent(out) | work, | ||
integer(ilp), intent(in) | lwork, | ||
integer(ilp), intent(out) | info | ||
) |
la_lapack::bbcsd::la_cbbcsd |
la_lapack::bbcsd::la_dbbcsd |
la_lapack::bbcsd::la_qbbcsd |
la_lapack::bbcsd::la_sbbcsd |
la_lapack::bbcsd::la_wbbcsd |
la_lapack::bbcsd::la_zbbcsd |
pure subroutine la_lapack::bbcsd::sbbcsd | ( | character, intent(in) | jobu1, |
character, intent(in) | jobu2, | ||
character, intent(in) | jobv1t, | ||
character, intent(in) | jobv2t, | ||
character, intent(in) | trans, | ||
integer(ilp), intent(in) | m, | ||
integer(ilp), intent(in) | p, | ||
integer(ilp), intent(in) | q, | ||
real(sp), dimension(*), intent(inout) | theta, | ||
real(sp), dimension(*), intent(inout) | phi, | ||
real(sp), dimension(ldu1,*), intent(inout) | u1, | ||
integer(ilp), intent(in) | ldu1, | ||
real(sp), dimension(ldu2,*), intent(inout) | u2, | ||
integer(ilp), intent(in) | ldu2, | ||
real(sp), dimension(ldv1t,*), intent(inout) | v1t, | ||
integer(ilp), intent(in) | ldv1t, | ||
real(sp), dimension(ldv2t,*), intent(inout) | v2t, | ||
integer(ilp), intent(in) | ldv2t, | ||
real(sp), dimension(*), intent(out) | b11d, | ||
real(sp), dimension(*), intent(out) | b11e, | ||
real(sp), dimension(*), intent(out) | b12d, | ||
real(sp), dimension(*), intent(out) | b12e, | ||
real(sp), dimension(*), intent(out) | b21d, | ||
real(sp), dimension(*), intent(out) | b21e, | ||
real(sp), dimension( *), intent(out) | b22d, | ||
real(sp), dimension(*), intent(out) | b22e, | ||
real(sp), dimension(*), intent(out) | work, | ||
integer(ilp), intent(in) | lwork, | ||
integer(ilp), intent(out) | info | ||
) |
pure subroutine la_lapack::bbcsd::zbbcsd | ( | character, intent(in) | jobu1, |
character, intent(in) | jobu2, | ||
character, intent(in) | jobv1t, | ||
character, intent(in) | jobv2t, | ||
character, intent(in) | trans, | ||
integer(ilp), intent(in) | m, | ||
integer(ilp), intent(in) | p, | ||
integer(ilp), intent(in) | q, | ||
real(dp), dimension(*), intent(inout) | theta, | ||
real(dp), dimension(*), intent(inout) | phi, | ||
complex(dp), dimension(ldu1,*), intent(inout) | u1, | ||
integer(ilp), intent(in) | ldu1, | ||
complex(dp), dimension(ldu2,*), intent(inout) | u2, | ||
integer(ilp), intent(in) | ldu2, | ||
complex(dp), dimension(ldv1t,*), intent(inout) | v1t, | ||
integer(ilp), intent(in) | ldv1t, | ||
complex(dp), dimension(ldv2t,*), intent(inout) | v2t, | ||
integer(ilp), intent(in) | ldv2t, | ||
real(dp), dimension(*), intent(out) | b11d, | ||
real(dp), dimension(*), intent(out) | b11e, | ||
real(dp), dimension(*), intent(out) | b12d, | ||
real(dp), dimension(*), intent(out) | b12e, | ||
real(dp), dimension(*), intent(out) | b21d, | ||
real(dp), dimension(*), intent(out) | b21e, | ||
real(dp), dimension( *), intent(out) | b22d, | ||
real(dp), dimension(*), intent(out) | b22e, | ||
real(dp), dimension(*), intent(out) | rwork, | ||
integer(ilp), intent(in) | lrwork, | ||
integer(ilp), intent(out) | info | ||
) |