ruff-0.2: relatively useful fractal functions

Portability portable unstable claudiusmaximus@goto10.org

Description

External angles give rise to kneading sequences under the angle doubling map. Internal addresses encode kneading sequences in human-readable form, when extended to angled internal addresses they distinguish hyperbolic components in a concise and meaningful way.

The algorithms are mostly based on Dierk Schleicher's paper Internal Addresses Of The Mandelbrot Set And Galois Groups Of Polynomials (version of February 5, 2008) http://arxiv.org/abs/math/9411238v2.

Synopsis

# Documentation

type Angle = RationalSource

Angle as a fraction of a turn, usually in [0, 1).

Angle doubling map.

Wrap an angle into [0, 1).

Convert to human readable form.

prettyAngles :: [Angle] -> StringSource

Convert to human readable form.

Elements of kneading sequences.

Constructors

 Zero One Star

Instances

Kneading sequences. Note that the `Aperiodic` case has an infinite list.

Constructors

Instances

Kneading sequence as a string. The `Aperiodic` case is truncated arbitrarily.

The kneading sequence for an external angle.

The period of a kneading sequence, or `Nothing` when it isn't periodic.

Unwrap a kneading sequence to an infinite list.

A star-periodic kneading sequence's upper and lower associated kneading sequences.

The upper associated kneading sequence.

The lower associated kneading sequence.

Internal addresses are a non-empty sequence of strictly increasing integers beginning with '1'.

Constructors

Internal address as a string.

Construct an `InternalAddress` from a kneading sequence.

Construct a valid `InternalAddress`, checking the precondition.

Extract the sequence of integers.

Angled internal addresses have angles between each integer in an internal address.

Constructors

 Unangled Integer Angled Integer Angle AngledInternalAddress

Angled internal address as a string.

The angled internal address corresponding to an external angle.

Builds a valid `AngledInternalAddress` from a list, checking the precondition that only the last 'Maybe Angle' should be `Nothing`, and the `Integer` must be strictly increasing.

Convert an `AngledInternalAddress` to a list.

The pair of external angles whose rays land at the root of the hyperbolic component described by the angled internal address.

Discard angle information from an internal address.

Split an angled internal address at the last island.

The inverse of `splitAddress`.

The period of an angled internal address.

Parse an angle.

Parse a list of angles.

Parse a kneading element.

Parse a non-aperiodic kneading sequence.

Parse an internal address.

Parse an angled internal address, accepting some unambiguous abbreviations.