!------------------------------------------------------------------------------
!
real(fp) FUNCTION SGLIHI(ZE)
!
!    	  Lithium fudge  tbt 10/94
 
!
!============
! idecl:  explicitize implicit INTEGER declarations:
  use iso_c_binding, only: fp => c_double
  IMPLICIT NONE
  INTEGER i
!============
! idecl:  explicitize implicit real(fp) declarations:
  real(fp) ze2,zemin,zemax,zeuse,zle,zls,zlss,zle2,za2,zans1,zans2
!============
  real(fp) ZE
!
!  ZE IN EV
!  SGHEHI IN !M**2
!
!  JANEV-LANGER-EVANS-POST,
!  ELEMENTARY PROCESSES IN HYDROGEN-HELIUM PLASMAS
!  FIT FOR REACTION 6.1.3,  HE++ + H --> HE++ + H+ + E-
!    IMPACT IONIZATION
!
!  FIT TABLE IN SS 8.1, P. 254
!
!  FIT FOR REACTION 6.1.6,  HE++ + H --> HE+ + H+
!    CHARGE EXCHANGE IONIZATION OF H
!
!  FIT TABLE IN SS 8.1, P. 254
!
!
  real(fp) A613(9)
  real(fp) A616(9)
!
  DATA A613/-4.10809297e+05_fp, 3.53816283e+05_fp,&
       -1.32813190e+05_fp,&
       2.83763762e+04_fp,-3.77436481e+03_fp,&
       3.20045427e+02_fp,&
       -1.68956522e+01_fp, 5.07731711e-01_fp,&
       -6.65008430e-03_fp/
  !
  DATA A616/-4.31514508e+01_fp, 1.15390275e+00_fp,&
       -1.77060767e-03_fp,&
       -4.24923742e-02_fp, 2.55243094e-02_fp,&
       -6.61209712e-03_fp,&
       8.58753895e-04_fp,-5.50161227e-05_fp,&
       1.37393635e-06_fp/
!
!
  LOGICAL EXTRAP
!
!----------------------------------
!  REACTION 6.1.3.
!
  EXTRAP=.FALSE.
!
  ZE2=ZE
!
  ZEMIN=1340.0_fp
  ZEMAX=100000.0_fp
  IF((ZE2.LT.ZEMIN).OR.(ZE2.GT.ZEMAX)) EXTRAP=.TRUE.
!
  ZEUSE=min(ZEMAX,max(ZEMIN,ZE2))
!
  ZLE=log(ZEUSE)
!
  ZLS=A613(9)
  IF(EXTRAP) ZLSS=8.0_fp*A613(9)
!
  DO I=8,1,-1
     ZLS=ZLS*ZLE+A613(I)
     IF(EXTRAP.AND.(I.GE.2)) ZLSS=ZLSS*ZLE+(I-1)*A613(I)
  enddo
!
  IF(EXTRAP) THEN
     ZLE2=log(ZE2)
     ZA2=0.8_fp
     IF(ZE2.LT.ZEMIN) ZLS=ZLS-ZLSS*(ZLE-ZLE2)
     IF(ZE2.GT.ZEMAX) ZLS=ZLS+(ZLE2-ZLE)*(ZLSS-ZA2*(ZLE2-ZLE))
  ENDIF
!
  ZANS1 = EXP(min(50.0_fp,ZLS))
!
!----------------------------------
!  REACTION 6.1.6.
!
  EXTRAP=.FALSE.
!
  ZE2=ZE
!
  ZEMIN=0.6_fp
  ZEMAX=100000.0_fp
  IF((ZE2.LT.ZEMIN).OR.(ZE2.GT.ZEMAX)) EXTRAP=.TRUE.
!
  ZEUSE=min(ZEMAX,max(ZEMIN,ZE2))
!
  ZLE=log(ZEUSE)
!
  ZLS=A616(9)
  IF(EXTRAP) ZLSS=8.0_fp*A616(9)
!
  DO I=8,1,-1
     ZLS=ZLS*ZLE+A616(I)
     IF(EXTRAP.AND.(I.GE.2)) ZLSS=ZLSS*ZLE+(I-1)*A616(I)
  enddo
!
  IF(EXTRAP) THEN
     ZLE2=log(ZE2)
     ZA2=0.0_fp
     IF(ZE2.LT.ZEMIN) ZLS=ZLS-ZLSS*(ZLE-ZLE2)
     IF(ZE2.GT.ZEMAX) ZLS=ZLS+(ZLE2-ZLE)*(ZLSS-ZA2*(ZLE2-ZLE))
  ENDIF
!
  ZANS2 = EXP(min(50.0_fp,ZLS))
!
!------------------------------------------------------------------------------
!
  SGLIHI = ZANS1 + ZANS2  ! SUM OF THE TWO CROSS SECTIONS
!
  RETURN
END FUNCTION SGLIHI
!
!------------------------------------------------------------------------------
! 30Jun2000 fgtok -s r8_precision.sub "r8con.csh conversion"
! 02Aug2000 fgtok -s r8_precision.sub "r8con.csh conversion"
! 02Aug2000 fgtok
