\section{Programs Used}
\subsection{Fractint}
\label{program:fractint}
\begin{tabular}{|l|p{24em}|}
\hline
\bf Authors&Bert Tyler, Tim Wegner, Jonathan Osuch, Wes Loewer, George Martin, Robin Bussell, and various other contributors\\
\hline
\bf Where to find&http://spanky.triumf.ca/www/fractint/fractint.html\\
\hline
\bf Platforms&Written for DOS.  Ported to Windows NT, Macintosh, Linux, BeOS.\\
\hline
\bf Distribution&Free to download; source code available\\
\hline
\end{tabular}

\vspace{1em}

Fractint is an ongoing project that was started in 1988, as an effort to make a Mandelbrot set rendering program that was faster than any program in existence.  The way they did this was to use integer calculations to emulate floating point mathematics, hence the ``int'' in Fractint.  This made the program much faster than others that used floating point operations, because integer operations are much easier to calculate.  Also, this meant that Fractint could be used on computers without floating point coprocessors.  Technology has progressed a lot since then, and floating point calculations can now be computed fairly quickly.  But because Fractint had this edge over other programs in the late 1980's, the program has stayed under continuous development and use and has grown to be a program full of useful features.

Fractint is distributed as a DOS program, although we were able to run it in Microsoft Windows XP Home Edition without any trouble.  The Unix port didn't work so well for us.  The DOS version supports a great variety of video modes and also has support for standard mice.  The interface isn't very impressive, but it's clean and simple, and it gets the job done.

Included in the standard distribution is support for over 100 types of fractals, including Mandelbrot and Julia sets, Iterated Function Systems, L-Systems, and many others.  Also included is a user-defined formula interpretation module, which allows users to craft their own iteration formulas.  For example, one could take the Mandelbrot formula, $z_{n+1}=z_{n}^2 + c$, and experiment with minor modifications, such as $z_{n+1}=z_{n}^2 + z_{n} + c$.  Many other variations are possible, such as referring to $z_{n-2}$ and earlier values, adding more parameters, using functions such as sine and cosine, etc.  Fractint includes hundreds of premade user defined formulas that run in this module.  This means that, as distributed, Fractint comes with built-in support for over 283 different fractals.  By searching on the Fractint web site or elsewhere on the Internet, one can find thousands of additional Fractint formulas.

One of Fractint's best features is its implementation of arbitrary-precision floating point numbers.  Computer floating point operations are inherently inexact, because it is not possible to store an infinitely repeating decimal number in a computer.  This means that most fractal rendering programs cannot zoom in on a fractal indefinitely, because eventually, the computer's inaccuracies are so great that it is impossible to calculate the difference between adjacent pixels with enough precision.  Where a modern computer can calculate floating point numbers to 15 decimal digits of precision, Fractint's software emulates a computer that can calculate up to 1600 digits after the decimal point.  This allows exploration to lower depths in the fractal, as outlined in section \ref{sec:mandelbrot:deepzooming} on page \pageref{sec:mandelbrot:deepzooming}.  This doesn't come without a price, though.  Calculations at very deep levels can take days, weeks, or even months to calculate, even on modern computers.

Among its other features Fractint supports minimal palette editing and loading, though it supports a maximum of 256 colors.  Fractint can also save a screen image to disk, including with it the parameters necessary to resume computation.  This means that the user can save a screen picture to disk and load it at a later time, picking up right where he left off.  This is extremely valuable, because it is highly improbable that anyone can find the same place in a fractal twice without knowing the parameters.

Fractint was used extensively in this project to render Mandelbrot sets, Julia sets, IFS's, and L-Systems.  Fractint allows the user to enter the parameters of a fractal image (such as fractal type, zoom level, position, and parameters to the calculation) in a file and load these files for rendering.  The reader can find parameter files for many of the figures in this report on the accompanying CD-ROM.

\subsection{XaoS}
\label{program:xaos}
\begin{tabular}{|l|p{24em}|}
\hline
\bf Authors&Jan Hubicka, Thomas Marsh, other contributors\\
\hline
\bf Where to find&http://www.ucw.cz/$\sim$hubicka/XaoS/\\
\hline
\bf Platforms&Written for Linux/X-Windows, ported to Windows, DOS, OS/2, BeOS, Amiga, Macintosh\\
\hline
\bf Distribution&released under the GPL (source code freely available)\\
\hline
\end{tabular}

\vspace{1em}

XaoS is another program that renders Mandelbrot and Julia sets, and a few other kinds of fractals.  Its authors don't offer a suggestion of how to pronounce ``XaoS'', so we suggest calling it ``Chaos''.  The interesting part is that XaoS is designed with the main goal of efficiently rendering animations of fractals.  This means that you click on an area of a fractal, and watch, in real time, as that area is enlarged.  You can direct the animation as XaoS zooms in, creating your own fractal ``movie''.  XaoS also supports recording transcripts of your exploration, and adding textual notes, pauses, and other effects, to create a fractal presentation that can be shared with friends and colleagues.  XaoS comes with several movies that act as a tutorial for all of its features and modes of operation, along with a few that just show off some incredibly beautiful animations.  XaoS can also be used as a screen saver by putting it in autopilot mode.  In this mode, it uses some heuristics to choose ``interesting'' parts of a fractal to explore, and zooms in and out automatically.

XaoS is a great program to use to introduce someone to the world of fractals.  It is awe-inspiring to watch as an area that was only a tiny speck a moment ago comes into full view, and then races away as even lower depths are brought to the foreground.  It is fascinating to the uninitiated to watch as a miniature copy of the Mandelbrot set comes into full view, and then a smaller one, and on even deeper.  Then, with a click of a button, you can zoom out entirely to the original picture, and come to grips with the fact that you were exploring the tiniest detail of a detail.  XaoS is optimized to use a highly efficient rendering algorithm, so there is no waiting to zoom in as with other programs such as Fractint, which makes it a lot more visually rewarding to explore a fractal.

XaoS has support for true-color video modes, which means that it can display millions of colors at a time.  It has quite a few coloring modes for points inside and outside of the set, which allows for some vivid and incredibly beautiful fractal images.  XaoS even has a mode for rendering in ASCII art, which means that the screen is drawn in letters, numbers, and punctuation!  Unfortunately, the detail is not very easy to pick out, and this mode doesn't seem to have much use other than entertainment.  In the same vein, XaoS can generate its fractals as random-dot stereograms, which are also known as ``Magic Eye Pictures''.  

XaoS is an extremely fun program to use, and is a great exploration tool for readers just starting to explore the world of fractals.

\subsection{FDESIGN}
\label{program:fdesign}
\begin{tabular}{|l|p{24em}|}
\hline
\bf Author&Doug Nelson\\
\hline
\bf Where to find&http://spanky.triumf.ca/pub/fractals/programs/\\
&ibmpc/fdesi313.zip\\
\hline
\bf Platforms&DOS\\
\hline
\bf Distribution&Free to download; source code available\\
\hline
\end{tabular}

\vspace{1em}

FDESIGN is a program written in 1990 that deals specifically with the design of iterated function systems (see Section \ref{sec:ifs} on page \pageref{sec:ifs}).  It was written for DOS, but it runs in Microsoft Windows XP Home Edition without a problem.  Though this program is over 12 years old, it does its job admirably, and it is still an extremely useful tool.

FDESIGN allows the user to graphically edit each of the transformations in an IFS individually, and see the results of each modification rendered in real time.  This means that, instead of calculating numbers and loading them for rendering in Fractint (by way of a .IFS file), the user can see the results of his modifications and modify his fractal accordingly.

The design of an IFS in FDESIGN is fairly easy, and the documentation provides a fairly good explanation.  The user first draws a base triangle, which is used as a reference point for defining the transformations in the IFS.  For each transformation the user draws another triangle, which represents what happens to the base triangle after the transformation is applied.  After three transformations are defined, the program begins to render a preview of the fractal.  The user can then move the vertices of the triangles, add new ones, or delete existing ones.  When finished, the user is presented with a full screen rendering of the IFS, along with options to save a screen image, save the file in FDESIGN's internal .TRN file format, or save a Fractint .IFS parameter file.  This file can be used to view the fractal in Fractint.  All iterated function systems shown in the earlier Section \ref{sec:ifs} have corresponding .IFS and .TRN files on the accompanying CD-ROM.

\subsection{Ultra Fractal}
\label{program:ultrafractal}
\begin{tabular}{|l|p{24em}|}
\hline
\bf Author&Frederik Slijkerman\\
\hline
\bf Where to find&http://www.ultrafractal.com/\\
\hline
\bf Platforms&Microsoft Windows\\
\hline
\bf Distribution&Shareware, \$49 to register\\
\hline
\end{tabular}

\vspace{1em}

Ultra Fractal is a fractal rendering tool designed for the purpose of artistic creation.  It includes many features of Fractint such as built-in formulas and user-defined formulas.  It is compatible with user-defined formulas for Fractint, and it supports arbitrary-precision floating point calculations for deep zooming.  Formulas may also be written in Ultra Fractal's own formula language, and these formulas are compiled for speed.  Thousands of formulas are available on the Ultra Fractal web site, submitted by users of the program.

Ultra Fractal's features are mostly geared toward artists.  True color rendering is supported, along with many rendering effects.  Users can manually modify the colors used, also referred to as the ``gradient''.  The gradient is a method of color-choosing that allows the user to specify, in general, which colors are used, but also allows for the smooth use of the millions of colors that true color rendering allows.

One of the most powerful features that Ultra Fractal supports is the creation of composite images based on layers.  The artist can choose several different fractal images, and stack them on top of each other, deciding how to combine the layers together into a final piece of art.  This is similar to printing each image on a sheet of transparency film, and stacking them together to create the final picture.  However, Ultra Fractal can combine the layers in many different ways, which has allowed artists to create some incredibly beautiful works of fractal art.  Some of these are showcased on Ultra Fractal's web site, but many more can be found through internet searching.  Ultra Fractal is widely recognized as one of the best tools for the creation of fractal art, and its users seem to consider it well worth the price. 
