FractalAsm 0.6.3 http://www.math.cornell.edu/~dynamics/FA (previously http://www.people.cornell.edu/pages/kp30/Acad/FA.html) by Karl Papadantonakis, Thanks to John Hubbard for guiding the development of this program. 1996-1999 For people who use programs like Maple but who can¹t wait a gazillion eons for the results. GENERAL INFO To view a colored plane, select ³New² from the file menu. Then, choose a definition and a color set. (If necessary, double-click a definition or a color set to view it). Finally, click the colossal ³Apply² button to view the results. SPEED/ACCURACY When memory is in abundance (6 bytes per pixel; the extra memory is freed when the computation finishes), this program uses a recursive geometric optimization which generally saves about 70% of the computation. The savings are most noticeable when the iteration count is high (like 10,000). Unfortunately, it occasionally leaves certain fractals (especially ones with large black regions) with their limbs all hacked and mangled (this is improved however with a new "cleanUp" step). This effect can be minimized by keeping the ³Refinement Box Size" (in the preferences panel) low. If this constant is set to 1, the geometric optimization is disabled. If the constant is not a power of two, interesting things will happen. MOVIES To make a movie, first select a parameter plane definition (e.g. Mandelbrot) and create a new view. [optional: Then, select "Besier..." from the "View" menu. Drag from the starting parameter point to the ending parameter point.] To view the function you created, select "Overlay Curve..." from the "View" menu. Select "Movie" from the "View" menu. This is as if you had clicked "Spawn" for every point of your function which is evaluated. All the frames of this movie will be saved into a new folder within the "Movie Frames" folder. If you save the movie, this new folder will be renamed. If you do not save the movie, all frames are deleted when you close the movie. If you delete the "Movie Frames" directory or move it outside of the FractalAsm folder, or delete the frames directory for a particular movie, the frames will be regenerated from scratch when you open the movie again. WRITING DEFINITIONS From a configuration window, click the ³New² button which pertains to definitions. Before a definition can be used, it must be saved. This is done automatically when the window is closed (definitions and color sets only). When the definition is being edited, a ³Definition² menu appears, which is a good thing, because you can conveniently check the syntax. Speaking of which, here is some FractalAsm lingo: Part I: Basic Syntax assignment {identifier} = {expression} {identifier} := {expression} begin iteration loop iterate parameters param {identifier} [= {initial value}] (optional) exit conditions big {expression} tiny {expression} {big / tiny} {expression} [, exp = {integer}] [,frac = {integer}] [,split = {variable}] {big / tiny} {expression} [, exp {integer}] [,frac {integer}] [,split {variable}] plot of ordered pairs trace {expression},{expression} set bound constant for Œbig¹ (reciprocal for Œtiny¹) bound {expression} Part Ia: Root Descriptors EXP. Syntax: [, exp = {integer}] Smoothly colors a root's basin by comparing the final escaped root expression's value, and comparing against a table of double exponentials. Integer base exponent must be specified (2 for quadratic attraction, etc.) FRAC. Syntax: [,frac = {integer}] Number of extra bits (to be concatenated with count) used for smooth coloring. If EXP is used without FRAC, default of 7 is used. SPLIT. Syntax: [,split {variable}] Use two colors instead of one for coloring basin. Sign of variable determines which one. Example root descriptor usage: ;;color 1: smoothly color rate of escape of (x,y) big x^2+y^2, exp=2 ;;colors 2&3: color attraction of (x,y)->(0,0) with angles tiny x^2+y^2, split y ;;color 4: color 3rd order attracting basin at (0,1) ;;with 2^2=4 levels per iteration tiny x^2+(y-1)^2, exp=3, frac=2 ;;colors 5&6: smoothly color (x,y)->(1,0) with angles tiny (x-1)^2+y^2, exp=2, split y Part Ib: Selector Roots When a root condition is met, that root can "select" a new initialization/iterate block marked by a "begin" statement. TINYx, BIGx. Syntax: see below these conditions just select other things to be iterated, they do not color anything. BEGINx. Syntax: [tiny{1..9}] [big{1..9}] [begin{1..9}] TINYx..BEGINx example: iterate ... tiny1 x^2+y^2 ;if (x,y)->(0,0) then begin1 big2 x^2+y^2 ;if (x,y)->(ƒ,ƒ) then begin2 tiny3 x^2+(y-1)^2 ;if (x,y)->(0,1) then begin3 ... ;last line before BEGINx is last statement of iterate begin1 a = x ;starts here after tiny1 iterate x = x + 1 tiny (x-5)^2 ;if this condition is satisfied, the ;original (x,y) will get the first color ;last line before BEGINx is last statement of iterate begin2 ... iterate ... Part II: Notes Everything before Œiterate¹ is calculated only once; use this space to initialize variables. The initial conditions are Œx¹ and Œy¹. You may overwrite them if you please; they are automatically restored. ŒBig¹ and Œtiny¹ do not work with negative numbers. Use Œtrace¹ to plot an orbit graph over the plane; the mouse position determines the seed conditions. The complexity of the expressions following Œtrace¹ does not affect coloring time. Use Œ;¹ to comment the rest (or all) of a line. Part III: Examples a=a+1 ; adds 1 to the variable Œa¹. param n ; declares Œn¹ as a parameter. ; the value of Œn¹ can now be changed ; from the configuration window. big x^2 + y^2 ; exits when (x,y) -> ƒ. tiny (x-1)^2 + (y+2)^2 ; exits when (x,y) ‰ (1,-2). Part IV: Directives Directives begin with Œ;$¹. They are essentially comments and so their syntax is not checked at compile time. Spawn: when spawn mode is selected from the "View" menu, a click causes the following: 1. Parameters are copied from the current view to a new view with new definition 2. The coordinates of the point clicked are stuffed into two consecutive parameters of the new view, starting with the first parameter which was not copied in step 1. 3. If the the directive contains the "comp" flag, the new definition's ParamComp is used. 4. A new plot is made with the new definition and parameters. ;$spawn {definition name} [comp] ParamComp: a computation of the parameters can occur when the user clicks the "ParamComp" button in the config window, or when a Spawn is used with the comp option. ;$ParamComp [param1=exp1][,param2=exp2]... TraceCopy: when the trace feature is being used and a sequence of points is being computed, the last point is named and copied to the clipboard ;$tracecopy {x-name},{y-name} Iterate away! Bugs? Comments? Questions? E-mail kp30@cornell.edu