real(fp) function FUN(B,A2,A3,A4,A5,E)
!...E - THE ENERGY OF THE INCIDENT PARTICLE.  (KEV)
!...I NOW DEFINE THE FUNCTION USED TO EVALUATE SIGMA.
  use iso_c_binding, only: fp => c_double
  implicit none
  real(fp), intent(in) :: B,A2,A3,A4,A5,E      
  FUN=B*(A2/(1.0_fp+(A3*E-A4)**2)+A5)/(E*(1.0_fp-B))
  return
end function FUN

real(fp) function FBOSCH(E,A1,A2,A3,A4,A5,B1,B2,B3,B4)
!  NEW 11 SEP 1991
! FBOSCH is the analytic form of H.-S. Bosch's cross section fits.  
  use iso_c_binding, only: fp => c_double
  implicit none
  real(fp), intent(in) :: E,A1,A2,A3,A4,A5,B1,B2,B3,B4
  FBOSCH=(A1+E*(A2+E*(A3+E*(A4+E*A5))))/(1.0_fp+E*(B1+E*(B2+E*(B3+E*B4))))
  return
end function FBOSCH

real(fp) function FDPC(E,A0,A1,A2,A3,A4,A5,B1,B2,B3,B4,B5)
! 06/2018
! FDPC is the analytic form of H.-S. Bosch'sDPC cross section fits.
  use iso_c_binding, only: fp => c_double
  implicit none
  real(fp), intent(in) :: E,A0,A1,A2,A3,A4,A5,B1,B2,B3,B4,B5    
  FDPC=(A0+E*(A1+E*(A2+E*(A3+E*(A4+E*A5)))))/&
       (1.D0+E*(B1+E*(B2+E*(B3+E*(B4+E*B5)))))
  return
end function FDPC
real(fp) function FENDF(E,A2,A3,A4,B1,B2,B3)
  use iso_c_binding, only: fp => c_double
  implicit none
  real(fp), intent(in) :: E,A2,A3,A4,B1,B2,B3
  FENDF=E/(1.0_fp-E*(A2+E*(A3+E*A4))/(1.0_fp+E*(B1+E*(B2+E*B3)))) 
  return
end function FENDF
