      SUBROUTINE R6RPLY(A, B1, C, SR, SI, LR, LI)
C CALCULATE THE ZEROS OF THE QUADRATIC A*Z**2+B1*Z+C.
C THE QUADRATIC FORMULA, MODIFIED TO AVOID
C OVERFLOW, IS USED TO FIND THE LARGER ZERO IF THE
C ZEROS ARE REAL AND BOTH ZEROS ARE COMPLEX.
C THE SMALLER REAL ZERO IS FOUND DIRECTLY FROM THE
C PRODUCT OF THE ZEROS C/A.
      REAL A, B1, C, SR, SI, LR, LI, B,
     1 D, E, ABS, SQRT
      IF (A.NE.0.E0) GO TO 20
      SR = 0.E0
      IF (B1.NE.0.E0) SR = -C/B1
      LR = 0.E0
   10 SI = 0.E0
      LI = 0.E0
      RETURN
   20 IF (C.NE.0.E0) GO TO 30
      SR = 0.E0
      LR = -B1/A
      GO TO 10
C COMPUTE DISCRIMINANT AVOIDING OVERFLOW
   30 B = B1/2.E0
      IF (ABS(B).LT.ABS(C)) GO TO 40
      E = 1.E0 - (A/B)*(C/B)
      D = SQRT(ABS(E))*ABS(B)
      GO TO 50
   40 E = A
      IF (C.LT.0.E0) E = -A
      E = B*(B/ABS(C)) - E
      D = SQRT(ABS(E))*SQRT(ABS(C))
   50 IF (E.LT.0.E0) GO TO 60
C REAL ZEROS
      IF (B.GE.0.E0) D = -D
      LR = (-B+D)/A
      SR = 0.E0
      IF (LR.NE.0.E0) SR = (C/LR)/A
      GO TO 10
C COMPLEX CONJUGATE ZEROS
   60 SR = -B/A
      LR = SR
      SI = ABS(D/A)
      LI = -SI
      RETURN
      END
