dl = dimension list
kt = ket (vector or list of numbers or symbols)
kten = ket as a tensor
ls = list
mt = matrix
mta, mtb = matrices
nten = n-tensor ("normal")
ob = orthonormal basis
orbasis = orthonormal basis
oten = o-tensor ("dyad")
ox = otimes = tensor product operator

addidents[]: Helper function for expandout[]
adjoint[mt]: Adjoint of matrix.
adjointc[mt]: ComplexExpand[ adjoint[mt]]
adjointr[mt]: Adjoint of real matrix = Transpose

basbell: Conjugate of Bell basis
bassbell: Conjugate of special Bell basis
bell[j]: =j'th Bell state for j=0,1,2,3. (2 defs available)
bellbas: Transpose of Bell basis
bell2mat[mt]: Converts matrix from Bell to regular basis
bin2ket[ls]: List ls of n 0's, 1's converted to ket in space 2^n
bket[bin,n]: Basis ket corresponding to 'bin' for n qubits
blochket[{x,y,z}]: ket corresponding to point on Bloch sphere

cgate[W]: Produces controlled-W gate from W
coeffs[kt,ob]: Expansion coefficients of ket kt in orthonormal basis ob
cnot: controlled-not gate with first qubit the control
copygate[W,n]: Matrix representing tensor product of W with itself n times
cphase: controlled-phse gate for two qubits

diags[mt]: diagonal elements of mt -> list (Inverse of DiagonalMatrix[ls])
dyad[kta,ktb]: Forms |kta><ktb| from the two kets
dyadc[kta,ktb]: Like dyad[], but uses ComplexExpand[Conjugate[ktb]]
dyadr[kta,ktb]: Forms |kta><ktb| if kta and ktb are real. (No Conjugate[])
dyap[kt]: Forms |kt><kt|; is same as dyad[kt,kt]

entang[kt,dl]: Entanglement in bits for ket on tensor product; dl={da,db}
entsq[kt,dl]: Renyi entanglement: -log_2(trace of square of partial trace)
entropy[ls]: Finds the entropy (log base 2) for list ls of probabilities
exchg: Exchanges two qubits
expandout[op,ls,dl] Matrix on tensor product representing operator op
expandout2[op,ls,n] =expandout[] for n qubits

fivecode: Five qubit code
fourierg[n]: n x n unitary matrix for quantum Fourier transform
fouriern[kt]: Numerical quantum fourier transform

grschm[kts]: Gram-Schmidt: list {kets} -> orthonormal list
grschmr[kts]: Gram-Schmidt for REAL {kets}
hgate: Hadamard gate for 1 qubit
ident[n] = IdentityMatrix[n]
invertlist[]: Helper function for expandout[]
invperm[pm]: Returns inverse permutation to pm (list of 1 to n in some order)

ketcofs[kt,ob,dl] Expansion coefs of ket kt in orbasis ob of B in BxCx...
ketinner[kta,ktb]: Inner product <kta|ktb>
ketinnerc[kta,ktb]: ComplexExpand applied to ketinner
ketnorm[kt]: Normalizes ket kt
ketnormr[kt]: Normalizes real ket kt
ketprod[kt1,kt2,...]: tensor product kt1 ox kt2 ox ... as a single ket (list)
ket2bin[kt]: ket for qubits as list of coefs times |101>, etc. 
ket2kten[kt,dl]: Converts ket kt to tensor corresponding to list dl
ket2kten2[kt]: Converts ket kt to tensor of qubits
kten2ket[ktn]: Inverse of ket2kten and ket2kten2

matinner[mta,mtb]: =Tr[adjoint[mta].mtb], but faster. (Inner prod of mta,mtb.)
matinp[mta,mtb]: =Tr[ mta.mtb ], but faster.
matinq[mta,mtb]: Sum_{jk} mta[[j,k]]*mtb[[j,k]]
matnorm[mt]: Normalizes rows of matrix mt
mat2bell[mt]: Converts matrix to Bell basis
mat2nten[mt,ddl]: Converts matrix mt to n-tensor using (double) list ddl
mat2nten2[mt]: Converts matrix mt on tensor product of qubits to n-tensor
mat2oten[mt,dl] Converts matrix to o-tensor for list dl
mat2oten2[mt]: Converts mt on qubits to o-tensor
mat2paul[mt]: Converts matrix to Pauli coefficient tensor
mat2sbell[mt] Converts matrix mat to special Bell basis

ninecode: Nine qubit Shor code
nten2mat[ntn]: Converts n-tensor to (possibly rectangular) matrix
nten2oten[nten]: Converts n-tensor (normal) to o-tensor (dyad).
oten2mat[oten]: Converts dyad-form tensor oten to matrix
oten2nten[t]: Tensor operator from dyad to normal convention
oten2paul[oten]: Converts o-tensor to Pauli representation tensor
outer[tn1, tn2, ...]: Outer product of tn1, tn2, ... = Outer[Times,tn1,tn2 ..]

partrace[mt,q,dl]: Partial trace of mt over q'th factor in tensor product dl
partrace2[mt,q]: Partial trace of mt over q'th qubit
partrans[mt,q,dl]: Partial transpose of mt over space q (1,2,...) in product dl
partrans2[mt,q]: Partial transpose of mt over qubit q in tensor product
paulnz[ptn]: Helper for prtpaul. Extracts nonzero elements of ptn
paulnzch[ptn,ep]: Helper for prtpaulch. Finds nonzero elements of Chop[ptn,ep]
paulten[args]: paulten[0,1,3] is Pauli tensor I ox sg_x ox sg_z
paul2oten[ptn]: Converts Pauli coeff tensor to o-tensor
paul2mat[ptn]: Converts Pauli coeff tensor to matrix

permket[kt,pm,dl]: Transforms ket kt to permuted order pm of tensor product dl
permket2[kt,pm]: Transforms ket kt on qubit to permuted order pm of qubits
permmat[mt,pm,dl]: Transforms mt to permuted order pm of tensor product dl
permmat2[mt,pm]: Converts matrix mt according to permutation p of qubits
permptrace: Helper function for partialtrace
permno: Helper function for nten2oten
permon: Helper function for oten2nten
permtrans: Helper function for partial transpose
permute[ls,pm]: Permutes list ls according to permutaton pm
permutmat[pm]: Permutation matrix corresponding to permutation pm as list

plabc[ls]: Helper for paulten. Generates labels c[...]=
pop2dop[mt]: Divides mt by Tr[mt] to make a density operator (if mt positive)
prodlist[ls]: Product of elements in list ls
prtpaul[ptn]: Labels and prints nonzero elements of Pauli tensor ptn
prtpaulch[ptn,ep]: Labels and prints nonzero elements of Chop[ptn,ep]

quadn[ml]: Sum of absolute squares of elements of ml: vector,matrix,tensor
quadr[ml]: Version of quadn assming ml is real

ranbas[n]: Random orbasis for n-dimensional Hilbert space
ranbasr[n]: Random real orbasis for n-dimensional Hilbert space
ranbell: Random fully-entangled orbasis for 2 qubits as list of 4 kets
ranket[n]: Random ket on n-dimensional space
ranketr[n]: Random real ket on n-dimensinal space
ranorn[m,n]: Random collection of m orthonormal kets on n-dimens space
ranornr[m,n]: Random collection of m real normalized kets on n-dimens space
rgate[j,th]: Single qubit R_j(th) gate

sbell[j]: j'th special Bell state
sbellbas: Converts ket from special Bell to regular basis
sbell2mat[mt]: Converts matrix mt from special Bell basis to standard basis

schmidt[kt,dl]: Returns Schmidt decomposition of normalized kt as a list
schmidtprobs[kt,dl]: Returns list of Schmidt probabilities for ket
schmidtproj[ls]: Constructs a projector on subspace of Schmidt basis
schmidt2ket[ls]: Inverse of schmidt[]

sevencode: Seven qubit Steane code
sig[j]: Sigma matrix on one qubit for j=0,1,2,3. sig[0]=I
sigl[ls]: Tensor product of Pauli operators in list ls
sigprod[j,k,...]: Tensor product sig[j] ox sig[k] ox ...
sumlist[ls]: Returns sum of items in list ls

tenprod[mt1,mt2,...]: Tensor product of matrices mt1, mt2,... as a matrix
threecode: Three qubit code that corrects bit-flip errors
traceout[mt,ls,dl] Partial trace of mt over spaces in list ls
traceout2[mt,ls] Partial trace of mt over qubits in list ls
transpose[]: Same as Transpose[], but returns a ket unchanged

xgate: Single qubit X gate
xket[m]: xket[0], xket[1] are kets for +x, -x axis points on Bloch sphere
xprj[m]: For m=0, 1 projects on +x, -x states of Bloch sphere
ygate: Single qubit Y gate
yket[m]: yket[0], yket[1] are kets for +y, -y axis points on Bloch sphere
yprj[m]: For m=0, 1 projects on +y, -y states of Bloch sphere
zgate: Single qubit Z gate
zket[m]: zket[0]=|0>, zket[1]=|1>: kets for +z, -z axis points on Bloch sphere
zprj[m]: =|m><m| for m=0, 1: projects on +z, -z states of Bloch sphere

Back to Main Page