Iterated Complex Natural Log

This picture in pdf
was made with pdfgen, an open-source Python library from
ReportLab.
I found pdfgen very straightforward and easy to get started with.

The program starts with a set of complex points--in Python:

[pi * 1j + sinh( n / 3.0 ) for n in range(-16, 17)]

These points range from about -100 + pi i to +100 + pi i, and are
the end points of the set of arrows that cross the top of the
graph. (Most of the points are off the sides of the picture).

The top line of arrows is plotted. Then, the points are taken in two
directions: the arrows on the real axis (at the bottom) result from
repeatedly mapping the set of points through the exp() function and then
plotting. Each arrow is the same color as the corresponding one
in the original set.

Then, the original point set is repeatedly mapped through the complex
log() function and plotted, resulting in the curved paths.

The nice thing-- well, just one of the nice things-- about pdf is that
you can produce pictures with
details that can be zoomed in on. Here's a zoom of the center
section of the picture:

Here's a
version where not only the conventional log is done, but also a few of its
echoes and reflections around multiples of 2pi i. Also, the original
point set is taken a bit further out on the number line.
Click the picture for a bigger version. It's .gif because the .pdf
is a 7 megabyte monster.

Here's the Python source for the simple picture,
the baroque picture, and
arrows. (The latter uses a couple
getter functions that aren't in the unmodified pdfgen library, but I left
hints for making it stand alone).