Copyright | (c) Claude Heiland-Allen 201020112015 |
---|---|
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.
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.
parseInternalAddress :: String -> Maybe InternalAddress Source #
Parse an internal address.
parseAngledInternalAddress :: String -> Maybe AngledInternalAddress Source #
Parse an angled internal address, accepting some unambiguous abbreviations.