Traces

All this subroutines are design with the aim of performing “total” or “partial” traces of operators M mapping a finite dimensional bipartite Hilbert space

Htot = HA ⊗ HB =  CN ⊗ CK

into itself. Some distinctions are in order:
  • M can either be REAL or CPLX;
  • partial traces can either be performed with respect to the system
        “A” (that is HA) or respect to the system “B” (that is HB);
  • in the input/output of the subroutine, M can either be expressed in
        the “product basis” of CN ⊗ CK, namely |m,μ〉 := |m〉A⊗ |μ〉B ,
        or in the “overall basis” of CNK, namely |i〉tot .
According to the last of the points listed above, when M is given in the overall basis, it will be considered as a 2-dimensional NK x NK matrix whose matrix elements M(i,j) are given by

M(i,j) =  tot〈i| M |j〉tot .

Conversely, when M is given in the product basis, it will be considered as a 4-dimensional N x K x N x K matrix whose matrix elements M(m,μ,n,ν) are given by

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

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

it take as input 2 INTEGER numbers N and K and a REAL matrix M, that can either be given in the product basis of CN ⊗ CK or in the overall basis of CNK, and return as output the REAL number “TRACE of M”

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

it take as input 2 INTEGER numbers N and K and a REAL matrix M, whose matrix elements must be given in the product basis of CN ⊗ CK, and return as output the K x K REAL matrix “PARTIAL TRACE of M over A”

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

it take as input 2 INTEGER numbers N and K and a REAL matrix M, whose matrix elements must be given in the overall basis of CNK, and return as output the K x K REAL matrix “PARTIAL TRACE of M over A”

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

it take as input 2 INTEGER numbers N and K and a REAL matrix M, whose matrix elements must be given in the product basis of CN ⊗ CK, and return as output the N x N REAL matrix “PARTIAL TRACE of M over B”

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

it take as input 2 INTEGER numbers N and K and a REAL matrix M, whose matrix elements must be given in the overall basis of CNK, and return as output the N x N REAL matrix “PARTIAL TRACE of M over B”

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

it take as input 2 INTEGER numbers N and K and a CPLX matrix M, that can either be given in the product basis of CN ⊗ CK or in the overall basis of CNK, and return as output the CPLX number “TRACE of M”

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

it take as input 2 INTEGER numbers N and K and a CPLX matrix M, whose matrix elements must be given in the product basis of CN ⊗ CK, and return as output the K x K CPLX matrix “PARTIAL TRACE of M over A”

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

it take as input 2 INTEGER numbers N and K and a CPLX matrix M, whose matrix elements must be given in the overall basis of CNK, and return as output the K x K CPLX matrix “PARTIAL TRACE of M over A”

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

it take as input 2 INTEGER numbers N and K and a CPLX matrix M, whose matrix elements must be given in the product basis of CN ⊗ CK, and return as output the N x N CPLX matrix “PARTIAL TRACE of M over B”

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

it take as input 2 INTEGER numbers N and K and a CPLX matrix M, whose matrix elements must be given in the overall basis of CNK, and return as output the N x N CPLX matrix “PARTIAL TRACE of M over B”