9real(8) function gaunt(l1,l2,l3,m1,m2,m3)
28integer,
intent(in) :: l1,l2,l3
29integer,
intent(in) :: m1,m2,m3
34real(8),
parameter :: c1=0.28209479177387814347d0
37if ((l1 < 0).or.(l2 < 0).or.(l3 < 0).or.(abs(m1) > l1).or.(abs(m2) > l2) &
38 .or.(abs(m3) > l3))
then
40 write(*,
'("Error(gaunt): non-physical arguments :")')
41 write(*,
'("l1 = ",I8," l2 = ",I8," l3 = ",I8)') l1,l2,l3
42 write(*,
'("m1 = ",I8," m2 = ",I8," m3 = ",I8)') m1,m2,m3
46if ((l1 > 50).or.(l2 > 50).or.(l3 > 50))
then
48 write(*,
'("Error(gaunt): angular momenta out of range : ",3I8)') l1,l2,l3
52if (m1-m2-m3 /= 0)
then
59if ((j1 < 0).or.(j2 < 0).or.(j3 < 0))
then
64if (mod(j,2) /= 0)
then
69t1=sqrt(dble((2*l1+1)*(2*l2+1)*(2*l3+1))*
factr(j1,j+1)*
factn(j2)*
factn(j3))
elemental real(8) function factn(n)
real(8) function factr(n, d)
real(8) function gaunt(l1, l2, l3, m1, m2, m3)
real(8) function wigner3j(j1, j2, j3, m1, m2, m3)