# Algorithm

This section is not intended for casual users. It is a very detailed exploration of the processing and data structures used in the algorithm.

The formal name for the algorithm used to render fractal flames is an Iterated Function System (IFS). The most popular implementation of IFS is known as flam3, and was written by Scott Draves, Erik Reckase and others.

The standard introduction to the theory behind IFS and flam3 is the paper The Fractal Flame Algorithm. Reading it is highly recommended before proceeding.

Another paper which gives more detail, and which this project borrows heavily from is the Cuburn paper. The first few sections give a better description of the algorithm. The later sections are more focused on GPU implementations, so they are only recommended for advanced readers.

While the original paper gives a great introduction, it omits some important details. If one reads the code, they will notice that quite a bit is left out of the paper. This section gives a detailed description of what actually happens when a fractal flame is rendered.

It’s broken down into the data used, and the processing performed on the data in order from start to finish. It dispenses with mathematical terms and notation, and expresses the process in plain English with pseudo code.