CCSDTS(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ¦‹ CCSDTS(3) β€” Library Functions Manual πŸ¦‹

hey bestie, welcome to the glow-up of /home/abui...IG/ccsdts.f(3). this is the Library Functions Manual page for CCSDTS, and we’re gonna read it like a group chat. no cap, all the details stay. πŸ’…


🌸 NAME 🌸

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/EIG/ccsdts.f


✨ SYNOPSIS ✨

Functions/Subroutines

       subroutine CCSDTS (m, p, q, x, xf, ldx, u1, ldu1, u2, ldu2, v1t, ldv1t,
           v2t, ldv2t, theta, iwork, work, lwork, rwork, result)
           CCSDTS

πŸ’… Function/Subroutine Documentation πŸ’…

       subroutine CCSDTS (integer m, integer p, integer q, complex, dimension( ldx,
           * ) x, complex, dimension( ldx, * ) xf, integer ldx, complex, dimension(
           ldu1, * ) u1, integer ldu1, complex, dimension( ldu2, * ) u2, integer
           ldu2, complex, dimension( ldv1t, * ) v1t, integer ldv1t, complex,
           dimension( ldv2t, * ) v2t, integer ldv2t, real, dimension( * ) theta,
           integer, dimension( * ) iwork, complex, dimension( lwork ) work, integer
           lwork, real, dimension( * ) rwork, real, dimension( 15 ) result)
       CCSDTS

✨ Purpose ✨

okay so CCSDTS is literally the test bestie for CUNCSD 🫢. given an M-by-M partitioned unitary matrix X, it computes the CSD. the diagrams are staying exactly as they are β€” math is math, bestie πŸ’–.

CCSDTS tests CUNCSD, which, given an M-by-M partitioned unitary
matrix X,
             Q  M-Q
      X = [ X11 X12 ] P   ,
          [ X21 X22 ] M-P

computes the CSD

      [ U1    ]**T * [ X11 X12 ] * [ V1    ]
      [    U2 ]      [ X21 X22 ]   [    V2 ]

                            [  I  0  0 |  0  0  0 ]
                            [  0  C  0 |  0 -S  0 ]
                            [  0  0  0 |  0  0 -I ]
                          = [---------------------] = [ D11 D12 ] .
                            [  0  0  0 |  I  0  0 ]   [ D21 D22 ]
                            [  0  S  0 |  0  C  0 ]
                            [  0  0  I |  0  0  0 ]

and it also tests SORCSD2BY1, which, given:

         Q
      [ X11 ] P   ,
      [ X21 ] M-P

computes the 2-by-1 CSD:

                                    [  I  0  0 ]
                                    [  0  C  0 ]
                                    [  0  0  0 ]
      [ U1    ]**T * [ X11 ] * V1 = [----------] = [ D11 ] ,
      [    U2 ]      [ X21 ]        [  0  0  0 ]   [ D21 ]
                                    [  0  S  0 ]
                                    [  0  0  I ]

πŸ“ Parameters πŸ“

  • M β€” INTEGER. the number of rows of the matrix X. M >= 0. πŸ’–
  • P β€” INTEGER. the number of rows of the matrix X11. P >= 0. ✨
  • Q β€” INTEGER. the number of columns of the matrix X11. Q >= 0. πŸŽ€
  • X β€” COMPLEX array, dimension (LDX,M). the M-by-M matrix X. πŸ¦‹
  • XF β€” COMPLEX array, dimension (LDX,M). details of the CSD of X, as returned by CUNCSD; see CUNCSD for further details. 🌸
  • LDX β€” INTEGER. the leading dimension of the arrays X and XF. LDX >= max( 1,M ). πŸ’…
  • U1 β€” COMPLEX array, dimension(LDU1,P). the P-by-P unitary matrix U1. 🫢
  • LDU1 β€” INTEGER. the leading dimension of the array U1. LDU >= max(1,P). 😭
  • U2 β€” COMPLEX array, dimension(LDU2,M-P). the (M-P)-by-(M-P) unitary matrix U2. πŸ”₯
  • LDU2 β€” INTEGER. the leading dimension of the array U2. LDU >= max(1,M-P). πŸ‘‘
  • V1T β€” COMPLEX array, dimension(LDV1T,Q). the Q-by-Q unitary matrix V1T. 🌈
  • LDV1T β€” INTEGER. the leading dimension of the array V1T. LDV1T >= max(1,Q). ⭐
  • V2T β€” COMPLEX array, dimension(LDV2T,M-Q). the (M-Q)-by-(M-Q) unitary matrix V2T. πŸ’€
  • LDV2T β€” INTEGER. the leading dimension of the array V2T. LDV2T >= max(1,M-Q). πŸ™ˆ
  • THETA β€” REAL array, dimension MIN(P,M-P,Q,M-Q). the CS values of X; the essentially diagonal matrices C and S are constructed from THETA; see subroutine CUNCSD for details. πŸ“
  • IWORK β€” INTEGER array, dimension (M). 🧚
  • WORK β€” COMPLEX array, dimension (LWORK). πŸ’œ
  • LWORK β€” INTEGER. the dimension of the array WORK. πŸ’–
  • RWORK β€” REAL array. ✨
  • RESULT β€” REAL array, dimension (15). The test ratios:

First, the 2-by-2 CSD:

RESULT(1) = norm( U1'*X11*V1 - D11 ) / ( MAX(1,P,Q)*EPS2 )
RESULT(2) = norm( U1'*X12*V2 - D12 ) / ( MAX(1,P,M-Q)*EPS2 )
RESULT(3) = norm( U2'*X21*V1 - D21 ) / ( MAX(1,M-P,Q)*EPS2 )
RESULT(4) = norm( U2'*X22*V2 - D22 ) / ( MAX(1,M-P,M-Q)*EPS2 )
RESULT(5) = norm( I - U1'*U1 ) / ( MAX(1,P)*ULP )
RESULT(6) = norm( I - U2'*U2 ) / ( MAX(1,M-P)*ULP )
RESULT(7) = norm( I - V1T'*V1T ) / ( MAX(1,Q)*ULP )
RESULT(8) = norm( I - V2T'*V2T ) / ( MAX(1,M-Q)*ULP )
RESULT(9) = 0        if THETA is in increasing order and
                     all angles are in [0,pi/2]

                   = ULPINV   otherwise.

Then, the 2-by-1 CSD:

RESULT(10) = norm( U1'*X11*V1 - D11 ) / ( MAX(1,P,Q)*EPS2 )
RESULT(11) = norm( U2'*X21*V1 - D21 ) / ( MAX(1,M-P,Q)*EPS2 )
RESULT(12) = norm( I - U1'*U1 ) / ( MAX(1,P)*ULP )
RESULT(13) = norm( I - U2'*U2 ) / ( MAX(1,M-P)*ULP )
RESULT(14) = norm( I - V1T'*V1T ) / ( MAX(1,Q)*ULP )
RESULT(15) = 0        if THETA is in increasing order and
                      all angles are in [0,pi/2]

                   = ULPINV   otherwise.
( EPS2 = MAX( norm( I - X'*X ) / M, ULP ). )

Author

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 226 of file ccsdts.f.


πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for LAPACK from the source code.


and that’s the whole vibe check, bestie πŸ’– this footer moment is LAPACK Version 3.12.0, from /home/abui...IG/ccsdts.f(3). periodt. πŸŽ€

πŸ“¦ where this page comes from