      SUBROUTINE PTURB(H,M,ZZ,EGV,MX)
C
C     THIS SUBROUTINE COMPUTES AN ESTIMATE OF THE EIGEN VALUES EGV OF
C     THE PROBLEM WITH ATEN .NE. ZERO BASED ON THE EIGEN VALUES ZZ OF
C     THE PROBLEM WITH ATEN=0.
C     IT USES THE PERTURBATION METHOD ON PG. 228 IN PRINC. AND TECH.
C     OF APPLIED MATH BY B. FRIEDMAN
C
      IMPLICIT REAL*8 (A-H,O-Z)
      REAL*8 ZZ(MX),ZERO
      REAL*8 ALPHA,BETA,A,B,X,Y,U,V,DELTA
      COMPLEX*16 EGV(MX)
C
      COMMON /BLKEVN/ HB,CW,CB,FKW,FKB,ROHW,ROHB,ATEN
C
C
      ZERO=DBLE(0.0)
      FKW2=FKW**2
      FKB2=FKB**2
      IF(ATEN .EQ. 0.0) GO TO 600
C
      DO 500 I=1,M
C
      ALPHA=DSQRT(FKW2+FKB2*(ZZ(I)-1.0))
      BETA=DSQRT(DABS(FKB2*ZZ(I)))
      A=ALPHA*H
      B=BETA*(H-HB)
C
      IF(ZZ(I) .LT. ZERO) GO TO 100
      IF(ZZ(I) .EQ. ZERO) GO TO 200
      IF(ZZ(I) .GT. ZERO) GO TO 300
C
  100 CONTINUE
C
C
      X=A-DCOS(A)*DSIN(A)
C
C     THE MAXIMUM ARGUMENT(88) FOR EXP IS MACHINE DEPENDENT
C
      IF(DABS(B) .GT. 44.) GO TO 120
      Y=B/(DSINH(B)**2)-1./DTANH(B)
      GO TO 150
  120 CONTINUE
      Y=-1./DTANH(B)
  150 CONTINUE
      U=ROHW*ALPHA*DSIN(A)**2*Y
      V=-ROHB*BETA*X-ROHW*ALPHA*DSIN(A)**2*Y
      DELTA=ATEN*U/V
C
      EGV(I)=DCMPLX(ZZ(I),DELTA)
C
      GO TO 500
C
  200 CONTINUE
C
      DELTA=DBLE(-ATEN)
C
      EGV(I)=DCMPLX(ZZ(I),DELTA)
C
      GO TO 500
C
  300 CONTINUE
C
C
      X=A-DCOS(A)*DSIN(A)
      Y=B-DCOS(B)*DSIN(B)
      U=ROHW*ALPHA*DSIN(A)**2*Y
      V=ROHB*BETA*DSIN(B)**2*X-ROHW*ALPHA*DSIN(A)**2*Y
      DELTA=ATEN*U/V
C
      EGV(I)=DCMPLX(ZZ(I),DELTA)
C
  500 CONTINUE
C
      GO TO 800
  600 CONTINUE
C
      DO 700 I=1,M
      EGV(I)=DCMPLX(ZZ(I),ZERO)
  700 CONTINUE
C
  800 CONTINUE
C
C
      RETURN
      END
