       subroutine calt73(temp,dtype73,itype73,crate)
c
c   Takes coefficients in data type 73 and returns excitation rate times
c   the statistical weight of the lower level (w_i C(i,j) in s^-1
c   cm^3).
c      author: M. Bautista
c
       implicit none
c
      integer nptmpdim
      parameter (nptmpdim=200000)
c
       real dtype73(nptmpdim),temp,crate,boltzk,const,z,y,gam,zeff,z2s
       real a,co,cr,cr1,r,e1,em1,ee1,ee2,ee3,er,er1,qij
       integer itype73(nptmpdim)
c
       boltzk=1.578876e+05
       const=5.46538e-11
       z=float(itype73(3))
       y=z*z*dtype73(1)*boltzk/temp
c
       gam=0.
       if (dtype73(2).ge. 0.1) gam=-.2
       if (dtype73(2).gt. 0.01 .and. dtype73(2).lt. 0.1) gam=0.
       if (dtype73(2).le. 0.01) gam=0.2
       zeff=float(itype73(3))-gam
       z2s=dtype73(2)
       a=dtype73(3)
       co=dtype73(4)
       cr=dtype73(5)
       cr1=dtype73(6)
       r=dtype73(7)
       if (y.gt.40.) then
        crate=0.
        return
       endif
        call expint(y,em1)
        e1=em1/y*exp(-y)
       if (y*a+y.le.80) then
        call eint(y*a+y,ee1,ee2,ee3)
       else
        ee1=0.
        ee2=0.
        ee3=0.
       endif
       er=0.
       er1=0.
       if (r.eq.1.) then
        er=ee1
        er1=ee2
       endif
       if (r.eq.2.) then
        er=ee2
        er1=ee3
       endif
       if (y*a+y.le.40) then
        qij=co*exp(-y)+1.55*z2s*e1+y*exp(y*a)*(cr*er/(a+1.)**(r-1.)
     #      +cr1*er1/(a+1.)**r)
       else
        qij=co*exp(-y)+1.55*z2s*e1
       endif
       crate=qij*boltzk/temp*sqrt(temp)/zeff/zeff*const
       if (crate.lt.0.) crate=0.
c
       return
       end
