Composite parameterization of SU(d) // v1.0 for mathematica // 23.08.2011

(c)	Christoph Spengler 2011, Faculty of Physics, University of Vienna
	Contact : Christoph.Spengler@univie.ac.at

References : 	-- PLEASE CITE THESE PAPERS WHEN USING THIS FILE --

[1]	Ch.Spengler, M.Huber, B.C.Hiesmayr
	'A composite parameterization of unitary groups, density matrices and subspaces'
	arXiv : 1004.5252 // J.Phys.A : Math.Theor.43, 385306 (2010)
	
[2]	Ch.Spengler, M.Huber, B.C.Hiesmayr
	'Composite parameterization and Haar measure for all unitary and special unitary groups'
	arXiv : 1103.3408

Feel free to contact me if you have any questions or comments!

Code:

basis[dimension_]:=Do [Do[basevector[n]=Transpose[{UnitVector[dimension,n]}],{n,1,dimension}];u=Array[basevector,dimension]]

Y[j_,k_]:=-I*u[[j]].ConjugateTranspose[u[[k]]]+I*u[[k]].ConjugateTranspose[u[[j]]]

Z[j_,k_]:=1*u[[j]].ConjugateTranspose[u[[j]]]-1*u[[k]].ConjugateTranspose[u[[k]]]

UC[d_]:={basis[d],J=1,U1=IdentityMatrix[d],U2=IdentityMatrix[d],Do[U2=U2.MatrixExp[I*λ[l,l]*Z[l,d]],{l,1,d-1}],Do[Do[U1=U1.MatrixExp[I*λ[k,j]*Z[j,k]].MatrixExp[I*λ[j,k]*Y[j,k]],{k,j+1,d}],{j,1,d-1}],U=U1.U2,Do[Do[J=J*(2*(k-j))*Sin[λ[j,k]]*Cos[λ[j,k]]^(2(k-j)-1),{k,j+1,d}],{j,1,d-1}],J=Pi^(-d(d+1)/2+1)*2^(1-d)*J,Do[Do[If[m>n,range[m,n]={λ[m,n],0,Pi},If[m==n,range[m,n]={λ[m,n],0,2*Pi},range[m,n]={λ[m,n],0,Pi/2}]],{m,1,d}],{n,1,d}]; domain=Delete[Flatten[Array[range,{d,d}],1],d^2]}

Usage:

1) Run the code.
2) Initialization with UC[d]; where d is the required dimension.
3) U yields a parameterized special unitary matrix of dimension dxd expressed in terms of d^2-1 real parameters λ(m,n). For details on the meaning of the parameters λ(m,n) see the references [1],[2].
4) J yields the absolute value of the normalized Jacobian determinant |det(dU/dλ)|, such that dU= Jdλ(1,1)...dλ(d,d-1) is a normalized Haar measure ∫ J dλ(1,1)...dλ(d,d-1) = 1.
5) domain//InputForm yields the ranges of the parameters λ(m,n) in InputForm. Copy&paste this to compute group integrals, i.e. ∫f(U) dU=  ∫f(U(λ(1,1),...,λ(d,d-1))) Jdλ(1,1)...dλ(d,d-1).

Example (d=3):

UC[3];

U

J

domain//InputForm