Reshuffling Operations on REAL Matrices X given in the overall basis

The subroutines listed in this Section are designed for performing the operations of Table 1 on REAL operators X, mapping a finite dimensional bipartite Hilbert space

Htot = HA HB =  CN CK                                     (1)

into itself

X  :  Htot →  Htot .                                            (2)

Table 1: Reshuffling Operations

Reorderings of a matrix X representing an operator which acts on a composed Hilbert space. The arrows denote the indices exchanged.



The operations of  Table 1 are given in the “product basis” of the Hilbert space of equation (1),

|m,μ〉 := |m〉A⊗ |μ〉B ;

in other words X is expressed in  Table 1 as a 4-dimensional N x K x N x K matrix whose elements X(m,μ,n,ν) are given by

X(m,μ,n,ν) =  〈m,μ| X |n,ν〉 .
 

In spite of that, the 8 subroutines contained in this section will take as input 2-dimensional (NK) x (NK) matrices whose elements are given by

X(i,j) =  tot〈i| X |j〉tot ,

where |i〉tot  denotes the “overall basis” of CNK.
Subroutine ’s Name Precision Version Compatibility
R_PR_tot_tran.f Single 1.0.0 Fortran 90
Uses:  None
Description: 

• Perform on a matrix X the operation [T] of Table 1.
• Input 2 INTEGER numbers N and K and the (NK) x (NK) REAL matrix X, whose matrix elements are given in the overall basis of CNK.
• Output the (NK) x (NK) REAL matrix "total transpose of X", still expressed in the overall basis of CNK.

 
Subroutine ’s Name Precision Version Compatibility
R_PR_par_tr_A.f Single 1.0.0 Fortran 90
Uses:  None
Description: 

• Perform on a matrix X the operation [TA] of Table 1.
• Input 2 INTEGER numbers N and K and the (NK) x (NK) REAL matrix X, whose matrix elements are given in the overall basis of CNK.
• Output the (NK) x (NK) REAL matrix "partial transpose on A of X", still expressed in the overall basis of CNK.

 
Subroutine ’s Name Precision Version Compatibility
R_PR_par_tr_B.f Single 1.0.0 Fortran 90
Uses:  None
Description: 

• Perform on a matrix X the operation [TB] of Table 1.
• Input 2 INTEGER numbers N and K and the (NK) x (NK) REAL matrix X, whose matrix elements are given in the overall basis of CNK.
• Output the (NK) x (NK) REAL matrix "partial transpose on B of X", still expressed in the overall basis of CNK.

 
Subroutine ’s Name Precision Version Compatibility
R_PR_resh____.f Single 1.0.0 Fortran 90
Uses:  None
Description: 

• Perform on a matrix X the operation [R] of Table 1.
• Input 2 INTEGER numbers N and K and the (NK) x (NK) REAL matrix X, whose matrix elements are given in the overall basis of CNK.
• Output the N2 x K2 REAL matrix "reshuffling of X", in the basis of CN2 ⊗ (CK2)*.

 
Subroutine ’s Name Precision Version Compatibility
R_PR_resh__pr.f Single 1.0.0 Fortran 90
Uses:  None
Description: 

• Perform on a matrix X the operation [R’] of Table 1.
• Input 2 INTEGER numbers N and K and the (NK) x (NK) REAL matrix X, whose matrix elements are given in the overall basis of CNK.
• Output the K2 x N2 REAL matrix "reshuffling’ of X", in the basis of CK2 ⊗ (CN2)*.

 
Subroutine ’s Name Precision Version Compatibility
R_PR_tot_swap.f Single 1.0.0 Fortran 90
Uses:  None
Description: 

• Perform on a matrix X the operation [S] of Table 1.
• Input 2 INTEGER numbers N and K and the (NK) x (NK) REAL matrix X, whose matrix elements are given in the overall basis of CNK.
• Output the (KN) x (KN) REAL matrix "total swap of X", still expressed in the overall basis of CKN.

 
Subroutine ’s Name Precision Version Compatibility
R_PR_par_sw_1.f Single 1.0.0 Fortran 90
Uses:  None
Description: 

• Perform on a matrix X the operation [S1] of Table 1.
• Input 2 INTEGER numbers N and K and the (NK) x (NK) REAL matrix X, whose matrix elements are given in the overall basis of CNK.
• Return as output the (KN) x (NK) REAL matrix "partial swap(1) of X", in the basis of CKN ⊗ (CNK)*.

 
Subroutine ’s Name Precision Version Compatibility
R_PR_par_sw_2.f Single 1.0.0 Fortran 90
Uses:  None
Description: 

• Perform on a matrix X the operation [S2] of Table 1.
• Input 2 INTEGER numbers N and K and the (NK) x (NK) REAL matrix X, whose matrix elements are given in the overall basis of CNK.
• Return as output the (NK) x (KN) REAL matrix "partial swap(1) of X", in the basis of CNK ⊗ (CKN)*.