c
c
        subroutine FRESNEL(phi,anp,ans,anu,phaseS,PHASEP,ESQZS,ESQZP)
c
     	IMPLICIT	REAL*8	(A-H,O-Z)

     	DATA	PI     	/  3.1415 92653 58979 32384 62643 D0 /
     	DATA	TODEG 	/ 57.2957 79513 08232 08767 98155 D0 /
        complex*16 ci,fo,fe,fv,ffe,ffv,ffvp,ffo,ffep,ffop,re2,
     $		   ro2,ao,ae,r,rp,fs,ffs,ffsp,rs2
        dimension do(2000),de(2000)
        character*2 ele,elo,els
        common /aaa/ do,de
        common /bbb/ delo,beto,dele,bete,dels,bets,x1,x2,step,n,nstep,
     1xlam,rhoo,rhoe,rhos,elo,ele,els
c
      ci=(0.0,1.0)
      ro2=(1-delo-ci*beto)**2
      re2=(1-dele-ci*bete)**2
      rs2=(1-dels-ci*bets)**2
      phr=phi/TODEG
C      refo=(sin(phr))**2-2.0*delo
C      xmfo=-2.0*beto
C      fo=cmplx(refo,xmfo)
      fo = ro2 - cos(phr)**2
C      refe=(sin(phr))**2-2.0*dele
C      xmfe=-2.0*bete
C      fe=cmplx(refe,xmfe)
      fe = re2 - cos(phr)**2
      refv=(sin(phr)**2)
      xmfv=0.0
      fv = Dcmplx(refv,xmfv)
C      refs=(sin(phr))**2-2.0*dels
C      xmfs=-2.0*bets
C      fs=cmplx(refs,xmfs)
      fs = rs2 - cos(phr)**2
C
      fo=sqrt(fo)
      fe=sqrt(fe)
      fv=sqrt(fv)
      fs=sqrt(fs)
      ffe=(fe-fo)/(fe+fo)
      ffo=-ffe
      ffv=(fv-fo)/(fv+fo)
      ffs=(fe-fs)/(fe+fs)
      ffep=(fe/re2-fo/ro2)/(fe/re2+fo/ro2)
      ffop=-(ffep)
      ffvp=(fv-fo/ro2)/(fv+fo/ro2)
      ffsp=(fe/re2-fs/rs2)/(fe/re2+fs/rs2)
      r=(0.0,0.0)
      rp=(0.0,0.0)
      do 1 j=1,n
      ao=-ci*(pi*fo*do(j)/xlam)
      ae=-ci*(pi*fe*de(j)/xlam)
      ao=exp(ao)
      ae=exp(ae)
      if(j.eq.1)go to 6
      r=(ae**4)*(r+ffe)/(r*ffe+1.0)
      rp=(ae**4)*(rp+ffep)/(rp*ffep+1.0)
      go to 7
    6 r=(ae**4)*(r+ffs)/(r*ffs+1.0)
      rp=(ae**4)*(rp+ffsp)/(rp*ffsp+1.0)
    7 r=(ao**4)*(r+ffo)/(r*ffo+1.0)
      rp=(ao**4)*(rp+ffop)/(rp*ffop+1.0)
    1 continue
      r=(r+ffv)/(r*ffv+1.0)
      ESQZS = ABS(1.0 + R)
      ESQZS = ESQZS**2
      pp = imag(r)
#if lahey
      qq = real(r,8)
#else
      qq = Dreal(r)
#endif
C      phaseS = atan_2(pp,qq)/pi		! S phase change in units of pi
	call atan_2(pp, qq, phaseS)
	phaseS = phaseS/pi
      rp=(rp+ffvp)/(rp*ffvp+1.0)
C Check the following equations :
      ESQZP = ABS(1.0 - RP)
      ESQZP = ESQZP**2
C
      PP = IMAG(RP)
#if lahey
      QQ = REAL (RP,8)
#else
      QQ = dREAL (RP)
#endif
C      PHASEP = ATAN_2(PP,QQ)/PI		! P phase change in units of pi
	call atan_2 (pp, qq, phasep)
	phaseP = phaseP /Pi
      anp=abs(rp)
      anp=anp**2
      ans=abs(r)
      ans=ans**2
      anu=0.5*(ans+anp)
c
        return
        end
c
