!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) Claude Heiland-Allen 2011BSD3claude@mathr.co.ukunstableportableNone+  Complex number type without the  constraint.Extract the real part.Extract the imaginary part.Complex conjugate.Complex magnitude squared.Complex magnitude.Complex phase.2Complex number with the given magnitude and phase. 4Complex number with magnitude 1 and the given phase. Convert to polar form.     (c) Claude Heiland-Allen 2011BSD3claude@mathr.co.ukunstableportableNone+ Iteration output.Iteration state.Iteration mode. Iteration initial state.!Iteration engine."Iterate over a list.  !"  !"#    !"    !""(c) Claude Heiland-Allen 2011,2015BSD3claude@mathr.co.ukunstableportableNone+ #Image bounds and coordinates.$Channels in an image.% in [-pi,pi] &normalized to pixel spacing 'continuous dwell (Render an image with the  algorithm. The iteration count is doubled until the image is good enough, or the fixed maximum iteration count is reached. UputStr . unicode $ simpleImage (coordinates 100 100 ((-1.861):+0) (0.001)) 1000000000)Render an image with the  algorithm. The iteration count is doubled until the image is good enough, or the fixed maximum iteration count is reached. The output values are converted to . _putStr . unicode . border $ complexImage (coordinates 100 100 ((-1.861):+0) (0.001)) 1000000000*Image rendering loop.+:The parameter plane coordinates for an image, with bounds.,yConvert a distance estimate image to a near-boundary bit array. The input image must have a DistanceEstimate' channel.-&Convert a bit array to ascii graphics...Convert a bit array to unicode block graphics.Strict version of  modifySTRef. #$%&'( coordinates max iterations image ) coordinates max iterations image *  escapees  output array max iterations  iterations prior escapees iterations this phase  iterates output callback output array as given +width height center size ,image -image ascii .image unicode #$%&'()*+,-. ()*+-.$'&%#, #$'&%()*+,-."(c) Claude Heiland-Allen 2011,2015BSD3claude@mathr.co.ukunstableportableNone/]Given the period and approximate location, successively refine this estimate to a nucleus.2The algorithm is based on Robert Munafo's page Newton-Raphson method  3http://mrob.com/pub/muency/newtonraphsonmethod.html.0hGiven the period and nucleus, find succesive refinements to the bond point at a given internal angle.(The algorithm is based on ideas from  *http://mrob.com/pub/muency/derivative.html.1fGiven the period and nucleus, find an interior point at a given internal angle and radius in (0,1].2=Find the period of the lowest period nucleus inside a square.3The algorithm is based on Robert Munafo's page, Finding the Period of a mu-Atom  &http://mrob.com/pub/muency/period.html./period  estimate 0period nucleus angle 1period nucleus radius angle 2maximum period radius center /0122/01/012(c) Claude Heiland-Allen 2015BSD3claude@mathr.co.ukunstable TypeFamilies Safe-Inferred+3=K3 Rational type4Ratio data structure6/Rational numbers with ruff-specific operations.8smart constuctor9extract numerator:extract denominator;unsafe constructor<0=1/2>1?convert to Prelude.Rational@convert from Prelude.RationalAwrap into [0,1)Bdoubling map to [0,1)C doubling map from [0,1) to [0,1)D4doubling map from [0,1) to [0,1) for odd denominatorE0doubling map preimages from [0,1) to [0,1)x[0,1)3456789:;<=>?@ABCDE3456789:;<=>?@ABCDE6789:;<=>?@ABCDE4533456789:;<=>?@ABCDE8;"(c) Claude Heiland-Allen 2011,2015BSD3claude@mathr.co.ukunstableportableNoneFuCompute the external ray for an external angle with a given accuracy, sharpness and starting radius. For example: !externalRay 1e-10 8 (2**24) (1/3)5The algorithm is based on Tomoki Kawahira's paper 8An algorithm to draw external rays of the Mandelbrot set  Bhttp://www.math.nagoya-u.ac.jp/~kawahira/programs/mandel-exray.pdf.GQCompute the external ray outwards from a given parameter value. If the result rs satisfies:  c = last rs magnitude c > radius$then the external angle is given by t: 5a = phase c / (2 * pi) t = a - fromIntegral (floor a)F accuracy  sharpness radius external angle G iterations epsilon  accuracy  sharpness radius  parameter FGFGFG'(c) Claude Heiland-Allen 2010,2011,2015BSD3claude@mathr.co.ukunstableportableNone+=K.HUAngled internal addresses have angles between each integer in an internal address.KbInternal addresses are a non-empty sequence of strictly increasing integers beginning with '1'.M#Kneading sequences. Note that the Q case has an infinite list.RElements of kneading sequences.V0Binary representation of a (pre-)periodic angle.W1Angle as a fraction of a turn, usually in [0, 1).XMAll external angles landing at the same location as the given external angle.YdAll external angles landing at the same location as the given external angle (binary angle variant).ZConvert to human readable form.[Convert to human readable form.\Convert to human readable form.]!Convert from human readable form.^Preperiod under angle doubling._Period under angle doubling.`,Convert an angle from binary representation.%Convert a list of bits to an integer.a*Convert an angle to binary representation.bTuning transformation for binary represented periodic angles. Probably only valid for angle pairs representing hyperbolic components.clTuning transformation for angles. Probably only valid for angle pairs representing hyperbolic components.dKnead character representation.e$Kneading sequence as a string. The Q case is truncated arbitrarily.f,The kneading sequence for an external angle.g&The period of a kneading sequence, or  when it isn't periodic.h/Unwrap a kneading sequence to an infinite list.iInternal address as a string.jConstruct a valid K, checking the precondition.k!Extract the sequence of integers.l Construct an K from a kneading sequence.mUA star-periodic kneading sequence's upper and lower associated kneading sequences.n'The upper associated kneading sequence.o'The lower associated kneading sequence.p$Angled internal address as a string.qBuilds a valid HV from a list, checking the precondition that only the last 'Maybe Angle' should be  , and the  must be strictly increasing.r Convert an H to a list.s?The angled internal address corresponding to an external angle.t4Split an angled internal address at the last island.uThe inverse of t.v)The period of an angled internal address.w3Discard angle information from an internal address.xThe pair of external angles whose rays land at the root of the hyperbolic component described by the angled internal address.yParse an angle.zParse a list of angles.{Parse a kneading element.|(Parse a non-aperiodic kneading sequence.}Parse an internal address.~NParse an angled internal address, accepting some unambiguous abbreviations.UHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~7HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~7WcZ[XVa`b\]_^YRUTSdMQPONefghmnoKLiljkHJIpsqrxwtuvyz{|}~IHJIKLMQPONRUTSVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"(c) Claude Heiland-Allen 2011,2015BSD3claude@mathr.co.ukunstableportableNone Progress updates for .Progress updates for .Progress updates for .Mu-atom properties.0Try to find an atom, providing progress updates.,Find the first success in the progress list.Find an atom from its address.3Try to find an address, providing progress updates.,Find the first success in the progress list.Find an address for a mu-atom.FTry to find an atom close to a coordinate, providing progress updates.,Find the first success in the progress list.#Find an atom close to a coordinate.?center radius 99       !"#$%&'()*+,-./'0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ruff-0.4Fractal.RUFF.Types.ComplexFractal.RUFF.Mandelbrot.IterateFractal.RUFF.Mandelbrot.ImageFractal.RUFF.Mandelbrot.NucleusFractal.RUFF.Types.RatioFractal.RUFF.Mandelbrot.RayFractal.RUFF.Mandelbrot.AddressFractal.RUFF.Mandelbrot.AtomComplex:+realPartimagPart conjugate magnitude2 magnitudephasemkPolarcispolarOutputOutDistanceEstimatedistanceEstimate OutEscapeTime escapeTime finalAngle OutSimpleoutUserIterateIterDistanceEstimateitdzIterEscapeTimeitn IterSimpleitcitziterUserModeDistanceEstimate EscapeTimeSimpleinitialiterateiterates CoordinatesChannel FinalAngleDistanceEstimate' simpleImage complexImage imageLoop coordinatesborderasciiunicode findNucleusfindBond findInternal findPeriodRationalRatio:%QZ% numerator denominator%!zerohalfonefromQtoQwrap doubleWrapdouble doubleOdd preimages externalRayexternalRayOutAngledInternalAddressAngledUnangledInternalAddressKneadingPeriodic StarPeriodic PrePeriodic AperiodicKneadStarOneZeroBinAngleAngleanglesbangles prettyAngle prettyAnglesprettyBinAngle parseBinAngle bpreperiodbperiodunbinarybinarybtunetune kneadCharprettyKneadingkneadingperiodunwrapprettyInternalAddressinternalFromListinternalToListinternalAddress associatedupperlowerprettyAngledInternalAddressangledFromList angledToListangledInternalAddress splitAddress joinAddress addressPeriod stripAnglesexternalAngles parseAngle parseAngles parseKnead parseKneadingparseInternalAddressparseAngledInternalAddressLocate LocateFailed LocateSuccessLocateBondDone LocateBondLocateBondTodoLocateNucleusDone LocateNucleusLocateNucleusTodoLocateScanDone LocateScanLocateScanTodo FindAddress AddressFailedAddressSuccessAddressAddressTodoAddressExternalDoneAddressExternalTodoAddressRayOutDone AddressRayOutAddressRayOutTodoAddressDwellDone AddressDwellAddressDwellTodoAddressCuspDoneAddressCuspTodoFindAtom AtomFailed AtomSuccess AtomBondDoneAtomBond AtomBondTodoAtomNucleusDone AtomNucleusAtomNucleusTodo AtomRayDoneAtomRay AtomRayTodoAtomAnglesDoneAtomAnglesTodo AtomSplitDone AtomSplitTodoMuAtom muNucleusmuSizemuOrientmuPeriodfindAtom findAtom' findAtom_ findAddress findAddress' findAddress_locatelocate'locate_base GHC.Float RealFloat$fNearZeroComplex$fFloatingComplex$fFractionalComplex $fNumComplexghc-prim GHC.TypesFloat modifySTRef'straddlesOrigin positiveReal $fShowRatio $fReadRatio $fOrdRatio$fQRatio $fQRatio0bits Data.MaybeNothing integer-gmpGHC.Integer.TypeIntegerParseTokenFractionNumberceiling'floor'rhoorbit address'inf address'peraddress'unsafeAngledFromList denominators numeratorsexternalAngles'wakeeschunk2 safeIndex unFractionunNumberparserpTokenspToken pFractionpNumberpSpacepOptionalSpacepKnead pKneading isAtomSuccessfromAtomSuccessisAddressSuccessfromAddressSuccessisLocateSuccessfromLocateSuccess