      INTEGER nx, ny
      PARAMETER (nx = 32, ny = 25)
      REAL xi, xf
      PARAMETER (xi = - 1., xf = 2.)
      REAL yi, yf
      PARAMETER (yi = 1.1638, yf = - 1.1638)
      INTEGER maxiter
      PARAMETER (maxiter = 255)
      REAL z0r (nx, ny), z0i (nx, ny), zr (nx, ny), zi (nx, ny), z2r (nx
     &, ny), z2i (nx, ny)
      INTEGER depth (nx, ny)
      INTEGER iter, x, y
      REAL dx, dy
      INTEGER Ti1, Ti2
      REAL TT0_temp (nx, ny)
      LOGICAL TT1_temp (nx, ny)
      CALL eeinitialize_f90 ()
      dx = (xf - xi) / (nx - 1)
      dy = (yf - yi) / (ny - 1)
      DO y = 1, ny
      DO x = 1, nx
      z0r (x, y) = xi + dx * (x - 1)
      END DO
      END DO
      DO y = 1, ny
      DO x = 1, nx
      z0i (x, y) = yi + dy * (y - 1)
      END DO
      END DO
      DO Ti2 = 0, ny - 1
      DO Ti1 = 0, nx - 1
      zr (1 + Ti1, 1 + Ti2) = 0
      END DO
      END DO
      DO Ti2 = 0, ny - 1
      DO Ti1 = 0, nx - 1
      zi (1 + Ti1, 1 + Ti2) = 0
      END DO
      END DO
      DO 7000 iter = 1, maxiter
      DO Ti2 = 0, ny - 1
      DO Ti1 = 0, nx - 1
      TT1_temp (1 + Ti1, 1 + Ti2) = z2r (1 + Ti1, 1 + Ti2) + z2i (1 + Ti
     &1, 1 + Ti2) .LT. 4.
      END DO
      END DO
      DO Ti2 = 0, ny - 1
      DO Ti1 = 0, nx - 1
      IF (TT1_temp (1 + Ti1, 1 + Ti2)) THEN
      z2r (1 + Ti1, 1 + Ti2) = zr (1 + Ti1, 1 + Ti2) * zr (1 + Ti1, 1 + 
     &Ti2)
      END IF
      END DO
      END DO
      DO Ti2 = 0, ny - 1
      DO Ti1 = 0, nx - 1
      IF (TT1_temp (1 + Ti1, 1 + Ti2)) THEN
      z2i (1 + Ti1, 1 + Ti2) = zi (1 + Ti1, 1 + Ti2) * zi (1 + Ti1, 1 + 
     &Ti2)
      END IF
      END DO
      END DO
      DO Ti2 = 0, ny - 1
      DO Ti1 = 0, nx - 1
      TT0_temp (1 + Ti1, 1 + Ti2) = 2 * zr (1 + Ti1, 1 + Ti2) * zi (1 + 
     &Ti1, 1 + Ti2) - z0i (1 + Ti1, 1 + Ti2)
      END DO
      END DO
      DO Ti2 = 0, ny - 1
      DO Ti1 = 0, nx - 1
      IF (TT1_temp (1 + Ti1, 1 + Ti2)) THEN
      zi (1 + Ti1, 1 + Ti2) = TT0_temp (1 + Ti1, 1 + Ti2)
      END IF
      END DO
      END DO
      DO Ti2 = 0, ny - 1
      DO Ti1 = 0, nx - 1
      IF (TT1_temp (1 + Ti1, 1 + Ti2)) THEN
      zr (1 + Ti1, 1 + Ti2) = z2r (1 + Ti1, 1 + Ti2) - z2i (1 + Ti1, 1 +
     & Ti2) - z0r (1 + Ti1, 1 + Ti2)
      END IF
      END DO
      END DO
      DO Ti2 = 0, ny - 1
      DO Ti1 = 0, nx - 1
      IF (TT1_temp (1 + Ti1, 1 + Ti2)) THEN
      depth (1 + Ti1, 1 + Ti2) = iter
      END IF
      END DO
      END DO
7000  CONTINUE
      CALL display (depth, nx, ny)
      END

      SUBROUTINE display (depth, nx, ny)
      INTEGER x, y, depth (nx, ny)
      CHARACTER screen (1)
      INTEGER Ti1, Ti2
      INTEGER Tscreen_auto
      INTEGER eefmalloc
      Tscreen_auto = eefmalloc ((2 * nx) * ny, screen, 1)
      DO Ti2 = 0, ny - 1
      DO Ti1 = 0, 2 * nx - 1
      screen (Tscreen_auto + 1 + Ti1 - 1 + (2 * nx) * (1 + Ti2 - 1)) = '
     & '
      END DO
      END DO
      DO y = 1, ny
      DO x = 1, nx
      IF (depth (x, y) .LE. 10) THEN
      screen (Tscreen_auto + (1 + 2 * (x - 1)) - 1 + (2 * nx) * (y - 1))
     & = '@'
      END IF
      END DO
      END DO
      DO y = 1, ny
      DO x = 1, nx
      IF (depth (x, y) .LE. 10) THEN
      screen (Tscreen_auto + (2 + 2 * (x - 1)) - 1 + (2 * nx) * (y - 1))
     & = '@'
      END IF
      END DO
      END DO
      DO 7000 y = 1, ny
      PRINT *, (screen (Tscreen_auto + (1 + 2 * (x - 1)) - 1 + (2 * nx) 
     &* (y - 1)), screen (Tscreen_auto + (2 + 2 * (x - 1)) - 1 + (2 * nx
     &) * (y - 1)), x = 1, nx)
7000  CONTINUE
      CALL eeffree (Tscreen_auto, screen, 1)
      END
