cgc := proc(j1,j2,j3,m1,m2,m3) local i1,i2,i3,i4,i5,k,ja,top,bot,front,back,low,lhi; if m1+m2<>m3 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 + m3; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; ja := j3 - m3; if (2*ja) mod 2<>0 then RETURN(0) fi; if ja<0 then RETURN(0) fi; top := sqrt((j3-m3)!*(j3+m3)!*(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; ja := 2*j3+1; front := sqrt((j1+j2-j3)!*(j3+j1-j2)!*(j3+j2-j1)!*ja/(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; front * back; end: