Copyright | (c) Claude Heiland-Allen 2010,2011,2015 |
---|---|
License | BSD3 |
Maintainer | claude@mathr.co.uk |
Stability | unstable |
Portability | portable |
Safe Haskell | None |
Language | Haskell98 |
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 papers Internal Addresses Of The Mandelbrot Set And Galois Groups Of Polynomials (version of February 5, 2008) http://arxiv.org/abs/math/9411238v2 and Rational parameter rays of the Mandelbrot set (version of August 11, 1998) http://arxiv.org/abs/math/9711213v2.
- type Angle = Rational
- tune :: Angle -> (Angle, Angle) -> Angle
- prettyAngle :: Angle -> String
- prettyAngles :: [Angle] -> String
- angles :: Angle -> [Angle]
- type BinAngle = ([Bool], [Bool])
- binary :: Angle -> BinAngle
- unbinary :: BinAngle -> Angle
- btune :: BinAngle -> (BinAngle, BinAngle) -> BinAngle
- prettyBinAngle :: BinAngle -> String
- parseBinAngle :: String -> Maybe BinAngle
- bperiod :: BinAngle -> Int
- bpreperiod :: BinAngle -> Int
- bangles :: BinAngle -> [BinAngle]
- 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 Int
- unwrap :: Kneading -> [Knead]
- associated :: Kneading -> Maybe (Kneading, Kneading)
- upper :: Kneading -> Maybe Kneading
- lower :: Kneading -> Maybe Kneading
- data InternalAddress = InternalAddress [Int]
- prettyInternalAddress :: InternalAddress -> String
- internalAddress :: Kneading -> Maybe InternalAddress
- internalFromList :: [Int] -> Maybe InternalAddress
- internalToList :: InternalAddress -> [Int]
- data AngledInternalAddress
- prettyAngledInternalAddress :: AngledInternalAddress -> String
- angledInternalAddress :: Angle -> Maybe AngledInternalAddress
- angledFromList :: [(Int, Maybe Angle)] -> Maybe AngledInternalAddress
- angledToList :: AngledInternalAddress -> [(Int, Maybe Angle)]
- externalAngles :: AngledInternalAddress -> Maybe (Angle, Angle)
- stripAngles :: AngledInternalAddress -> InternalAddress
- splitAddress :: AngledInternalAddress -> (AngledInternalAddress, [Angle])
- joinAddress :: AngledInternalAddress -> [Angle] -> AngledInternalAddress
- addressPeriod :: AngledInternalAddress -> Int
- 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
tune :: Angle -> (Angle, Angle) -> Angle Source
Tuning transformation for angles. Probably only valid for angle pairs representing hyperbolic components.
prettyAngle :: Angle -> String Source
Convert to human readable form.
prettyAngles :: [Angle] -> String Source
Convert to human readable form.
angles :: Angle -> [Angle] Source
All external angles landing at the same location as the given external angle.
btune :: BinAngle -> (BinAngle, BinAngle) -> BinAngle Source
Tuning transformation for binary represented periodic angles. Probably only valid for angle pairs representing hyperbolic components.
prettyBinAngle :: BinAngle -> String Source
Convert to human readable form.
parseBinAngle :: String -> Maybe BinAngle Source
Convert from human readable form.
bpreperiod :: BinAngle -> Int Source
Preperiod under angle doubling.
bangles :: BinAngle -> [BinAngle] Source
All external angles landing at the same location as the given external angle (binary angle variant).
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 -> String Source
Kneading sequence as a string. The Aperiodic
case is truncated arbitrarily.
period :: Kneading -> Maybe Int Source
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 -> String Source
Internal address as a string.
internalAddress :: Kneading -> Maybe InternalAddress Source
Construct an InternalAddress
from a kneading sequence.
internalFromList :: [Int] -> Maybe InternalAddress Source
Construct a valid InternalAddress
, checking the precondition.
internalToList :: InternalAddress -> [Int] Source
Extract the sequence of integers.
data AngledInternalAddress Source
Angled internal addresses have angles between each integer in an internal address.
prettyAngledInternalAddress :: AngledInternalAddress -> String Source
Angled internal address as a string.
angledInternalAddress :: Angle -> Maybe AngledInternalAddress Source
The angled internal address corresponding to an external angle.
angledFromList :: [(Int, Maybe Angle)] -> Maybe AngledInternalAddress Source
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 -> [(Int, Maybe Angle)] Source
Convert an AngledInternalAddress
to a list.
externalAngles :: AngledInternalAddress -> Maybe (Angle, Angle) Source
The pair of external angles whose rays land at the root of the hyperbolic component described by the angled internal address.
stripAngles :: AngledInternalAddress -> InternalAddress Source
Discard angle information from an internal address.
splitAddress :: AngledInternalAddress -> (AngledInternalAddress, [Angle]) Source
Split an angled internal address at the last island.
joinAddress :: AngledInternalAddress -> [Angle] -> AngledInternalAddress Source
The inverse of splitAddress
.
addressPeriod :: AngledInternalAddress -> Int Source
The period of an angled internal address.
parseAngle :: String -> Maybe Angle Source
Parse an angle.
parseAngles :: String -> Maybe [Angle] Source
Parse a list of angles.
parseKnead :: String -> Maybe Knead Source
Parse a kneading element.
parseKneading :: String -> Maybe Kneading Source
Parse a non-aperiodic kneading sequence.
parseInternalAddress :: String -> Maybe InternalAddress Source
Parse an internal address.
parseAngledInternalAddress :: String -> Maybe AngledInternalAddress Source
Parse an angled internal address, accepting some unambiguous abbreviations.