function for_fun9j,rj11,rj12,rj13,rj21,rj22,rj23,rj31,rj32,rj33
;
; purpose: calculates 9j value
;
; inputs:
;       rj11,rj12,rj13  real j quantum numbers in 1st row of 9j
;       rj21,rj22,rj23  real j quantum numbers in 2nd row of 9j
;       rj31,rj32,rj33  real j quantum numbers in 3rd row of 9j
;
; outputs:
;       fun9j 9j symbol
;
;
; CALLED BY FOR_EMISSION, FOR_R3, FOR_R5
; CALLS FOR_FUN6J
;
@include.icle

ij11=round(rj11+rj11)
ij12=round(rj12+rj12)
ij21=round(rj21+rj21)
ij23=round(rj23+rj23)
ij32=round(rj32+rj32)
ij33=round(rj33+rj33)

kmin1=abs(ij11-ij33)
kmin2=abs(ij32-ij21)
kmin3=abs(ij23-ij12)

;kmin1=kmin2 > kmin1
;kmin1=kmin3 > kmin1
kmin=max([kmin1,kmin2,kmin3])

kmax1=ij11+ij33
kmax2=ij32+ij21
kmax3=ij23+ij12

;kmax1=kmax2 < kmax1
;kmax1=kmax3 < kmax1
kmax=min([kmax1,kmax2,kmax3])

if(kmin gt kmax) then return,.0D

fun9j=0.d0

for k=kmin,kmax,2 do begin 
   fk5=double(k)/2.D
   fun9j+=const.sg(abs(k))*double(k+1) $
   	    *for_fun6j(rj11,rj21,rj31,rj32,rj33,fk5) $
   	    *for_fun6j(rj12,rj22,rj32,rj21,fk5,rj23) $
   	    *for_fun6j(rj13,rj23,rj33,fk5,rj11,rj12)
endfor

return,fun9j
end