!------------------------------------------------------------------------------
!
real(fp) FUNCTION SGPHEI(ZE)
!
!
!============
! 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,zans
!============
  real(fp) ZE
!
!  ZE IN EV
!  SGPHEI IN CM**2
!
!  JANEV-LANGER-EVANS-POST,
!  ELEMENTARY PROCESSES IN HYDROGEN-HELIUM PLASMAS
!  FIT FOR REACTION 3.3.2,  H+ + HE --> H+ + HE+ + E-
!    IMPACT IONIZATION
!
!  FIT TABLE IN SS 8.1, P. 252
!
  real(fp) A332(9)
  DATA A332/ 4.62487177e+03_fp,-4.74569253e+03_fp,&
       2.08150865e+03_fp,&
       -5.15098782e+02_fp, 7.87208777e+01_fp,&
       -7.61176657_fp,&
       4.54958944e-01_fp,-1.53751100e-02_fp,&
       2.25017020e-04_fp/
!
  LOGICAL EXTRAP
!
  EXTRAP=.FALSE.
!
  ZE2=ZE
!
  ZEMIN=200.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=A332(9)
  IF(EXTRAP) ZLSS=8._fp*A332(9)
!
  DO I=8,1,-1
     ZLS=ZLS*ZLE+A332(I)
     IF(EXTRAP.AND.(I.GE.2)) ZLSS=ZLSS*ZLE+(I-1)*A332(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
!
  ZANS = EXP(min(50.0_fp,ZLS))
!
  SGPHEI=ZANS
!
  RETURN
END FUNCTION SGPHEI
!
!------------------------------------------------------------------------------
 
 
 
! 30Jun2000 fgtok -s r8_precision.sub "r8con.csh conversion"
! 02Aug2000 fgtok -s r8_precision.sub "r8con.csh conversion"
! 02Aug2000 fgtok
