      PROGRAM etoself 
*************************************************************************
* Conversion of dielectric functions to                                 *
* frequency dependent self-energy                                       *
* from standard input it reads:
* input filename
* epsilon infinity, plasma-frequency
* the input file must have the format x eps1 eps2                       *
*************************************************************************
      REAL X(100000),e1,e2,nup,epsinf
      complex epsil(100000),einv,eself
      INTEGER I,mm
      character*40 flin 
      mm=100000 
      read(*,'(a40)') flin
      read(*,*) epsinf,nup
      open(24,file=flin)
      do 10 i=1,mm                                                  
       READ(24,*,END=11) X(i),e1,e2
       epsil(i)=cmplx(e1,e2)
10    continue   
11    mm=i-1
      do 25 i=1,mm
       einv=1./(epsinf-epsil(i))
       eself=nup*nup*einv/x(i) - x(i)
       write(*,*) x(i),real(eself),aimag(eself)
25    continue
      END  

