Viewing contents of file '../idllib/contrib/icur/factorial.pro'
;**************************************************************************
function factorial,nn
n=nn
np=n_elements(nn)
k=where(nn gt 33,nk)
   if nk gt 0 then begin
   print,' FACTORIAL: WARNING: values >33 reset to 33'
   n(nk)=33
   endif
k=where(nn lt 1,nk)
   if nk gt 0 then begin
   n(nk)=1
   endif
;
f=dblarr(np)+1.D0
for k=0,np-1 do begin
   if n(k) gt 1 then for i=2L,long(n(k)) do f(k)=f(k)*i
   endfor
if np eq 1 then begin
   f=f(0)
   case 1 of
      f le 32767L: f=fix(f)
      (f gt 32767L) and (f le 2147483647L): f=long(f)
      else: f=float(f)
      endcase
   endif
return,f
end