Portability | portable |
---|---|
Stability | unstable |
Maintainer | claudiusmaximus@goto10.org |
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.
- type Angle = Rational
- double :: Angle -> Angle
- wrap :: Angle -> Angle
- data Knead
- data Kneading
- = Aperiodic [Knead]
- | PrePeriodic [Knead] [Knead]
- | StarPeriodic [Knead]
- | Periodic [Knead]
- kneading :: Angle -> Kneading
- period :: Kneading -> Maybe Integer
- unwrap :: Kneading -> [Knead]
- data InternalAddress = InternalAddress [Integer]
- internalAddress :: Kneading -> Maybe InternalAddress
- associated :: Kneading -> Maybe (Kneading, Kneading)
- upper :: Kneading -> Maybe Kneading
- lower :: Kneading -> Maybe Kneading
- internalFromList :: [Integer] -> Maybe InternalAddress
- internalToList :: InternalAddress -> [Integer]
- data AngledInternalAddress
- angledInternalAddress :: Angle -> Maybe AngledInternalAddress
- angledFromList :: [(Integer, Maybe Angle)] -> Maybe AngledInternalAddress
- angledToList :: AngledInternalAddress -> [(Integer, Maybe Angle)]
- externalAngles :: AngledInternalAddress -> Maybe (Rational, Rational)
- stripAngles :: AngledInternalAddress -> InternalAddress
- parse :: String -> Maybe AngledInternalAddress
Documentation
Elements of kneading sequences.
Kneading sequences. Note that the Aperiodic
case has an infinite list,
which the Pretty
instance truncates arbitrarily.
Aperiodic [Knead] | |
PrePeriodic [Knead] [Knead] | |
StarPeriodic [Knead] | |
Periodic [Knead] |
period :: Kneading -> Maybe IntegerSource
The period of a kneading sequence, or Nothing
when it isn't periodic.
data InternalAddress Source
Internal addresses are a non-empty sequence of strictly increasing integers beginning with '1'.
internalAddress :: Kneading -> Maybe InternalAddressSource
Construct an InternalAddress
from a kneading sequence.
associated :: Kneading -> Maybe (Kneading, Kneading)Source
A star-periodic kneading sequence's upper and lower associated kneading sequences.
internalFromList :: [Integer] -> Maybe InternalAddressSource
Construct a valid InternalAddress
, checking the precondition.
internalToList :: InternalAddress -> [Integer]Source
Extract the sequence of integers.
data AngledInternalAddress Source
Angled internal addresses have angles between each integer in an internal address.
angledInternalAddress :: Angle -> Maybe AngledInternalAddressSource
The angled internal address corresponding to an external angle.
angledFromList :: [(Integer, Maybe Angle)] -> Maybe AngledInternalAddressSource
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.
angledToList :: AngledInternalAddress -> [(Integer, Maybe Angle)]Source
Convert an AngledInternalAddress
to a list.
externalAngles :: AngledInternalAddress -> Maybe (Rational, Rational)Source
The pair of external angles whose rays land at the root of the hyperbolic component described by the angled internal address.
stripAngles :: AngledInternalAddress -> InternalAddressSource
Discard angle information from an internal address.
parse :: String -> Maybe AngledInternalAddressSource
Parse an angled internal address, accepting some unambiguous abbreviations.