ruff-0.3.2: relatively useful fractal functions

Portability portable unstable claudiusmaximus@goto10.org Safe-Inferred

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).

prettyAngles :: [Angle] -> StringSource

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.

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

Constructors

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.

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.