The following routine calculates the Clebsch-Gordan coefficients. The output is <j1,j2;m1,m2|j,m> restart;clebsch:=proc(j1,j2,m1,m2,j,m); `if`(m=m1+m2,sqrt((2*j+1)*(j+j1-j2)!*(j+j2-j1)!*(j1+j2-j)!*(j+m)!*(j-m)!*(j1-m1)!*(j1+m1)!*(j2-m2)!*(j2+m2)!/(j1+j2+j+1)!)*add((-1)^k/k!/(j1+j2-j-k)!/(j1-m1-k)!/(j2+m2-k)!/(j-j2+m1+k)!/(j-j1-m2+k)!,k=max(0,j1+m2-j,j2-m1-j)..min(j1+j2-j,j1-m1,j2+m2)),0) end proc: For example, to find the coefficient of <5/2,2;-3/2,1/2|3/2,1/2> clebsch(5/2,2,-3/2,2,3/2,1/2); LCQqJiMiIiUiJDAiIiIiKSIkNSMjRiciIiNGJyEiIg== If you don't have m1+m2=m the result will automatically be zero. clebsch(5/2,2,-3/2,2,3/2,-1/2); IiIh If you sum it squared over all allowed values of j and m (which means sum over j,since m = m1 + m2) you should get 1 add(clebsch(5/2,2,-3/2,2,j,1/2)**2,j=1/2..9/2); IiIi Similarly, if you sum it squared over all allowed values of m1 and m2, (keeping m = m1 + m2) you should get 1 add(clebsch(5/2,2,1/2-m2,m2,3/2,1/2)**2,m2=-2..2); IiIi If you try to take |m1| > j1, |m2| > j2, |m| > j, or other illegal combinations, I'm not sure what happens. Don't do it. clebsch(5/2,1,-3/2,1,1/2,-1/2); Error, (in clebsch) numeric exception: division by zero