fortran-lapack
Loading...
Searching...
No Matches
la_lapack::bbcsd Interface Reference

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
 

Detailed Description

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.

Member Function/Subroutine Documentation

◆ cbbcsd()

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 
)
Here is the call graph for this function:

◆ dbbcsd()

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 
)
Here is the call graph for this function:

◆ la_cbbcsd()

la_lapack::bbcsd::la_cbbcsd

◆ la_dbbcsd()

la_lapack::bbcsd::la_dbbcsd

◆ la_qbbcsd()

la_lapack::bbcsd::la_qbbcsd

◆ la_sbbcsd()

la_lapack::bbcsd::la_sbbcsd

◆ la_wbbcsd()

la_lapack::bbcsd::la_wbbcsd

◆ la_zbbcsd()

la_lapack::bbcsd::la_zbbcsd

◆ sbbcsd()

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 
)
Here is the call graph for this function:

◆ zbbcsd()

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 
)
Here is the call graph for this function:

The documentation for this interface was generated from the following file: