d3j := proc(j1,j2,j3,m1,m2,m3) local sgn,aaa,m33,ja,top,bot,front,back,low,lhi,i1,i2,i3,i4,i5,k; m33 := -m3; if m1+m2<>m33 then RETURN(0) fi; ja := j1 + m1; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; ja := j1 - m1; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; ja := j2 + m2; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; ja := j2 - m2; if(2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; ja := j3 + m33; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; ja := j3 - m33; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; top := sqrt((j3-m33)!*(j3+m33)!*(j2-m2)!*(j2+m2)!*(j1-m1)!*(j1+m1)!); ja := j1 + j2 - j3; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; ja := j3 + j1 - j2; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; ja := j3 + j2 - j1; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; ja := j1 + j2 + j3 + 1; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; front := sqrt((j1+j2-j3)!*(j3+j1-j2)!*(j3+j2-j1)!/(j1+j2+j3+1)!); i1 := j1+j2-j3; i2 := j1-m1; i3 := j2+m2; i4 := j3-j2+m1; i5 := j3-j1-m2; lhi := min(i1,i2,i3); low := max(0,-i4,-i5); back := 0; for k from low to lhi do bot := (k)!*(i1-k)!*(i2-k)!*(i3-k)!*(i4+k)!*(i5+k)!; back := back + (-1)^k * top / bot; od; aaa := (-1)^(j1-j2-m3) * front * back; sgn := aaa/abs(aaa); sgn * sqrt(aaa^2); end: