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
- prettyAngle :: Angle -> String
- prettyAngles :: [Angle] -> String
- data Knead
- kneadChar :: Knead -> Char
- data Kneading
- = Aperiodic [Knead]
- | PrePeriodic [Knead] [Knead]
- | StarPeriodic [Knead]
- | Periodic [Knead]
- prettyKneading :: Kneading -> String
- kneading :: Angle -> Kneading
- period :: Kneading -> Maybe Integer
- unwrap :: Kneading -> [Knead]
- associated :: Kneading -> Maybe (Kneading, Kneading)
- upper :: Kneading -> Maybe Kneading
- lower :: Kneading -> Maybe Kneading
- data InternalAddress = InternalAddress [Integer]
- prettyInternalAddress :: InternalAddress -> String
- internalAddress :: Kneading -> Maybe InternalAddress
- internalFromList :: [Integer] -> Maybe InternalAddress
- internalToList :: InternalAddress -> [Integer]
- data AngledInternalAddress
- prettyAngledInternalAddress :: AngledInternalAddress -> String
- angledInternalAddress :: Angle -> Maybe AngledInternalAddress
- angledFromList :: [(Integer, Maybe Angle)] -> Maybe AngledInternalAddress
- angledToList :: AngledInternalAddress -> [(Integer, Maybe Angle)]
- externalAngles :: AngledInternalAddress -> Maybe (Rational, Rational)
- stripAngles :: AngledInternalAddress -> InternalAddress
- splitAddress :: AngledInternalAddress -> (AngledInternalAddress, [Angle])
- joinAddress :: AngledInternalAddress -> [Angle] -> AngledInternalAddress
- addressPeriod :: AngledInternalAddress -> Integer
- parseAngle :: String -> Maybe Angle
- parseAngles :: String -> Maybe [Angle]
- parseKnead :: String -> Maybe Knead
- parseKneading :: String -> Maybe Kneading
- parseInternalAddress :: String -> Maybe InternalAddress
- parseAngledInternalAddress :: String -> Maybe AngledInternalAddress
Documentation
prettyAngle :: Angle -> StringSource
Convert to human readable form.
prettyAngles :: [Angle] -> StringSource
Convert to human readable form.
Elements of kneading sequences.
Kneading sequences. Note that the Aperiodic
case has an infinite list.
Aperiodic [Knead] | |
PrePeriodic [Knead] [Knead] | |
StarPeriodic [Knead] | |
Periodic [Knead] |
prettyKneading :: Kneading -> StringSource
Kneading sequence as a string. The Aperiodic
case is truncated arbitrarily.
period :: Kneading -> Maybe IntegerSource
The period of a kneading sequence, or Nothing
when it isn't periodic.
associated :: Kneading -> Maybe (Kneading, Kneading)Source
A star-periodic kneading sequence's upper and lower associated kneading sequences.
data InternalAddress Source
Internal addresses are a non-empty sequence of strictly increasing integers beginning with '1'.
prettyInternalAddress :: InternalAddress -> StringSource
Internal address as a string.
internalAddress :: Kneading -> Maybe InternalAddressSource
Construct an InternalAddress
from a kneading sequence.
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.
prettyAngledInternalAddress :: AngledInternalAddress -> StringSource
Angled internal address as a string.
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.
splitAddress :: AngledInternalAddress -> (AngledInternalAddress, [Angle])Source
Split an angled internal address at the last island.
joinAddress :: AngledInternalAddress -> [Angle] -> AngledInternalAddressSource
The inverse of splitAddress
.
addressPeriod :: AngledInternalAddress -> IntegerSource
The period of an angled internal address.
parseAngle :: String -> Maybe AngleSource
Parse an angle.
parseAngles :: String -> Maybe [Angle]Source
Parse a list of angles.
parseKnead :: String -> Maybe KneadSource
Parse a kneading element.
parseKneading :: String -> Maybe KneadingSource
Parse a non-aperiodic kneading sequence.
parseInternalAddress :: String -> Maybe InternalAddressSource
Parse an internal address.
parseAngledInternalAddress :: String -> Maybe AngledInternalAddressSource
Parse an angled internal address, accepting some unambiguous abbreviations.